From 9d87cfe68a7782594f8409c571bc3b995d7e8dc2 Mon Sep 17 00:00:00 2001 From: Brett Camper Date: Fri, 10 Nov 2017 15:47:10 -0500 Subject: [PATCH] v0.14.2 --- dist/tangram.debug.js | 1019 ++++++++++++++++++++----------------- dist/tangram.debug.js.map | 42 +- dist/tangram.min.js | 36 +- package-lock.json | 8 +- package.json | 4 +- 5 files changed, 589 insertions(+), 520 deletions(-) diff --git a/dist/tangram.debug.js b/dist/tangram.debug.js index 62f501da0..b7818ad1f 100644 --- a/dist/tangram.debug.js +++ b/dist/tangram.debug.js @@ -10318,7 +10318,7 @@ NodejsStreamOutputAdapter.prototype._read = function() { module.exports = NodejsStreamOutputAdapter; -},{"readable-stream":168,"util":195}],142:[function(_dereq_,module,exports){ +},{"readable-stream":168,"util":194}],142:[function(_dereq_,module,exports){ (function (Buffer){ 'use strict'; @@ -13269,7 +13269,7 @@ function forEach(xs, f) { f(xs[i], i); } } -},{"./_stream_readable":165,"./_stream_writable":167,"core-util-is":75,"inherits":99,"process-nextick-args":188}],164:[function(_dereq_,module,exports){ +},{"./_stream_readable":165,"./_stream_writable":167,"core-util-is":75,"inherits":99,"process-nextick-args":187}],164:[function(_dereq_,module,exports){ // a passthrough stream. // basically just the most minimal sort of Transform stream. // Every written chunk gets output as-is. @@ -14180,7 +14180,7 @@ function indexOf(xs, x) { } }).call(this,_dereq_('_process')) -},{"./_stream_duplex":163,"_process":189,"buffer":10,"core-util-is":75,"events":78,"inherits":99,"isarray":101,"process-nextick-args":188,"string_decoder/":169,"util":9}],166:[function(_dereq_,module,exports){ +},{"./_stream_duplex":163,"_process":188,"buffer":10,"core-util-is":75,"events":78,"inherits":99,"isarray":101,"process-nextick-args":187,"string_decoder/":169,"util":9}],166:[function(_dereq_,module,exports){ // a transform stream is a readable/writable stream where you do // something with the data. Sometimes it's called a "filter", // but that's not a great name for it, since that implies a thing where @@ -14881,7 +14881,7 @@ function CorkedRequest(state) { } }).call(this,_dereq_('_process')) -},{"./_stream_duplex":163,"_process":189,"buffer":10,"core-util-is":75,"events":78,"inherits":99,"process-nextick-args":188,"util-deprecate":192}],168:[function(_dereq_,module,exports){ +},{"./_stream_duplex":163,"_process":188,"buffer":10,"core-util-is":75,"events":78,"inherits":99,"process-nextick-args":187,"util-deprecate":191}],168:[function(_dereq_,module,exports){ var Stream = (function (){ try { return _dereq_('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify @@ -21928,175 +21928,14 @@ module.exports = ZStream; },{}],186:[function(_dereq_,module,exports){ 'use strict'; -// lightweight Buffer shim for pbf browser build -// based on code from github.com/feross/buffer (MIT-licensed) - -module.exports = Buffer; - -var ieee754 = _dereq_('ieee754'); - -var BufferMethods; - -function Buffer(length) { - var arr; - if (length && length.length) { - arr = length; - length = arr.length; - } - var buf = new Uint8Array(length || 0); - if (arr) buf.set(arr); - - buf.readUInt32LE = BufferMethods.readUInt32LE; - buf.writeUInt32LE = BufferMethods.writeUInt32LE; - buf.readInt32LE = BufferMethods.readInt32LE; - buf.writeInt32LE = BufferMethods.writeInt32LE; - buf.readFloatLE = BufferMethods.readFloatLE; - buf.writeFloatLE = BufferMethods.writeFloatLE; - buf.readDoubleLE = BufferMethods.readDoubleLE; - buf.writeDoubleLE = BufferMethods.writeDoubleLE; - buf.toString = BufferMethods.toString; - buf.write = BufferMethods.write; - buf.slice = BufferMethods.slice; - buf.copy = BufferMethods.copy; - - buf._isBuffer = true; - return buf; -} - -var lastStr, lastStrEncoded; - -BufferMethods = { - readUInt32LE: function(pos) { - return ((this[pos]) | - (this[pos + 1] << 8) | - (this[pos + 2] << 16)) + - (this[pos + 3] * 0x1000000); - }, - - writeUInt32LE: function(val, pos) { - this[pos] = val; - this[pos + 1] = (val >>> 8); - this[pos + 2] = (val >>> 16); - this[pos + 3] = (val >>> 24); - }, - - readInt32LE: function(pos) { - return ((this[pos]) | - (this[pos + 1] << 8) | - (this[pos + 2] << 16)) + - (this[pos + 3] << 24); - }, - - readFloatLE: function(pos) { return ieee754.read(this, pos, true, 23, 4); }, - readDoubleLE: function(pos) { return ieee754.read(this, pos, true, 52, 8); }, - - writeFloatLE: function(val, pos) { return ieee754.write(this, val, pos, true, 23, 4); }, - writeDoubleLE: function(val, pos) { return ieee754.write(this, val, pos, true, 52, 8); }, - - toString: function(encoding, start, end) { - var str = '', - tmp = ''; - - start = start || 0; - end = Math.min(this.length, end || this.length); - - for (var i = start; i < end; i++) { - var ch = this[i]; - if (ch <= 0x7F) { - str += decodeURIComponent(tmp) + String.fromCharCode(ch); - tmp = ''; - } else { - tmp += '%' + ch.toString(16); - } - } - - str += decodeURIComponent(tmp); - - return str; - }, - - write: function(str, pos) { - var bytes = str === lastStr ? lastStrEncoded : encodeString(str); - for (var i = 0; i < bytes.length; i++) { - this[pos + i] = bytes[i]; - } - }, - - slice: function(start, end) { - return this.subarray(start, end); - }, - - copy: function(buf, pos) { - pos = pos || 0; - for (var i = 0; i < this.length; i++) { - buf[pos + i] = this[i]; - } - } -}; - -BufferMethods.writeInt32LE = BufferMethods.writeUInt32LE; - -Buffer.byteLength = function(str) { - lastStr = str; - lastStrEncoded = encodeString(str); - return lastStrEncoded.length; -}; - -Buffer.isBuffer = function(buf) { - return !!(buf && buf._isBuffer); -}; - -function encodeString(str) { - var length = str.length, - bytes = []; - - for (var i = 0, c, lead; i < length; i++) { - c = str.charCodeAt(i); // code point - - if (c > 0xD7FF && c < 0xE000) { - - if (lead) { - if (c < 0xDC00) { - bytes.push(0xEF, 0xBF, 0xBD); - lead = c; - continue; - - } else { - c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000; - lead = null; - } - - } else { - if (c > 0xDBFF || (i + 1 === length)) bytes.push(0xEF, 0xBF, 0xBD); - else lead = c; - - continue; - } - - } else if (lead) { - bytes.push(0xEF, 0xBF, 0xBD); - lead = null; - } - - if (c < 0x80) bytes.push(c); - else if (c < 0x800) bytes.push(c >> 0x6 | 0xC0, c & 0x3F | 0x80); - else if (c < 0x10000) bytes.push(c >> 0xC | 0xE0, c >> 0x6 & 0x3F | 0x80, c & 0x3F | 0x80); - else bytes.push(c >> 0x12 | 0xF0, c >> 0xC & 0x3F | 0x80, c >> 0x6 & 0x3F | 0x80, c & 0x3F | 0x80); - } - return bytes; -} - -},{"ieee754":98}],187:[function(_dereq_,module,exports){ -(function (global){ -'use strict'; - module.exports = Pbf; -var Buffer = global.Buffer || _dereq_('./buffer'); +var ieee754 = _dereq_('ieee754'); function Pbf(buf) { - this.buf = !Buffer.isBuffer(buf) ? new Buffer(buf || 0) : buf; + this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0); this.pos = 0; + this.type = 0; this.length = this.buf.length; } @@ -22106,8 +21945,7 @@ Pbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed r Pbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32 var SHIFT_LEFT_32 = (1 << 16) * (1 << 16), - SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32, - POW_2_63 = Math.pow(2, 63); + SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32; Pbf.prototype = { @@ -22125,6 +21963,7 @@ Pbf.prototype = { tag = val >> 3, startPos = this.pos; + this.type = val & 0x7; readField(tag, result, this); if (this.pos === startPos) this.skip(val); @@ -22137,13 +21976,13 @@ Pbf.prototype = { }, readFixed32: function() { - var val = this.buf.readUInt32LE(this.pos); + var val = readUInt32(this.buf, this.pos); this.pos += 4; return val; }, readSFixed32: function() { - var val = this.buf.readInt32LE(this.pos); + var val = readInt32(this.buf, this.pos); this.pos += 4; return val; }, @@ -22151,30 +21990,30 @@ Pbf.prototype = { // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed) readFixed64: function() { - var val = this.buf.readUInt32LE(this.pos) + this.buf.readUInt32LE(this.pos + 4) * SHIFT_LEFT_32; + var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32; this.pos += 8; return val; }, readSFixed64: function() { - var val = this.buf.readUInt32LE(this.pos) + this.buf.readInt32LE(this.pos + 4) * SHIFT_LEFT_32; + var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32; this.pos += 8; return val; }, readFloat: function() { - var val = this.buf.readFloatLE(this.pos); + var val = ieee754.read(this.buf, this.pos, true, 23, 4); this.pos += 4; return val; }, readDouble: function() { - var val = this.buf.readDoubleLE(this.pos); + var val = ieee754.read(this.buf, this.pos, true, 52, 8); this.pos += 8; return val; }, - readVarint: function() { + readVarint: function(isSigned) { var buf = this.buf, val, b; @@ -22182,27 +22021,13 @@ Pbf.prototype = { b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val; b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val; b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val; + b = buf[this.pos]; val |= (b & 0x0f) << 28; - return readVarintRemainder(val, this); + return readVarintRemainder(val, isSigned, this); }, - readVarint64: function() { - var startPos = this.pos, - val = this.readVarint(); - - if (val < POW_2_63) return val; - - var pos = this.pos - 2; - while (this.buf[pos] === 0xff) pos--; - if (pos < startPos) pos = startPos; - - val = 0; - for (var i = 0; i < pos - startPos + 1; i++) { - var b = ~this.buf[startPos + i] & 0x7f; - val += i < 4 ? b << i * 7 : b * Math.pow(2, i * 7); - } - - return -val - 1; + readVarint64: function() { // for compatibility with v2.0.1 + return this.readVarint(true); }, readSVarint: function() { @@ -22216,62 +22041,71 @@ Pbf.prototype = { readString: function() { var end = this.readVarint() + this.pos, - str = this.buf.toString('utf8', this.pos, end); + str = readUtf8(this.buf, this.pos, end); this.pos = end; return str; }, readBytes: function() { var end = this.readVarint() + this.pos, - buffer = this.buf.slice(this.pos, end); + buffer = this.buf.subarray(this.pos, end); this.pos = end; return buffer; }, // verbose for performance reasons; doesn't affect gzipped size - readPackedVarint: function() { - var end = this.readVarint() + this.pos, arr = []; - while (this.pos < end) arr.push(this.readVarint()); + readPackedVarint: function(arr, isSigned) { + var end = readPackedEnd(this); + arr = arr || []; + while (this.pos < end) arr.push(this.readVarint(isSigned)); return arr; }, - readPackedSVarint: function() { - var end = this.readVarint() + this.pos, arr = []; + readPackedSVarint: function(arr) { + var end = readPackedEnd(this); + arr = arr || []; while (this.pos < end) arr.push(this.readSVarint()); return arr; }, - readPackedBoolean: function() { - var end = this.readVarint() + this.pos, arr = []; + readPackedBoolean: function(arr) { + var end = readPackedEnd(this); + arr = arr || []; while (this.pos < end) arr.push(this.readBoolean()); return arr; }, - readPackedFloat: function() { - var end = this.readVarint() + this.pos, arr = []; + readPackedFloat: function(arr) { + var end = readPackedEnd(this); + arr = arr || []; while (this.pos < end) arr.push(this.readFloat()); return arr; }, - readPackedDouble: function() { - var end = this.readVarint() + this.pos, arr = []; + readPackedDouble: function(arr) { + var end = readPackedEnd(this); + arr = arr || []; while (this.pos < end) arr.push(this.readDouble()); return arr; }, - readPackedFixed32: function() { - var end = this.readVarint() + this.pos, arr = []; + readPackedFixed32: function(arr) { + var end = readPackedEnd(this); + arr = arr || []; while (this.pos < end) arr.push(this.readFixed32()); return arr; }, - readPackedSFixed32: function() { - var end = this.readVarint() + this.pos, arr = []; + readPackedSFixed32: function(arr) { + var end = readPackedEnd(this); + arr = arr || []; while (this.pos < end) arr.push(this.readSFixed32()); return arr; }, - readPackedFixed64: function() { - var end = this.readVarint() + this.pos, arr = []; + readPackedFixed64: function(arr) { + var end = readPackedEnd(this); + arr = arr || []; while (this.pos < end) arr.push(this.readFixed64()); return arr; }, - readPackedSFixed64: function() { - var end = this.readVarint() + this.pos, arr = []; + readPackedSFixed64: function(arr) { + var end = readPackedEnd(this); + arr = arr || []; while (this.pos < end) arr.push(this.readSFixed64()); return arr; }, @@ -22297,8 +22131,8 @@ Pbf.prototype = { while (length < this.pos + min) length *= 2; if (length !== this.length) { - var buf = new Buffer(length); - this.buf.copy(buf); + var buf = new Uint8Array(length); + buf.set(this.buf); this.buf = buf; this.length = length; } @@ -22307,39 +22141,39 @@ Pbf.prototype = { finish: function() { this.length = this.pos; this.pos = 0; - return this.buf.slice(0, this.length); + return this.buf.subarray(0, this.length); }, writeFixed32: function(val) { this.realloc(4); - this.buf.writeUInt32LE(val, this.pos); + writeInt32(this.buf, val, this.pos); this.pos += 4; }, writeSFixed32: function(val) { this.realloc(4); - this.buf.writeInt32LE(val, this.pos); + writeInt32(this.buf, val, this.pos); this.pos += 4; }, writeFixed64: function(val) { this.realloc(8); - this.buf.writeInt32LE(val & -1, this.pos); - this.buf.writeUInt32LE(Math.floor(val * SHIFT_RIGHT_32), this.pos + 4); + writeInt32(this.buf, val & -1, this.pos); + writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4); this.pos += 8; }, writeSFixed64: function(val) { this.realloc(8); - this.buf.writeInt32LE(val & -1, this.pos); - this.buf.writeInt32LE(Math.floor(val * SHIFT_RIGHT_32), this.pos + 4); + writeInt32(this.buf, val & -1, this.pos); + writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4); this.pos += 8; }, writeVarint: function(val) { - val = +val; + val = +val || 0; - if (val > 0xfffffff) { + if (val > 0xfffffff || val < 0) { writeBigVarint(val, this); return; } @@ -22362,22 +22196,32 @@ Pbf.prototype = { writeString: function(str) { str = String(str); - var bytes = Buffer.byteLength(str); - this.writeVarint(bytes); - this.realloc(bytes); - this.buf.write(str, this.pos); - this.pos += bytes; + this.realloc(str.length * 4); + + this.pos++; // reserve 1 byte for short string length + + var startPos = this.pos; + // write the string directly to the buffer and see how much was written + this.pos = writeUtf8(this.buf, str, this.pos); + var len = this.pos - startPos; + + if (len >= 0x80) makeRoomForExtraLength(startPos, len, this); + + // finally, write the message length in the reserved place and restore the position + this.pos = startPos - 1; + this.writeVarint(len); + this.pos += len; }, writeFloat: function(val) { this.realloc(4); - this.buf.writeFloatLE(val, this.pos); + ieee754.write(this.buf, val, this.pos, true, 23, 4); this.pos += 4; }, writeDouble: function(val) { this.realloc(8); - this.buf.writeDoubleLE(val, this.pos); + ieee754.write(this.buf, val, this.pos, true, 52, 8); this.pos += 8; }, @@ -22396,7 +22240,7 @@ Pbf.prototype = { fn(obj, this); var len = this.pos - startPos; - if (len >= 0x80) reallocForRawMessage(startPos, len, this); + if (len >= 0x80) makeRoomForExtraLength(startPos, len, this); // finally, write the message length in the reserved place and restore the position this.pos = startPos - 1; @@ -22464,33 +22308,81 @@ Pbf.prototype = { } }; -function readVarintRemainder(val, pbf) { - var buf = pbf.buf, b; +function readVarintRemainder(l, s, p) { + var buf = p.buf, + h, b; - b = buf[pbf.pos++]; val += (b & 0x7f) * 0x10000000; if (b < 0x80) return val; - b = buf[pbf.pos++]; val += (b & 0x7f) * 0x800000000; if (b < 0x80) return val; - b = buf[pbf.pos++]; val += (b & 0x7f) * 0x40000000000; if (b < 0x80) return val; - b = buf[pbf.pos++]; val += (b & 0x7f) * 0x2000000000000; if (b < 0x80) return val; - b = buf[pbf.pos++]; val += (b & 0x7f) * 0x100000000000000; if (b < 0x80) return val; - b = buf[pbf.pos++]; val += (b & 0x7f) * 0x8000000000000000; if (b < 0x80) return val; + b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s); + b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s); + b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s); + b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s); + b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s); + b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s); throw new Error('Expected varint not more than 10 bytes'); } +function readPackedEnd(pbf) { + return pbf.type === Pbf.Bytes ? + pbf.readVarint() + pbf.pos : pbf.pos + 1; +} + +function toNum(low, high, isSigned) { + if (isSigned) { + return high * 0x100000000 + (low >>> 0); + } + + return ((high >>> 0) * 0x100000000) + (low >>> 0); +} + function writeBigVarint(val, pbf) { - pbf.realloc(10); + var low, high; - var maxPos = pbf.pos + 10; + if (val >= 0) { + low = (val % 0x100000000) | 0; + high = (val / 0x100000000) | 0; + } else { + low = ~(-val % 0x100000000); + high = ~(-val / 0x100000000); - while (val >= 1) { - if (pbf.pos >= maxPos) throw new Error('Given varint doesn\'t fit into 10 bytes'); - var b = val & 0xff; - pbf.buf[pbf.pos++] = b | (val >= 0x80 ? 0x80 : 0); - val /= 0x80; + if (low ^ 0xffffffff) { + low = (low + 1) | 0; + } else { + low = 0; + high = (high + 1) | 0; + } } + + if (val >= 0x10000000000000000 || val < -0x10000000000000000) { + throw new Error('Given varint doesn\'t fit into 10 bytes'); + } + + pbf.realloc(10); + + writeBigVarintLow(low, high, pbf); + writeBigVarintHigh(high, pbf); +} + +function writeBigVarintLow(low, high, pbf) { + pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; + pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; + pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; + pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; + pbf.buf[pbf.pos] = low & 0x7f; } -function reallocForRawMessage(startPos, len, pbf) { +function writeBigVarintHigh(high, pbf) { + var lsb = (high & 0x07) << 4; + + pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return; + pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; + pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; + pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; + pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; + pbf.buf[pbf.pos++] = high & 0x7f; +} + +function makeRoomForExtraLength(startPos, len, pbf) { var extraLen = len <= 0x3fff ? 1 : len <= 0x1fffff ? 2 : @@ -22511,9 +22403,149 @@ function writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pb function writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); } function writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); } -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +// Buffer code below from https://github.com/feross/buffer, MIT-licensed + +function readUInt32(buf, pos) { + return ((buf[pos]) | + (buf[pos + 1] << 8) | + (buf[pos + 2] << 16)) + + (buf[pos + 3] * 0x1000000); +} -},{"./buffer":186}],188:[function(_dereq_,module,exports){ +function writeInt32(buf, val, pos) { + buf[pos] = val; + buf[pos + 1] = (val >>> 8); + buf[pos + 2] = (val >>> 16); + buf[pos + 3] = (val >>> 24); +} + +function readInt32(buf, pos) { + return ((buf[pos]) | + (buf[pos + 1] << 8) | + (buf[pos + 2] << 16)) + + (buf[pos + 3] << 24); +} + +function readUtf8(buf, pos, end) { + var str = ''; + var i = pos; + + while (i < end) { + var b0 = buf[i]; + var c = null; // codepoint + var bytesPerSequence = + b0 > 0xEF ? 4 : + b0 > 0xDF ? 3 : + b0 > 0xBF ? 2 : 1; + + if (i + bytesPerSequence > end) break; + + var b1, b2, b3; + + if (bytesPerSequence === 1) { + if (b0 < 0x80) { + c = b0; + } + } else if (bytesPerSequence === 2) { + b1 = buf[i + 1]; + if ((b1 & 0xC0) === 0x80) { + c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F); + if (c <= 0x7F) { + c = null; + } + } + } else if (bytesPerSequence === 3) { + b1 = buf[i + 1]; + b2 = buf[i + 2]; + if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) { + c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F); + if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) { + c = null; + } + } + } else if (bytesPerSequence === 4) { + b1 = buf[i + 1]; + b2 = buf[i + 2]; + b3 = buf[i + 3]; + if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) { + c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F); + if (c <= 0xFFFF || c >= 0x110000) { + c = null; + } + } + } + + if (c === null) { + c = 0xFFFD; + bytesPerSequence = 1; + + } else if (c > 0xFFFF) { + c -= 0x10000; + str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800); + c = 0xDC00 | c & 0x3FF; + } + + str += String.fromCharCode(c); + i += bytesPerSequence; + } + + return str; +} + +function writeUtf8(buf, str, pos) { + for (var i = 0, c, lead; i < str.length; i++) { + c = str.charCodeAt(i); // code point + + if (c > 0xD7FF && c < 0xE000) { + if (lead) { + if (c < 0xDC00) { + buf[pos++] = 0xEF; + buf[pos++] = 0xBF; + buf[pos++] = 0xBD; + lead = c; + continue; + } else { + c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000; + lead = null; + } + } else { + if (c > 0xDBFF || (i + 1 === str.length)) { + buf[pos++] = 0xEF; + buf[pos++] = 0xBF; + buf[pos++] = 0xBD; + } else { + lead = c; + } + continue; + } + } else if (lead) { + buf[pos++] = 0xEF; + buf[pos++] = 0xBF; + buf[pos++] = 0xBD; + lead = null; + } + + if (c < 0x80) { + buf[pos++] = c; + } else { + if (c < 0x800) { + buf[pos++] = c >> 0x6 | 0xC0; + } else { + if (c < 0x10000) { + buf[pos++] = c >> 0xC | 0xE0; + } else { + buf[pos++] = c >> 0x12 | 0xF0; + buf[pos++] = c >> 0xC & 0x3F | 0x80; + } + buf[pos++] = c >> 0x6 & 0x3F | 0x80; + } + buf[pos++] = c & 0x3F | 0x80; + } + } + return pos; +} + +},{"ieee754":98}],187:[function(_dereq_,module,exports){ (function (process){ 'use strict'; @@ -22561,7 +22593,7 @@ function nextTick(fn, arg1, arg2, arg3) { }).call(this,_dereq_('_process')) -},{"_process":189}],189:[function(_dereq_,module,exports){ +},{"_process":188}],188:[function(_dereq_,module,exports){ // shim for using process in browser var process = module.exports = {}; @@ -22747,7 +22779,7 @@ process.chdir = function (dir) { }; process.umask = function() { return 0; }; -},{}],190:[function(_dereq_,module,exports){ +},{}],189:[function(_dereq_,module,exports){ /*! * strip-comments * @@ -22822,7 +22854,7 @@ strip.line = function(str, opts) { return str ? str.replace(re, '') : ''; }; -},{}],191:[function(_dereq_,module,exports){ +},{}],190:[function(_dereq_,module,exports){ // https://github.com/topojson/topojson-client Version 2.1.0. Copyright 2016 Mike Bostock. (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : @@ -22938,7 +22970,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); }))); -},{}],192:[function(_dereq_,module,exports){ +},{}],191:[function(_dereq_,module,exports){ (function (global){ /** @@ -23010,16 +23042,16 @@ function config (name) { }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],193:[function(_dereq_,module,exports){ +},{}],192:[function(_dereq_,module,exports){ arguments[4][99][0].apply(exports,arguments) -},{"dup":99}],194:[function(_dereq_,module,exports){ +},{"dup":99}],193:[function(_dereq_,module,exports){ module.exports = function isBuffer(arg) { return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function'; } -},{}],195:[function(_dereq_,module,exports){ +},{}],194:[function(_dereq_,module,exports){ (function (process,global){ // Copyright Joyent, Inc. and other Node contributors. // @@ -23610,7 +23642,7 @@ function hasOwnProperty(obj, prop) { }).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./support/isBuffer":194,"_process":189,"inherits":193}],196:[function(_dereq_,module,exports){ +},{"./support/isBuffer":193,"_process":188,"inherits":192}],195:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -23652,7 +23684,7 @@ function isCoordOutsideTile(coord, tolerance) { return coord[0] <= tile_min.x + tolerance || coord[0] >= tile_max.x - tolerance || coord[1] >= tile_min.y - tolerance || coord[1] <= tile_max.y + tolerance; } -},{"../geo":201}],197:[function(_dereq_,module,exports){ +},{"../geo":200}],196:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -23777,7 +23809,7 @@ function buildQuadsForPoints(points, vertex_data, vertex_template, _ref, _ref2) return geom_count; } -},{"./common":196}],198:[function(_dereq_,module,exports){ +},{"./common":195}],197:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -23983,7 +24015,7 @@ function triangulatePolygon(data) { return (0, _earcut2.default)(data.vertices, data.holes, data.dimensions); } -},{"../geo":201,"../vector":272,"./common":196,"earcut":77}],199:[function(_dereq_,module,exports){ +},{"../geo":200,"../vector":271,"./common":195,"earcut":77}],198:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -24660,7 +24692,7 @@ function permuteLine(line, startIndex) { return newLine; } -},{"../geo":201,"../vector":272,"./common":196}],200:[function(_dereq_,module,exports){ +},{"../geo":200,"../vector":271,"./common":195}],199:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -25027,7 +25059,7 @@ var FlatCamera = function (_IsometricCamera) { return FlatCamera; }(IsometricCamera); -},{"./gl/shader_program":207,"./utils/gl-matrix":257,"./utils/utils":269}],201:[function(_dereq_,module,exports){ +},{"./gl/shader_program":206,"./utils/gl-matrix":256,"./utils/utils":268}],200:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -25376,7 +25408,7 @@ Geo.ringWinding = function (ring) { // return undefined on zero area polygon }; -},{}],202:[function(_dereq_,module,exports){ +},{}],201:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -25397,7 +25429,7 @@ gl.INT = 0x1404; gl.UNSIGNED_INT = 0x1405; gl.FLOAT = 0x1406; -},{}],203:[function(_dereq_,module,exports){ +},{}],202:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -25453,7 +25485,7 @@ Context.resize = function (gl, width, height, device_pixel_ratio) { gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); }; -},{}],204:[function(_dereq_,module,exports){ +},{}],203:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -25483,7 +25515,7 @@ function getExtension(gl, name) { return exts[name]; } -},{}],205:[function(_dereq_,module,exports){ +},{}],204:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -25767,7 +25799,7 @@ GLSL.expandVec4 = function (v) { } }; -},{}],206:[function(_dereq_,module,exports){ +},{}],205:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -25870,7 +25902,7 @@ var RenderStateManager = function RenderStateManager(gl) { exports.default = RenderStateManager; -},{}],207:[function(_dereq_,module,exports){ +},{}],206:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -26709,7 +26741,7 @@ ShaderProgram.createShader = function (gl, source, stype) { return shader; }; -},{"../utils/hash":258,"../utils/log":259,"./extensions":204,"./glsl":205,"./texture":208,"gl-shader-errors":97,"strip-comments":190}],208:[function(_dereq_,module,exports){ +},{"../utils/hash":257,"../utils/log":258,"./extensions":203,"./glsl":204,"./texture":207,"gl-shader-errors":97,"strip-comments":189}],207:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -27279,7 +27311,7 @@ Texture.activeUnit = null; _worker_broker2.default.addTarget('Texture', Texture); (0, _subscribe2.default)(Texture); -},{"../utils/log":259,"../utils/subscribe":265,"../utils/utils":269,"../utils/worker_broker":271}],209:[function(_dereq_,module,exports){ +},{"../utils/log":258,"../utils/subscribe":264,"../utils/utils":268,"../utils/worker_broker":270}],208:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -27378,7 +27410,7 @@ exports.default = { } }; -},{"../utils/log":259,"./extensions":204}],210:[function(_dereq_,module,exports){ +},{"../utils/log":258,"./extensions":203}],209:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -27544,7 +27576,7 @@ var VBOMesh = function () { exports.default = VBOMesh; -},{"./shader_program":207,"./vao":209}],211:[function(_dereq_,module,exports){ +},{"./shader_program":206,"./vao":208}],210:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -27690,7 +27722,7 @@ exports.default = VertexData; VertexData.array_pool = []; // pool of currently available (previously used) buffers (uint8) -},{"../utils/log":259,"./constants":202,"./vertex_elements":212}],212:[function(_dereq_,module,exports){ +},{"../utils/log":258,"./constants":201,"./vertex_elements":211}],211:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -27759,7 +27791,7 @@ function createBuffer(array, overflown) { return new typedArray(array); } -},{}],213:[function(_dereq_,module,exports){ +},{}],212:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -27987,7 +28019,7 @@ VertexLayout.enabled_attribs = {}; // Functions to add plain JS vertex array to typed VBO arrays VertexLayout.add_vertex_funcs = {}; // keyed by unique set of attributes -},{"../utils/hash":258,"./constants":202,"./vertex_data":211}],214:[function(_dereq_,module,exports){ +},{"../utils/hash":257,"./constants":201,"./vertex_data":210}],213:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -28172,7 +28204,7 @@ exports.default = Collision = { } }; -},{"../utils/log":259,"./repeat_group":221}],215:[function(_dereq_,module,exports){ +},{"../utils/log":258,"./repeat_group":220}],214:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -28206,7 +28238,7 @@ function boxIntersectsList(a, boxes, callback) { } } -},{}],216:[function(_dereq_,module,exports){ +},{}],215:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -28349,7 +28381,7 @@ exports.default = Label; Label.epsilon = 0.9999; // tolerance around collision boxes, prevent perfectly adjacent objects from colliding -},{"../utils/obb":262,"../utils/utils":269,"./intersect":215,"./point_anchor":219}],217:[function(_dereq_,module,exports){ +},{"../utils/obb":261,"../utils/utils":268,"./intersect":214,"./point_anchor":218}],216:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -29278,7 +29310,7 @@ function getAbsAngleDiff(angle1, angle2) { return Math.abs(big - small); } -},{"../utils/obb":262,"../vector":272,"./label":216}],218:[function(_dereq_,module,exports){ +},{"../utils/obb":261,"../vector":271,"./label":215}],217:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -29307,6 +29339,8 @@ var _obb2 = _interopRequireDefault(_obb); var _style_parser = _dereq_('../styles/style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -29351,9 +29385,9 @@ var LabelPoint = function (_Label) { // point's own anchor, text anchor applied to point, additional point offset this.offset = _point_anchor2.default.computeOffset(this.offset, parent.size, parent.anchor, _point_anchor2.default.zero_buffer); this.offset = _point_anchor2.default.computeOffset(this.offset, parent.size, this.anchor, _point_anchor2.default.zero_buffer); - if (parent.offset !== _style_parser.StyleParser.zeroPair) { + if (parent.offset !== _style_parser2.default.zeroPair) { // point has an offset - if (this.offset === _style_parser.StyleParser.zeroPair) { + if (this.offset === _style_parser2.default.zeroPair) { // no text offset, use point's this.offset = parent.offset; } else { @@ -29492,7 +29526,7 @@ LabelPoint.PLACEMENT = { CENTROID: 3 // place labels at center of polygons }; -},{"../geo":201,"../styles/style_parser":245,"../utils/obb":262,"./label":216,"./point_anchor":219}],219:[function(_dereq_,module,exports){ +},{"../geo":200,"../styles/style_parser":244,"../utils/obb":261,"./label":215,"./point_anchor":218}],218:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -29575,7 +29609,7 @@ exports.default = PointAnchor = { }; -},{}],220:[function(_dereq_,module,exports){ +},{}],219:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -29738,7 +29772,7 @@ function interpolateSegment(p, q, distance) { return [ratio * p[0] + (1 - ratio) * q[0], ratio * p[1] + (1 - ratio) * q[1]]; } -},{"../builders/common":196,"./label_point":218}],221:[function(_dereq_,module,exports){ +},{"../builders/common":195,"./label_point":217}],220:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -29863,7 +29897,7 @@ RepeatGroup.groups = {}; // will be allowed per group, e.g. set to tile size for one-label-per-tile RepeatGroup.max_repeat_dist = _geo2.default.tile_scale; -},{"../geo":201}],222:[function(_dereq_,module,exports){ +},{"../geo":200}],221:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -30426,7 +30460,7 @@ function extendLeaflet(options) { } } -},{"./geo":201,"./scene":226,"./utils/debounce":254,"./utils/debug_settings":255,"./utils/thread":267}],223:[function(_dereq_,module,exports){ +},{"./geo":200,"./scene":225,"./utils/debounce":253,"./utils/debug_settings":254,"./utils/thread":266}],222:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -30457,6 +30491,8 @@ var _vector2 = _interopRequireDefault(_vector); var _style_parser = _dereq_('./styles/style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } @@ -30484,19 +30520,19 @@ var Light = function () { if (config.ambient == null || typeof config.ambient === 'number') { this.ambient = _glsl2.default.expandVec3(config.ambient || 0); } else { - this.ambient = _style_parser.StyleParser.parseColor(config.ambient).slice(0, 3); + this.ambient = _style_parser2.default.parseColor(config.ambient).slice(0, 3); } if (config.diffuse == null || typeof config.diffuse === 'number') { this.diffuse = _glsl2.default.expandVec3(config.diffuse != null ? config.diffuse : 1); } else { - this.diffuse = _style_parser.StyleParser.parseColor(config.diffuse).slice(0, 3); + this.diffuse = _style_parser2.default.parseColor(config.diffuse).slice(0, 3); } if (config.specular == null || typeof config.specular === 'number') { this.specular = _glsl2.default.expandVec3(config.specular || 0); } else { - this.specular = _style_parser.StyleParser.parseColor(config.specular).slice(0, 3); + this.specular = _style_parser2.default.parseColor(config.specular).slice(0, 3); } } @@ -30764,13 +30800,13 @@ var PointLight = function (_Light3) { this.position_eye[0] = x - this.view.camera.position_meters[0]; this.position_eye[1] = y - this.view.camera.position_meters[1]; - this.position_eye[2] = _style_parser.StyleParser.convertUnits(this.position[2], { zoom: this.view.zoom, meters_per_pixel: _geo2.default.metersPerPixel(this.view.zoom) }); + this.position_eye[2] = _style_parser2.default.convertUnits(this.position[2], { zoom: this.view.zoom, meters_per_pixel: _geo2.default.metersPerPixel(this.view.zoom) }); this.position_eye[2] = this.position_eye[2] - this.view.camera.position_meters[2]; } else if (this.origin === 'ground' || this.origin === 'camera') { // For camera or ground origin, format is: [x, y, z] in meters (default) or pixels w/px units // Light is in camera space by default - this.position_eye = _style_parser.StyleParser.convertUnits(this.position, { zoom: this.view.zoom, meters_per_pixel: _geo2.default.metersPerPixel(this.view.zoom) }); + this.position_eye = _style_parser2.default.convertUnits(this.position, { zoom: this.view.zoom, meters_per_pixel: _geo2.default.metersPerPixel(this.view.zoom) }); if (this.origin === 'ground') { // Leave light's xy in camera space, but z needs to be moved relative to ground plane @@ -30791,11 +30827,11 @@ var PointLight = function (_Light3) { } if (_shader_program2.default.defines['TANGRAM_POINTLIGHT_ATTENUATION_INNER_RADIUS']) { - _program.uniform('1f', 'u_' + this.name + '.innerRadius', _style_parser.StyleParser.convertUnits(this.radius[0], { zoom: this.view.zoom, meters_per_pixel: _geo2.default.metersPerPixel(this.view.zoom) })); + _program.uniform('1f', 'u_' + this.name + '.innerRadius', _style_parser2.default.convertUnits(this.radius[0], { zoom: this.view.zoom, meters_per_pixel: _geo2.default.metersPerPixel(this.view.zoom) })); } if (_shader_program2.default.defines['TANGRAM_POINTLIGHT_ATTENUATION_OUTER_RADIUS']) { - _program.uniform('1f', 'u_' + this.name + '.outerRadius', _style_parser.StyleParser.convertUnits(this.radius[1], { zoom: this.view.zoom, meters_per_pixel: _geo2.default.metersPerPixel(this.view.zoom) })); + _program.uniform('1f', 'u_' + this.name + '.outerRadius', _style_parser2.default.convertUnits(this.radius[1], { zoom: this.view.zoom, meters_per_pixel: _geo2.default.metersPerPixel(this.view.zoom) })); } } }], [{ @@ -30859,7 +30895,7 @@ var SpotLight = function (_PointLight) { Light.types['spotlight'] = SpotLight; -},{"./geo":201,"./gl/glsl":205,"./gl/shader_program":207,"./styles/style_parser":245,"./vector":272}],224:[function(_dereq_,module,exports){ +},{"./geo":200,"./gl/glsl":204,"./gl/shader_program":206,"./styles/style_parser":244,"./vector":271}],223:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -30874,6 +30910,8 @@ var _glsl2 = _interopRequireDefault(_glsl); var _style_parser = _dereq_('./styles/style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -30905,7 +30943,7 @@ var Material = function () { } else if (typeof value === 'number' || Array.isArray(value)) { _this[prop] = { amount: _glsl2.default.expandVec4(value) }; } else if (typeof value === 'string') { - _this[prop] = { amount: _style_parser.StyleParser.parseColor(value) }; + _this[prop] = { amount: _style_parser2.default.parseColor(value) }; } else { _this[prop] = value; } @@ -31020,7 +31058,7 @@ exports.default = Material; Material.block = 'material'; -},{"./gl/glsl":205,"./styles/style_parser":245}],225:[function(_dereq_,module,exports){ +},{"./gl/glsl":204,"./styles/style_parser":244}],224:[function(_dereq_,module,exports){ 'use strict'; _dereq_('./utils/polyfills'); @@ -31103,6 +31141,8 @@ var _style_manager = _dereq_('./styles/style_manager'); var _style_parser = _dereq_('./styles/style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + var _collision = _dereq_('./labels/collision'); var _collision2 = _interopRequireDefault(_collision); @@ -31152,7 +31192,7 @@ var debug = { WorkerBroker: _worker_broker2.default, layerCache: _layer.layerCache, StyleManager: _style_manager.StyleManager, - StyleParser: _style_parser.StyleParser, + StyleParser: _style_parser2.default, Collision: _collision2.default, FeatureSelection: _selection2.default, CanvasText: _canvas_text2.default, @@ -31182,7 +31222,7 @@ module.exports = { version: _version2.default }; -},{"./geo":201,"./gl/glsl":205,"./gl/shader_program":207,"./gl/texture":208,"./gl/vertex_data":211,"./labels/collision":214,"./leaflet_layer":222,"./light":223,"./material":224,"./scene":226,"./scene_worker":229,"./selection":230,"./sources/data_source":231,"./sources/geojson":232,"./sources/mvt":233,"./sources/raster":234,"./sources/topojson":235,"./styles/layer":237,"./styles/style_manager":244,"./styles/style_parser":245,"./styles/text/canvas_text":246,"./utils/debug_settings":255,"./utils/log":259,"./utils/polyfills":263,"./utils/thread":267,"./utils/utils":269,"./utils/version":270,"./utils/worker_broker":271,"./vector":272,"js-yaml":102,"jszip":138}],226:[function(_dereq_,module,exports){ +},{"./geo":200,"./gl/glsl":204,"./gl/shader_program":206,"./gl/texture":207,"./gl/vertex_data":210,"./labels/collision":213,"./leaflet_layer":221,"./light":222,"./material":223,"./scene":225,"./scene_worker":228,"./selection":229,"./sources/data_source":230,"./sources/geojson":231,"./sources/mvt":232,"./sources/raster":233,"./sources/topojson":234,"./styles/layer":236,"./styles/style_manager":243,"./styles/style_parser":244,"./styles/text/canvas_text":245,"./utils/debug_settings":254,"./utils/log":258,"./utils/polyfills":262,"./utils/thread":266,"./utils/utils":268,"./utils/version":269,"./utils/worker_broker":270,"./vector":271,"js-yaml":102,"jszip":138}],225:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -31247,6 +31287,8 @@ var _style = _dereq_('./styles/style'); var _style_parser = _dereq_('./styles/style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + var _scene_loader = _dereq_('./scene_loader'); var _scene_loader2 = _interopRequireDefault(_scene_loader); @@ -32487,7 +32529,7 @@ var Scene = function () { var bg = this.config.scene.background; this.background = {}; if (bg && bg.color) { - this.background.color = _style_parser.StyleParser.parseColor(bg.color); + this.background.color = _style_parser2.default.parseColor(bg.color); } if (!this.background.color) { this.background.color = [0, 0, 0, 0]; // default background TODO: vary w/scene alpha @@ -32866,7 +32908,7 @@ exports.default = Scene; Scene.id = 0; // unique id for a scene instance Scene.generation = 0; // id that is incremented each time a scene config is re-parsed -},{"./gl/context":203,"./gl/render_state":206,"./gl/shader_program":207,"./gl/texture":208,"./gl/vao":209,"./light":223,"./scene_loader":228,"./selection":230,"./sources/data_source":231,"./styles/style":243,"./styles/style_manager":244,"./styles/style_parser":245,"./styles/text/canvas_text":246,"./styles/text/font_manager":247,"./tile":251,"./tile_manager":252,"./utils/debug_settings":255,"./utils/log":259,"./utils/media_capture":260,"./utils/slice":264,"./utils/subscribe":265,"./utils/task":266,"./utils/urls":268,"./utils/utils":269,"./utils/worker_broker":271,"./view":273}],227:[function(_dereq_,module,exports){ +},{"./gl/context":202,"./gl/render_state":205,"./gl/shader_program":206,"./gl/texture":207,"./gl/vao":208,"./light":222,"./scene_loader":227,"./selection":229,"./sources/data_source":230,"./styles/style":242,"./styles/style_manager":243,"./styles/style_parser":244,"./styles/text/canvas_text":245,"./styles/text/font_manager":246,"./tile":250,"./tile_manager":251,"./utils/debug_settings":254,"./utils/log":258,"./utils/media_capture":259,"./utils/slice":263,"./utils/subscribe":264,"./utils/task":265,"./utils/urls":267,"./utils/utils":268,"./utils/worker_broker":270,"./view":272}],226:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -33190,7 +33232,7 @@ function loadResource(source) { }); } -},{"./utils/urls":268,"./utils/utils":269,"js-yaml":102,"jszip":138}],228:[function(_dereq_,module,exports){ +},{"./utils/urls":267,"./utils/utils":268,"js-yaml":102,"jszip":138}],227:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -33663,7 +33705,7 @@ function flattenProperties(obj) { (0, _subscribe2.default)(SceneLoader); -},{"./gl/glsl":205,"./scene_bundle":227,"./styles/layer":237,"./utils/log":259,"./utils/merge":261,"./utils/subscribe":265,"./utils/urls":268}],229:[function(_dereq_,module,exports){ +},{"./gl/glsl":204,"./scene_bundle":226,"./styles/layer":236,"./utils/log":258,"./utils/merge":260,"./utils/subscribe":264,"./utils/urls":267}],228:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -33707,6 +33749,8 @@ var _selection2 = _interopRequireDefault(_selection); var _style_parser = _dereq_('./styles/style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + var _style_manager = _dereq_('./styles/style_manager'); var _layer = _dereq_('./styles/layer'); @@ -33805,7 +33849,7 @@ if (_thread2.default.is_worker) { self.createDataSources(config); // Expand styles - config.styles = _utils2.default.stringsToFunctions(config.styles, _style_parser.StyleParser.wrapFunction); + config.styles = _utils2.default.stringsToFunctions(config.styles, _style_parser2.default.wrapFunction); self.styles = self.style_manager.build(config.styles); self.style_manager.initStyles({ generation: self.generation, @@ -33991,7 +34035,7 @@ if (_thread2.default.is_worker) { // Compile feature filter if (filter != null) { filter = ['{', '['].indexOf(filter[0]) > -1 ? JSON.parse(filter) : filter; // de-serialize if looks like an object - filter = _utils2.default.stringsToFunctions(filter, _style_parser.StyleParser.wrapFunction); + filter = _utils2.default.stringsToFunctions(filter, _style_parser2.default.wrapFunction); } filter = (0, _filter.buildFilter)(filter, _layer.FilterOptions); @@ -34005,7 +34049,7 @@ if (_thread2.default.is_worker) { } // Apply feature filter - var context = _style_parser.StyleParser.getFeatureParseContext(feature, tile, self.global); + var context = _style_parser2.default.getFeatureParseContext(feature, tile, self.global); context.source = tile.source; // add data source name context.layer = layer; // add data source layer name @@ -34100,7 +34144,7 @@ if (_thread2.default.is_worker) { _worker_broker2.default.addTarget('self', self); } -},{"./geo":201,"./gl/texture":208,"./gl/vertex_elements":212,"./selection":230,"./sources/data_source":231,"./styles/filter":236,"./styles/layer":237,"./styles/style_manager":244,"./styles/style_parser":245,"./tile":251,"./utils/debug_settings":255,"./utils/log":259,"./utils/thread":267,"./utils/utils":269,"./utils/worker_broker":271}],230:[function(_dereq_,module,exports){ +},{"./geo":200,"./gl/texture":207,"./gl/vertex_elements":211,"./selection":229,"./sources/data_source":230,"./styles/filter":235,"./styles/layer":236,"./styles/style_manager":243,"./styles/style_parser":244,"./tile":250,"./utils/debug_settings":254,"./utils/log":258,"./utils/thread":266,"./utils/utils":268,"./utils/worker_broker":270}],229:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -34522,7 +34566,7 @@ FeatureSelection.map_entry = 0; FeatureSelection.map_prefix = 0; // set by worker to worker id # FeatureSelection.defaultColor = [0, 0, 0, 1]; -},{"./gl/texture":208,"./utils/log":259,"./utils/worker_broker":271}],231:[function(_dereq_,module,exports){ +},{"./gl/texture":207,"./utils/log":258,"./utils/worker_broker":270}],230:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35023,7 +35067,7 @@ var NetworkTileSource = exports.NetworkTileSource = function (_NetworkSource) { return NetworkTileSource; }(NetworkSource); -},{"../geo":201,"../utils/errors":256,"../utils/log":259,"../utils/urls":268,"../utils/utils":269}],232:[function(_dereq_,module,exports){ +},{"../geo":200,"../utils/errors":255,"../utils/log":258,"../utils/urls":267,"../utils/utils":268}],231:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35372,7 +35416,7 @@ function getCentroidFeatureForPolygon(coordinates, properties, newProperties) { }; } -},{"../geo":201,"../utils/log":259,"./data_source":231,"./mvt":233,"geojson-vt":83}],233:[function(_dereq_,module,exports){ +},{"../geo":200,"../utils/log":258,"./data_source":230,"./mvt":232,"geojson-vt":83}],232:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35541,7 +35585,7 @@ function decodeMultiPolygon(geom) { _data_source2.default.register(MVTSource, 'MVT'); -},{"../geo":201,"./data_source":231,"@mapbox/vector-tile":2,"pbf":187}],234:[function(_dereq_,module,exports){ +},{"../geo":200,"./data_source":230,"@mapbox/vector-tile":2,"pbf":186}],233:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35639,7 +35683,7 @@ var RasterTileSource = exports.RasterTileSource = function (_NetworkTileSource) _data_source2.default.register(RasterTileSource, 'Raster'); -},{"../geo":201,"../tile":251,"./data_source":231}],235:[function(_dereq_,module,exports){ +},{"../geo":200,"../tile":250,"./data_source":230}],234:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35767,7 +35811,7 @@ var TopoJSONTileSource = exports.TopoJSONTileSource = function (_GeoJSONTileSour _data_source2.default.register(TopoJSONTileSource, 'TopoJSON'); // prefered shorter name -},{"./data_source":231,"./geojson":232,"topojson-client":191}],236:[function(_dereq_,module,exports){ +},{"./data_source":230,"./geojson":231,"topojson-client":190}],235:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35924,7 +35968,7 @@ function buildFilter(filter, options) { return new Function('context', 'return ' + filterToString(parseFilter(filter, options)) + ';'); } -},{}],237:[function(_dereq_,module,exports){ +},{}],236:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35949,6 +35993,8 @@ exports.matchFeature = matchFeature; var _style_parser = _dereq_('./style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + var _utils = _dereq_('../utils/utils'); var _utils2 = _interopRequireDefault(_utils); @@ -36118,14 +36164,14 @@ var Layer = function () { }, { key: 'buildDraw', value: function buildDraw() { - this.draw = _utils2.default.stringsToFunctions(this.draw, _style_parser.StyleParser.wrapFunction); + this.draw = _utils2.default.stringsToFunctions(this.draw, _style_parser2.default.wrapFunction); this.calculatedDraw = calculateDraw(this); } }, { key: 'buildFilter', value: function buildFilter() { this.filter_original = this.filter; - this.filter = _utils2.default.stringsToFunctions(this.filter, _style_parser.StyleParser.wrapFunction); + this.filter = _utils2.default.stringsToFunctions(this.filter, _style_parser2.default.wrapFunction); var type = _typeof(this.filter); if (this.filter != null && type !== 'object' && type !== 'function') { @@ -36535,7 +36581,7 @@ function matchFeature(context, layers, collected_layers, collected_layers_ids) { return matched; } -},{"../utils/log":259,"../utils/merge":261,"../utils/utils":269,"./filter":236,"./style_parser":245}],238:[function(_dereq_,module,exports){ +},{"../utils/log":258,"../utils/merge":260,"../utils/utils":268,"./filter":235,"./style_parser":244}],237:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -36586,7 +36632,7 @@ function renderDashArray(pattern) { return { pixels: pixels, length: length }; } -},{}],239:[function(_dereq_,module,exports){ +},{}],238:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -36594,10 +36640,16 @@ Object.defineProperty(exports, "__esModule", { }); exports.Lines = undefined; +var _log = _dereq_('../../utils/log'); + +var _log2 = _interopRequireDefault(_log); + var _style = _dereq_('../style'); var _style_parser = _dereq_('../style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + var _constants = _dereq_('../../gl/constants'); var _constants2 = _interopRequireDefault(_constants); @@ -36633,7 +36685,9 @@ var _polygons = _dereq_('../polygons/polygons'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // web workers don't have access to GL context, so import all GL constants -var Lines = exports.Lines = Object.create(_style.Style); // Line rendering style +// Line rendering style + +var Lines = exports.Lines = Object.create(_style.Style); Lines.vertex_layouts = [[], []]; // first dimension is texcoords on/off, second is offsets on/off Lines.variants = {}; // mesh variants by variant key @@ -36666,7 +36720,7 @@ Object.assign(Lines, { // Calculate width or offset at zoom given in `context` calcDistance: function calcDistance(prop, context) { - return prop && _style_parser.StyleParser.evalCachedDistanceProperty(prop, context) || 0; + return prop && _style_parser2.default.evalCachedDistanceProperty(prop, context) || 0; }, @@ -36792,9 +36846,9 @@ Object.assign(Lines, { style.variant = draw.variant; // pre-calculated mesh variant // height defaults to feature height, but extrude style can dynamically adjust height by returning a number or array (instead of a boolean) - style.z = draw.z && _style_parser.StyleParser.evalCachedDistanceProperty(draw.z || 0, context) || _style_parser.StyleParser.defaults.z; - style.height = feature.properties.height || _style_parser.StyleParser.defaults.height; - style.extrude = _style_parser.StyleParser.evalProperty(draw.extrude, context); + style.z = draw.z && _style_parser2.default.evalCachedDistanceProperty(draw.z || 0, context) || _style_parser2.default.defaults.z; + style.height = feature.properties.height || _style_parser2.default.defaults.height; + style.extrude = _style_parser2.default.evalProperty(draw.extrude, context); if (style.extrude) { if (typeof style.extrude === 'number') { style.height = style.extrude; @@ -36884,30 +36938,30 @@ Object.assign(Lines, { return style; }, _preprocess: function _preprocess(draw) { - draw.color = _style_parser.StyleParser.createColorPropertyCache(draw.color); - draw.width = _style_parser.StyleParser.createPropertyCache(draw.width, _style_parser.StyleParser.parseUnits); - if (draw.width && draw.width.type !== _style_parser.StyleParser.CACHE_TYPE.STATIC) { - draw.next_width = _style_parser.StyleParser.createPropertyCache(draw.width, _style_parser.StyleParser.parseUnits); + draw.color = _style_parser2.default.createColorPropertyCache(draw.color); + draw.width = _style_parser2.default.createPropertyCache(draw.width, _style_parser2.default.parseUnits); + if (draw.width && draw.width.type !== _style_parser2.default.CACHE_TYPE.STATIC) { + draw.next_width = _style_parser2.default.createPropertyCache(draw.width, _style_parser2.default.parseUnits); } - draw.offset = draw.offset && _style_parser.StyleParser.createPropertyCache(draw.offset, _style_parser.StyleParser.parseUnits); - if (draw.offset && draw.offset.type !== _style_parser.StyleParser.CACHE_TYPE.STATIC) { - draw.next_offset = _style_parser.StyleParser.createPropertyCache(draw.offset, _style_parser.StyleParser.parseUnits); + draw.offset = draw.offset && _style_parser2.default.createPropertyCache(draw.offset, _style_parser2.default.parseUnits); + if (draw.offset && draw.offset.type !== _style_parser2.default.CACHE_TYPE.STATIC) { + draw.next_offset = _style_parser2.default.createPropertyCache(draw.offset, _style_parser2.default.parseUnits); } - draw.z = _style_parser.StyleParser.createPropertyCache(draw.z, _style_parser.StyleParser.parseUnits); + draw.z = _style_parser2.default.createPropertyCache(draw.z, _style_parser2.default.parseUnits); draw.dash = draw.dash !== undefined ? draw.dash : this.dash; draw.dash_key = draw.dash && this.dashTextureKey(draw.dash); draw.dash_background_color = draw.dash_background_color !== undefined ? draw.dash_background_color : this.dash_background_color; - draw.dash_background_color = draw.dash_background_color && _style_parser.StyleParser.parseColor(draw.dash_background_color); + draw.dash_background_color = draw.dash_background_color && _style_parser2.default.parseColor(draw.dash_background_color); draw.texture_merged = draw.dash_key || (draw.texture !== undefined ? draw.texture : this.texture); draw.texcoords = this.texcoords || draw.texture_merged ? 1 : 0; this.computeVariant(draw); if (draw.outline) { draw.outline.style = draw.outline.style || this.name; - draw.outline.color = _style_parser.StyleParser.createColorPropertyCache(draw.outline.color); - draw.outline.width = _style_parser.StyleParser.createPropertyCache(draw.outline.width, _style_parser.StyleParser.parseUnits); - draw.outline.next_width = _style_parser.StyleParser.createPropertyCache(draw.outline.width, _style_parser.StyleParser.parseUnits); // width re-computed for next zoom + draw.outline.color = _style_parser2.default.createColorPropertyCache(draw.outline.color); + draw.outline.width = _style_parser2.default.createPropertyCache(draw.outline.width, _style_parser2.default.parseUnits); + draw.outline.next_width = _style_parser2.default.createPropertyCache(draw.outline.width, _style_parser2.default.parseUnits); // width re-computed for next zoom draw.outline.cap = draw.outline.cap || draw.cap; draw.outline.join = draw.outline.join || draw.join; @@ -36916,32 +36970,37 @@ Object.assign(Lines, { // outline inhertits dash pattern, but NOT explicit texture var outline_style = this.styles[draw.outline.style]; - draw.outline.dash = draw.outline.dash !== undefined ? draw.outline.dash : outline_style.dash; - draw.outline.texture = draw.outline.texture !== undefined ? draw.outline.texture : outline_style.texture; - - if (draw.outline.dash != null) { - // dash was defined by outline draw or style - draw.outline.dash_key = draw.outline.dash && this.dashTextureKey(draw.outline.dash); - draw.outline.texture_merged = draw.outline.dash_key; - } else if (draw.outline.dash === null) { - // dash explicitly disabled by outline draw or style - draw.outline.dash_key = null; - draw.outline.texture_merged = draw.outline.texture; - } else if (draw.outline.texture != null) { - // texture was defined by outline draw or style - draw.outline.dash_key = null; // outline explicitly turning off dash - draw.outline.texture_merged = draw.outline.texture; + if (outline_style) { + draw.outline.dash = draw.outline.dash !== undefined ? draw.outline.dash : outline_style.dash; + draw.outline.texture = draw.outline.texture !== undefined ? draw.outline.texture : outline_style.texture; + + if (draw.outline.dash != null) { + // dash was defined by outline draw or style + draw.outline.dash_key = draw.outline.dash && this.dashTextureKey(draw.outline.dash); + draw.outline.texture_merged = draw.outline.dash_key; + } else if (draw.outline.dash === null) { + // dash explicitly disabled by outline draw or style + draw.outline.dash_key = null; + draw.outline.texture_merged = draw.outline.texture; + } else if (draw.outline.texture != null) { + // texture was defined by outline draw or style + draw.outline.dash_key = null; // outline explicitly turning off dash + draw.outline.texture_merged = draw.outline.texture; + } else { + // no dash or texture defined for outline, inherit parent dash + draw.outline.dash = draw.dash; + draw.outline.dash_key = draw.outline.dash && this.dashTextureKey(draw.outline.dash); + draw.outline.texture_merged = draw.outline.dash_key; + } + draw.outline.dash_background_color = draw.outline.dash_background_color !== undefined ? draw.outline.dash_background_color : outline_style.dash_background_color; + draw.outline.dash_background_color = draw.outline.dash_background_color !== undefined ? draw.outline.dash_background_color : draw.dash_background_color; + draw.outline.dash_background_color = draw.outline.dash_background_color && _style_parser2.default.parseColor(draw.outline.dash_background_color); + draw.outline.texcoords = outline_style.texcoords || draw.outline.texture_merged ? 1 : 0; + this.computeVariant(draw.outline); } else { - // no dash or texture defined for outline, inherit parent dash - draw.outline.dash = draw.dash; - draw.outline.dash_key = draw.outline.dash && this.dashTextureKey(draw.outline.dash); - draw.outline.texture_merged = draw.outline.dash_key; + (0, _log2.default)({ level: 'warn', once: true }, 'Layer \'' + draw.layers[draw.layers.length - 1] + '\': ' + ('line \'outline\' specifies non-existent draw style \'' + draw.outline.style + '\' (or maybe the style is ') + 'defined but is missing a \'base\' or has another error), skipping outlines in layer'); + draw.outline = null; } - draw.outline.dash_background_color = draw.outline.dash_background_color !== undefined ? draw.outline.dash_background_color : outline_style.dash_background_color; - draw.outline.dash_background_color = draw.outline.dash_background_color !== undefined ? draw.outline.dash_background_color : draw.dash_background_color; - draw.outline.dash_background_color = draw.outline.dash_background_color && _style_parser.StyleParser.parseColor(draw.outline.dash_background_color); - draw.outline.texcoords = outline_style.texcoords || draw.outline.texture_merged ? 1 : 0; - this.computeVariant(draw.outline); } return draw; }, @@ -37171,7 +37230,7 @@ Object.assign(Lines, { } }); -},{"../../builders/polylines":199,"../../geo":201,"../../gl/constants":202,"../../gl/texture":208,"../../gl/vertex_layout":213,"../../utils/hash":258,"../../utils/worker_broker":271,"../polygons/polygons":241,"../style":243,"../style_parser":245,"./dasharray":238}],240:[function(_dereq_,module,exports){ +},{"../../builders/polylines":198,"../../geo":200,"../../gl/constants":201,"../../gl/texture":207,"../../gl/vertex_layout":212,"../../utils/hash":257,"../../utils/log":258,"../../utils/worker_broker":270,"../polygons/polygons":240,"../style":242,"../style_parser":244,"./dasharray":237}],239:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -37192,6 +37251,8 @@ var _style = _dereq_('../style'); var _style_parser = _dereq_('../style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + var _constants = _dereq_('../../gl/constants'); var _constants2 = _interopRequireDefault(_constants); @@ -37259,7 +37320,7 @@ var TANGRAM_POINT_TYPE_LABEL = 2; // labels (generated by rendering labels to ca var TANGRAM_POINT_TYPE_SHADER = 3; // point (drawn in shader) // default point size in pixels -var DEFAULT_POINT_SIZE = [16, 16]; +var DEFAULT_POINT_SIZE = 16; // Mixin text label methods Object.assign(Points, _text_labels.TextLabels); @@ -37377,9 +37438,9 @@ Object.assign(Points, { // point size defined explicitly, or defaults to sprite size, or generic fallback style.size = draw.size; if (!style.size) { - style.size = sprite_info && sprite_info.css_size || DEFAULT_POINT_SIZE; + style.size = sprite_info && sprite_info.css_size || [DEFAULT_POINT_SIZE, DEFAULT_POINT_SIZE]; } else { - style.size = _style_parser.StyleParser.evalCachedPointSizeProperty(draw.size, sprite_info, context); + style.size = _style_parser2.default.evalCachedPointSizeProperty(draw.size, sprite_info, context); if (style.size == null) { (0, _log2.default)({ level: 'warn', once: true }, 'Layer \'' + draw.layers[draw.layers.length - 1] + '\': ' + ('\'size\' includes % and/or ratio-based scaling (' + JSON.stringify(draw.size.value) + '); ') + 'these can only applied to sprites, but no sprite was specified, skipping features in layer'); return; @@ -37390,7 +37451,7 @@ Object.assign(Points, { // incorporate outline into size if (draw.outline) { - style.outline_width = _style_parser.StyleParser.evalCachedProperty(draw.outline.width, context) || _style_parser.StyleParser.defaults.outline.width; + style.outline_width = _style_parser2.default.evalCachedProperty(draw.outline.width, context) || _style_parser2.default.defaults.outline.width; style.outline_color = this.parseColor(draw.outline.color, context); } @@ -37403,22 +37464,23 @@ Object.assign(Points, { } // size will be scaled to 16-bit signed int, so max allowed width + height of 256 pixels - style.size = [Math.min(style.size[0], 256), Math.min(style.size[1], 256)]; + style.size[0] = Math.min(style.size[0], 256); + style.size[1] = Math.min(style.size[1], 256); // Placement strategy style.placement = draw.placement; - style.placement_min_length_ratio = _style_parser.StyleParser.evalCachedProperty(draw.placement_min_length_ratio, context); + style.placement_min_length_ratio = _style_parser2.default.evalCachedProperty(draw.placement_min_length_ratio, context); // Spacing parameter (in pixels) to equally space points along a line if (style.placement === PLACEMENT.SPACED && draw.placement_spacing) { - style.placement_spacing = _style_parser.StyleParser.evalCachedProperty(draw.placement_spacing, context); + style.placement_spacing = _style_parser2.default.evalCachedProperty(draw.placement_spacing, context); } // Angle parameter (can be a number or the string "auto") - style.angle = _style_parser.StyleParser.evalProperty(draw.angle, context) || 0; + style.angle = _style_parser2.default.evalProperty(draw.angle, context) || 0; // points can be placed off the ground - style.z = draw.z && _style_parser.StyleParser.evalCachedDistanceProperty(draw.z, context) || _style_parser.StyleParser.defaults.z; + style.z = draw.z && _style_parser2.default.evalCachedDistanceProperty(draw.z, context) || _style_parser2.default.defaults.z; style.tile_edges = draw.tile_edges; // usually activated for debugging, or rare visualization needs @@ -37471,7 +37533,7 @@ Object.assign(Points, { return info; }, parseSprite: function parseSprite(style, draw, context) { - var sprite = _style_parser.StyleParser.evalProperty(draw.sprite, context); + var sprite = _style_parser2.default.evalProperty(draw.sprite, context); var sprite_info = this.getSpriteInfo(style, sprite) || this.getSpriteInfo(style, draw.sprite_default); return sprite_info; }, @@ -37594,44 +37656,36 @@ Object.assign(Points, { }); }, _preprocess: function _preprocess(draw) { - draw.color = _style_parser.StyleParser.createColorPropertyCache(draw.color); + draw.color = _style_parser2.default.createColorPropertyCache(draw.color); draw.texture = draw.texture !== undefined ? draw.texture : this.texture; // optional or default texture if (draw.outline) { - draw.outline.color = _style_parser.StyleParser.createColorPropertyCache(draw.outline.color); - draw.outline.width = _style_parser.StyleParser.createPropertyCache(draw.outline.width, function (v) { - return Array.isArray(v) ? v.map(parseFloat) : parseFloat(v); - }); + draw.outline.color = _style_parser2.default.createColorPropertyCache(draw.outline.color); + draw.outline.width = _style_parser2.default.createPropertyCache(draw.outline.width, _style_parser2.default.parsePositiveNumber); } - draw.z = _style_parser.StyleParser.createPropertyCache(draw.z, _style_parser.StyleParser.parseUnits); + draw.z = _style_parser2.default.createPropertyCache(draw.z, _style_parser2.default.parseUnits); // Size (1d value or 2d array) try { - draw.size = _style_parser.StyleParser.createPointSizePropertyCache(draw.size); + draw.size = _style_parser2.default.createPointSizePropertyCache(draw.size); } catch (e) { (0, _log2.default)({ level: 'warn', once: true }, 'Layer \'' + draw.layers[draw.layers.length - 1] + '\': ' + (e + ' (' + JSON.stringify(draw.size) + '), skipping features in layer')); return null; } // Offset (2d array) - draw.offset = _style_parser.StyleParser.createPropertyCache(draw.offset, function (v) { - return Array.isArray(v) && v.map(parseFloat).map(function (v) { - return isNaN(v) ? 0 : v; - }) || [0, 0]; + draw.offset = _style_parser2.default.createPropertyCache(draw.offset, function (v) { + return Array.isArray(v) && v.map(_style_parser2.default.parseNumber); }); // Buffer (1d value or or 2d array) - must be >= 0 - draw.buffer = _style_parser.StyleParser.createPropertyCache(draw.buffer, function (v) { - return (Array.isArray(v) ? v : [v, v]).map(function (v) { - return Math.max(parseFloat(v), 0); - }).map(function (v) { - return isNaN(v) ? 0 : v; - }) || [0, 0]; + draw.buffer = _style_parser2.default.createPropertyCache(draw.buffer, function (v) { + return (Array.isArray(v) ? v : [v, v]).map(_style_parser2.default.parsePositiveNumber); }); // Repeat rules - no repeat limitation for points by default - draw.repeat_distance = _style_parser.StyleParser.createPropertyCache(draw.repeat_distance, parseFloat); + draw.repeat_distance = _style_parser2.default.createPropertyCache(draw.repeat_distance, _style_parser2.default.parseNumber); // Placement strategies draw.placement = PLACEMENT[draw.placement && draw.placement.toUpperCase()]; @@ -37640,10 +37694,10 @@ Object.assign(Points, { } draw.placement_spacing = draw.placement_spacing != null ? draw.placement_spacing : 80; // default spacing - draw.placement_spacing = _style_parser.StyleParser.createPropertyCache(draw.placement_spacing, parseFloat); + draw.placement_spacing = _style_parser2.default.createPropertyCache(draw.placement_spacing, _style_parser2.default.parsePositiveNumber); draw.placement_min_length_ratio = draw.placement_min_length_ratio != null ? draw.placement_min_length_ratio : 1; - draw.placement_min_length_ratio = _style_parser.StyleParser.createPropertyCache(draw.placement_min_length_ratio, parseFloat); + draw.placement_min_length_ratio = _style_parser2.default.createPropertyCache(draw.placement_min_length_ratio, _style_parser2.default.parsePositiveNumber); if (typeof draw.angle === 'number') { draw.angle = draw.angle * Math.PI / 180; @@ -37692,11 +37746,11 @@ Object.assign(Points, { layout.anchor = draw.anchor; // label offset and buffer in pixel (applied in screen space) - layout.offset = _style_parser.StyleParser.evalCachedProperty(draw.offset, context) || _style_parser.StyleParser.zeroPair; - layout.buffer = _style_parser.StyleParser.evalCachedProperty(draw.buffer, context) || _style_parser.StyleParser.zeroPair; + layout.offset = _style_parser2.default.evalCachedProperty(draw.offset, context) || _style_parser2.default.zeroPair; + layout.buffer = _style_parser2.default.evalCachedProperty(draw.buffer, context) || _style_parser2.default.zeroPair; // repeat rules - layout.repeat_distance = _style_parser.StyleParser.evalCachedProperty(draw.repeat_distance, context); + layout.repeat_distance = _style_parser2.default.evalCachedProperty(draw.repeat_distance, context); if (layout.repeat_distance) { layout.repeat_distance *= layout.units_per_pixel; @@ -37808,7 +37862,7 @@ Object.assign(Points, { * A plain JS array matching the order of the vertex layout. */ makeVertexTemplate: function makeVertexTemplate(style, mesh) { - var color = style.color || _style_parser.StyleParser.defaults.color; + var color = style.color || _style_parser2.default.defaults.color; var vertex_layout = mesh.vertex_data.vertex_layout; // position - x & y coords will be filled in per-vertex below @@ -37831,9 +37885,9 @@ Object.assign(Points, { // outline (can be static or dynamic depending on style) if (this.defines.TANGRAM_HAS_SHADER_POINTS && mesh.variant.shader_point) { - var outline_color = style.outline_color || _style_parser.StyleParser.defaults.outline.color; + var outline_color = style.outline_color || _style_parser2.default.defaults.outline.color; this.fillVertexTemplate(vertex_layout, 'a_outline_color', _vector2.default.mult(outline_color, 255), { size: 4 }); - this.fillVertexTemplate(vertex_layout, 'a_outline_edge', style.outline_edge_pct || _style_parser.StyleParser.defaults.outline.width, { size: 1 }); + this.fillVertexTemplate(vertex_layout, 'a_outline_edge', style.outline_edge_pct || _style_parser2.default.defaults.outline.width, { size: 1 }); } // selection color @@ -38053,7 +38107,7 @@ Object.assign(Points, { } }); -},{"../../builders/points":197,"../../geo":201,"../../gl/constants":202,"../../gl/texture":208,"../../gl/vertex_layout":213,"../../labels/collision":214,"../../labels/label_point":218,"../../labels/point_placement":220,"../../utils/debug_settings":255,"../../utils/log":259,"../../vector":272,"../../view":273,"../style":243,"../style_parser":245,"../text/text_labels":249}],241:[function(_dereq_,module,exports){ +},{"../../builders/points":196,"../../geo":200,"../../gl/constants":201,"../../gl/texture":207,"../../gl/vertex_layout":212,"../../labels/collision":213,"../../labels/label_point":217,"../../labels/point_placement":219,"../../utils/debug_settings":254,"../../utils/log":258,"../../vector":271,"../../view":272,"../style":242,"../style_parser":244,"../text/text_labels":248}],240:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -38065,6 +38119,8 @@ var _style = _dereq_('../style'); var _style_parser = _dereq_('../style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + var _constants = _dereq_('../../gl/constants'); var _constants2 = _interopRequireDefault(_constants); @@ -38125,15 +38181,15 @@ Object.assign(Polygons, { return null; } - style.z = draw.z && _style_parser.StyleParser.evalCachedDistanceProperty(draw.z, context) || _style_parser.StyleParser.defaults.z; + style.z = draw.z && _style_parser2.default.evalCachedDistanceProperty(draw.z, context) || _style_parser2.default.defaults.z; style.z *= _geo2.default.height_scale; // provide sub-meter precision of height values - style.extrude = _style_parser.StyleParser.evalProperty(draw.extrude, context); + style.extrude = _style_parser2.default.evalProperty(draw.extrude, context); if (style.extrude) { // use feature's height and min_height properties if (style.extrude === true) { - style.height = feature.properties.height || _style_parser.StyleParser.defaults.height; - style.min_height = feature.properties.min_height || _style_parser.StyleParser.defaults.min_height; + style.height = feature.properties.height || _style_parser2.default.defaults.height; + style.min_height = feature.properties.min_height || _style_parser2.default.defaults.min_height; } // explicit height, no min_height else if (typeof style.extrude === 'number') { @@ -38155,8 +38211,8 @@ Object.assign(Polygons, { return style; }, _preprocess: function _preprocess(draw) { - draw.color = _style_parser.StyleParser.createColorPropertyCache(draw.color); - draw.z = _style_parser.StyleParser.createPropertyCache(draw.z, _style_parser.StyleParser.parseUnits); + draw.color = _style_parser2.default.createColorPropertyCache(draw.color); + draw.z = _style_parser2.default.createPropertyCache(draw.z, _style_parser2.default.parseUnits); return draw; }, @@ -38225,7 +38281,7 @@ Object.assign(Polygons, { } }); -},{"../../builders/polygons":198,"../../geo":201,"../../gl/constants":202,"../../gl/vertex_layout":213,"../style":243,"../style_parser":245}],242:[function(_dereq_,module,exports){ +},{"../../builders/polygons":197,"../../geo":200,"../../gl/constants":201,"../../gl/vertex_layout":212,"../style":242,"../style_parser":244}],241:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -38235,8 +38291,12 @@ exports.RasterStyle = undefined; var _style_parser = _dereq_('../style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + var _polygons = _dereq_('../polygons/polygons'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + // Raster tile rendering style var RasterStyle = exports.RasterStyle = Object.create(_polygons.Polygons); @@ -38256,12 +38316,12 @@ Object.assign(RasterStyle, { }, _preprocess: function _preprocess(draw) { // Raster tiles default to white vertex color, as this color will tint the underlying texture - draw.color = draw.color || _style_parser.StyleParser.defaults.color; + draw.color = draw.color || _style_parser2.default.defaults.color; return this.super._preprocess.apply(this, arguments); } }); -},{"../polygons/polygons":241,"../style_parser":245}],243:[function(_dereq_,module,exports){ +},{"../polygons/polygons":240,"../style_parser":244}],242:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -38275,6 +38335,8 @@ exports.addLayerDebugEntry = addLayerDebugEntry; var _style_parser = _dereq_('./style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + var _selection = _dereq_('../selection'); var _selection2 = _interopRequireDefault(_selection); @@ -38370,7 +38432,7 @@ var Style = exports.Style = { // If the style defines its own material, replace the inherited material instance if (!(this.material instanceof _material2.default)) { if (!_material2.default.isValid(this.material)) { - this.material = _style_parser.StyleParser.defaults.material; + this.material = _style_parser2.default.defaults.material; } this.material = new _material2.default(this.material); } @@ -38596,7 +38658,7 @@ var Style = exports.Style = { // Feature selection (only if feature is marked as interactive, and style supports it) if (this.selection) { - style.interactive = _style_parser.StyleParser.evalProperty(this.introspection || draw.interactive, context); + style.interactive = _style_parser2.default.evalProperty(this.introspection || draw.interactive, context); } else { style.interactive = false; } @@ -38653,7 +38715,7 @@ var Style = exports.Style = { parseOrder: function parseOrder(order, context) { // Calculate order if it was not cached if (typeof order !== 'number') { - return _style_parser.StyleParser.calculateOrder(order, context); + return _style_parser2.default.calculateOrder(order, context); } return order; }, @@ -38669,9 +38731,9 @@ var Style = exports.Style = { parseColor: function parseColor(color, context) { // Need either a color, or a shader block for 'color' or 'filter' if (color) { - return _style_parser.StyleParser.evalCachedColorProperty(color, context); + return _style_parser2.default.evalCachedColorProperty(color, context); } else if (this.shaders.blocks.color || this.shaders.blocks.filter) { - return _style_parser.StyleParser.defaults.color; + return _style_parser2.default.defaults.color; } }, @@ -39072,7 +39134,7 @@ function addLayerDebugEntry(target, layer, faeture_count, geom_count, styles, ba } } -},{"../gl/shader_program":207,"../gl/texture":208,"../gl/vbo_mesh":210,"../light":223,"../material":224,"../selection":230,"../sources/raster":234,"../utils/debug_settings":255,"../utils/log":259,"../utils/merge":261,"../utils/thread":267,"../utils/worker_broker":271,"./style_parser":245}],244:[function(_dereq_,module,exports){ +},{"../gl/shader_program":206,"../gl/texture":207,"../gl/vbo_mesh":209,"../light":222,"../material":223,"../selection":229,"../sources/raster":233,"../utils/debug_settings":254,"../utils/log":258,"../utils/merge":260,"../utils/thread":266,"../utils/worker_broker":270,"./style_parser":244}],243:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -39596,13 +39658,12 @@ var StyleManager = exports.StyleManager = function () { return StyleManager; }(); -},{"../geo":201,"../gl/shader_program":207,"../utils/log":259,"../utils/merge":261,"./lines/lines":239,"./points/points":240,"./polygons/polygons":241,"./raster/raster":242,"./text/text":248}],245:[function(_dereq_,module,exports){ +},{"../geo":200,"../gl/shader_program":206,"../utils/log":258,"../utils/merge":260,"./lines/lines":238,"./points/points":239,"./polygons/polygons":240,"./raster/raster":241,"./text/text":247}],244:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); -exports.StyleParser = undefined; var _utils = _dereq_('../utils/utils'); @@ -39618,9 +39679,11 @@ var _csscolorparser2 = _interopRequireDefault(_csscolorparser); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var StyleParser = exports.StyleParser = {}; +var StyleParser = {}; +exports.default = StyleParser; // Helpers for string converstion / NaN handling + var clampPositive = function clampPositive(v) { return Math.max(v, 0); }; @@ -39634,6 +39697,8 @@ var parsePositiveNumber = function parsePositiveNumber(v) { return Array.isArray(v) ? v.map(parseNumber).map(clampPositive) : clampPositive(parseNumber(v)); }; +Object.assign(StyleParser, { clampPositive: clampPositive, noNaN: noNaN, parseNumber: parseNumber, parsePositiveNumber: parsePositiveNumber }); + // Wraps style functions and provides a scope of commonly accessible data: // - feature: the 'properties' of the feature, e.g. accessed as 'feature.name' // - global: user-defined properties on the `global` object in the scene file @@ -39931,10 +39996,10 @@ StyleParser.convertUnits = function (val, context) { // un-parsed unit string else if (typeof val === 'string') { if (val.trim().slice(-2) === 'px') { - val = parseFloat(val); + val = parseNumber(val); val *= _geo2.default.metersPerPixel(context.zoom); // convert from pixels } else { - val = parseFloat(val); + val = parseNumber(val); } } // multiple values or stops @@ -39957,7 +40022,7 @@ StyleParser.convertUnits = function (val, context) { // Pre-parse units from string values StyleParser.parseUnits = function (val) { - var obj = { val: parseFloat(val) }; + var obj = { val: parseNumber(val) }; if (obj.val !== 0 && typeof val === 'string' && val.trim().slice(-2) === 'px') { obj.units = 'px'; } @@ -40140,7 +40205,7 @@ StyleParser.calculateOrder = function (order, context) { } // Explicit order value else { - order = parseFloat(order); + order = parsePositiveNumber(order); } } @@ -40155,7 +40220,7 @@ StyleParser.evalProperty = function (prop, context) { return prop; }; -},{"../geo":201,"../utils/utils":269,"csscolorparser":76}],246:[function(_dereq_,module,exports){ +},{"../geo":200,"../utils/utils":268,"csscolorparser":76}],245:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -40186,6 +40251,10 @@ var _task = _dereq_('../../utils/task'); var _task2 = _interopRequireDefault(_task); +var _style_parser = _dereq_('../style_parser'); + +var _style_parser2 = _interopRequireDefault(_style_parser); + var _debug_settings = _dereq_('../../utils/debug_settings'); var _debug_settings2 = _interopRequireDefault(_debug_settings); @@ -40903,7 +40972,7 @@ var CanvasText = function () { px_size /= 6.25; } - px_size = parseFloat(px_size); + px_size = _style_parser2.default.parsePositiveNumber(px_size); px_size *= _utils2.default.device_pixel_ratio; return px_size; } @@ -41246,7 +41315,7 @@ var Line = function () { return Line; }(); -},{"../../gl/texture":208,"../../utils/debug_settings":255,"../../utils/log":259,"../../utils/task":266,"../../utils/utils":269,"./font_manager":247}],247:[function(_dereq_,module,exports){ +},{"../../gl/texture":207,"../../utils/debug_settings":254,"../../utils/log":258,"../../utils/task":265,"../../utils/utils":268,"../style_parser":244,"./font_manager":246}],246:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -41419,7 +41488,7 @@ var FontManager = { exports.default = FontManager; -},{"../../utils/log":259,"../../utils/utils":269,"fontfaceobserver":79}],248:[function(_dereq_,module,exports){ +},{"../../utils/log":258,"../../utils/utils":268,"fontfaceobserver":79}],247:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -41734,7 +41803,7 @@ Object.assign(TextStyle, { TextStyle.texture_id = 0; // namespaces per-tile label textures -},{"../../geo":201,"../../gl/constants":202,"../../gl/vertex_layout":213,"../../labels/collision":214,"../../labels/label_line":217,"../../labels/label_point":218,"../points/points":240,"../style":243}],249:[function(_dereq_,module,exports){ +},{"../../geo":200,"../../gl/constants":201,"../../gl/vertex_layout":212,"../../labels/collision":213,"../../labels/label_line":216,"../../labels/label_point":217,"../points/points":239,"../style":242}],248:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -41746,6 +41815,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol var _style_parser = _dereq_('../style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + var _geo = _dereq_('../../geo'); var _geo2 = _interopRequireDefault(_geo); @@ -42050,35 +42121,29 @@ var TextLabels = exports.TextLabels = { } // Colors - draw.font.fill = _style_parser.StyleParser.createPropertyCache(draw.font.fill); + draw.font.fill = _style_parser2.default.createPropertyCache(draw.font.fill); if (draw.font.stroke) { - draw.font.stroke.color = _style_parser.StyleParser.createPropertyCache(draw.font.stroke.color); + draw.font.stroke.color = _style_parser2.default.createPropertyCache(draw.font.stroke.color); } // Convert font and text stroke sizes - draw.font.px_size = _style_parser.StyleParser.createPropertyCache(draw.font.size || _text_settings2.default.defaults.size, _canvas_text2.default.fontPixelSize); + draw.font.px_size = _style_parser2.default.createPropertyCache(draw.font.size || _text_settings2.default.defaults.size, _canvas_text2.default.fontPixelSize); if (draw.font.stroke && draw.font.stroke.width != null) { - draw.font.stroke.width = _style_parser.StyleParser.createPropertyCache(draw.font.stroke.width, parseFloat); + draw.font.stroke.width = _style_parser2.default.createPropertyCache(draw.font.stroke.width, _style_parser2.default.parsePositiveNumber); } // Offset (2d array) - draw.offset = _style_parser.StyleParser.createPropertyCache(draw.offset, function (v) { - return Array.isArray(v) && v.map(parseFloat).map(function (v) { - return isNaN(v) ? 0 : v; - }) || [0, 0]; + draw.offset = _style_parser2.default.createPropertyCache(draw.offset, function (v) { + return Array.isArray(v) && v.map(_style_parser2.default.parseNumber); }); // Buffer (1d value or or 2d array) - must be >= 0 - draw.buffer = _style_parser.StyleParser.createPropertyCache(draw.buffer, function (v) { - return (Array.isArray(v) ? v : [v, v]).map(function (v) { - return Math.max(parseFloat(v), 0); - }).map(function (v) { - return isNaN(v) ? 0 : v; - }) || [0, 0]; + draw.buffer = _style_parser2.default.createPropertyCache(draw.buffer, function (v) { + return (Array.isArray(v) ? v : [v, v]).map(_style_parser2.default.parsePositiveNumber); }); // Repeat rules - for text labels, defaults to tile size - draw.repeat_distance = _style_parser.StyleParser.createPropertyCache(draw.repeat_distance || _geo2.default.tile_size, parseFloat); + draw.repeat_distance = _style_parser2.default.createPropertyCache(draw.repeat_distance || _geo2.default.tile_size, _style_parser2.default.parsePositiveNumber); return draw; }, @@ -42124,7 +42189,7 @@ var TextLabels = exports.TextLabels = { } }; -},{"../../geo":201,"../../labels/collision":214,"../../utils/log":259,"../../utils/thread":267,"../../utils/worker_broker":271,"../style_parser":245,"../text/canvas_text":246,"../text/text_settings":250}],250:[function(_dereq_,module,exports){ +},{"../../geo":200,"../../labels/collision":213,"../../utils/log":258,"../../utils/thread":266,"../../utils/worker_broker":270,"../style_parser":244,"../text/canvas_text":245,"../text/text_settings":249}],249:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -42141,6 +42206,8 @@ var _geo2 = _interopRequireDefault(_geo); var _style_parser = _dereq_('../style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var TextSettings; @@ -42176,7 +42243,7 @@ exports.default = TextSettings = { style.can_articulate = draw.can_articulate; // Use fill if specified, or default - style.fill = draw.font.fill && _utils2.default.toCSSColor(_style_parser.StyleParser.evalCachedColorProperty(draw.font.fill, context)) || this.defaults.fill; + style.fill = draw.font.fill && _utils2.default.toCSSColor(_style_parser2.default.evalCachedColorProperty(draw.font.fill, context)) || this.defaults.fill; // Font properties are modeled after CSS names: // - family: Helvetica, Futura, etc. @@ -42202,12 +42269,12 @@ exports.default = TextSettings = { // calculated pixel size style.supersample = draw.supersample_text ? 1.5 : 1; // optionally render text at 150% to improve clarity - style.px_size = _style_parser.StyleParser.evalCachedProperty(draw.font.px_size, context) * style.supersample; + style.px_size = _style_parser2.default.evalCachedProperty(draw.font.px_size, context) * style.supersample; // Use stroke if specified if (draw.font.stroke && draw.font.stroke.color) { - style.stroke = _utils2.default.toCSSColor(_style_parser.StyleParser.evalCachedColorProperty(draw.font.stroke.color, context) || this.defaults.stroke); - style.stroke_width = _style_parser.StyleParser.evalCachedProperty(draw.font.stroke.width, context) || this.defaults.stroke_width; + style.stroke = _utils2.default.toCSSColor(_style_parser2.default.evalCachedColorProperty(draw.font.stroke.color, context) || this.defaults.stroke); + style.stroke_width = _style_parser2.default.evalCachedProperty(draw.font.stroke.width, context) || this.defaults.stroke_width; } style.font_css = this.fontCSS(style); @@ -42249,7 +42316,7 @@ exports.default = TextSettings = { } }; -},{"../../geo":201,"../../utils/utils":269,"../style_parser":245}],251:[function(_dereq_,module,exports){ +},{"../../geo":200,"../../utils/utils":268,"../style_parser":244}],250:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -42278,6 +42345,8 @@ var _style = _dereq_('./styles/style'); var _style_parser = _dereq_('./styles/style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + var _collision = _dereq_('./labels/collision'); var _collision2 = _interopRequireDefault(_collision); @@ -42806,7 +42875,7 @@ var Tile = function () { continue; // skip features w/o geometry (valid GeoJSON) } - var context = _style_parser.StyleParser.getFeatureParseContext(feature, tile, global); + var context = _style_parser2.default.getFeatureParseContext(feature, tile, global); context.winding = tile.default_winding; context.source = tile.source; // add data source name context.layer = source_layer.layer; // add data source layer name @@ -43065,7 +43134,7 @@ function addDebugLayers(node, tree) { } } -},{"./geo":201,"./gl/texture":208,"./labels/collision":214,"./styles/style":243,"./styles/style_parser":245,"./utils/gl-matrix":257,"./utils/log":259,"./utils/merge":261,"./utils/task":266,"./utils/utils":269,"./utils/worker_broker":271}],252:[function(_dereq_,module,exports){ +},{"./geo":200,"./gl/texture":207,"./labels/collision":213,"./styles/style":242,"./styles/style_parser":244,"./utils/gl-matrix":256,"./utils/log":258,"./utils/merge":260,"./utils/task":265,"./utils/utils":268,"./utils/worker_broker":270}],251:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -43581,7 +43650,7 @@ var TileManager = function () { exports.default = TileManager; -},{"./geo":201,"./tile":251,"./tile_pyramid":253,"./utils/log":259,"./utils/worker_broker":271}],253:[function(_dereq_,module,exports){ +},{"./geo":200,"./tile":250,"./tile_pyramid":252,"./utils/log":258,"./utils/worker_broker":270}],252:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -43768,7 +43837,7 @@ var TilePyramid = function () { exports.default = TilePyramid; -},{"./geo":201,"./tile":251}],254:[function(_dereq_,module,exports){ +},{"./geo":200,"./tile":250}],253:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -43791,7 +43860,7 @@ function debounce(func, wait) { }; } -},{}],255:[function(_dereq_,module,exports){ +},{}],254:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -43820,7 +43889,7 @@ function mergeDebugSettings(settings) { Object.assign(debugSettings, settings); } -},{}],256:[function(_dereq_,module,exports){ +},{}],255:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -43849,7 +43918,7 @@ var MethodNotImplemented = exports.MethodNotImplemented = function (_Error) { return MethodNotImplemented; }(Error); -},{}],257:[function(_dereq_,module,exports){ +},{}],256:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -43936,7 +44005,7 @@ exports.vec3 = vec3; exports.mat3 = mat3; exports.mat4 = mat4; -},{"gl-mat3/invert":88,"gl-mat3/normal-from-mat4":89,"gl-mat4/copy":90,"gl-mat4/identity":91,"gl-mat4/lookAt":92,"gl-mat4/multiply":93,"gl-mat4/perspective":94,"gl-mat4/scale":95,"gl-mat4/translate":96}],258:[function(_dereq_,module,exports){ +},{"gl-mat3/invert":88,"gl-mat3/normal-from-mat4":89,"gl-mat4/copy":90,"gl-mat4/identity":91,"gl-mat4/lookAt":92,"gl-mat4/multiply":93,"gl-mat4/perspective":94,"gl-mat4/scale":95,"gl-mat4/translate":96}],257:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -43962,7 +44031,7 @@ function hashString(string) { return hash; } -},{}],259:[function(_dereq_,module,exports){ +},{}],258:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -44062,7 +44131,7 @@ if (_thread2.default.is_main) { _worker_broker2.default.addTarget('_logProxy', log); // proxy log messages from worker to main thread _worker_broker2.default.addTarget('_logSetLevelProxy', log.setLevel); // proxy log level setting from main to worker thread -},{"./thread":267,"./version":270,"./worker_broker":271}],260:[function(_dereq_,module,exports){ +},{"./thread":266,"./version":269,"./worker_broker":270}],259:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -44080,6 +44149,8 @@ var _urls = _dereq_('./urls'); var _style_parser = _dereq_('../styles/style_parser'); +var _style_parser2 = _interopRequireDefault(_style_parser); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -44147,7 +44218,7 @@ var MediaCapture = function () { // Optional background to blend with (only RGB, alpha is ignored) var background = this.queue_screenshot.background; if (background && background !== 'transparent') { - background = _style_parser.StyleParser.parseColor(background).slice(0, 3).map(function (c) { + background = _style_parser2.default.parseColor(background).slice(0, 3).map(function (c) { return c * 255; }); } else { @@ -44290,7 +44361,7 @@ var MediaCapture = function () { exports.default = MediaCapture; -},{"../styles/style_parser":245,"./log":259,"./urls":268}],261:[function(_dereq_,module,exports){ +},{"../styles/style_parser":244,"./log":258,"./urls":267}],260:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -44334,7 +44405,7 @@ function mergeObjects(dest) { return dest; } -},{}],262:[function(_dereq_,module,exports){ +},{}],261:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -44451,7 +44522,7 @@ var OBB = function () { exports.default = OBB; -},{"../vector":272}],263:[function(_dereq_,module,exports){ +},{"../vector":271}],262:[function(_dereq_,module,exports){ 'use strict'; _dereq_('core-js/es6/promise'); @@ -44528,7 +44599,7 @@ if (perf && typeof perf.now !== 'function') { }; } -},{"core-js/es6/promise":11}],264:[function(_dereq_,module,exports){ +},{"core-js/es6/promise":11}],263:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -44543,7 +44614,7 @@ function sliceObject(obj, keys) { return sliced; } -},{}],265:[function(_dereq_,module,exports){ +},{}],264:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -44603,7 +44674,7 @@ function subscribeMixin(target) { }); } -},{"./log":259}],266:[function(_dereq_,module,exports){ +},{"./log":258}],265:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -44727,7 +44798,7 @@ var Task = { exports.default = Task; -},{}],267:[function(_dereq_,module,exports){ +},{}],266:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -44759,7 +44830,7 @@ try { } } -},{}],268:[function(_dereq_,module,exports){ +},{}],267:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -44979,7 +45050,7 @@ function getURLParameter(name, url) { return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' ')); } -},{"./log":259}],269:[function(_dereq_,module,exports){ +},{"./log":258}],268:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -45295,18 +45366,18 @@ Utils.pointInTile = function (point) { return point[0] >= 0 && point[1] > -_geo2.default.tile_scale && point[0] < _geo2.default.tile_scale && point[1] <= 0; }; -},{"../geo":201,"./log":259,"./thread":267,"./worker_broker":271}],270:[function(_dereq_,module,exports){ +},{"../geo":200,"./log":258,"./thread":266,"./worker_broker":270}],269:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); -var pkg = JSON.parse("{\n \"name\": \"tangram\",\n \"version\": \"0.14.1\",\n \"description\": \"WebGL Maps for Vector Tiles\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/tangrams/tangram.git\"\n },\n \"main\": \"dist/tangram.min.js\",\n \"homepage\": \"https://github.com/tangrams/tangram\",\n \"keywords\": [\n \"maps\",\n \"graphics\",\n \"rendering\",\n \"visualization\",\n \"WebGL\",\n \"OpenStreetMap\"\n ],\n \"config\": {\n \"output\": \"\",\n \"output_map\": \"\"\n },\n \"engines\": {\n \"npm\": \">=2.0.0\"\n },\n \"scripts\": {\n \"start\": \"npm run watch\",\n \"test\": \"npm run lint && npm run build-bundle && npm run test-local\",\n \"test-ci\": \"npm run lint && npm run build-bundle && npm run test-remote\",\n \"test-remote\": \"./node_modules/karma/bin/karma start --browsers SL_Firefox --single-run\",\n \"test-local\": \"./node_modules/karma/bin/karma start --browsers Chrome --single-run\",\n \"karma-start\": \"./node_modules/karma/bin/karma start --browsers Chrome --no-watch\",\n \"karma-run\": \"./node_modules/karma/bin/karma run --browsers Chrome\",\n \"lint\": \"./node_modules/.bin/jshint src/ && jshint test/\",\n \"build\": \"npm run build-bundle && npm run build-minify\",\n \"build-bundle\": \"./node_modules/.bin/browserify src/module.js -t [ babelify --presets [ es2015 ] ] -t brfs --debug -s Tangram -p browserify-derequire -p [ ./build/quine.js tangram.debug.js.map ] -p [ mapstraction ./dist/tangram.debug.js.map ] -o ./dist/tangram.debug.js\",\n \"build-minify\": \"./node_modules/.bin/uglifyjs dist/tangram.debug.js -c warnings=false -m | sed -e 's/tangram.debug.js.map//g' > dist/tangram.min.js && npm run build-size\",\n \"build-size\": \"gzip dist/tangram.min.js -c | wc -c | awk '{kb=$1/1024; print kb}' OFMT='%.0fk minified+gzipped'\",\n \"watch\": \"./node_modules/.bin/budo src/module.js:dist/tangram.debug.js --port 8000 --cors --live -- -t [ babelify --presets [ es2015 ] ] -t brfs -s Tangram -p [ ./build/quine.js tangram.debug.temp.js.map ] -p [ mapstraction ./dist/tangram.debug.temp.js.map ]\"\n },\n \"files\": [\n \"src/*\",\n \"dist/tangram.debug.js\",\n \"dist/tangram.debug.js.map\",\n \"dist/tangram.min.js\"\n ],\n \"author\": {\n \"name\": \"Mapzen\",\n \"email\": \"tangram@mapzen.com\"\n },\n \"contributors\": [\n {\n \"name\": \"Brett Camper\"\n },\n {\n \"name\": \"Peter Richardson\"\n },\n {\n \"name\": \"Patricio Gonzalez Vivo\"\n },\n {\n \"name\": \"Karim Naaji\"\n },\n {\n \"name\": \"Ivan Willig\"\n },\n {\n \"name\": \"Lou Huang\"\n },\n {\n \"name\": \"David Valdman\"\n },\n {\n \"name\": \"Nick Doiron\"\n },\n {\n \"name\": \"Francisco López\"\n },\n {\n \"name\": \"David Manzanares\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@mapbox/vector-tile\": \"1.3.0\",\n \"brfs\": \"1.4.3\",\n \"csscolorparser\": \"1.0.3\",\n \"earcut\": \"2.1.1\",\n \"fontfaceobserver\": \"2.0.7\",\n \"geojson-vt\": \"2.4.0\",\n \"gl-mat3\": \"1.0.0\",\n \"gl-mat4\": \"1.1.4\",\n \"gl-shader-errors\": \"1.0.3\",\n \"js-yaml\": \"tangrams/js-yaml#read-only\",\n \"jszip\": \"tangrams/jszip#read-only\",\n \"pbf\": \"1.3.7\",\n \"strip-comments\": \"0.3.2\",\n \"topojson-client\": \"tangrams/topojson-client#read-only\"\n },\n \"devDependencies\": {\n \"babelify\": \"7.3.0\",\n \"babel-preset-es2015\": \"6.16.0\",\n \"browserify\": \"14.4.0\",\n \"browserify-derequire\": \"0.9.4\",\n \"budo\": \"10.0.3\",\n \"chai\": \"1.9.2\",\n \"chai-as-promised\": \"4.1.1\",\n \"core-js\": \"2.4.1\",\n \"glob\": \"4.0.6\",\n \"jshint\": \"2.9.4\",\n \"karma\": \"1.5.0\",\n \"karma-browserify\": \"5.1.1\",\n \"karma-chrome-launcher\": \"2.0.0\",\n \"karma-mocha\": \"0.1.9\",\n \"karma-mocha-reporter\": \"1.0.0\",\n \"karma-sauce-launcher\": \"tangrams/karma-sauce-launcher#firefox-profiles2\",\n \"karma-sinon\": \"1.0.4\",\n \"mapstraction\": \"1.0.1\",\n \"mocha\": \"1.21.4\",\n \"sinon\": \"1.10.3\",\n \"through2\": \"2.0.3\",\n \"uglify-js\": \"2.4.14\",\n \"yargs\": \"1.3.2\"\n }\n}\n"); +var pkg = JSON.parse("{\n \"name\": \"tangram\",\n \"version\": \"0.14.2\",\n \"description\": \"WebGL Maps for Vector Tiles\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/tangrams/tangram.git\"\n },\n \"main\": \"dist/tangram.min.js\",\n \"homepage\": \"https://github.com/tangrams/tangram\",\n \"keywords\": [\n \"maps\",\n \"graphics\",\n \"rendering\",\n \"visualization\",\n \"WebGL\",\n \"OpenStreetMap\"\n ],\n \"config\": {\n \"output\": \"\",\n \"output_map\": \"\"\n },\n \"engines\": {\n \"npm\": \">=2.0.0\"\n },\n \"scripts\": {\n \"start\": \"npm run watch\",\n \"test\": \"npm run lint && npm run build-bundle && npm run test-local\",\n \"test-ci\": \"npm run lint && npm run build-bundle && npm run test-remote\",\n \"test-remote\": \"./node_modules/karma/bin/karma start --browsers SL_Firefox --single-run\",\n \"test-local\": \"./node_modules/karma/bin/karma start --browsers Chrome --single-run\",\n \"karma-start\": \"./node_modules/karma/bin/karma start --browsers Chrome --no-watch\",\n \"karma-run\": \"./node_modules/karma/bin/karma run --browsers Chrome\",\n \"lint\": \"./node_modules/.bin/jshint src/ && jshint test/\",\n \"build\": \"npm run build-bundle && npm run build-minify\",\n \"build-bundle\": \"./node_modules/.bin/browserify src/module.js -t [ babelify --presets [ es2015 ] ] -t brfs --debug -s Tangram -p browserify-derequire -p [ ./build/quine.js tangram.debug.js.map ] -p [ mapstraction ./dist/tangram.debug.js.map ] -o ./dist/tangram.debug.js\",\n \"build-minify\": \"./node_modules/.bin/uglifyjs dist/tangram.debug.js -c warnings=false -m | sed -e 's/tangram.debug.js.map//g' > dist/tangram.min.js && npm run build-size\",\n \"build-size\": \"gzip dist/tangram.min.js -c | wc -c | awk '{kb=$1/1024; print kb}' OFMT='%.0fk minified+gzipped'\",\n \"watch\": \"./node_modules/.bin/budo src/module.js:dist/tangram.debug.js --port 8000 --cors --live -- -t [ babelify --presets [ es2015 ] ] -t brfs -s Tangram -p [ ./build/quine.js tangram.debug.temp.js.map ] -p [ mapstraction ./dist/tangram.debug.temp.js.map ]\"\n },\n \"files\": [\n \"src/*\",\n \"dist/tangram.debug.js\",\n \"dist/tangram.debug.js.map\",\n \"dist/tangram.min.js\"\n ],\n \"author\": {\n \"name\": \"Mapzen\",\n \"email\": \"tangram@mapzen.com\"\n },\n \"contributors\": [\n {\n \"name\": \"Brett Camper\"\n },\n {\n \"name\": \"Peter Richardson\"\n },\n {\n \"name\": \"Patricio Gonzalez Vivo\"\n },\n {\n \"name\": \"Karim Naaji\"\n },\n {\n \"name\": \"Ivan Willig\"\n },\n {\n \"name\": \"Lou Huang\"\n },\n {\n \"name\": \"David Valdman\"\n },\n {\n \"name\": \"Nick Doiron\"\n },\n {\n \"name\": \"Francisco López\"\n },\n {\n \"name\": \"David Manzanares\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@mapbox/vector-tile\": \"1.3.0\",\n \"brfs\": \"1.4.3\",\n \"csscolorparser\": \"1.0.3\",\n \"earcut\": \"2.1.1\",\n \"fontfaceobserver\": \"2.0.7\",\n \"geojson-vt\": \"2.4.0\",\n \"gl-mat3\": \"1.0.0\",\n \"gl-mat4\": \"1.1.4\",\n \"gl-shader-errors\": \"1.0.3\",\n \"js-yaml\": \"tangrams/js-yaml#read-only\",\n \"jszip\": \"tangrams/jszip#read-only\",\n \"pbf\": \"3.1.0\",\n \"strip-comments\": \"0.3.2\",\n \"topojson-client\": \"tangrams/topojson-client#read-only\"\n },\n \"devDependencies\": {\n \"babelify\": \"7.3.0\",\n \"babel-preset-es2015\": \"6.16.0\",\n \"browserify\": \"14.4.0\",\n \"browserify-derequire\": \"0.9.4\",\n \"budo\": \"10.0.3\",\n \"chai\": \"1.9.2\",\n \"chai-as-promised\": \"4.1.1\",\n \"core-js\": \"2.4.1\",\n \"glob\": \"4.0.6\",\n \"jshint\": \"2.9.4\",\n \"karma\": \"1.5.0\",\n \"karma-browserify\": \"5.1.1\",\n \"karma-chrome-launcher\": \"2.0.0\",\n \"karma-mocha\": \"0.1.9\",\n \"karma-mocha-reporter\": \"1.0.0\",\n \"karma-sauce-launcher\": \"tangrams/karma-sauce-launcher#firefox-profiles2\",\n \"karma-sinon\": \"1.0.4\",\n \"mapstraction\": \"1.0.1\",\n \"mocha\": \"1.21.4\",\n \"sinon\": \"1.10.3\",\n \"through2\": \"2.0.3\",\n \"uglify-js\": \"2.4.14\",\n \"yargs\": \"1.3.2\"\n }\n}\n"); var version = void 0; exports.default = version = 'v' + pkg.version; -},{}],271:[function(_dereq_,module,exports){ +},{}],270:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -45875,7 +45946,7 @@ if (_thread2.default.is_worker) { setupWorkerThread(); } -},{"./log":259,"./thread":267}],272:[function(_dereq_,module,exports){ +},{"./log":258,"./thread":266}],271:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -46088,7 +46159,7 @@ Vector.dot = function (v1, v2) { return n; }; -},{}],273:[function(_dereq_,module,exports){ +},{}],272:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -46521,6 +46592,6 @@ var View = function () { exports.default = View; -},{"./camera":200,"./geo":201,"./tile":251,"./utils/log":259,"./utils/subscribe":265,"./utils/utils":269}]},{},[225])(225) +},{"./camera":199,"./geo":200,"./tile":250,"./utils/log":258,"./utils/subscribe":264,"./utils/utils":268}]},{},[224])(224) });})(); //# sourceMappingURL=tangram.debug.js.map \ No newline at end of file diff --git a/dist/tangram.debug.js.map b/dist/tangram.debug.js.map index 0ab7ae719..11f431f68 100644 --- a/dist/tangram.debug.js.map +++ b/dist/tangram.debug.js.map @@ -187,7 +187,6 @@ "node_modules/pako/lib/zlib/messages.js", "node_modules/pako/lib/zlib/trees.js", "node_modules/pako/lib/zlib/zstream.js", - "node_modules/pbf/buffer.js", "node_modules/pbf/index.js", "node_modules/process-nextick-args/index.js", "node_modules/process/browser.js", @@ -276,7 +275,7 @@ "src/view.js" ], "names": [], - "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxTA;AACA;AACA;AACA;;ACHA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClrDA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;;ACJA;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;;ACtBA;AACA;AACA;AACA;AACA;;ACJA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACNA;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;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;;ACAA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;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;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;;ACFA;;ACAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACfA;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;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;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;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1SA;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;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;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;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;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;;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;;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;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;ACrBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACljDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;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;;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;;AC5BA;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;;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;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;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;;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;;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;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;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;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC3EA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;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;;;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;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACpHA;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;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;;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;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;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;;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACngBA;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;;AC7NA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACl1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACphDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACtaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;QC9jBgB,W,GAAA,W;QAeA,kB,GAAA,kB;;AA1BhB;;;;;;AAEO,IAAM,oCAAc,CACvB,EAAE,GAAG,CAAL,EAAQ,GAAG,CAAX,EADuB,EAEvB,EAAE,GAAG,cAAI,UAAT,EAAqB,GAAG,CAAC,cAAI,UAA7B,CAA0C;AAA1C,CAFuB,CAApB,C,CAHP;AAQO,IAAM,oCAAc,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAApB;;AAEP;AACA;AACO,SAAS,WAAT,CAAsB,EAAtB,EAA0B,EAA1B,EAA8B,S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", + "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxTA;AACA;AACA;AACA;;ACHA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClrDA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;;ACJA;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;;ACtBA;AACA;AACA;AACA;AACA;;ACJA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACNA;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;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;;ACAA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;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;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;;ACFA;;ACAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACfA;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;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;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;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1SA;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;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;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;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;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;;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;;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;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;ACrBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACljDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;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;;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;;AC5BA;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;;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;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;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;;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;;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;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;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;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC3EA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;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;;;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;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACpHA;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;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;;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;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;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;;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACngBA;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;;AC7NA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACl1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACphDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1mBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;QC9jBgB,W,GAAA,W;QAeA,kB,GAAA,kB;;AA1BhB;;;;;;AAEO,IAAM,oCAAc,CACvB,EAAE,GAAG,CAAL,EAAQ,GAAG,CAAX,EADuB,EAEvB,EAAE,GAAG,cAAI,UAAT,E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", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ @@ -466,8 +465,7 @@ "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n", "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [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];\n\nvar extra_dbits = /* extra bits for each distance code */\n [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];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n", "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n", - "'use strict';\n\n// lightweight Buffer shim for pbf browser build\n// based on code from github.com/feross/buffer (MIT-licensed)\n\nmodule.exports = Buffer;\n\nvar ieee754 = require('ieee754');\n\nvar BufferMethods;\n\nfunction Buffer(length) {\n var arr;\n if (length && length.length) {\n arr = length;\n length = arr.length;\n }\n var buf = new Uint8Array(length || 0);\n if (arr) buf.set(arr);\n\n buf.readUInt32LE = BufferMethods.readUInt32LE;\n buf.writeUInt32LE = BufferMethods.writeUInt32LE;\n buf.readInt32LE = BufferMethods.readInt32LE;\n buf.writeInt32LE = BufferMethods.writeInt32LE;\n buf.readFloatLE = BufferMethods.readFloatLE;\n buf.writeFloatLE = BufferMethods.writeFloatLE;\n buf.readDoubleLE = BufferMethods.readDoubleLE;\n buf.writeDoubleLE = BufferMethods.writeDoubleLE;\n buf.toString = BufferMethods.toString;\n buf.write = BufferMethods.write;\n buf.slice = BufferMethods.slice;\n buf.copy = BufferMethods.copy;\n\n buf._isBuffer = true;\n return buf;\n}\n\nvar lastStr, lastStrEncoded;\n\nBufferMethods = {\n readUInt32LE: function(pos) {\n return ((this[pos]) |\n (this[pos + 1] << 8) |\n (this[pos + 2] << 16)) +\n (this[pos + 3] * 0x1000000);\n },\n\n writeUInt32LE: function(val, pos) {\n this[pos] = val;\n this[pos + 1] = (val >>> 8);\n this[pos + 2] = (val >>> 16);\n this[pos + 3] = (val >>> 24);\n },\n\n readInt32LE: function(pos) {\n return ((this[pos]) |\n (this[pos + 1] << 8) |\n (this[pos + 2] << 16)) +\n (this[pos + 3] << 24);\n },\n\n readFloatLE: function(pos) { return ieee754.read(this, pos, true, 23, 4); },\n readDoubleLE: function(pos) { return ieee754.read(this, pos, true, 52, 8); },\n\n writeFloatLE: function(val, pos) { return ieee754.write(this, val, pos, true, 23, 4); },\n writeDoubleLE: function(val, pos) { return ieee754.write(this, val, pos, true, 52, 8); },\n\n toString: function(encoding, start, end) {\n var str = '',\n tmp = '';\n\n start = start || 0;\n end = Math.min(this.length, end || this.length);\n\n for (var i = start; i < end; i++) {\n var ch = this[i];\n if (ch <= 0x7F) {\n str += decodeURIComponent(tmp) + String.fromCharCode(ch);\n tmp = '';\n } else {\n tmp += '%' + ch.toString(16);\n }\n }\n\n str += decodeURIComponent(tmp);\n\n return str;\n },\n\n write: function(str, pos) {\n var bytes = str === lastStr ? lastStrEncoded : encodeString(str);\n for (var i = 0; i < bytes.length; i++) {\n this[pos + i] = bytes[i];\n }\n },\n\n slice: function(start, end) {\n return this.subarray(start, end);\n },\n\n copy: function(buf, pos) {\n pos = pos || 0;\n for (var i = 0; i < this.length; i++) {\n buf[pos + i] = this[i];\n }\n }\n};\n\nBufferMethods.writeInt32LE = BufferMethods.writeUInt32LE;\n\nBuffer.byteLength = function(str) {\n lastStr = str;\n lastStrEncoded = encodeString(str);\n return lastStrEncoded.length;\n};\n\nBuffer.isBuffer = function(buf) {\n return !!(buf && buf._isBuffer);\n};\n\nfunction encodeString(str) {\n var length = str.length,\n bytes = [];\n\n for (var i = 0, c, lead; i < length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n\n if (lead) {\n if (c < 0xDC00) {\n bytes.push(0xEF, 0xBF, 0xBD);\n lead = c;\n continue;\n\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n\n } else {\n if (c > 0xDBFF || (i + 1 === length)) bytes.push(0xEF, 0xBF, 0xBD);\n else lead = c;\n\n continue;\n }\n\n } else if (lead) {\n bytes.push(0xEF, 0xBF, 0xBD);\n lead = null;\n }\n\n if (c < 0x80) bytes.push(c);\n else if (c < 0x800) bytes.push(c >> 0x6 | 0xC0, c & 0x3F | 0x80);\n else if (c < 0x10000) bytes.push(c >> 0xC | 0xE0, c >> 0x6 & 0x3F | 0x80, c & 0x3F | 0x80);\n else bytes.push(c >> 0x12 | 0xF0, c >> 0xC & 0x3F | 0x80, c >> 0x6 & 0x3F | 0x80, c & 0x3F | 0x80);\n }\n return bytes;\n}\n", - "'use strict';\n\nmodule.exports = Pbf;\n\nvar Buffer = global.Buffer || require('./buffer');\n\nfunction Pbf(buf) {\n this.buf = !Buffer.isBuffer(buf) ? new Buffer(buf || 0) : buf;\n this.pos = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32,\n POW_2_63 = Math.pow(2, 63);\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = this.buf.readUInt32LE(this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = this.buf.readInt32LE(this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = this.buf.readUInt32LE(this.pos) + this.buf.readUInt32LE(this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = this.buf.readUInt32LE(this.pos) + this.buf.readInt32LE(this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = this.buf.readFloatLE(this.pos);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = this.buf.readDoubleLE(this.pos);\n this.pos += 8;\n return val;\n },\n\n readVarint: function() {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n\n return readVarintRemainder(val, this);\n },\n\n readVarint64: function() {\n var startPos = this.pos,\n val = this.readVarint();\n\n if (val < POW_2_63) return val;\n\n var pos = this.pos - 2;\n while (this.buf[pos] === 0xff) pos--;\n if (pos < startPos) pos = startPos;\n\n val = 0;\n for (var i = 0; i < pos - startPos + 1; i++) {\n var b = ~this.buf[startPos + i] & 0x7f;\n val += i < 4 ? b << i * 7 : b * Math.pow(2, i * 7);\n }\n\n return -val - 1;\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos,\n str = this.buf.toString('utf8', this.pos, end);\n this.pos = end;\n return str;\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.slice(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function() {\n var end = this.readVarint() + this.pos, arr = [];\n while (this.pos < end) arr.push(this.readVarint());\n return arr;\n },\n readPackedSVarint: function() {\n var end = this.readVarint() + this.pos, arr = [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function() {\n var end = this.readVarint() + this.pos, arr = [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function() {\n var end = this.readVarint() + this.pos, arr = [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function() {\n var end = this.readVarint() + this.pos, arr = [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function() {\n var end = this.readVarint() + this.pos, arr = [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function() {\n var end = this.readVarint() + this.pos, arr = [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function() {\n var end = this.readVarint() + this.pos, arr = [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function() {\n var end = this.readVarint() + this.pos, arr = [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Buffer(length);\n this.buf.copy(buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.slice(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n this.buf.writeUInt32LE(val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n this.buf.writeInt32LE(val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n this.buf.writeInt32LE(val & -1, this.pos);\n this.buf.writeUInt32LE(Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n this.buf.writeInt32LE(val & -1, this.pos);\n this.buf.writeInt32LE(Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val;\n\n if (val > 0xfffffff) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n var bytes = Buffer.byteLength(str);\n this.writeVarint(bytes);\n this.realloc(bytes);\n this.buf.write(str, this.pos);\n this.pos += bytes;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n this.buf.writeFloatLE(val, this.pos);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n this.buf.writeDoubleLE(val, this.pos);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) reallocForRawMessage(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(val, pbf) {\n var buf = pbf.buf, b;\n\n b = buf[pbf.pos++]; val += (b & 0x7f) * 0x10000000; if (b < 0x80) return val;\n b = buf[pbf.pos++]; val += (b & 0x7f) * 0x800000000; if (b < 0x80) return val;\n b = buf[pbf.pos++]; val += (b & 0x7f) * 0x40000000000; if (b < 0x80) return val;\n b = buf[pbf.pos++]; val += (b & 0x7f) * 0x2000000000000; if (b < 0x80) return val;\n b = buf[pbf.pos++]; val += (b & 0x7f) * 0x100000000000000; if (b < 0x80) return val;\n b = buf[pbf.pos++]; val += (b & 0x7f) * 0x8000000000000000; if (b < 0x80) return val;\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction writeBigVarint(val, pbf) {\n pbf.realloc(10);\n\n var maxPos = pbf.pos + 10;\n\n while (val >= 1) {\n if (pbf.pos >= maxPos) throw new Error('Given varint doesn\\'t fit into 10 bytes');\n var b = val & 0xff;\n pbf.buf[pbf.pos++] = b | (val >= 0x80 ? 0x80 : 0);\n val /= 0x80;\n }\n}\n\nfunction reallocForRawMessage(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.ceil(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n", + "'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos,\n str = readUtf8(this.buf, this.pos, end);\n this.pos = end;\n return str;\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.ceil(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n", "'use strict';\n\nif (!process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = nextTick;\n} else {\n module.exports = process.nextTick;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n", "// 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'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't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\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't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && 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'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's a version of I.E. that must have the global object for 'this', 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't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && 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't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', 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 < 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 > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !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 = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // 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;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n", "/*!\n * strip-comments \n *\n * Copyright (c) 2014 Jon Schlinkert, contributors.\n * Licensed under the MIT license.\n */\n\n'use stric';\n\nvar reBlock = '\\\\/\\\\*';\nvar reBlockIgnore = '\\\\/\\\\*(?!\\\\*?\\\\!)';\nvar reBlockEnd = '(.|[\\\\r\\\\n]|\\\\n)*?\\\\*\\\\/\\\\n?\\\\n?';\nvar reLine = /(^|[^\\S\\n])(?:\\/\\/)([\\s\\S]+?)$/gm;\nvar reLineIgnore = /(^|[^\\S\\n])(?:\\/\\/[^!])([\\s\\S]+?)$/gm;\n\n\n/**\n * Strip all comments\n *\n * {%= docs(\"strip\") %}\n *\n * @param {String} `str` file contents or string to strip.\n * @param {Object} `opts` options are passed to `.block`, and `.line`\n * @return {String} String without comments.\n * @api public\n */\n\nvar strip = module.exports = function(str, opts) {\n return str ? strip.block(strip.line(str, opts), opts) : '';\n};\n\n\n/**\n * Strip only block comments, optionally leaving protected comments\n * (e.g. `/*!`) intact.\n *\n * {%= docs(\"block\") %}\n *\n * @param {String} `str` file content or string to strip to\n * @param {Object} `opts` if `safe:true`, strip only comments that do not start with `/*!` or `/**!`\n * @return {String} String without block comments.\n * @api public\n */\n\nstrip.block = function(str, opts) {\n opts = opts || {};\n var re = new RegExp(reBlock + reBlockEnd, 'gm');\n if(opts.safe) {\n re = new RegExp(reBlockIgnore + reBlockEnd, 'gm');\n }\n return str ? str.replace(re, '') : '';\n};\n\n\n/**\n * Strip only line comments\n *\n * {%= docs(\"line\") %}\n *\n * @param {String} `str` file content or string to strip to\n * @param {Object} `opts` if `safe:true`, strip all that not starts with `//!`\n * @return {String} String without line comments.\n * @api public\n */\n\nstrip.line = function(str, opts) {\n opts = opts || {};\n var re = reLine;\n if(opts.safe) {\n re = reLineIgnore;\n }\n return str ? str.replace(re, '') : '';\n};\n", @@ -497,18 +495,18 @@ "\n// Do AABB `a` and `b` intersect?\nexport function boxIntersectsBox (a, b) {\n if (a[2] < b[0] || // a is left of b\n a[0] > b[2] || // a is right of b\n a[3] < b[1] || // a is above b\n a[1] > b[3]) { // a is below b\n return false;\n }\n return true; // boxes overlap\n}\n\n// Does AABB `a` intersect any of the AABBs in array `boxes`?\n// Invokes `callback` with index of intersecting box\n// Stops intersecting if `callback` returns non-null value (continues otherwise)\nexport function boxIntersectsList (a, boxes, callback) {\n for (let i=0; i < boxes.length; i++) {\n if (boxIntersectsBox(a, boxes[i])) {\n if (callback(i) != null) {\n break;\n }\n }\n }\n}\n", "import PointAnchor from './point_anchor';\nimport {boxIntersectsList} from './intersect';\nimport Utils from '../utils/utils';\nimport OBB from '../utils/obb';\n// import log from '../utils/log';\n\nexport default class Label {\n\n constructor (size, layout = {}) {\n this.size = size;\n this.layout = layout;\n this.position = null;\n this.anchor = Array.isArray(this.layout.anchor) ? this.layout.anchor[0] : this.layout.anchor; // initial anchor\n this.placed = null;\n this.offset = layout.offset;\n this.aabb = null;\n this.obb = null;\n this.align = 'center';\n this.throw_away = false; // if label does not fit (exceeds tile boundary, etc) this boolean will be true\n }\n\n update () {\n this.align = this.layout.align || PointAnchor.alignForAnchor(this.anchor);\n }\n\n // check for overlaps with other labels in the tile\n occluded (bboxes, exclude = null) {\n let intersect = false;\n let aabbs = bboxes.aabb;\n let obbs = bboxes.obb;\n\n // Broad phase\n if (aabbs.length > 0) {\n boxIntersectsList(this.aabb, aabbs, (j) => {\n // log('trace', 'collision: broad phase collide', this.layout.id, this, this.aabb, aabbs[j]);\n\n // Skip if colliding with excluded label\n if (exclude && aabbs[j] === exclude.aabb) {\n // log('trace', 'collision: skipping due to explicit exclusion', this, exclude);\n return;\n }\n\n // Skip narrow phase collision if no rotation\n if (this.obb.angle === 0 && obbs[j].angle === 0) {\n // log('trace', 'collision: skip narrow phase collide because neither is rotated', this.layout.id, this, this.obb, obbs[j]);\n intersect = true;\n return true;\n }\n\n // Narrow phase\n if (OBB.intersect(this.obb, obbs[j])) {\n // log('trace', 'collision: narrow phase collide', this.layout.id, this, this.obb, obbs[j]);\n intersect = true;\n return true;\n }\n });\n }\n return intersect;\n }\n\n // Add this label's bounding box to the provided set\n add (bboxes) {\n this.placed = true;\n bboxes.aabb.push(this.aabb);\n bboxes.obb.push(this.obb);\n }\n\n // checks whether the label is within the tile boundaries\n inTileBounds () {\n let min = [ this.aabb[0], this.aabb[1] ];\n let max = [ this.aabb[2], this.aabb[3] ];\n\n if (!Utils.pointInTile(min) || !Utils.pointInTile(max)) {\n return false;\n }\n\n return true;\n }\n\n // Whether the label should be discarded\n // Depends on whether label must fit in the tile bounds, and if so, can it be moved to fit there\n discard(bboxes, exclude = null) {\n if (this.throw_away) {\n return true;\n }\n return this.occluded(bboxes, exclude);\n }\n}\n\nLabel.epsilon = 0.9999; // tolerance around collision boxes, prevent perfectly adjacent objects from colliding\n", "import Label from './label';\nimport Vector from '../vector';\nimport OBB from '../utils/obb';\n\nconst STOPS = [0, 0.33, 0.66, 0.99]; // zoom levels for curved label snapshot data (offsets and angles)\nconst LINE_EXCEED_STRAIGHT = 1.5; // minimal ratio for straight labels (label length) / (line length)\nconst LINE_EXCEED_STRAIGHT_NO_CURVE = 1.8; // minimal ratio for straight labels that have no curved option (like Arabic)\nconst LINE_EXCEED_STAIGHT_LOOSE = 2.3; // 2nd pass minimal ratio for straight labels\nconst STRAIGHT_ANGLE_TOLERANCE = 0.1; // multiple \"almost straight\" segments within this angle tolerance can be considered one straight segment (in radians)\nconst CURVE_MIN_TOTAL_COST = 1.3; // curved line total curvature tolerance (sum in radians)\nconst CURVE_MIN_AVG_COST = 0.4; // curved line average curvature tolerance (mean)\nconst CURVE_MAX_ANGLE = 1; // curved line singular curvature tolerance (value in radians)\nconst ORIENTED_LABEL_OFFSET_FACTOR = 1.2; // multiply offset by this amount to avoid linked label collision\nconst VERTICAL_ANGLE_TOLERANCE = 0.01; // nearly vertical lines considered vertical within this angle tolerance\n\nlet LabelLine = {\n // Given a label's bounding box size and size of broken up individual segments\n // return a label that fits along the line geometry that is either straight (preferred) or curved (if straight tolerances aren't met)\n create : function(segment_sizes, total_size, line, layout){\n // The passes done for fitting a label, and provided tolerances for each pass\n // First straight is chosen with a low tolerance. Then curved. Then straight with a higher tolerance.\n const passes = [\n { type: 'straight', tolerance : (layout.no_curving) ? LINE_EXCEED_STRAIGHT_NO_CURVE : LINE_EXCEED_STRAIGHT },\n { type: 'curved' },\n { type: 'straight', tolerance : LINE_EXCEED_STAIGHT_LOOSE }\n ];\n\n // loop through passes. first label found wins.\n for (let i = 0; i < passes.length; i++){\n let check = passes[i];\n let label;\n if (check.type === 'straight'){\n label = new LabelLineStraight(total_size, line, layout, check.tolerance);\n }\n else if (check.type === 'curved' && !layout.no_curving && line.length > 2){\n label = new LabelLineCurved(segment_sizes, line, layout);\n }\n\n if (label && !label.throw_away) {\n return label;\n }\n }\n\n return false;\n }\n};\n\nexport default LabelLine;\n\n// Base class for a labels.\nclass LabelLineBase {\n constructor (layout) {\n this.layout = layout;\n this.position = [];\n this.angle = 0;\n this.offset = layout.offset.slice();\n this.obbs = [];\n this.aabbs = [];\n this.type = ''; // \"curved\" or \"straight\" to be set by child class\n this.throw_away = false; // boolean that determines if label should be discarded\n }\n\n // Given a line, find the longest series of segments that maintains a constant orientation in the x-direction.\n // This assures us that the line has no orientation flip, so text would not appear upside-down.\n // If the line's orientation is reversed, the flip return value will be true, otherwise false\n static splitLineByOrientation(line){\n let current_line = [line[0]];\n let current_length = 0;\n let max_length = 0;\n let orientation = 0;\n let longest_line = current_line;\n let flip = false;\n\n for (let i = 1; i < line.length; i++) {\n let pt = line[i];\n let prev_pt = line[i - 1];\n let length = Vector.length(Vector.sub(pt, prev_pt));\n\n if (pt[0] > prev_pt[0]){\n // positive orientation\n if (orientation === 1){\n current_line.push(pt);\n current_length += length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = false;\n }\n }\n else {\n current_line = [prev_pt, pt];\n current_length = length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = false;\n }\n orientation = 1;\n }\n }\n else if (pt[0] < prev_pt[0]) {\n // negative orientation\n if (orientation === -1){\n current_line.unshift(pt);\n current_length += length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = true;\n }\n }\n else {\n // prepend points (reverse order)\n current_line = [pt, prev_pt];\n current_length = length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = true;\n }\n orientation = -1;\n }\n }\n else {\n // vertical line (doesn't change previous orientation)\n if (orientation === -1){\n current_line.unshift(pt);\n }\n else {\n current_line.push(pt);\n orientation = 1;\n }\n\n current_length += length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n\n flip = (orientation === -1);\n }\n }\n }\n\n return [longest_line, flip];\n }\n\n // Add each bounding box to the collision pass\n add(bboxes) {\n this.placed = true;\n for (let i = 0; i < this.aabbs.length; i++) {\n let aabb = this.aabbs[i];\n let obb = this.obbs[i];\n let obj = { aabb, obb };\n Label.prototype.add.call(obj, bboxes);\n }\n }\n\n // Checks each segment to see if it should be discarded (via collision). If any segment fails this test, they all fail.\n discard(bboxes, exclude = null) {\n if (this.throw_away) {\n return true;\n }\n\n for (let i = 0; i < this.obbs.length; i++){\n let aabb = this.aabbs[i];\n let obb = this.obbs[i];\n let obj = { aabb, obb };\n\n let shouldDiscard = Label.prototype.occluded.call(obj, bboxes, exclude);\n if (shouldDiscard) {\n return true;\n }\n }\n return false;\n }\n\n // Checks each segment to see if it is within the tile. If any segment fails this test, they all fail.\n inTileBounds() {\n for (let i = 0; i < this.aabbs.length; i++) {\n let aabb = this.aabbs[i];\n let obj = { aabb };\n let in_bounds = Label.prototype.inTileBounds.call(obj);\n if (!in_bounds) {\n return false;\n }\n }\n return true;\n }\n\n // Method to calculate oriented bounding box\n // \"angle\" is the angle of the text segment, \"angle_offset\" is the angle applied to the offset.\n // Offset angle is constant for the entire label, while segment angles are not.\n static createOBB (position, width, height, angle, angle_offset, offset, upp) {\n let p0 = position[0];\n let p1 = position[1];\n\n // apply offset, x positive, y pointing down\n if (offset && (offset[0] !== 0 || offset[1] !== 0)) {\n offset = Vector.rot(offset, angle_offset);\n p0 += offset[0] * upp;\n p1 -= offset[1] * upp;\n }\n\n // the angle of the obb is negative since it's the tile system y axis is pointing down\n return new OBB(p0, p1, -angle, width, height);\n }\n}\n\n// Class for straight labels.\n// Extends base LabelLine class.\nclass LabelLineStraight extends LabelLineBase {\n constructor (size, line, layout, tolerance){\n super(layout);\n this.type = 'straight';\n this.throw_away = !this.fit(size, line, layout, tolerance);\n }\n\n // Determine if the label can fit the geometry within provided tolerance\n // A straight label is generally placed at segment midpoints, but can \"look ahead\" to further segments\n // if they are within an angle bound given by STRAIGHT_ANGLE_TOLERANCE and place at the midpoint between non-consecutive segments\n fit (size, line, layout, tolerance){\n let upp = layout.units_per_pixel;\n let flipped; // boolean indicating if orientation of line is changed\n\n // Make new copy of line, with consistent orientation\n [line, flipped] = LabelLineBase.splitLineByOrientation(line);\n\n // matches for \"left\" or \"right\" labels where the offset angle is dependent on the geometry\n if (typeof layout.orientation === 'number'){\n this.offset[1] += ORIENTED_LABEL_OFFSET_FACTOR * (size[1] - layout.vertical_buffer);\n\n // if line is flipped, or the orientation is \"left\" (-1), flip the offset's y-axis\n if (flipped){\n this.offset[1] *= -1;\n }\n\n if (layout.orientation === -1){\n this.offset[1] *= -1;\n }\n }\n\n let line_lengths = getLineLengths(line);\n let label_length = size[0] * upp;\n\n // loop through line looking for a placement for the label\n for (let i = 0; i < line.length - 1; i++){\n let curr = line[i];\n\n let curve_tolerance = 0;\n let length = 0;\n let ahead_index = i + 1;\n let prev_angle;\n\n // look ahead to further line segments within an angle tolerance\n while (ahead_index < line.length){\n let ahead_curr = line[ahead_index - 1];\n let ahead_next = line[ahead_index];\n\n let next_angle = getAngleForSegment(ahead_curr, ahead_next);\n\n if (ahead_index !== i + 1){\n curve_tolerance += getAbsAngleDiff(next_angle, prev_angle);\n }\n\n // if curve tolerance is exceeded, break out of loop\n if (Math.abs(curve_tolerance) > STRAIGHT_ANGLE_TOLERANCE){\n break;\n }\n\n length += line_lengths[ahead_index - 1];\n\n // check if label fits geometry\n if (calcFitness(length, label_length) < tolerance){\n let curr_midpt = Vector.mult(Vector.add(curr, ahead_next), 0.5);\n\n // TODO: modify angle if line chosen within curve_angle_tolerance\n // Currently line angle is the same as the starting angle, perhaps it should average across segments?\n this.angle = -next_angle;\n let angle_offset = this.angle;\n\n // if line is flipped, or the orientation is \"left\" (-1), rotate the angle of the offset 180 deg\n if (typeof layout.orientation === 'number'){\n if (flipped){\n angle_offset += Math.PI;\n }\n\n if (layout.orientation === -1){\n angle_offset += Math.PI;\n }\n }\n\n // ensure that all vertical labels point up (not down) by snapping angles close to pi/2 to -pi/2\n if (Math.abs(this.angle - Math.PI/2) < VERTICAL_ANGLE_TOLERANCE) {\n // flip angle and offset\n this.angle = -Math.PI/2;\n\n if (typeof layout.orientation === 'number'){\n this.offset[1] *= -1;\n }\n }\n\n this.position = curr_midpt;\n\n this.updateBBoxes(this.position, size, this.angle, this.angle, this.offset);\n\n if (this.inTileBounds()) {\n return true;\n }\n }\n\n prev_angle = next_angle;\n ahead_index++;\n }\n }\n\n return false;\n }\n\n // Calculate bounding boxes\n updateBBoxes(position, size, angle, angle_offset, offset) {\n let upp = this.layout.units_per_pixel;\n\n // reset bounding boxes\n this.obbs = [];\n this.aabbs = [];\n\n let width = (size[0] + 2 * this.layout.buffer[0]) * upp * Label.epsilon;\n let height = (size[1] + 2 * this.layout.buffer[1]) * upp * Label.epsilon;\n\n let obb = LabelLineBase.createOBB(position, width, height, angle, angle_offset, offset, upp);\n let aabb = obb.getExtent();\n\n this.obbs.push(obb);\n this.aabbs.push(aabb);\n }\n}\n\n// Class for curved labels\n// Extends base LabelLine class to support angles, pre_angles, offsets as arrays for each segment\nclass LabelLineCurved extends LabelLineBase {\n constructor (segment_sizes, line, layout) {\n super(layout);\n this.type = 'curved';\n\n // extra data for curved labels\n this.angles = [];\n this.pre_angles = [];\n this.offsets = [];\n this.num_segments = segment_sizes.length;\n\n this.throw_away = !this.fit(segment_sizes, line, layout);\n }\n\n // Determine if the curved label can fit the geometry.\n // No tolerance is provided because the label must fit entirely within the line geometry.\n fit (size, line, layout){\n let upp = layout.units_per_pixel;\n let flipped; // boolean determining if the line orientation is reversed\n\n let height_px = Math.max(...size.map(s => s[1])); // use max segment height\n let height = height_px * upp;\n\n // Make new copy of line, with consistent orientation\n [line, flipped] = LabelLineBase.splitLineByOrientation(line);\n\n // matches for \"left\" or \"right\" labels where the offset angle is dependent on the geometry\n if (typeof layout.orientation === 'number'){\n this.offset[1] += ORIENTED_LABEL_OFFSET_FACTOR * (height_px - layout.vertical_buffer);\n\n // if line is flipped, or the orientation is \"left\" (-1), flip the offset's y-axis\n if (flipped){\n this.offset[1] *= -1;\n }\n\n if (layout.orientation === -1){\n this.offset[1] *= -1;\n }\n }\n\n let line_lengths = getLineLengths(line);\n let label_lengths = size.map(size => size[0] * upp);\n\n let total_line_length = line_lengths.reduce((prev, next) => prev + next, 0);\n let total_label_length = label_lengths.reduce((prev, next) => prev + next, 0);\n\n // if label displacement is longer than the line, no fit can be possible\n if (total_label_length > total_line_length){\n return false;\n }\n\n // find start and end indices that the label can fit on without overlapping tile boundaries\n // TODO: there is a small probability of a tile boundary crossing on an internal line segment\n // another option is to create a buffer around the line and check if it overlaps a tile boundary\n let [start_index, end_index] = LabelLineCurved.checkTileBoundary(line, line_lengths, height, this.offset, upp);\n\n // need two line segments for a curved label\n if (end_index - start_index < 2){\n return false;\n }\n\n // all positional offsets of the label are relative to the anchor\n let anchor_index = LabelLineCurved.curvaturePlacement(line, total_line_length, line_lengths, total_label_length, start_index, end_index);\n let anchor = line[anchor_index];\n\n // if anchor not found, or greater than the end_index, no fit possible\n if (anchor_index === -1 || end_index - anchor_index < 2){\n return false;\n }\n\n // set start position at anchor position\n this.position = anchor;\n\n // Loop through labels at each zoom level stop\n // TODO: Can be made faster since we are computing every segment for every zoom stop\n // We can skip a segment's calculation once a segment's angle equals its fully zoomed angle\n for (var i = 0; i < label_lengths.length; i++){\n this.offsets[i] = [];\n this.angles[i] = [];\n this.pre_angles[i] = [];\n\n // loop through stops (z = [0, .33, .66, .99] + base zoom)\n for (var j = 0; j < STOPS.length; j++){\n let stop = STOPS[j];\n\n // scale the line geometry by the zoom magnification\n let [new_line, line_lengths] = LabelLineCurved.scaleLine(stop, line);\n anchor = new_line[anchor_index];\n\n // calculate label data relative to anchor position\n let {positions, offsets, angles, pre_angles} = LabelLineCurved.placeAtIndex(anchor_index, new_line, line_lengths, label_lengths);\n\n // translate 2D offsets into \"polar coordinates\"\" (1D distances with angles)\n let offsets1d = offsets.map(offset => {\n return Math.sqrt(offset[0] * offset[0] + offset[1] * offset[1]) / upp;\n });\n\n // Calculate everything that is independent of zoom level (angle for offset, bounding boxes, etc)\n if (stop === 0){\n // use average angle for a global label offset (if offset is specified)\n this.angle = 1 / angles.length * angles.reduce((prev, next) => prev + next);\n\n // calculate bounding boxes for collision at zoom level 0\n for (let i = 0; i < positions.length; i++){\n let position = positions[i];\n let pre_angle = pre_angles[i];\n let width = label_lengths[i];\n let angle_segment = pre_angle + angles[i];\n let angle_offset = this.angle;\n\n let obb = LabelLineBase.createOBB(position, width, height, angle_segment, angle_offset, this.offset, upp);\n let aabb = obb.getExtent();\n\n this.obbs.push(obb);\n this.aabbs.push(aabb);\n }\n }\n\n // push offsets/angles/pre_angles for each zoom and for each label segment\n this.offsets[i].push(offsets1d[i]);\n this.angles[i].push(angles[i]);\n this.pre_angles[i].push(pre_angles[i]);\n }\n }\n\n return true;\n }\n\n // Test if line intersects tile boundary. Return indices at beginning and end of line that are within tile.\n // Burn candle from both ends strategy - meaning shift and pop until vertices are within tile, but an interior vertex\n // may still be outside of tile (can potentially result in label collision across tiles).\n static checkTileBoundary(line, widths, height, offset, upp){\n let start = 0;\n let end = line.length - 1;\n\n height *= Label.epsilon;\n\n let start_width = widths[start] * Label.epsilon;\n let end_width = widths[widths.length - 1] * Label.epsilon;\n\n // Burn candle from start\n while (start < end){\n let angle = getAngleForSegment(line[start], line[start + 1]);\n let position = Vector.add(Vector.rot([start_width/2, 0], angle), line[start]);\n let obb = LabelLineBase.createOBB(position, start_width, height, -angle, -angle, offset, upp);\n let aabb = obb.getExtent();\n let in_tile = Label.prototype.inTileBounds.call({ aabb });\n if (in_tile) {\n break;\n }\n else {\n start++;\n }\n }\n\n // Burn candle from end\n while (end > start){\n let angle = getAngleForSegment(line[end - 1], line[end]);\n let position = Vector.add(Vector.rot([-end_width/2, 0], angle), line[end]);\n let obb = LabelLineBase.createOBB(position, end_width, height, -angle, -angle, offset, upp);\n let aabb = obb.getExtent();\n let in_tile = Label.prototype.inTileBounds.call({ aabb });\n if (in_tile) {\n break;\n }\n else {\n end--;\n }\n }\n\n return [start, end];\n }\n\n // Find optimal starting segment for placing a curved label along a line within provided tolerances\n // This is determined by calculating the curvature at each interior vertex of a line\n // then construct a \"window\" whose breadth is the length of the label. Place this label at each vertex\n // and add the curvatures of each vertex within the window. The vertex mimimizing this value is the \"best\" placement.\n // Return -1 is no placement found.\n static curvaturePlacement(line, total_line_length, line_lengths, label_length, start_index, end_index){\n start_index = start_index || 0;\n end_index = end_index || line.length - 1;\n\n var curvatures = []; // array of curvature values per line vertex\n\n // calculate curvature values\n for (let i = start_index + 1; i < end_index; i++){\n var prev = line[i - 1];\n var curr = line[i];\n var next = line[i + 1];\n\n var norm_1 = Vector.perp(curr, prev);\n var norm_2 = Vector.perp(next, curr);\n\n var curvature = Vector.angleBetween(norm_1, norm_2);\n\n // If curvature at a vertex is greater than the tolerance, remove it from consideration\n // by giving it an infinite penalty\n if (curvature > CURVE_MAX_ANGLE) {\n curvature = Infinity;\n }\n\n curvatures.push(curvature);\n }\n\n curvatures.push(Infinity); // Infinite penalty for going off end of line\n\n // calculate curvature costs\n var total_costs = [];\n var avg_costs = [];\n var line_index = start_index;\n var position = 0;\n\n for (let i = 0; i < start_index; i++){\n position += line_lengths[i];\n }\n\n // move window along line, starting at first vertex\n while (position + label_length < total_line_length){\n // define window breadth\n var window_start = position;\n var window_end = window_start + label_length;\n\n var line_position = window_start;\n var ahead_index = line_index;\n var cost = 0;\n\n // iterate through points on line intersecting window\n while (ahead_index < end_index && line_position + line_lengths[ahead_index] < window_end){\n cost += curvatures[ahead_index];\n if (cost === Infinity) {\n break; // no further progress can be made\n }\n\n line_position += line_lengths[ahead_index];\n ahead_index++;\n }\n\n // if optimal cost, break out\n if (cost === 0) {\n return line_index;\n }\n\n var avg_cost = cost / (ahead_index - line_index);\n\n total_costs.push(cost);\n avg_costs.push(avg_cost);\n\n position += line_lengths[line_index];\n line_index++;\n }\n\n if (total_costs.length === 0) {\n return -1;\n }\n\n // calculate min cost and avg cost to determine if label can fit within curvatures tolerances\n var min_total_cost = Math.min.apply(null, total_costs);\n var min_index = total_costs.indexOf(min_total_cost);\n var min_avg_cost = avg_costs[min_index];\n\n if (min_total_cost < CURVE_MIN_TOTAL_COST && min_avg_cost < CURVE_MIN_AVG_COST){\n // return index with best placement (least curvature)\n return total_costs.indexOf(min_total_cost);\n }\n else {\n // if tolerances aren't satisfied, throw away tile\n return -1;\n }\n }\n\n // Scale the line by a scale factor (used for computing the angles and offsets at fractional zoom levels)\n // Return the new line positions and their lengths\n static scaleLine(scale, line){\n var new_line = [line[0]];\n var line_lengths = [];\n\n line.forEach((pt, i) => {\n if (i === line.length - 1) {\n return;\n }\n var v = Vector.sub(line[i+1], line[i]);\n var delta = Vector.mult(v, 1 + scale);\n\n new_line.push(Vector.add(new_line[i], delta));\n line_lengths.push(Vector.length(delta));\n });\n\n return [new_line, line_lengths];\n }\n\n // Place a label at a given line index\n static placeAtIndex(anchor_index, line, line_lengths, label_lengths){\n let anchor = line[anchor_index];\n\n // Use flat coordinates. Get nearest line vertex index, and offset from the vertex for all labels.\n let [indices, relative_offsets] = LabelLineCurved.getIndicesAndOffsets(anchor_index, line_lengths, label_lengths);\n\n // get 2D positions based on \"flat\" indices and offsets\n let positions = LabelLineCurved.getPositionsFromIndicesAndOffsets(line, indices, relative_offsets);\n\n // get 2d offsets, angles and pre_angles relative to anchor\n let [offsets, angles, pre_angles] = LabelLineCurved.getAnglesFromIndicesAndOffsets(anchor, indices, line, positions);\n\n return {positions, offsets, angles, pre_angles};\n }\n\n // Given label lengths to place along a line broken into several lengths, computer what indices and at which offsets\n // the labels will appear on the line. Assume the line is straight, as it is not necessary to consider angles.\n //\n // Label lengths:\n // |-----|----|-----|-----------------|-------------|\n //\n // Line Lengths;\n // |---------|---------|-------------|------------|----------|-------|\n //\n // Result: indices: [0,0,1,1,3,4]\n static getIndicesAndOffsets(line_index, line_lengths, label_lengths){\n let num_labels = label_lengths.length;\n\n let indices = [];\n let offsets = [];\n\n let label_index = 0;\n let label_offset = 0;\n let line_offset = 0;\n\n // iterate along line\n while (label_index < num_labels){\n let label_length = label_lengths[label_index];\n\n // iterate along labels within the line segment\n while (label_index < num_labels && label_offset + 0.5 * label_length <= line_offset + line_lengths[line_index]){\n let offset = label_offset - line_offset + 0.5 * label_length;\n offsets.push(offset);\n indices.push(line_index);\n\n label_offset += label_length;\n label_index++;\n label_length = label_lengths[label_index];\n }\n\n line_offset += line_lengths[line_index];\n line_index++;\n }\n\n return [indices, offsets];\n }\n\n // Given indices and 1D offsets on a line, compute their 2D positions\n static getPositionsFromIndicesAndOffsets(line, indices, offsets){\n let positions = [];\n for (let i = 0; i < indices.length; i++){\n let index = indices[i];\n let offset = offsets[i];\n\n let angle = getAngleForSegment(line[index], line[index + 1]);\n\n let offset2d = Vector.rot([offset, 0], angle);\n let position = Vector.add(line[index], offset2d);\n\n positions.push(position);\n }\n\n return positions;\n }\n\n // Given indices and 1D offsets on a line, compute their angles and pre-angles from a reference anchor point\n static getAnglesFromIndicesAndOffsets(anchor, indices, line, positions){\n let angles = [];\n let pre_angles = [];\n let offsets = [];\n\n for (let i = 0; i < positions.length; i++){\n let position = positions[i];\n let index = indices[i];\n\n let offset = Vector.sub(position, anchor);\n let offset_angle = -Vector.angle(offset);\n\n let angle = getTextAngleForSegment(line[index], line[index + 1]);\n let pre_angle = angle - offset_angle;\n\n if (i > 0){\n let prev_angle = angles[i - 1];\n let prev_pre_angle = pre_angles[i - 1];\n if (Math.abs(offset_angle - prev_angle) > Math.PI) {\n offset_angle += (offset_angle > prev_angle) ? -2 * Math.PI : 2 * Math.PI;\n }\n if (Math.abs(prev_pre_angle - pre_angle) > Math.PI) {\n pre_angle += (pre_angle > prev_pre_angle) ? -2 * Math.PI : 2 * Math.PI;\n }\n }\n\n angles.push(offset_angle);\n pre_angles.push(pre_angle);\n offsets.push(offset);\n }\n\n return [offsets, angles, pre_angles];\n }\n}\n\n// Fitness function (label length / line length)\nfunction calcFitness(line_length, label_length) {\n return label_length / line_length;\n}\n\nfunction getAngleForSegment(p, q){\n let pq = Vector.sub(q,p);\n return Vector.angle(pq);\n}\n\nfunction getTextAngleForSegment(pt1, pt2) {\n return -getAngleForSegment(pt1, pt2);\n}\n\nfunction getLineLengths(line){\n let lengths = [];\n for (let i = 0; i < line.length - 1; i++){\n let p = line[i];\n let q = line[i+1];\n let length = Math.hypot(p[0] - q[0], p[1] - q[1]);\n lengths.push(length);\n }\n return lengths;\n}\n\nfunction getAbsAngleDiff(angle1, angle2){\n let small, big;\n if (angle1 > angle2){\n small = angle2;\n big = angle1;\n }\n else {\n small = angle1;\n big = angle2;\n }\n\n while (big - small > Math.PI){\n small += 2 * Math.PI;\n }\n\n return Math.abs(big - small);\n}\n", - "import Label from './label';\nimport PointAnchor from './point_anchor';\nimport Geo from '../geo';\nimport OBB from '../utils/obb';\nimport {StyleParser} from '../styles/style_parser';\n\nexport default class LabelPoint extends Label {\n\n constructor (position, size, layout) {\n super(size, layout);\n this.position = [position[0], position[1]];\n this.parent = this.layout.parent;\n this.update();\n\n this.start_anchor_index = 1;\n this.degenerate = !this.size[0] && !this.size[1] && !this.layout.buffer[0] && !this.layout.buffer[1];\n this.throw_away = !this.getNextFit();\n }\n\n update() {\n super.update();\n this.computeOffset();\n this.updateBBoxes();\n }\n\n computeOffset () {\n this.offset = [this.layout.offset[0], this.layout.offset[1]];\n\n // Additional anchor/offset for point:\n if (this.parent) {\n let parent = this.parent;\n // point's own anchor, text anchor applied to point, additional point offset\n this.offset = PointAnchor.computeOffset(this.offset, parent.size, parent.anchor, PointAnchor.zero_buffer);\n this.offset = PointAnchor.computeOffset(this.offset, parent.size, this.anchor, PointAnchor.zero_buffer);\n if (parent.offset !== StyleParser.zeroPair) { // point has an offset\n if (this.offset === StyleParser.zeroPair) { // no text offset, use point's\n this.offset = parent.offset;\n }\n else { // text has offset, add point's\n this.offset[0] += parent.offset[0];\n this.offset[1] += parent.offset[1];\n }\n }\n }\n\n this.offset = PointAnchor.computeOffset(this.offset, this.size, this.anchor);\n }\n\n updateBBoxes () {\n let width = (this.size[0] + this.layout.buffer[0] * 2) * this.layout.units_per_pixel * Label.epsilon;\n let height = (this.size[1] + this.layout.buffer[1] * 2) * this.layout.units_per_pixel * Label.epsilon;\n\n // fudge width value as text may overflow bounding box if it has italic, bold, etc style\n if (this.layout.italic){\n width += 5 * this.layout.units_per_pixel;\n }\n\n let p = [\n this.position[0] + (this.offset[0] * this.layout.units_per_pixel),\n this.position[1] - (this.offset[1] * this.layout.units_per_pixel)\n ];\n\n this.obb = new OBB(p[0], p[1], 0, width, height);\n this.aabb = this.obb.getExtent();\n }\n\n // Try to move the label into the tile bounds\n // Returns true if label was moved into tile, false if it couldn't be moved\n moveIntoTile () {\n let updated = false;\n\n if (this.aabb[0] < 0) {\n this.position[0] += -this.aabb[0];\n updated = true;\n }\n\n if (this.aabb[2] >= Geo.tile_scale) {\n this.position[0] -= this.aabb[2] - Geo.tile_scale + 1;\n updated = true;\n }\n\n if (this.aabb[3] > 0) {\n this.position[1] -= this.aabb[3];\n updated = true;\n }\n\n if (this.aabb[1] <= -Geo.tile_scale) {\n this.position[1] -= this.aabb[1] + Geo.tile_scale - 1;\n updated = true;\n }\n\n if (updated) {\n this.updateBBoxes();\n }\n\n return updated;\n }\n\n getNextFit() {\n if (!this.layout.cull_from_tile || this.inTileBounds()) {\n return true;\n }\n\n if (this.layout.move_into_tile){\n this.moveIntoTile();\n return true;\n }\n else {\n if (Array.isArray(this.layout.anchor)) {\n // Start on second anchor (first anchor was set on creation)\n for (let i = 1; i < this.layout.anchor.length; i++) {\n this.anchor = this.layout.anchor[i];\n this.update();\n\n this.start_anchor_index = i;\n\n if (this.inTileBounds()) {\n return true;\n }\n }\n }\n\n // no anchors result in fit\n return false;\n }\n }\n\n discard (bboxes, exclude = null) {\n if (this.degenerate) {\n return false;\n }\n\n if (super.discard(bboxes, exclude)) {\n // If more than one anchor specified, try them in order\n if (Array.isArray(this.layout.anchor)) {\n // Start on second anchor (first anchor was set on creation)\n for (let i=this.start_anchor_index; i < this.layout.anchor.length; i++) {\n this.anchor = this.layout.anchor[i];\n this.update();\n\n if (this.layout.cull_from_tile && !this.inTileBounds()) {\n continue;\n }\n\n if (!super.discard(bboxes, exclude)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n}\n\n// Placement strategies\nLabelPoint.PLACEMENT = {\n VERTEX: 0, // place labels at endpoints of line segments\n MIDPOINT: 1, // place labels at midpoints of line segments\n SPACED: 2, // place labels equally spaced along line\n CENTROID: 3 // place labels at center of polygons\n};\n", + "import Label from './label';\nimport PointAnchor from './point_anchor';\nimport Geo from '../geo';\nimport OBB from '../utils/obb';\nimport StyleParser from '../styles/style_parser';\n\nexport default class LabelPoint extends Label {\n\n constructor (position, size, layout) {\n super(size, layout);\n this.position = [position[0], position[1]];\n this.parent = this.layout.parent;\n this.update();\n\n this.start_anchor_index = 1;\n this.degenerate = !this.size[0] && !this.size[1] && !this.layout.buffer[0] && !this.layout.buffer[1];\n this.throw_away = !this.getNextFit();\n }\n\n update() {\n super.update();\n this.computeOffset();\n this.updateBBoxes();\n }\n\n computeOffset () {\n this.offset = [this.layout.offset[0], this.layout.offset[1]];\n\n // Additional anchor/offset for point:\n if (this.parent) {\n let parent = this.parent;\n // point's own anchor, text anchor applied to point, additional point offset\n this.offset = PointAnchor.computeOffset(this.offset, parent.size, parent.anchor, PointAnchor.zero_buffer);\n this.offset = PointAnchor.computeOffset(this.offset, parent.size, this.anchor, PointAnchor.zero_buffer);\n if (parent.offset !== StyleParser.zeroPair) { // point has an offset\n if (this.offset === StyleParser.zeroPair) { // no text offset, use point's\n this.offset = parent.offset;\n }\n else { // text has offset, add point's\n this.offset[0] += parent.offset[0];\n this.offset[1] += parent.offset[1];\n }\n }\n }\n\n this.offset = PointAnchor.computeOffset(this.offset, this.size, this.anchor);\n }\n\n updateBBoxes () {\n let width = (this.size[0] + this.layout.buffer[0] * 2) * this.layout.units_per_pixel * Label.epsilon;\n let height = (this.size[1] + this.layout.buffer[1] * 2) * this.layout.units_per_pixel * Label.epsilon;\n\n // fudge width value as text may overflow bounding box if it has italic, bold, etc style\n if (this.layout.italic){\n width += 5 * this.layout.units_per_pixel;\n }\n\n let p = [\n this.position[0] + (this.offset[0] * this.layout.units_per_pixel),\n this.position[1] - (this.offset[1] * this.layout.units_per_pixel)\n ];\n\n this.obb = new OBB(p[0], p[1], 0, width, height);\n this.aabb = this.obb.getExtent();\n }\n\n // Try to move the label into the tile bounds\n // Returns true if label was moved into tile, false if it couldn't be moved\n moveIntoTile () {\n let updated = false;\n\n if (this.aabb[0] < 0) {\n this.position[0] += -this.aabb[0];\n updated = true;\n }\n\n if (this.aabb[2] >= Geo.tile_scale) {\n this.position[0] -= this.aabb[2] - Geo.tile_scale + 1;\n updated = true;\n }\n\n if (this.aabb[3] > 0) {\n this.position[1] -= this.aabb[3];\n updated = true;\n }\n\n if (this.aabb[1] <= -Geo.tile_scale) {\n this.position[1] -= this.aabb[1] + Geo.tile_scale - 1;\n updated = true;\n }\n\n if (updated) {\n this.updateBBoxes();\n }\n\n return updated;\n }\n\n getNextFit() {\n if (!this.layout.cull_from_tile || this.inTileBounds()) {\n return true;\n }\n\n if (this.layout.move_into_tile){\n this.moveIntoTile();\n return true;\n }\n else {\n if (Array.isArray(this.layout.anchor)) {\n // Start on second anchor (first anchor was set on creation)\n for (let i = 1; i < this.layout.anchor.length; i++) {\n this.anchor = this.layout.anchor[i];\n this.update();\n\n this.start_anchor_index = i;\n\n if (this.inTileBounds()) {\n return true;\n }\n }\n }\n\n // no anchors result in fit\n return false;\n }\n }\n\n discard (bboxes, exclude = null) {\n if (this.degenerate) {\n return false;\n }\n\n if (super.discard(bboxes, exclude)) {\n // If more than one anchor specified, try them in order\n if (Array.isArray(this.layout.anchor)) {\n // Start on second anchor (first anchor was set on creation)\n for (let i=this.start_anchor_index; i < this.layout.anchor.length; i++) {\n this.anchor = this.layout.anchor[i];\n this.update();\n\n if (this.layout.cull_from_tile && !this.inTileBounds()) {\n continue;\n }\n\n if (!super.discard(bboxes, exclude)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n}\n\n// Placement strategies\nLabelPoint.PLACEMENT = {\n VERTEX: 0, // place labels at endpoints of line segments\n MIDPOINT: 1, // place labels at midpoints of line segments\n SPACED: 2, // place labels equally spaced along line\n CENTROID: 3 // place labels at center of polygons\n};\n", "// Sets of values to match for directional and corner anchors\nconst lefts = ['left', 'top-left', 'bottom-left'];\nconst rights = ['right', 'top-right', 'bottom-right'];\nconst tops = ['top', 'top-left', 'top-right'];\nconst bottoms = ['bottom', 'bottom-left', 'bottom-right'];\n\nlet PointAnchor;\n\nexport default PointAnchor = {\n\n computeOffset (offset, size, anchor, buffer = null) {\n if (!anchor || anchor === 'center') {\n return offset;\n }\n\n let offset2 = [offset[0], offset[1]];\n buffer = buffer || this.default_buffer;\n\n // An optional left/right offset\n if (this.isLeftAnchor(anchor)) {\n offset2[0] -= size[0] / 2;\n if (anchor === 'left') {\n offset2[0] -= buffer[0];\n }\n }\n else if (this.isRightAnchor(anchor)) {\n offset2[0] += size[0] / 2;\n if (anchor === 'right') {\n offset2[0] += buffer[1];\n }\n }\n\n // An optional top/bottom offset\n if (this.isTopAnchor(anchor)) {\n offset2[1] -= size[1] / 2;\n if (anchor === 'top') {\n offset2[1] -= buffer[2];\n }\n }\n else if (this.isBottomAnchor(anchor)) {\n offset2[1] += size[1] / 2;\n if (anchor === 'bottom') {\n offset2[1] += buffer[3];\n }\n }\n\n return offset2;\n },\n\n alignForAnchor (anchor) {\n if (anchor && anchor !== 'center') {\n if (this.isLeftAnchor(anchor)) {\n return 'right';\n }\n else if (this.isRightAnchor(anchor)) {\n return 'left';\n }\n }\n return 'center';\n },\n\n isLeftAnchor (anchor) {\n return (lefts.indexOf(anchor) > -1);\n },\n\n isRightAnchor (anchor) {\n return (rights.indexOf(anchor) > -1);\n },\n\n isTopAnchor (anchor) {\n return (tops.indexOf(anchor) > -1);\n },\n\n isBottomAnchor (anchor) {\n return (bottoms.indexOf(anchor) > -1);\n },\n\n // Buffers: [left, right, top, bottom]\n default_buffer: [2.5, 2.5, 1.5, 0.75],\n zero_buffer: [0, 0, 0, 0]\n\n};\n", "// Logic for placing point labels along a line geometry\n\nimport LabelPoint from './label_point';\nimport {isCoordOutsideTile} from '../builders/common';\n\nconst PLACEMENT = LabelPoint.PLACEMENT;\nconst default_spacing = 80; // spacing of points along line in pixels\n\nexport default function placePointsOnLine (line, size, options) {\n let labels = [];\n let strategy = options.placement;\n let min_length = Math.max(size[0], size[1]) * options.placement_min_length_ratio * options.units_per_pixel;\n\n switch (strategy){\n case PLACEMENT.SPACED:\n let result = getPositionsAndAngles(line, min_length, options);\n // false will be returned if line have no length\n if (!result) {\n return [];\n }\n\n let positions = result.positions;\n let angles = result.angles;\n for (let i = 0; i < positions.length; i++){\n let position = positions[i];\n let angle = angles[i];\n if (options.tile_edges === true || !isCoordOutsideTile(position)) {\n let label = new LabelPoint(position, size, options);\n label.angle = angle;\n labels.push(label);\n }\n }\n break;\n case PLACEMENT.VERTEX:\n let p, q, label;\n for (let i = 0; i < line.length - 1; i++){\n p = line[i];\n q = line[i + 1];\n if (options.tile_edges === true || !isCoordOutsideTile(p)) {\n label = new LabelPoint(p, size, options);\n label.angle = getAngle(p, q, options.angle);\n labels.push(label);\n }\n }\n\n // add last endpoint\n label = new LabelPoint(q, size, options);\n label.angle = getAngle(p, q, options.angle);\n labels.push(label);\n break;\n case PLACEMENT.MIDPOINT:\n for (let i = 0; i < line.length - 1; i++){\n let p = line[i];\n let q = line[i + 1];\n let position = [\n 0.5 * (p[0] + q[0]),\n 0.5 * (p[1] + q[1])\n ];\n if (options.tile_edges === true || !isCoordOutsideTile(position)) {\n if (!min_length || norm(p, q) > min_length) {\n let label = new LabelPoint(position, size, options);\n label.angle = getAngle(p, q, options.angle);\n labels.push(label);\n }\n }\n }\n break;\n }\n return labels;\n}\n\nfunction getPositionsAndAngles(line, min_length, options){\n let upp = options.units_per_pixel;\n let spacing = (options.placement_spacing || default_spacing) * upp;\n\n let length = getLineLength(line);\n if (length <= min_length) {\n return false;\n }\n\n let num_labels = Math.max(Math.floor(length / spacing), 1);\n let remainder = length - (num_labels - 1) * spacing;\n let positions = [];\n let angles = [];\n\n let distance = 0.5 * remainder;\n for (let i = 0; i < num_labels; i++){\n let {position, angle} = interpolateLine(line, distance, min_length, options);\n if (position != null && angle != null) {\n positions.push(position);\n angles.push(angle);\n }\n distance += spacing;\n }\n\n return {positions, angles};\n}\n\nfunction getAngle(p, q, angle = 0){\n return (angle === 'auto') ? Math.atan2(q[0] - p[0], q[1] - p[1]) : angle;\n}\n\nfunction getLineLength(line){\n let distance = 0;\n for (let i = 0; i < line.length - 1; i++){\n distance += norm(line[i], line[i+1]);\n }\n return distance;\n}\n\nfunction norm(p, q){\n return Math.sqrt(Math.pow(p[0] - q[0], 2) + Math.pow(p[1] - q[1], 2));\n}\n\n// TODO: can be optimized.\n// you don't have to start from the first index every time for placement\nfunction interpolateLine(line, distance, min_length, options){\n let sum = 0;\n let position, angle;\n for (let i = 0; i < line.length-1; i++){\n let p = line[i];\n let q = line[i+1];\n\n const length = norm(p, q);\n if (length <= min_length) {\n continue;\n }\n\n sum += length;\n\n if (sum > distance){\n position = interpolateSegment(p, q, sum - distance);\n angle = getAngle(p, q, options.angle);\n break;\n }\n }\n return {position, angle};\n}\n\nfunction interpolateSegment(p, q, distance){\n let length = norm(p, q);\n let ratio = distance / length;\n return [\n ratio * p[0] + (1 - ratio) * q[0],\n ratio * p[1] + (1 - ratio) * q[1]\n ];\n}\n", "import Geo from '../geo';\n\nexport default class RepeatGroup {\n\n constructor (key, repeat_dist, max_repeat_dist) {\n this.key = key;\n this.repeat_dist = repeat_dist;\n this.repeat_dist_sq = this.repeat_dist * this.repeat_dist;\n this.max_repeat_dist_sq = max_repeat_dist * max_repeat_dist;\n this.one_per_group = (this.repeat_dist_sq >= this.max_repeat_dist_sq) ? true : false;\n this.positions = [];\n }\n\n // Check an object to see if it's a repeat in this group\n check (obj) {\n // If only one object allowed per group, shortcut distance logic\n if (this.one_per_group) {\n if (this.positions.length > 0) {\n // reported distance maxes out at threshold in this case\n // (not true dist value since we skipped calculating it)\n return {\n dist_sq: this.max_repeat_dist_sq,\n repeat_dist_sq: this.repeat_dist_sq,\n one_per_group: this.one_per_group\n };\n }\n return; // no object for this group yet\n }\n\n // Check distance from new object to objects already in group\n let p1 = obj.position;\n for (let i=0; i < this.positions.length; i++) {\n let p2 = this.positions[i];\n let dx = p1[0] - p2[0];\n let dy = p1[1] - p2[1];\n let dist_sq = dx * dx + dy * dy;\n\n // Found an existing object within allowed distance\n if (dist_sq < this.repeat_dist_sq) {\n return {\n dist_sq,\n repeat_dist_sq: this.repeat_dist_sq\n };\n }\n }\n }\n\n // Add object to this group\n add (obj) {\n // only store object's position, to save space / prevent unnecessary references\n if (obj && obj.position) {\n this.positions.push(obj.position);\n }\n }\n\n // Static methods are used to manage repeat groups, within and across tiles\n\n // Reset all groups for this tile\n static clear (tile) {\n this.groups[tile] = {};\n }\n\n // Check an object to see if it's a repeat within its designated group\n static check (obj, layout, tile) {\n if (layout.repeat_distance && layout.repeat_group && this.groups[tile][layout.repeat_group]) {\n return this.groups[tile][layout.repeat_group].check(obj);\n }\n }\n\n // Add an object to its designated group\n static add (obj, layout, tile) {\n if (layout.repeat_distance && layout.repeat_group) {\n if (this.groups[tile][layout.repeat_group] == null) {\n this.groups[tile][layout.repeat_group] = new RepeatGroup(\n layout.repeat_group,\n layout.repeat_distance,\n RepeatGroup.max_repeat_dist\n );\n }\n this.groups[tile][layout.repeat_group].add(obj);\n }\n }\n\n}\n\n// Current set of repeat groups, grouped and keyed by tile\nRepeatGroup.groups = {};\n\n// Max repeat dist: for groups with a repeat dist beyond this threshold, only one label\n// will be allowed per group, e.g. set to tile size for one-label-per-tile\nRepeatGroup.max_repeat_dist = Geo.tile_scale;\n", "import Thread from './utils/thread';\nimport Scene from './scene';\nimport Geo from './geo';\nimport debounce from './utils/debounce';\nimport {mergeDebugSettings} from './utils/debug_settings';\n\n// Exports must appear outside a function, but will only be defined in main thread (below)\nexport var LeafletLayer;\nexport function leafletLayer(options) {\n return extendLeaflet(options);\n}\n\nfunction extendLeaflet(options) {\n\n // If LeafletLayer is already defined when this is called just return that immediately\n // e.g. if you call leafletLayer multiple times (which is valid)\n if (typeof LeafletLayer !== 'undefined') {\n return new LeafletLayer(options);\n }\n\n // Leaflet layer functionality is only defined in main thread\n if (Thread.is_main) {\n\n let L = options.leaflet || window.L;\n\n // Determine if we are extending the leaflet 0.7.x TileLayer class, or the newer\n // leaflet 1.x GridLayer class.\n let layerBaseClass = L.GridLayer ? L.GridLayer : L.TileLayer;\n let leafletVersion = layerBaseClass === L.GridLayer ? '1.x' : '0.7.x';\n let layerClassConfig = {};\n let setZoomAroundNoMoveEnd; // alternate zoom functions defined below\n\n // If extending leaflet 0.7.x TileLayer, additional modifications are needed\n if (layerBaseClass === L.TileLayer) {\n layerClassConfig._addTile = function(){};\n layerClassConfig._removeTile = function(){};\n layerClassConfig._reset = function() {\n layerBaseClass.prototype._reset.apply(this, arguments);\n // re-add the canvas since base class `viewreset` event can remove it\n if (this.scene && this.scene.container && this.scene.canvas) {\n this.scene.container.appendChild(this.scene.canvas);\n }\n };\n }\n\n // Define custom layer methods\n Object.assign(layerClassConfig, {\n\n initialize (options) {\n // Defaults\n options.showDebug = (!options.showDebug ? false : true);\n\n L.setOptions(this, options);\n this.updateTangramDebugSettings();\n this.createScene();\n this.hooks = {};\n this._updating_tangram = false;\n },\n\n createScene () {\n this.scene = Scene.create(\n this.options.scene,\n {\n numWorkers: this.options.numWorkers,\n preUpdate: this.options.preUpdate,\n postUpdate: this.options.postUpdate,\n continuousZoom: (LeafletLayer.leafletVersion === '1.x'),\n wrapView: (this.options.noWrap === true ? false : true),\n highDensityDisplay: this.options.highDensityDisplay,\n logLevel: this.options.logLevel,\n introspection: this.options.introspection,\n webGLContextOptions: this.options.webGLContextOptions, // override/supplement WebGL context options\n disableRenderLoop: this.options.disableRenderLoop // app must call scene.update() per frame\n });\n },\n\n // Finish initializing scene and setup events when layer is added to map\n onAdd (map) {\n if (!this.scene) {\n this.createScene();\n }\n\n layerBaseClass.prototype.onAdd.apply(this, arguments);\n\n this.hooks.resize = () => {\n this._updating_tangram = true;\n this.updateSize();\n this._updating_tangram = false;\n };\n map.on('resize', this.hooks.resize);\n\n this.hooks.move = () => {\n if (this._updating_tangram) {\n return;\n }\n this._updating_tangram = true;\n\n this.scene.view.setPanning(true);\n var view = map.getCenter();\n view.zoom = Math.max(Math.min(map.getZoom(), map.getMaxZoom() || Geo.default_view_max_zoom), map.getMinZoom());\n\n this.scene.view.setView(view);\n if (this._mapLayerCount > 1) {\n // if there are other map pane layers active, redraw immediately to stay in better visual sync\n // otherwise, wait until next regular animation loop iteration\n this.scene.immediateRedraw();\n }\n\n this._updating_tangram = false;\n };\n map.on('move', this.hooks.move);\n\n this.hooks.moveend = () => {\n this.scene.view.setPanning(false);\n this.scene.requestRedraw();\n };\n map.on('moveend', this.hooks.moveend);\n\n this.hooks.drag = () => {\n this.scene.view.markUserInput();\n };\n map.on('drag', this.hooks.drag);\n\n // keep Tangram layer in sync with view via mutation observer\n this._map_pane_observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => this.reverseTransform());\n });\n this._map_pane_observer.observe(map.getPanes().mapPane, { attributes: true });\n\n // Modify default Leaflet behaviors\n this.modifyScrollWheelBehavior(map);\n this.modifyZoomBehavior(map);\n\n this.trackMapLayerCounts(map);\n\n // Setup feature selection\n this.setupSelectionEventHandlers(map);\n this.setSelectionEvents(this.options.events, { radius: this.options.selectionRadius });\n\n // Add GL canvas to layer container\n this.scene.container = this.getContainer();\n this.updateSize();\n\n // Initial view\n this.updateView();\n this.resizeOnFirstVisible();\n\n // Subscribe to tangram events\n this.scene.subscribe({\n move: this.onTangramViewUpdate.bind(this)\n });\n\n // Use leaflet's existing event system as the callback mechanism\n this.scene.load(\n this.options.scene,\n {\n base_path: this.options.sceneBasePath,\n file_type: this.options.sceneFileType,\n blocking: false\n }).then(() => {\n\n this._updating_tangram = true;\n\n this.updateSize();\n this.updateView();\n // this.reverseTransform();\n\n this._updating_tangram = false;\n\n this.fire('init');\n }).catch(error => {\n this.fire('error', error);\n });\n },\n\n onRemove (map) {\n layerBaseClass.prototype.onRemove.apply(this, arguments);\n\n map.off('layeradd layerremove overlayadd overlayremove', this._updateMapLayerCount);\n map.off('resize', this.hooks.resize);\n map.off('move', this.hooks.move);\n map.off('moveend', this.hooks.moveend);\n map.off('drag', this.hooks.drag);\n map.off('click', this.hooks.click);\n map.off('mousemove', this.hooks.mousemove);\n map.off('mouseout', this.hooks.mouseout);\n document.removeEventListener('visibilitychange', this.hooks.visibilitychange);\n this.hooks = {};\n\n this._map_pane_observer.disconnect();\n\n if (this.scene) {\n this.scene.destroy();\n this.scene = null;\n }\n },\n\n createTile (coords) {\n var key = coords.x + '/' + coords.y + '/' + coords.z;\n var div = document.createElement('div');\n div.setAttribute('data-tile-key', key);\n div.style.width = '256px';\n div.style.height = '256px';\n\n if (this.options.showDebug) {\n var debug_overlay = document.createElement('div');\n debug_overlay.textContent = key;\n debug_overlay.style.position = 'absolute';\n debug_overlay.style.left = 0;\n debug_overlay.style.top = 0;\n debug_overlay.style.color = 'white';\n debug_overlay.style.fontSize = '16px';\n debug_overlay.style.textOutline = '1px #000000';\n debug_overlay.style.padding = '8px';\n\n div.appendChild(debug_overlay);\n div.style.borderStyle = 'solid';\n div.style.borderColor = 'white';\n div.style.borderWidth = '1px';\n }\n\n return div;\n },\n\n // Modify leaflet's default scroll wheel behavior to render frames more frequently\n // (should generally lead to smoother scroll with Tangram frame re-render)\n modifyScrollWheelBehavior (map) {\n if (this.scene.view.continuous_zoom && map.scrollWheelZoom && this.options.modifyScrollWheel !== false) {\n map.options.zoomSnap = 0;\n\n const enabled = map.scrollWheelZoom.enabled();\n map.scrollWheelZoom.disable();\n\n // Chrome and Safari have smoother scroll-zoom without actively throttling the mouse wheel,\n // while FF and Edge/IE do better with throttling.\n // TODO: may be related to syncing differences with requestAnimationFrame loop, investigate further\n if (L.Browser.chrome || L.Browser.safari) {\n map.scrollWheelZoom._onWheelScroll = function (e) {\n var delta = L.DomEvent.getWheelDelta(e);\n this._delta += delta;\n this._lastMousePos = this._map.mouseEventToContainerPoint(e);\n this._performZoom();\n L.DomEvent.stop(e);\n };\n }\n else {\n map.options.wheelDebounceTime = 20; // better default for FF and Edge/IE\n }\n\n const debounceMoveEnd = debounce(\n function(map) {\n map._moveEnd(true);\n map.fire('viewreset'); // keep other leaflet layers in sync\n },\n map.options.wheelDebounceTime * 2\n );\n\n var layer = this;\n map.scrollWheelZoom._performZoom = function () {\n var map = this._map,\n zoom = map.getZoom();\n\n map._stop(); // stop panning and fly animations if any\n\n var delta = this._delta / (this._map.options.wheelPxPerZoomLevel * 4);\n this._delta = 0;\n\n if ((zoom + delta) >= this._map.getMaxZoom()) {\n delta = this._map.getMaxZoom() - zoom; // don't go past max zoom\n }\n else if ((zoom + delta) <= this._map.getMinZoom()) {\n delta = this._map.getMinZoom() - zoom; // don't go past min zoom\n }\n\n if (!delta) { return; }\n\n if (map.options.scrollWheelZoom === 'center') {\n setZoomAroundNoMoveEnd(layer, map.getCenter(), zoom + delta);\n } else {\n setZoomAroundNoMoveEnd(layer, this._lastMousePos, zoom + delta);\n }\n debounceMoveEnd(map);\n };\n\n if (enabled) {\n map.scrollWheelZoom.enable();\n }\n }\n },\n\n // Modify leaflet's default double-click and zoom in/out behavior, to better keep Tangram layer in sync with marker/SVG layers\n modifyZoomBehavior (map) {\n if (this.scene.view.continuous_zoom && this.options.modifyZoomBehavior !== false) {\n var layer = this;\n\n // Simplified version of Leaflet's flyTo, for short animations zooming around a point\n const flyAround = function (layer, targetCenter, targetZoom) {\n map._stop();\n\n var startZoom = map._zoom;\n\n targetCenter = L.latLng(targetCenter);\n targetZoom = targetZoom === undefined ? startZoom : targetZoom;\n targetZoom = Math.min(targetZoom, map.getMaxZoom()); // don't go past max zoom\n\n var from = map.project(map.getCenter(), startZoom),\n to = map.project(targetCenter, startZoom);\n\n var start = Date.now(),\n duration = 75;\n\n function frame() {\n var t = (Date.now() - start) / duration;\n\n if (t <= 1) {\n // reuse internal flyTo frame to ensure these animations are canceled like others\n map._flyToFrame = L.Util.requestAnimFrame(frame, map);\n\n var center = from.add(to.subtract(from).multiplyBy(t));\n center = [center.x, center.y];\n center = Geo.metersToLatLng(center);\n setZoomAroundNoMoveEnd(layer, targetCenter, startZoom + (targetZoom - startZoom) * t);\n } else {\n setZoomAroundNoMoveEnd(layer, targetCenter, targetZoom)\n ._moveEnd(true);\n }\n }\n\n map._moveStart(true);\n\n frame.call(map);\n return map;\n };\n\n // Modify the double-click zoom handler to do a short zoom animation\n // See original: https://github.com/Leaflet/Leaflet/blob/cf518ff1a5e0e54a2f63faa144aeaa50888e0bc6/src/map/handler/Map.DoubleClickZoom.js#L29\n if (map.doubleClickZoom) {\n const enabled = map.doubleClickZoom.enabled();\n map.doubleClickZoom.disable();\n\n map.doubleClickZoom._onDoubleClick = function (e) {\n var map = this._map,\n oldZoom = map.getZoom(),\n delta = map.options.zoomDelta,\n zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta;\n\n if (map.options.doubleClickZoom === 'center') {\n flyAround(layer, map.getCenter(), zoom);\n } else {\n flyAround(layer, map.containerPointToLatLng(e.containerPoint), zoom);\n }\n };\n\n if (enabled) {\n map.doubleClickZoom.enable();\n }\n }\n\n // Modify the zoom in/out behavior\n // NOTE: this will NOT fire the 'zoomanim' event, so this modification should be disabled for apps that depend on it\n // See original: https://github.com/Leaflet/Leaflet/blob/cf518ff1a5e0e54a2f63faa144aeaa50888e0bc6/src/map/Map.js#L1610\n if (map._zoomAnimated) {\n map._animateZoom = function (center, zoom, startAnim, noUpdate) {\n if (startAnim) {\n this._animatingZoom = true;\n\n // remember what center/zoom to set after animation\n this._animateToCenter = center;\n this._animateToZoom = zoom;\n\n // replace leaflet CSS animation with Tangram animation to keep markers/SVG in sync\n // (this is a workaround from not being able to easily track/sync to on-going CSS animations in JS)\n flyAround(layer, center, zoom);\n }\n\n // Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693\n setTimeout(L.Util.bind(this._onZoomTransitionEnd, this), 250);\n };\n }\n }\n },\n\n updateView () {\n var view = this._map.getCenter();\n view.zoom = Math.max(Math.min(this._map.getZoom(), this._map.getMaxZoom() || Geo.default_view_max_zoom), this._map.getMinZoom());\n this.scene.view.setView(view);\n },\n\n updateSize () {\n var size = this._map.getSize();\n this.scene.resizeMap(size.x, size.y);\n },\n\n resizeOnFirstVisible () {\n let first_visibility = true;\n this.hooks.visibilitychange = () => {\n if (first_visibility) {\n first_visibility = false;\n this.updateSize();\n }\n };\n\n document.addEventListener('visibilitychange', this.hooks.visibilitychange);\n },\n\n onTangramViewUpdate () {\n if (!this._map || this._updating_tangram) {\n return;\n }\n\n // View changed?\n let map_center = this._map.getCenter();\n let view_center = this.scene.view.center;\n if (map_center.lng === view_center.lng &&\n map_center.lat === view_center.lat &&\n this._map.getZoom() === this.scene.view.zoom) {\n return;\n }\n\n this._updating_tangram = true;\n this._map.setView([this.scene.view.center.lat, this.scene.view.center.lng], this.scene.view.zoom, { animate: false });\n this._updating_tangram = false;\n },\n\n render () {\n if (!this.scene) {\n return;\n }\n this.scene.update();\n },\n\n // Reverse the CSS positioning Leaflet applies to the layer, since Tangram's WebGL canvas\n // is expected to be 'absolutely' positioned.\n reverseTransform () {\n if (!this._map || !this.scene || !this.scene.container) {\n return;\n }\n\n var top_left = this._map.containerPointToLayerPoint([0, 0]);\n L.DomUtil.setPosition(this.scene.container, top_left);\n },\n\n // Tie Leaflet event handlers to Tangram feature selection\n setupSelectionEventHandlers (map) {\n this._selection_events = {};\n this._selection_radius = null; // optional radius\n\n this.hooks.click = (event) => {\n if (typeof this._selection_events.click === 'function') {\n this.scene.getFeatureAt(event.containerPoint, { radius: this._selection_radius }).\n then(selection => {\n let results = Object.assign({}, selection, { leaflet_event: event });\n this._selection_events.click(results);\n });\n }\n };\n map.on('click', this.hooks.click);\n\n this.hooks.mousemove = (event) => {\n if (typeof this._selection_events.hover === 'function') {\n this.scene.getFeatureAt(event.containerPoint, { radius: this._selection_radius }).\n then(selection => {\n let results = Object.assign({}, selection, { leaflet_event: event });\n this._selection_events.hover(results);\n });\n }\n };\n map.on('mousemove', this.hooks.mousemove);\n\n this.hooks.mouseout = (event) => {\n // When mouse leaves map, send an additional selection event to indicate no feature is selected\n if (typeof this._selection_events.hover === 'function') {\n this._selection_events.hover({ changed: true, leaflet_event: event });\n }\n };\n map.on('mouseout', this.hooks.mouseout);\n },\n\n // Set user-defined handlers for feature selection events\n // Currently only one handler can be defined for each event type\n // Event types are: `click`, `hover` (leaflet `mousemove`)\n setSelectionEvents (events, { radius } = {}) {\n this._selection_events = Object.assign(this._selection_events, events);\n this._selection_radius = (radius !== undefined) ? radius : this._selection_radius;\n },\n\n // Track the # of layers in the map pane\n // Used to optimize Tangram redraw sensitivity (redraw more frequently when needing to sync w/other layers)\n trackMapLayerCounts (map) {\n this._updateMapLayerCount = () => {\n let nodes = map.getPanes().mapPane.childNodes;\n this._mapLayerCount = 0;\n for (let i=0; i < nodes.length; i++) {\n this._mapLayerCount += nodes[i].childNodes.length;\n }\n };\n\n map.on('layeradd layerremove overlayadd overlayremove', this._updateMapLayerCount);\n this._updateMapLayerCount();\n },\n\n updateTangramDebugSettings () {\n mergeDebugSettings(this.options.debug || {});\n }\n\n });\n\n // Modified version of Leaflet's setZoomAround that doesn't trigger a moveEnd event\n setZoomAroundNoMoveEnd = function (layer, latlng, zoom) {\n var map = layer._map,\n scene = layer.scene,\n scale = map.getZoomScale(zoom),\n viewHalf = map.getSize().divideBy(2),\n containerPoint = latlng instanceof L.Point ? latlng : map.latLngToContainerPoint(latlng),\n\n centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale),\n newCenter = map.containerPointToLatLng(viewHalf.add(centerOffset));\n\n if (scene) {\n scene.view.markUserInput();\n }\n return map._move(newCenter, zoom, { flyTo: true });\n };\n\n // Create the layer class\n LeafletLayer = layerBaseClass.extend(layerClassConfig);\n\n // Polyfill some 1.0 methods\n if (typeof LeafletLayer.remove !== 'function') {\n LeafletLayer.prototype.remove = function() {\n if (this._map) {\n this._map.removeLayer(this);\n }\n this.fire('remove');\n };\n }\n\n LeafletLayer.layerBaseClass = layerBaseClass;\n LeafletLayer.leafletVersion = leafletVersion;\n\n return new LeafletLayer(options);\n }\n}\n", - "import ShaderProgram from './gl/shader_program';\nimport GLSL from './gl/glsl';\nimport Geo from './geo';\nimport Vector from './vector';\nimport {StyleParser} from './styles/style_parser';\n\nlet fs = require('fs');\n\nconst shaderSrc_ambientLight = fs.readFileSync(__dirname + '/gl/shaders/ambientLight.glsl', 'utf8');\nconst shaderSrc_directionalLight = fs.readFileSync(__dirname + '/gl/shaders/directionalLight.glsl', 'utf8');\nconst shaderSrc_pointLight = fs.readFileSync(__dirname + '/gl/shaders/pointLight.glsl', 'utf8');\nconst shaderSrc_spotLight = fs.readFileSync(__dirname + '/gl/shaders/spotLight.glsl', 'utf8');\n\n// Abstract light\nexport default class Light {\n\n constructor (view, config) {\n this.name = config.name;\n this.view = view;\n\n if (config.ambient == null || typeof config.ambient === 'number') {\n this.ambient = GLSL.expandVec3(config.ambient || 0);\n }\n else {\n this.ambient = StyleParser.parseColor(config.ambient).slice(0, 3);\n }\n\n if (config.diffuse == null || typeof config.diffuse === 'number') {\n this.diffuse = GLSL.expandVec3(config.diffuse != null ? config.diffuse : 1);\n }\n else {\n this.diffuse = StyleParser.parseColor(config.diffuse).slice(0, 3);\n }\n\n if (config.specular == null || typeof config.specular === 'number') {\n this.specular = GLSL.expandVec3(config.specular || 0);\n }\n else {\n this.specular = StyleParser.parseColor(config.specular).slice(0, 3);\n }\n }\n\n // Create a light by type name, factory-style\n // 'config' must include 'name' and 'type', along with any other type-specific properties\n static create (view, config) {\n if (Light.types[config.type]) {\n return new Light.types[config.type](view, config);\n }\n }\n\n // Set light for a style: fragment lighting, vertex lighting, or none\n static setMode (mode, style) {\n if (mode === true) {\n mode = 'fragment';\n }\n mode = Light.enabled && ((mode != null) ? mode : 'fragment'); // default to fragment lighting\n style.defines['TANGRAM_LIGHTING_FRAGMENT'] = (mode === 'fragment');\n style.defines['TANGRAM_LIGHTING_VERTEX'] = (mode === 'vertex');\n }\n\n // Inject all provided light definitions, and calculate cumulative light function\n static inject (lights) {\n // Clear previous injections\n ShaderProgram.removeBlock(Light.block);\n\n // If lighting is globally disabled, nothing is injected (mostly for debugging or live editing)\n if (!Light.enabled) {\n return;\n }\n\n // Construct code to calculate each light instance\n let calculateLights = \"\";\n if (lights && Object.keys(lights).length > 0) {\n // Collect uniques types of lights\n let types = {};\n for (let light_name in lights) {\n types[lights[light_name].type] = true;\n }\n\n // Inject each type of light\n for (let type in types) {\n Light.types[type].inject();\n }\n\n // Inject per-instance blocks and construct the list of functions to calculate each light\n for (let light_name in lights) {\n // Define instance\n lights[light_name].inject();\n\n // Add the calculation function to the list\n calculateLights += `calculateLight(${light_name}, _eyeToPoint, _normal);\\n`;\n }\n }\n\n // Glue together the final lighting function that sums all the lights\n let calculateFunction = `\n vec4 calculateLighting(in vec3 _eyeToPoint, in vec3 _normal, in vec4 _color) {\n\n // Do initial material calculations over normal, emission, ambient, diffuse and specular values\n calculateMaterial(_eyeToPoint,_normal);\n\n // Un roll the loop of individual ligths to calculate\n ${calculateLights}\n\n // Final light intensity calculation\n vec4 color = vec4(vec3(0.), _color.a); // start with vertex color alpha\n\n #ifdef TANGRAM_MATERIAL_EMISSION\n color.rgb = material.emission.rgb;\n color.a *= material.emission.a;\n #endif\n\n #ifdef TANGRAM_MATERIAL_AMBIENT\n color.rgb += light_accumulator_ambient.rgb * _color.rgb * material.ambient.rgb;\n color.a *= material.ambient.a;\n #else\n #ifdef TANGRAM_MATERIAL_DIFFUSE\n color.rgb += light_accumulator_ambient.rgb * _color.rgb * material.diffuse.rgb;\n #endif\n #endif\n\n #ifdef TANGRAM_MATERIAL_DIFFUSE\n color.rgb += light_accumulator_diffuse.rgb * _color.rgb * material.diffuse.rgb;\n color.a *= material.diffuse.a;\n #endif\n\n #ifdef TANGRAM_MATERIAL_SPECULAR\n color.rgb += light_accumulator_specular.rgb * material.specular.rgb;\n color.a *= material.specular.a;\n #endif\n\n // Clamp final color\n color = clamp(color, 0.0, 1.0);\n\n return color;\n }`;\n\n ShaderProgram.addBlock(Light.block, calculateFunction);\n }\n\n // Common instance definition\n inject () {\n let instance = `\n uniform ${this.struct_name} u_${this.name};\n ${this.struct_name} ${this.name};\n `;\n let assign = `\n ${this.name} = u_${this.name};\\n\n `;\n\n ShaderProgram.addBlock(Light.block, instance);\n ShaderProgram.addBlock('setup', assign);\n }\n\n // Update method called once per frame\n update () {\n }\n\n // Called once per frame per program (e.g. for main render pass, then for each additional\n // pass for feature selection, etc.)\n setupProgram (_program) {\n // Three common light properties\n _program.uniform('3fv', `u_${this.name}.ambient`, this.ambient);\n _program.uniform('3fv', `u_${this.name}.diffuse`, this.diffuse);\n _program.uniform('3fv', `u_${this.name}.specular`, this.specular);\n }\n\n}\n\nLight.types = {}; // references to subclasses by short name\nLight.block = 'lighting'; // shader block name\nLight.enabled = true; // lighting can be globally enabled/disabled\n\n\n// Light subclasses\nclass AmbientLight extends Light {\n\n constructor(view, config) {\n super(view, config);\n this.type = 'ambient';\n this.struct_name = 'AmbientLight';\n }\n\n // Inject struct and calculate function\n static inject() {\n ShaderProgram.addBlock(Light.block, shaderSrc_ambientLight);\n }\n\n setupProgram (_program) {\n _program.uniform('3fv', `u_${this.name}.ambient`, this.ambient);\n }\n\n}\nLight.types['ambient'] = AmbientLight;\n\nclass DirectionalLight extends Light {\n\n constructor(view, config) {\n super(view, config);\n this.type = 'directional';\n this.struct_name = 'DirectionalLight';\n\n if (config.direction) {\n this._direction = config.direction;\n }\n else {\n // Default directional light maintains full intensity on ground, with basic extrusion shading\n let theta = 135; // angle of light in xy plane (rotated around z axis)\n let scale = Math.sin(Math.PI*60/180); // scaling factor to keep total directional intensity to 0.5\n this._direction = [\n Math.cos(Math.PI*theta/180) * scale,\n Math.sin(Math.PI*theta/180) * scale,\n -0.5\n ];\n\n if (config.ambient == null) {\n this.ambient = GLSL.expandVec3(0.5);\n }\n }\n this.direction = this._direction.map(parseFloat);\n }\n\n get direction () {\n return this._direction;\n }\n\n set direction (v) {\n this._direction = Vector.normalize(Vector.copy(v));\n }\n\n // Inject struct and calculate function\n static inject() {\n ShaderProgram.addBlock(Light.block, shaderSrc_directionalLight);\n }\n\n setupProgram (_program) {\n super.setupProgram(_program);\n _program.uniform('3fv', `u_${this.name}.direction`, this.direction);\n }\n\n}\nLight.types['directional'] = DirectionalLight;\n\n\nclass PointLight extends Light {\n\n constructor (view, config) {\n super(view, config);\n this.type = 'point';\n this.struct_name = 'PointLight';\n\n this.position = config.position || [0, 0, '100px'];\n this.position_eye = []; // position in eyespace\n this.origin = config.origin || 'ground';\n this.attenuation = !isNaN(parseFloat(config.attenuation)) ? parseFloat(config.attenuation) : 0;\n\n if (config.radius) {\n if (Array.isArray(config.radius) && config.radius.length === 2) {\n this.radius = config.radius;\n }\n else {\n this.radius = [null, config.radius];\n }\n }\n else {\n this.radius = null;\n }\n }\n\n // Inject struct and calculate function\n static inject () {\n ShaderProgram.addBlock(Light.block, shaderSrc_pointLight);\n }\n\n // Inject isntance-specific settings\n inject() {\n super.inject();\n\n ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_EXPONENT'] = (this.attenuation !== 0);\n ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_INNER_RADIUS'] = (this.radius != null && this.radius[0] != null);\n ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_OUTER_RADIUS'] = (this.radius != null);\n }\n\n update () {\n this.updateEyePosition();\n }\n\n updateEyePosition () {\n if (this.origin === 'world') {\n // For world origin, format is: [longitude, latitude, meters (default) or pixels w/px units]\n\n // Move light's world position into camera space\n let [x, y] = Geo.latLngToMeters(this.position);\n this.position_eye[0] = x - this.view.camera.position_meters[0];\n this.position_eye[1] = y - this.view.camera.position_meters[1];\n\n this.position_eye[2] = StyleParser.convertUnits(this.position[2],\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) });\n this.position_eye[2] = this.position_eye[2] - this.view.camera.position_meters[2];\n }\n else if (this.origin === 'ground' || this.origin === 'camera') {\n // For camera or ground origin, format is: [x, y, z] in meters (default) or pixels w/px units\n\n // Light is in camera space by default\n this.position_eye = StyleParser.convertUnits(this.position,\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) });\n\n if (this.origin === 'ground') {\n // Leave light's xy in camera space, but z needs to be moved relative to ground plane\n this.position_eye[2] = this.position_eye[2] - this.view.camera.position_meters[2];\n }\n }\n this.position_eye[3] = 1;\n }\n\n setupProgram (_program) {\n super.setupProgram(_program);\n\n _program.uniform('4fv', `u_${this.name}.position`, this.position_eye);\n\n if(ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_EXPONENT']) {\n _program.uniform('1f', `u_${this.name}.attenuationExponent`, this.attenuation);\n }\n\n if(ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_INNER_RADIUS']) {\n _program.uniform('1f', `u_${this.name}.innerRadius`,\n StyleParser.convertUnits(this.radius[0],\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) }));\n }\n\n if(ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_OUTER_RADIUS']) {\n _program.uniform('1f', `u_${this.name}.outerRadius`,\n StyleParser.convertUnits(this.radius[1],\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) }));\n }\n }\n}\nLight.types['point'] = PointLight;\n\n\nclass SpotLight extends PointLight {\n\n constructor (view, config) {\n super(view, config);\n this.type = 'spotlight';\n this.struct_name = 'SpotLight';\n\n this.direction = this._direction = (config.direction || [0, 0, -1]).map(parseFloat); // [x, y, z]\n this.exponent = config.exponent ? parseFloat(config.exponent) : 0.2;\n this.angle = config.angle ? parseFloat(config.angle) : 20;\n }\n\n get direction () {\n return this._direction;\n }\n\n set direction (v) {\n this._direction = Vector.normalize(Vector.copy(v));\n }\n\n // Inject struct and calculate function\n static inject () {\n ShaderProgram.addBlock(Light.block, shaderSrc_spotLight);\n }\n\n setupProgram (_program) {\n super.setupProgram(_program);\n\n _program.uniform('3fv', `u_${this.name}.direction`, this.direction);\n _program.uniform('1f', `u_${this.name}.spotCosCutoff`, Math.cos(this.angle * 3.14159 / 180));\n _program.uniform('1f', `u_${this.name}.spotExponent`, this.exponent);\n }\n\n}\nLight.types['spotlight'] = SpotLight;\n", - "import GLSL from './gl/glsl';\nimport {StyleParser} from './styles/style_parser';\n\nlet fs = require('fs');\nconst shaderSrc_material = fs.readFileSync(__dirname + '/gl/shaders/material.glsl', 'utf8');\n\nconst material_props = ['emission', 'ambient', 'diffuse', 'specular'];\n\nexport default class Material {\n constructor (config) {\n\n config = config || {};\n\n // These properties all have the same defaults, so they can be set in bulk\n material_props.forEach(prop => {\n const value = config[prop];\n if (value != null) {\n if (value.texture) {\n this[prop] = {\n texture: value.texture,\n mapping: value.mapping || 'spheremap',\n scale: GLSL.expandVec3(value.scale != null ? value.scale : 1),\n amount: GLSL.expandVec4(value.amount != null ? value.amount : 1)\n };\n }\n else if (typeof value === 'number' || Array.isArray(value)) {\n this[prop] = { amount: GLSL.expandVec4(value) };\n }\n else if (typeof value === 'string') {\n this[prop] = { amount: StyleParser.parseColor(value) };\n }\n else {\n this[prop] = value;\n }\n }\n });\n\n // Extra specular props\n if (this.specular) {\n this.specular.shininess = config.shininess ? parseFloat(config.shininess) : 0.2;\n }\n\n // Normal mapping\n if (config.normal != null) {\n this.normal = {\n texture: config.normal.texture,\n mapping: config.normal.mapping || 'triplanar',\n scale: GLSL.expandVec3(config.normal.scale != null ? config.normal.scale : 1),\n amount: config.normal.amount != null ? config.normal.amount : 1\n };\n }\n }\n\n // Determine if a material config block has sufficient properties to create a material\n static isValid (config) {\n if (config == null) {\n return false;\n }\n\n if (config.emission == null &&\n config.ambient == null &&\n config.diffuse == null &&\n config.specular == null) {\n return false;\n }\n\n return true;\n }\n\n inject (style) {\n // For each property, sets defines to configure texture mapping, with a pattern like:\n // TANGRAM_MATERIAL_DIFFUSE, TANGRAM_MATERIAL_DIFFUSE_TEXTURE, TANGRAM_MATERIAL_DIFFUSE_TEXTURE_SPHEREMAP\n // Also sets flags to keep track of each unique mapping type being used, e.g.:\n // TANGRAM_MATERIAL_TEXTURE_SPHEREMAP\n // Enables texture coordinates if needed and not already on\n material_props.forEach(prop => {\n let def = `TANGRAM_MATERIAL_${prop.toUpperCase()}`;\n let texdef = def + '_TEXTURE';\n style.defines[def] = (this[prop] != null);\n if (this[prop] && this[prop].texture) {\n style.defines[texdef] = true;\n style.defines[texdef + '_' + this[prop].mapping.toUpperCase()] = true;\n style.defines[`TANGRAM_MATERIAL_TEXTURE_${this[prop].mapping.toUpperCase()}`] = true;\n style.texcoords = style.texcoords || (this[prop].mapping === 'uv');\n }\n });\n\n // Normal mapping\n // As anove, sets flags to keep track of each unique mapping type being used, e.g.:\n // TANGRAM_MATERIAL_TEXTURE_SPHEREMAP\n if (this.normal && this.normal.texture) {\n style.defines['TANGRAM_MATERIAL_NORMAL_TEXTURE'] = true;\n style.defines['TANGRAM_MATERIAL_NORMAL_TEXTURE_' + this.normal.mapping.toUpperCase()] = true;\n style.defines[`TANGRAM_MATERIAL_TEXTURE_${this.normal.mapping.toUpperCase()}`] = true;\n style.texcoords = style.texcoords || (this.normal.mapping === 'uv');\n }\n\n style.replaceShaderBlock(Material.block, shaderSrc_material, 'Material');\n style.addShaderBlock('setup', '\\nmaterial = u_material;\\n', 'Material');\n }\n\n setupProgram (_program) {\n // For each property, sets uniforms in the pattern:\n // u_material.diffuse, u_material.diffuseScale u_material_diffuse_texture\n material_props.forEach(prop => {\n if (this[prop]) {\n if (this[prop].texture) {\n _program.setTextureUniform(`u_material_${prop}_texture`, this[prop].texture);\n _program.uniform('3fv', `u_material.${prop}Scale`, this[prop].scale);\n _program.uniform('4fv', `u_material.${prop}`, this[prop].amount);\n } else if (this[prop].amount) {\n _program.uniform('4fv', `u_material.${prop}`, this[prop].amount);\n }\n }\n });\n\n // Extra specular props\n if (this.specular) {\n _program.uniform('1f', 'u_material.shininess', this.specular.shininess);\n }\n\n // Normal mapping\n if (this.normal && this.normal.texture) {\n _program.setTextureUniform('u_material_normal_texture', this.normal.texture);\n _program.uniform('3fv', 'u_material.normalScale', this.normal.scale);\n _program.uniform('1f', 'u_material.normalAmount', this.normal.amount);\n }\n }\n}\n\nMaterial.block = 'material';\n", - "/*jshint worker: true*/\n\nimport './utils/polyfills';\n\n// The leaflet layer plugin is currently the primary public API\nimport {leafletLayer} from './leaflet_layer';\n\n// The scene worker is only activated when a worker thread is instantiated, but must always be loaded\nimport Scene from './scene';\nimport {SceneWorker} from './scene_worker';\n\n// Additional modules are exposed for debugging\nimport version from './utils/version';\nimport log from './utils/log';\nimport Thread from './utils/thread';\nimport Utils from './utils/utils';\nimport Geo from './geo';\nimport Vector from './vector';\nimport DataSource from './sources/data_source';\nimport './sources/geojson';\nimport './sources/topojson';\nimport './sources/mvt';\nimport './sources/raster';\nimport GLSL from './gl/glsl';\nimport ShaderProgram from './gl/shader_program';\nimport VertexData from './gl/vertex_data';\nimport Texture from './gl/texture';\nimport Material from './material';\nimport Light from './light';\nimport WorkerBroker from './utils/worker_broker';\nimport {layerCache} from './styles/layer';\nimport {StyleManager} from './styles/style_manager';\nimport {StyleParser} from './styles/style_parser';\nimport Collision from './labels/collision';\nimport FeatureSelection from './selection';\nimport CanvasText from './styles/text/canvas_text';\nimport debugSettings from './utils/debug_settings';\n\nimport yaml from 'js-yaml';\nimport JSZip from 'jszip';\n\n// Make some modules accessible for debugging\nvar debug = {\n log,\n yaml,\n Thread,\n Utils,\n Geo,\n Vector,\n DataSource,\n GLSL,\n ShaderProgram,\n VertexData,\n Texture,\n Material,\n Light,\n Scene,\n SceneWorker,\n WorkerBroker,\n layerCache,\n StyleManager,\n StyleParser,\n Collision,\n FeatureSelection,\n CanvasText,\n debugSettings\n};\n\nif (Thread.is_main) {\n Utils.requestAnimationFramePolyfill();\n\n // Attach Promise polyfill to window\n // Allows FontFaceObserver to use polyfill (without needing to include its own duplicate polyfill)\n if (window.Promise === undefined) {\n window.Promise = Promise;\n JSZip.external.Promise = Promise;\n }\n}\n\nmodule.exports = {\n leafletLayer,\n debug,\n version\n};\n", - "import log from './utils/log';\nimport Utils from './utils/utils';\nimport debugSettings from './utils/debug_settings';\nimport * as URLs from './utils/urls';\nimport WorkerBroker from './utils/worker_broker';\nimport Task from './utils/task';\nimport subscribeMixin from './utils/subscribe';\nimport sliceObject from './utils/slice';\nimport Context from './gl/context';\nimport Texture from './gl/texture';\nimport ShaderProgram from './gl/shader_program';\nimport VertexArrayObject from './gl/vao';\nimport {StyleManager} from './styles/style_manager';\nimport {Style} from './styles/style';\nimport {StyleParser} from './styles/style_parser';\nimport SceneLoader from './scene_loader';\nimport View from './view';\nimport Light from './light';\nimport Tile from './tile';\nimport TileManager from './tile_manager';\nimport DataSource from './sources/data_source';\nimport FeatureSelection from './selection';\nimport RenderStateManager from './gl/render_state';\nimport CanvasText from './styles/text/canvas_text';\nimport FontManager from './styles/text/font_manager';\nimport MediaCapture from './utils/media_capture';\n\n// Load scene definition: pass an object directly, or a URL as string to load remotely\nexport default class Scene {\n\n constructor(config_source, options) {\n options = options || {};\n subscribeMixin(this);\n\n this.id = Scene.id++;\n this.initialized = false;\n this.initializing = null; // will be a promise that resolves when scene is loaded\n this.sources = {};\n\n this.view = new View(this, options);\n this.tile_manager = new TileManager({ scene: this, view: this.view });\n this.num_workers = options.numWorkers || 2;\n if (options.disableVertexArrayObjects === true) {\n VertexArrayObject.disabled = true;\n }\n\n Utils.use_high_density_display = options.highDensityDisplay !== undefined ? options.highDensityDisplay : true;\n Utils.updateDevicePixelRatio();\n\n this.config = null;\n this.config_source = config_source;\n this.config_bundle = null;\n this.last_valid_config_source = null;\n\n this.styles = null;\n this.style_manager = new StyleManager();\n\n this.building = null; // tracks current scene building state (tiles being built, etc.)\n this.dirty = true; // request a redraw\n\n if (options.preUpdate){\n // optional pre-render loop hook\n this.subscribe({'pre_update': options.preUpdate});\n }\n\n if (options.postUpdate){\n // optional post-render loop hook\n this.subscribe({'post_update': options.postUpdate});\n }\n\n this.render_loop = !options.disableRenderLoop; // disable render loop - app will have to manually call Scene.render() per frame\n this.render_loop_active = false;\n this.render_loop_stop = false;\n this.render_count = 0;\n this.last_render_count = 0;\n this.render_count_changed = false;\n this.frame = 0;\n this.last_main_render = -1; // frame counter for last main render pass\n this.last_selection_render = -1; // frame counter for last selection render pass\n this.media_capture = new MediaCapture();\n this.selection = null;\n this.introspection = (options.introspection === true) ? true : false;\n this.resetTime();\n\n this.container = options.container;\n this.canvas = null;\n this.contextOptions = options.webGLContextOptions;\n\n this.lights = null;\n this.background = null;\n\n this.createListeners();\n this.updating = 0;\n this.generation = Scene.generation; // an id that is incremented each time the scene config is invalidated\n this.last_complete_generation = Scene.generation; // last generation id with a complete view\n this.setupDebug();\n\n this.log_level = options.logLevel || 'warn';\n log.setLevel(this.log_level);\n log.reset();\n }\n\n static create (config, options = {}) {\n return new Scene(config, options);\n }\n\n // Load scene (or reload existing scene if no new source specified)\n // Options:\n // `base_path`: base URL against which scene resources should be resolved (useful for Play) (default nulll)\n // `blocking`: should rendering block on scene load completion (default true)\n load(config_source = null, options = {}) {\n if (this.initializing) {\n return this.initializing;\n }\n log.reset();\n\n this.updating++;\n this.initialized = false;\n this.initial_build_time = null;\n\n // Backwards compatibilty for passing `base_path` string as second argument\n // (since transitioned to using options argument to accept more parameters)\n options = (typeof options === 'string') ? { base_path: options } : options;\n\n // Should rendering block on load (not desirable for initial load, often desired for live style-switching)\n options.blocking = (options.blocking !== undefined) ? options.blocking : true;\n\n if (this.render_loop !== false) {\n this.setupRenderLoop();\n }\n\n // Load scene definition (sources, styles, etc.), then create styles & workers\n this.createCanvas();\n this.initializing = this.loadScene(config_source, options)\n .then(() => this.createWorkers())\n .then(() => {\n this.resetFeatureSelection();\n\n // Scene loaded from a JS object, or modified by a `load` event, may contain compiled JS functions\n // which need to be serialized, while one loaded only from a URL does not.\n const serialize_funcs = ((typeof this.config_source === 'object') || this.hasSubscribersFor('load'));\n\n const updating = this.updateConfig({ serialize_funcs, normalize: false, load_event: true, fade_in: true });\n if (options.blocking === true) {\n return updating;\n }\n }).then(() => {\n this.updating--;\n this.initializing = null;\n this.initialized = true;\n this.last_valid_config_source = this.config_source;\n this.last_valid_options = { base_path: options.base_path, file_type: options.file_type };\n\n this.requestRedraw();\n }).catch(error => {\n this.initializing = null;\n this.updating = 0;\n\n // Report and revert to last valid config if available\n let type, message;\n if (error.name === 'YAMLException') {\n type = 'yaml';\n message = 'Error parsing scene YAML';\n }\n else {\n // TODO: more error types\n message = 'Error initializing scene';\n }\n this.trigger('error', { type, message, error, url: this.config_source });\n\n message = `Scene.load() failed to load ${this.config_source}: ${error.message}`;\n if (this.last_valid_config_source) {\n log('warn', message, error);\n log('info', `Scene.load() reverting to last valid configuration`);\n return this.load(this.last_valid_config_source, this.last_valid_base_path);\n }\n log('error', message, error);\n throw error;\n });\n\n return this.initializing;\n }\n\n destroy() {\n this.initialized = false;\n this.render_loop_stop = true; // schedule render loop to stop\n\n this.destroyListeners();\n\n if (this.canvas && this.canvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas);\n this.canvas = null;\n }\n this.container = null;\n\n if (this.selection) {\n this.selection.destroy();\n }\n\n if (this.gl) {\n Texture.destroy(this.gl);\n this.style_manager.destroy(this.gl);\n this.styles = {};\n\n ShaderProgram.reset();\n\n // Force context loss\n let ext = this.gl.getExtension('WEBGL_lose_context');\n if (ext) {\n ext.loseContext();\n }\n\n this.gl = null;\n }\n\n this.sources = {};\n\n this.destroyWorkers();\n this.tile_manager.destroy();\n this.tile_manager = null;\n log.reset();\n }\n\n createCanvas() {\n if (this.canvas) {\n return;\n }\n\n this.container = this.container || document.body;\n this.canvas = document.createElement('canvas');\n this.canvas.style.position = 'absolute';\n this.canvas.style.top = 0;\n this.canvas.style.left = 0;\n\n // Force tangram canvas underneath all leaflet layers, and set background to transparent\n this.container.style.backgroundColor = 'transparent';\n this.container.appendChild(this.canvas);\n\n try {\n this.gl = Context.getContext(this.canvas, Object.assign({\n alpha: true, premultipliedAlpha: true,\n stencil: true,\n device_pixel_ratio: Utils.device_pixel_ratio\n }, this.contextOptions));\n }\n catch(e) {\n throw new Error(\n \"Couldn't create WebGL context. \" +\n \"Your browser may not support WebGL, or it's turned off? \" +\n \"Visit http://webglreport.com/ for more info.\"\n );\n }\n\n this.resizeMap(this.container.clientWidth, this.container.clientHeight);\n VertexArrayObject.init(this.gl);\n this.render_states = new RenderStateManager(this.gl);\n this.media_capture.setCanvas(this.canvas, this.gl);\n }\n\n // Get the URL to load the web worker from\n getWorkerUrl() {\n let worker_url;\n /* jshint -W117 */\n // ignore uninitialized worker src variable (defined in parent scope)\n if (typeof __worker_src__ !== \"undefined\"){\n let source = '(' + __worker_src__ + ')()';\n if (__worker_src_origin__ && __worker_src_map__ !== '') {\n let origin = __worker_src_origin__.slice(0, __worker_src_origin__.lastIndexOf('/')+1);\n source += '\\n//#' + ' sourceMappingURL=' + origin + __worker_src_map__;\n }\n worker_url = URLs.createObjectURL(new Blob([source], { type: 'application/javascript' }));\n }\n /* jshint +W117 */\n\n if (!worker_url) {\n throw new Error(\"Couldn't find internal Tangram source variable (may indicate the library did not build correctly)\");\n }\n return worker_url;\n }\n\n // Update list of any custom data source scripts (if any)\n updateDataSourceScripts () {\n let prev_scripts = [...(this.data_source_scripts||[])]; // save list of previously loaded scripts\n let scripts = Object.keys(this.config.sources).map(s => this.config.sources[s].scripts).filter(x => x);\n this.data_source_scripts = [].concat(...scripts).sort();\n\n // Scripts changed?\n return !(this.data_source_scripts.length === prev_scripts.length &&\n this.data_source_scripts.every((v, i) => v === prev_scripts[i]));\n }\n\n // Web workers handle heavy duty tile construction: networking, geometry processing, etc.\n createWorkers() {\n // Reset old workers (if any) if we need to re-instantiate with new external scripts\n if (this.updateDataSourceScripts()) {\n this.destroyWorkers();\n }\n\n if (!this.workers) {\n return this.makeWorkers(this.getWorkerUrl());\n }\n return Promise.resolve();\n }\n\n // Instantiate workers from URL, init event handlers\n makeWorkers(url) {\n\n // Let VertexElements know if 32 bit indices for element arrays are available\n let has_element_index_uint = this.gl.getExtension(\"OES_element_index_uint\") ? true : false;\n\n let queue = [];\n this.workers = [];\n for (let id=0; id < this.num_workers; id++) {\n let worker = new Worker(url);\n this.workers[id] = worker;\n\n WorkerBroker.addWorker(worker);\n\n log('debug', `Scene.makeWorkers: initializing worker ${id}`);\n let _id = id;\n queue.push(WorkerBroker.postMessage(worker, 'self.init', this.id, id, this.num_workers, this.log_level, Utils.device_pixel_ratio, has_element_index_uint, this.data_source_scripts).then(\n (id) => {\n log('debug', `Scene.makeWorkers: initialized worker ${id}`);\n return id;\n },\n (error) => {\n log('error', `Scene.makeWorkers: failed to initialize worker ${_id}:`, error);\n return Promise.reject(error);\n })\n );\n }\n\n this.next_worker = 0;\n return Promise.all(queue).then(() => {\n log.setWorkers(this.workers);\n\n // Free memory after worker initialization\n URLs.revokeObjectURL(url);\n });\n }\n\n destroyWorkers() {\n if (Array.isArray(this.workers)) {\n log.setWorkers(null);\n this.workers.forEach((worker) => {\n worker.terminate();\n });\n this.workers = null;\n }\n }\n\n // Scene is ready for rendering\n ready() {\n if (!this.view.ready() || Object.keys(this.sources).length === 0) {\n return false;\n }\n return true;\n }\n\n // Resize the map when device pixel ratio changes, e.g. when switching between displays\n updateDevicePixelRatio () {\n if (Utils.updateDevicePixelRatio()) {\n WorkerBroker.postMessage(this.workers, 'self.updateDevicePixelRatio', Utils.device_pixel_ratio)\n .then(() => this.rebuild())\n .then(() => this.resizeMap(this.view.size.css.width, this.view.size.css.height));\n }\n }\n\n resizeMap(width, height) {\n if (width === 0 && height === 0) {\n return;\n }\n\n this.dirty = true;\n this.view.setViewportSize(width, height);\n if (this.gl) {\n Context.resize(this.gl, width, height, Utils.device_pixel_ratio);\n }\n }\n\n // Request scene be redrawn at next animation loop\n requestRedraw() {\n this.dirty = true;\n }\n\n // Redraw scene immediately - don't wait for animation loop\n // Use sparingly, but for cases where you need the closest possible sync with other UI elements,\n // such as other, non-WebGL map layers (e.g. Leaflet raster layers, markers, etc.)\n immediateRedraw() {\n this.dirty = true;\n this.update();\n }\n\n renderLoop () {\n this.render_loop_active = true; // only let the render loop instantiate once\n\n if (this.initialized) {\n // Render the scene\n this.update();\n }\n\n // Pending background tasks\n Task.setState({ user_moving_view: this.view.user_input_active });\n Task.processAll();\n\n // Request the next frame if not scheduled to stop\n if (!this.render_loop_stop) {\n window.requestAnimationFrame(this.renderLoop.bind(this));\n }\n else {\n this.render_loop_stop = false;\n this.render_loop_active = false;\n }\n }\n\n // Setup the render loop\n setupRenderLoop() {\n if (!this.render_loop_active) {\n setTimeout(() => { this.renderLoop(); }, 0); // delay start by one tick\n }\n }\n\n update() {\n // Determine which passes (if any) to render\n let main = this.dirty;\n let selection = this.selection ? this.selection.hasPendingRequests() : false;\n var will_render = !(\n (main === false && selection === false) ||\n this.initialized === false ||\n this.updating > 0 ||\n this.ready() === false\n );\n\n // Pre-render loop hook\n this.trigger('pre_update', will_render);\n\n // Update view (needs to update user input timer even if no render will occur)\n this.view.update();\n\n // Bail if no need to render\n if (!will_render) {\n return false;\n }\n this.dirty = false; // subclasses can set this back to true when animation is needed\n\n // Render the scene\n this.updateDevicePixelRatio();\n this.render({ main, selection });\n this.updateViewComplete(); // fires event when rendered tile set or style changes\n this.media_capture.completeScreenshot(); // completes screenshot capture if requested\n\n // Post-render loop hook\n this.trigger('post_update', will_render);\n\n // Redraw every frame if animating\n if (this.animated === true || this.view.isAnimating()) {\n this.dirty = true;\n }\n\n this.frame++;\n log('trace', 'Scene.render()');\n return true;\n }\n\n // Accepts flags indicating which render passes should be made\n render({ main, selection }) {\n var gl = this.gl;\n\n // Update styles, camera, lights\n Object.keys(this.lights).forEach(i => this.lights[i].update());\n\n // Render main pass\n if (main) {\n this.render_count = this.renderPass();\n this.last_main_render = this.frame;\n }\n\n // Render selection pass (if needed)\n if (selection) {\n if (this.view.panning || this.view.user_input_active) {\n this.selection.clearPendingRequests();\n return;\n }\n\n // Only re-render if selection buffer is out of date (relative to main render buffer)\n // and not locked (e.g. no tiles are actively building)\n if (!this.selection.locked && this.last_selection_render < this.last_main_render) {\n this.selection.bind(); // switch to FBO\n this.renderPass(\n 'selection_program', // render w/alternate program\n { allow_blend: false });\n\n // Reset to screen buffer\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.viewport(0, 0, this.canvas.width, this.canvas.height);\n gl.clearColor(...this.background.color); // restore scene background color\n this.last_selection_render = this.frame;\n }\n\n this.selection.read(); // process any pending results from selection buffer\n }\n\n this.render_count_changed = false;\n if (this.render_count !== this.last_render_count) {\n this.render_count_changed = true;\n\n this.getFeatureSelectionMapSize().then(size => {\n if (size) { // returns undefined if previous request pending\n log('info', `Scene: rendered ${this.render_count} primitives (${size} features in selection map)`);\n }\n });\n }\n this.last_render_count = this.render_count;\n\n return true;\n }\n\n // Render all active styles, grouped by blend/depth type (opaque, overlay, etc.) and by program (style)\n // Called both for main render pass, and for secondary passes like selection buffer\n renderPass(program_key = 'program', { allow_blend } = {}) {\n // optionally force alpha off (e.g. for selection pass)\n allow_blend = (allow_blend == null) ? true : allow_blend;\n\n this.clearFrame();\n\n // Sort styles by blend order\n let styles = this.tile_manager.getActiveStyles().\n map(s => this.styles[s]).\n filter(s => s). // guard against missing styles, such as while loading a new scene\n sort(Style.blendOrderSort);\n\n // Render styles\n let count = 0; // how many primitives were rendered\n let last_blend;\n for (let s=0; s < styles.length; s++) {\n let style = styles[s];\n\n // Only update render state when blend mode changes\n if (style.blend !== last_blend) {\n let state = Object.assign({},\n Style.render_states[style.blend], // render state for blend mode\n { blend: (allow_blend && style.blend) } // enable/disable blending (e.g. no blend for selection)\n );\n this.setRenderState(state);\n }\n\n // Depth pre-pass for translucency\n let translucent = (style.blend === 'translucent' && program_key === 'program'); // skip for selection buffer render pass\n if (translucent) {\n this.gl.colorMask(false, false, false, false);\n this.renderStyle(style.name, program_key);\n\n this.gl.colorMask(true, true, true, true);\n this.gl.depthFunc(this.gl.EQUAL);\n\n // stencil buffer prevents compounding alpha from overlapping polys\n this.gl.enable(this.gl.STENCIL_TEST);\n this.gl.clear(this.gl.STENCIL_BUFFER_BIT);\n this.gl.stencilFunc(this.gl.EQUAL, this.gl.ZERO, 0xFF);\n this.gl.stencilOp(this.gl.KEEP, this.gl.KEEP, this.gl.INCR);\n }\n\n // Main render pass\n count += this.renderStyle(style.name, program_key);\n\n if (translucent) {\n // disable translucency-specific settings\n this.gl.disable(this.gl.STENCIL_TEST);\n this.gl.depthFunc(this.gl.LESS);\n }\n\n last_blend = style.blend;\n }\n\n return count;\n }\n\n renderStyle(style_name, program_key) {\n let style = this.styles[style_name];\n let first_for_style = true;\n let render_count = 0;\n let program;\n\n // Render tile GL geometries\n let renderable_tiles = this.tile_manager.getRenderableTiles();\n for (let t=0; t < renderable_tiles.length; t++) {\n let tile = renderable_tiles[t];\n\n if (tile.meshes[style_name] == null) {\n continue;\n }\n\n // Style-specific state\n // Only setup style if rendering for first time this frame\n // (lazy init, not all styles will be used in all screen views; some styles might be defined but never used)\n if (first_for_style === true) {\n first_for_style = false;\n program = this.setupStyle(style, program_key);\n if (!program) {\n return 0;\n }\n }\n\n // Skip proxy tiles if new tiles have finished loading this style\n if (!tile.shouldProxyForStyle(style_name)) {\n // log('trace', `Scene.renderStyle(): Skip proxy tile for style '${style_name}' `, tile, tile.proxy_for);\n continue;\n }\n\n // Tile-specific state\n this.view.setupTile(tile, program);\n\n // Render tile\n tile.meshes[style_name].forEach(mesh => {\n if (style.render(mesh)) {\n this.requestRedraw();\n }\n render_count += mesh.geometry_count;\n });\n }\n\n return render_count;\n }\n\n setupStyle(style, program_key) {\n // Get shader program from style, lazily compiling if necessary\n let program;\n try {\n program = style.getProgram(program_key);\n if (!program) {\n return;\n }\n }\n catch(error) {\n this.trigger('warning', {\n type: 'styles',\n message: `Error compiling style ${style.name}`,\n style,\n shader_errors: style.program && style.program.shader_errors\n });\n return;\n }\n\n program.use();\n style.setup();\n\n program.uniform('1f', 'u_time', this.animated ? (((+new Date()) - this.start_time) / 1000) : 0);\n this.view.setupProgram(program);\n for (let i in this.lights) {\n this.lights[i].setupProgram(program);\n }\n\n return program;\n }\n\n clearFrame() {\n if (!this.initialized) {\n return;\n }\n this.render_states.depth_write.set({ depth_write: true });\n this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT | this.gl.STENCIL_BUFFER_BIT);\n }\n\n setRenderState({ depth_test, depth_write, cull_face, blend } = {}) {\n if (!this.initialized) {\n return;\n }\n\n // Defaults\n // TODO: when we abstract out support for multiple render passes, these can be per-pass config options\n let render_states = this.render_states;\n depth_test = (depth_test === false) ? false : render_states.defaults.depth_test; // default true\n depth_write = (depth_write === false) ? false : render_states.defaults.depth_write; // default true\n cull_face = (cull_face === false) ? false : render_states.defaults.culling; // default true\n blend = (blend != null) ? blend : render_states.defaults.blending; // default false\n\n // Reset frame state\n let gl = this.gl;\n\n render_states.depth_test.set({ depth_test });\n render_states.depth_write.set({ depth_write });\n render_states.culling.set({ cull: cull_face, face: render_states.defaults.culling_face });\n\n // Blending of alpha channel is modified to account for WebGL alpha behavior, see:\n // http://webglfundamentals.org/webgl/lessons/webgl-and-alpha.html\n // http://stackoverflow.com/a/11533416\n if (blend) {\n // Opaque: all source, no destination\n if (blend === 'opaque') {\n render_states.blending.set({\n blend: false\n });\n }\n // Traditional alpha blending\n else if (blend === 'overlay' || blend === 'inlay' || blend === 'translucent') {\n render_states.blending.set({\n blend: true,\n src: gl.SRC_ALPHA, dst: gl.ONE_MINUS_SRC_ALPHA,\n src_alpha: gl.ONE, dst_alpha: gl.ONE_MINUS_SRC_ALPHA\n });\n }\n // Additive blending\n else if (blend === 'add') {\n render_states.blending.set({\n blend: true,\n src: gl.ONE, dst: gl.ONE\n });\n }\n // Multiplicative blending\n else if (blend === 'multiply') {\n render_states.blending.set({\n blend: true,\n src: gl.ZERO, dst: gl.SRC_COLOR\n });\n }\n }\n else {\n render_states.blending.set({ blend: false });\n }\n }\n\n // Request feature selection at given pixel. Runs async and returns results via a promise.\n getFeatureAt(pixel, { radius } = {}) {\n if (!this.initialized) {\n log('debug', \"Scene.getFeatureAt() called before scene was initialized\");\n return Promise.resolve();\n }\n\n // Scale point and radius to [0..1] range\n let point = {\n x: pixel.x / this.view.size.css.width,\n y: pixel.y / this.view.size.css.height\n };\n\n if (radius > 0) {\n radius = {\n x: radius / this.view.size.css.width,\n y: radius / this.view.size.css.height\n };\n }\n else {\n radius = null;\n }\n\n return this.selection.getFeatureAt(point, { radius }).\n then(selection => Object.assign(selection, { pixel })).\n catch(error => Promise.resolve({ error }));\n }\n\n // Query features within visible tiles, with optional filter conditions\n queryFeatures({ filter, unique = true, group_by = null, visible = null, geometry = false } = {}) {\n filter = Utils.serializeWithFunctions(filter);\n let tile_keys = this.tile_manager.getRenderableTiles().map(t => t.key);\n return WorkerBroker.postMessage(this.workers, 'self.queryFeatures', { filter, visible, geometry, tile_keys }).then(results => {\n let features = [];\n let keys = {};\n let groups = {};\n\n // Optional uniqueify criteria\n // Valid values: true, false/null, single property name, or array of property names\n unique = (typeof unique === 'string') ? [unique] : unique;\n const uniqueify = unique && (obj => JSON.stringify(Array.isArray(unique) ? sliceObject(obj, unique) : obj));\n\n // Optional grouping criteria\n // Valid values: false/null, single property name, or array of property names\n group_by = (typeof group_by === 'string' || Array.isArray(group_by)) && group_by;\n const group = group_by && (obj => {\n return Array.isArray(group_by) ? JSON.stringify(sliceObject(obj, group_by)) : obj[group_by];\n });\n\n results.forEach(r => r.forEach(feature => {\n if (uniqueify) {\n let str = uniqueify(feature);\n if (keys[str]) {\n return;\n }\n keys[str] = true;\n }\n\n if (group) {\n let str = group(feature.properties);\n groups[str] = groups[str] || [];\n groups[str].push(feature);\n }\n else {\n features.push(feature);\n }\n }));\n return group ? groups : features; // returned grouped results, or all results\n });\n }\n\n // Rebuild all tiles, without re-parsing the config or re-compiling styles\n // sync: boolean of whether to sync the config object to the worker\n // sources: optional array of data sources to selectively rebuild (by default all our rebuilt)\n rebuild({ new_generation = true, sources = null, serialize_funcs, profile = false, fade_in = false } = {}) {\n return new Promise((resolve, reject) => {\n // Skip rebuild if already in progress\n if (this.building) {\n // Queue up to one rebuild call at a time, only save last request\n if (this.building.queued && this.building.queued.reject) {\n // notify previous request that it did not complete\n log('debug', 'Scene.rebuild: request superceded by a newer call');\n this.building.queued.resolve(false); // false flag indicates rebuild request was superceded\n }\n\n // Save queued request\n let options = { new_generation, sources, serialize_funcs, profile, fade_in };\n this.building.queued = { resolve, reject, options };\n log('trace', `Scene.rebuild(): queuing request`);\n return;\n }\n\n // Track tile build state\n this.building = { resolve, reject };\n\n // Profiling\n if (profile) {\n this._profile('Scene.rebuild');\n }\n\n // Increment generation to ensure style/tile building stay in sync\n // (skipped if calling function already incremented)\n if (new_generation) {\n this.generation = ++Scene.generation;\n for (let style in this.styles) {\n this.styles[style].setGeneration(this.generation);\n }\n }\n\n // Update config (in case JS objects were manipulated directly)\n this.syncConfigToWorker({ serialize_funcs });\n this.resetFeatureSelection(sources);\n this.resetTime();\n\n // Rebuild visible tiles\n this.tile_manager.pruneToVisibleTiles();\n this.tile_manager.forEachTile(tile => {\n if (!sources || sources.indexOf(tile.source.name) > -1) {\n this.tile_manager.buildTile(tile, { fade_in });\n }\n });\n this.tile_manager.updateTilesForView(); // picks up additional tiles for any new/changed data sources\n this.tile_manager.checkBuildQueue(); // resolve immediately if no tiles to build\n }).then(() => {\n // Profiling\n if (profile) {\n this._profileEnd('Scene.rebuild');\n }\n });\n }\n\n // Tile manager finished building tiles\n // TODO move to tile manager\n tileManagerBuildDone() {\n CanvasText.pruneTextCache();\n\n if (this.building) {\n log('info', `Scene: build geometry finished`);\n if (this.building.resolve) {\n if (this.initial_build_time == null) {\n this.initial_build_time = (+new Date()) - this.start_time;\n log('debug', `Scene: initial build time: ${this.initial_build_time}`);\n }\n this.building.resolve(true);\n }\n\n // Another rebuild queued?\n var queued = this.building.queued;\n this.building = null;\n if (queued) {\n log('debug', `Scene: starting queued rebuild() request`);\n this.rebuild(queued.options).then(queued.resolve, queued.reject);\n }\n }\n }\n\n /**\n Load (or reload) the scene config\n @return {Promise}\n */\n loadScene(config_source = null, { base_path, file_type } = {}) {\n this.config_source = config_source || this.config_source;\n this.config_globals_applied = [];\n\n if (typeof this.config_source === 'string') {\n this.base_path = URLs.pathForURL(base_path || this.config_source);\n }\n else {\n this.base_path = URLs.pathForURL(base_path);\n }\n\n // backwards compatibility for accessing base path under previous name\n // TODO: schedule for deprecation\n this.config_path = this.base_path;\n\n return SceneLoader.loadScene(this.config_source, { path: this.base_path, type: file_type }).then(({config, bundle}) => {\n this.config = config;\n this.config_bundle = bundle;\n return this.config;\n });\n }\n\n // Add source to a scene, arguments `name` and `config` need to be provided:\n // - If the name doesn't match a sources it will create it\n // - the `config` obj follow the YAML scene spec, ex: ```{type: 'TopoJSON', url: \"//tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.topojson\"]}```\n // that looks like:\n //\n // scene.setDataSource(\"osm\", {type: 'TopoJSON', url: \"//tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.topojson\" });\n //\n // - also can be pass a ```data``` obj: ```{type: 'GeoJSON', data: JSObj ]}```\n //\n // var geojson_data = {};\n // ...\n // scene.setDataSource(\"dynamic_data\", {type: 'GeoJSON', data: geojson_data });\n //\n setDataSource (name, config) {\n if (!name || !config || !config.type || (!config.url && !config.data)) {\n log('error', \"No name provided or not a valid config:\", name, config);\n return;\n }\n\n let load = (this.config.sources[name] == null);\n let source = this.config.sources[name] = Object.assign({}, config);\n\n // Convert raw data into blob URL\n if (source.data && typeof source.data === 'object') {\n source.url = URLs.createObjectURL(new Blob([JSON.stringify(source.data)]));\n delete source.data;\n }\n\n if (load) {\n return this.updateConfig({ rebuild: { sources: [name] } });\n } else {\n return this.rebuild({ sources: [name] });\n }\n }\n\n createDataSources() {\n let reset = []; // sources to reset\n let prev_source_names = Object.keys(this.sources);\n let source_id = 0;\n\n for (var name in this.config.sources) {\n let source = this.config.sources[name];\n let prev_source = this.sources[name];\n\n try {\n let config = Object.assign({}, source, { name, id: source_id++ });\n this.sources[name] = DataSource.create(config, this.sources);\n if (!this.sources[name]) {\n throw {};\n }\n }\n catch(e) {\n delete this.sources[name];\n let message = `Could not create data source: ${e.message}`;\n log('warn', `Scene: ${message}`, source);\n this.trigger('warning', { type: 'sources', source, message });\n }\n\n // Data source changed?\n if (DataSource.changed(this.sources[name], prev_source)) {\n reset.push(name);\n }\n }\n\n // Sources that were removed\n prev_source_names.forEach(s => {\n if (!this.config.sources[s]) {\n delete this.sources[s]; // TODO: remove from workers too?\n reset.push(s);\n }\n });\n\n // Remove tiles from sources that have changed\n if (reset.length > 0) {\n this.tile_manager.removeTiles(tile => {\n return (reset.indexOf(tile.source.name) > -1);\n });\n }\n\n // Mark sources that will generate geometry tiles\n // (all except those that are only raster sources attached to other sources)\n for (let ln in this.config.layers) {\n let layer = this.config.layers[ln];\n if (layer.enabled !== false && layer.data && this.sources[layer.data.source]) {\n this.sources[layer.data.source].builds_geometry_tiles = true;\n }\n }\n }\n\n // Load all textures in the scene definition\n loadTextures() {\n return Texture.createFromObject(this.gl, this.config.textures).\n then(() => Texture.createDefault(this.gl)); // create a 'default' texture for placeholders\n }\n\n // Called (currently manually) after styles are updated in stylesheet\n updateStyles() {\n if (!this.initialized && !this.initializing) {\n throw new Error('Scene.updateStyles() called before scene was initialized');\n }\n\n // (Re)build styles from config\n this.styles = this.style_manager.build(this.config.styles);\n this.style_manager.initStyles(this);\n\n // Optionally set GL context (used when initializing or re-initializing GL resources)\n for (let style in this.styles) {\n this.styles[style].setGL(this.gl);\n }\n\n this.dirty = true;\n }\n\n // Is scene currently animating?\n get animated () {\n // Use explicitly set scene animation flag if defined, otherwise enabled animation if any animated styles are in view\n return (this.config.scene.animated !== undefined ?\n this.config.scene.animated :\n this.tile_manager.getActiveStyles().some(s => this.styles[s].animated));\n }\n\n // Get active camera - for public API\n getActiveCamera() {\n return this.view.getActiveCamera();\n }\n\n // Set active camera - for public API\n setActiveCamera(name) {\n return this.view.setActiveCamera(name);\n }\n\n // Create lighting\n createLights() {\n this.lights = {};\n for (let i in this.config.lights) {\n if (!this.config.lights[i] || typeof this.config.lights[i] !== 'object') {\n continue;\n }\n let light = this.config.lights[i];\n light.name = i.replace('-', '_'); // light names are injected in shaders, can't have hyphens\n light.visible = (light.visible === false) ? false : true;\n if (light.visible) {\n this.lights[light.name] = Light.create(this.view, light);\n }\n }\n Light.inject(this.lights);\n }\n\n // Set background color\n setBackground() {\n let bg = this.config.scene.background;\n this.background = {};\n if (bg && bg.color) {\n this.background.color = StyleParser.parseColor(bg.color);\n }\n if (!this.background.color) {\n this.background.color = [0, 0, 0, 0]; // default background TODO: vary w/scene alpha\n }\n\n // if background is fully opaque, set canvas background to match\n if (this.background.color[3] === 1) {\n this.canvas.style.backgroundColor =\n `rgba(${this.background.color.map(c => Math.floor(c * 255)).join(', ')})`;\n }\n else {\n this.canvas.style.backgroundColor = 'transparent';\n }\n\n this.gl.clearColor(...this.background.color);\n }\n\n // Turn introspection mode on/off\n setIntrospection (val) {\n if (val !== this.introspection) {\n this.introspection = val || false;\n this.updating++;\n return this.updateConfig({ normalize: false }).then(() => this.updating--);\n }\n return Promise.resolve();\n }\n\n // Update scene config, and optionally rebuild geometry\n // rebuild can be boolean, or an object containing rebuild options to passthrough\n updateConfig({ load_event = false, rebuild = true, serialize_funcs, normalize = true, fade_in = false } = {}) {\n this.generation = ++Scene.generation;\n this.updating++;\n\n this.config = SceneLoader.applyGlobalProperties(this.config, this.config_globals_applied);\n if (normalize) {\n // normalize whole scene\n SceneLoader.normalize(this.config, this.config_bundle);\n }\n else {\n // special handling for shader uniforms that are globals\n SceneLoader.hoistStyleShaderUniformTextures(this.config, this.config_bundle, { include_globals: true });\n\n // just normalize top-level textures - necessary for adding base path to globals\n SceneLoader.normalizeTextures(this.config, this.config_bundle);\n }\n this.trigger(load_event ? 'load' : 'update', { config: this.config });\n\n this.style_manager.init();\n this.view.reset();\n this.createLights();\n this.createDataSources();\n this.loadTextures();\n this.setBackground();\n FontManager.loadFonts(this.config.fonts);\n\n // TODO: detect changes to styles? already (currently) need to recompile anyway when camera or lights change\n this.updateStyles();\n\n // Optionally rebuild geometry\n let done = rebuild ?\n this.rebuild(Object.assign({ new_generation: false, serialize_funcs, fade_in }, typeof rebuild === 'object' && rebuild)) :\n this.syncConfigToWorker({ serialize_funcs }); // rebuild() also syncs config\n\n // Finish by updating bounds and re-rendering\n this.updating--;\n this.view.updateBounds();\n this.requestRedraw();\n\n return done;\n }\n\n // Serialize config and send to worker\n syncConfigToWorker({ serialize_funcs = true } = {}) {\n // Tell workers we're about to rebuild (so they can update styles, etc.)\n let config_serialized =\n serialize_funcs ? Utils.serializeWithFunctions(this.config) : JSON.stringify(this.config);\n return WorkerBroker.postMessage(this.workers, 'self.updateConfig', {\n config: config_serialized,\n generation: this.generation,\n introspection: this.introspection\n }, debugSettings);\n }\n\n // Listen to related objects\n createListeners () {\n this.listeners = {};\n\n this.listeners.view = {\n move: () => this.trigger('move')\n };\n this.view.subscribe(this.listeners.view);\n\n this.listeners.texture = {\n update: () => this.dirty = true,\n warning: (data) => this.trigger('warning', Object.assign({ type: 'textures' }, data))\n };\n Texture.subscribe(this.listeners.texture);\n\n this.listeners.scene_loader = {\n error: (data) => this.trigger('error', Object.assign({ type: 'scene' }, data))\n };\n SceneLoader.subscribe(this.listeners.scene_loader);\n }\n\n destroyListeners () {\n this.unsubscribeAll();\n this.view.unsubscribe(this.listeners.view);\n Texture.unsubscribe(this.listeners.texture);\n SceneLoader.unsubscribe(this.listeners.scene_loader);\n this.listeners = null;\n }\n\n resetFeatureSelection(sources = null) {\n if (!this.selection) {\n this.selection = new FeatureSelection(this.gl, this.workers, () => this.building);\n }\n else if (this.workers) {\n WorkerBroker.postMessage(this.workers, 'self.resetFeatureSelection', sources);\n }\n }\n\n // Gets the current feature selection map size across all workers. Returns a promise.\n getFeatureSelectionMapSize() {\n if (this.fetching_selection_map) {\n return Promise.resolve(); // return undefined if already pending\n }\n this.fetching_selection_map = true;\n\n return WorkerBroker.postMessage(this.workers, 'self.getFeatureSelectionMapSize')\n .then(sizes => {\n this.fetching_selection_map = false;\n return sizes.reduce((a, b) => a + b);\n });\n }\n\n // Reset internal clock, mostly useful for consistent experience when changing styles/debugging\n resetTime() {\n this.start_time = +new Date();\n }\n\n // Fires event when rendered tile set or style changes\n updateViewComplete () {\n if ((this.render_count_changed || this.generation !== this.last_complete_generation) &&\n !this.tile_manager.isLoadingVisibleTiles()) {\n this.last_complete_generation = this.generation;\n this.trigger('view_complete');\n }\n }\n\n resetViewComplete () {\n this.last_complete_generation = null;\n }\n\n // Take a screenshot\n // Asynchronous because we have to wait for next render to capture buffer\n // Returns a promise\n screenshot ({ background = 'white' } = {}) {\n this.requestRedraw();\n return this.media_capture.screenshot({background});\n }\n\n startVideoCapture () {\n this.requestRedraw();\n return this.media_capture.startVideoCapture();\n }\n\n stopVideoCapture () {\n return this.media_capture.stopVideoCapture();\n }\n\n\n // Stats/debug/profiling methods\n\n // Profile helpers, issues a profile on main thread & all workers\n _profile(name) {\n console.profile(`main thread: ${name}`);\n WorkerBroker.postMessage(this.workers, 'self.profile', name);\n }\n\n _profileEnd(name) {\n console.profileEnd(`main thread: ${name}`);\n WorkerBroker.postMessage(this.workers, 'self.profileEnd', name);\n }\n\n // Debug config and functions\n setupDebug () {\n let scene = this;\n this.debug = {\n // Rebuild geometry a given # of times and print average, min, max timings\n timeRebuild (num = 1, options = {}) {\n let times = [];\n let cycle = () => {\n let start = +new Date();\n scene.rebuild(options).then(() => {\n times.push(+new Date() - start);\n\n if (times.length < num) {\n cycle();\n }\n else {\n let avg = ~~(times.reduce((a, b) => a + b) / times.length);\n log('info', `Profiled rebuild ${num} times: ${avg} avg (${Math.min(...times)} min, ${Math.max(...times)} max)`);\n }\n });\n };\n cycle();\n },\n\n // Return geometry counts of visible tiles, grouped by style name\n geometryCountByStyle () {\n let counts = {};\n scene.tile_manager.getRenderableTiles().forEach(tile => {\n for (let style in tile.meshes) {\n counts[style] = counts[style] || 0;\n tile.meshes[style].forEach(mesh => {\n counts[style] += mesh.geometry_count;\n });\n }\n });\n return counts;\n },\n\n geometryCountByBaseStyle () {\n let style_counts = scene.debug.geometryCountByStyle();\n let counts = {};\n for (let style in style_counts) {\n let base = scene.styles[style].baseStyle();\n counts[base] = counts[base] || 0;\n counts[base] += style_counts[style];\n }\n return counts;\n },\n\n geometrySizeByStyle () {\n let sizes = {};\n scene.tile_manager.getRenderableTiles().forEach(tile => {\n for (let style in tile.meshes) {\n sizes[style] = sizes[style] || 0;\n tile.meshes[style].forEach(mesh => {\n sizes[style] += mesh.buffer_size;\n });\n }\n });\n return sizes;\n },\n\n geometrySizeByBaseStyle () {\n let style_sizes = scene.debug.geometrySizeByStyle();\n let sizes = {};\n for (let style in style_sizes) {\n let base = scene.styles[style].baseStyle();\n sizes[base] = sizes[base] || 0;\n sizes[base] += style_sizes[style];\n }\n return sizes;\n },\n\n layerStats () {\n if (debugSettings.layer_stats) {\n return Tile.debugSumLayerStats(scene.tile_manager.getRenderableTiles());\n }\n else {\n log('warn', `Enable the 'layer_stats' debug setting to collect layer stats`);\n return {};\n }\n },\n\n renderableTilesCount () {\n return scene.tile_manager.getRenderableTiles().length;\n }\n };\n }\n\n}\n\nScene.id = 0; // unique id for a scene instance\nScene.generation = 0; // id that is incremented each time a scene config is re-parsed\n", + "import ShaderProgram from './gl/shader_program';\nimport GLSL from './gl/glsl';\nimport Geo from './geo';\nimport Vector from './vector';\nimport StyleParser from './styles/style_parser';\n\nlet fs = require('fs');\n\nconst shaderSrc_ambientLight = fs.readFileSync(__dirname + '/gl/shaders/ambientLight.glsl', 'utf8');\nconst shaderSrc_directionalLight = fs.readFileSync(__dirname + '/gl/shaders/directionalLight.glsl', 'utf8');\nconst shaderSrc_pointLight = fs.readFileSync(__dirname + '/gl/shaders/pointLight.glsl', 'utf8');\nconst shaderSrc_spotLight = fs.readFileSync(__dirname + '/gl/shaders/spotLight.glsl', 'utf8');\n\n// Abstract light\nexport default class Light {\n\n constructor (view, config) {\n this.name = config.name;\n this.view = view;\n\n if (config.ambient == null || typeof config.ambient === 'number') {\n this.ambient = GLSL.expandVec3(config.ambient || 0);\n }\n else {\n this.ambient = StyleParser.parseColor(config.ambient).slice(0, 3);\n }\n\n if (config.diffuse == null || typeof config.diffuse === 'number') {\n this.diffuse = GLSL.expandVec3(config.diffuse != null ? config.diffuse : 1);\n }\n else {\n this.diffuse = StyleParser.parseColor(config.diffuse).slice(0, 3);\n }\n\n if (config.specular == null || typeof config.specular === 'number') {\n this.specular = GLSL.expandVec3(config.specular || 0);\n }\n else {\n this.specular = StyleParser.parseColor(config.specular).slice(0, 3);\n }\n }\n\n // Create a light by type name, factory-style\n // 'config' must include 'name' and 'type', along with any other type-specific properties\n static create (view, config) {\n if (Light.types[config.type]) {\n return new Light.types[config.type](view, config);\n }\n }\n\n // Set light for a style: fragment lighting, vertex lighting, or none\n static setMode (mode, style) {\n if (mode === true) {\n mode = 'fragment';\n }\n mode = Light.enabled && ((mode != null) ? mode : 'fragment'); // default to fragment lighting\n style.defines['TANGRAM_LIGHTING_FRAGMENT'] = (mode === 'fragment');\n style.defines['TANGRAM_LIGHTING_VERTEX'] = (mode === 'vertex');\n }\n\n // Inject all provided light definitions, and calculate cumulative light function\n static inject (lights) {\n // Clear previous injections\n ShaderProgram.removeBlock(Light.block);\n\n // If lighting is globally disabled, nothing is injected (mostly for debugging or live editing)\n if (!Light.enabled) {\n return;\n }\n\n // Construct code to calculate each light instance\n let calculateLights = \"\";\n if (lights && Object.keys(lights).length > 0) {\n // Collect uniques types of lights\n let types = {};\n for (let light_name in lights) {\n types[lights[light_name].type] = true;\n }\n\n // Inject each type of light\n for (let type in types) {\n Light.types[type].inject();\n }\n\n // Inject per-instance blocks and construct the list of functions to calculate each light\n for (let light_name in lights) {\n // Define instance\n lights[light_name].inject();\n\n // Add the calculation function to the list\n calculateLights += `calculateLight(${light_name}, _eyeToPoint, _normal);\\n`;\n }\n }\n\n // Glue together the final lighting function that sums all the lights\n let calculateFunction = `\n vec4 calculateLighting(in vec3 _eyeToPoint, in vec3 _normal, in vec4 _color) {\n\n // Do initial material calculations over normal, emission, ambient, diffuse and specular values\n calculateMaterial(_eyeToPoint,_normal);\n\n // Un roll the loop of individual ligths to calculate\n ${calculateLights}\n\n // Final light intensity calculation\n vec4 color = vec4(vec3(0.), _color.a); // start with vertex color alpha\n\n #ifdef TANGRAM_MATERIAL_EMISSION\n color.rgb = material.emission.rgb;\n color.a *= material.emission.a;\n #endif\n\n #ifdef TANGRAM_MATERIAL_AMBIENT\n color.rgb += light_accumulator_ambient.rgb * _color.rgb * material.ambient.rgb;\n color.a *= material.ambient.a;\n #else\n #ifdef TANGRAM_MATERIAL_DIFFUSE\n color.rgb += light_accumulator_ambient.rgb * _color.rgb * material.diffuse.rgb;\n #endif\n #endif\n\n #ifdef TANGRAM_MATERIAL_DIFFUSE\n color.rgb += light_accumulator_diffuse.rgb * _color.rgb * material.diffuse.rgb;\n color.a *= material.diffuse.a;\n #endif\n\n #ifdef TANGRAM_MATERIAL_SPECULAR\n color.rgb += light_accumulator_specular.rgb * material.specular.rgb;\n color.a *= material.specular.a;\n #endif\n\n // Clamp final color\n color = clamp(color, 0.0, 1.0);\n\n return color;\n }`;\n\n ShaderProgram.addBlock(Light.block, calculateFunction);\n }\n\n // Common instance definition\n inject () {\n let instance = `\n uniform ${this.struct_name} u_${this.name};\n ${this.struct_name} ${this.name};\n `;\n let assign = `\n ${this.name} = u_${this.name};\\n\n `;\n\n ShaderProgram.addBlock(Light.block, instance);\n ShaderProgram.addBlock('setup', assign);\n }\n\n // Update method called once per frame\n update () {\n }\n\n // Called once per frame per program (e.g. for main render pass, then for each additional\n // pass for feature selection, etc.)\n setupProgram (_program) {\n // Three common light properties\n _program.uniform('3fv', `u_${this.name}.ambient`, this.ambient);\n _program.uniform('3fv', `u_${this.name}.diffuse`, this.diffuse);\n _program.uniform('3fv', `u_${this.name}.specular`, this.specular);\n }\n\n}\n\nLight.types = {}; // references to subclasses by short name\nLight.block = 'lighting'; // shader block name\nLight.enabled = true; // lighting can be globally enabled/disabled\n\n\n// Light subclasses\nclass AmbientLight extends Light {\n\n constructor(view, config) {\n super(view, config);\n this.type = 'ambient';\n this.struct_name = 'AmbientLight';\n }\n\n // Inject struct and calculate function\n static inject() {\n ShaderProgram.addBlock(Light.block, shaderSrc_ambientLight);\n }\n\n setupProgram (_program) {\n _program.uniform('3fv', `u_${this.name}.ambient`, this.ambient);\n }\n\n}\nLight.types['ambient'] = AmbientLight;\n\nclass DirectionalLight extends Light {\n\n constructor(view, config) {\n super(view, config);\n this.type = 'directional';\n this.struct_name = 'DirectionalLight';\n\n if (config.direction) {\n this._direction = config.direction;\n }\n else {\n // Default directional light maintains full intensity on ground, with basic extrusion shading\n let theta = 135; // angle of light in xy plane (rotated around z axis)\n let scale = Math.sin(Math.PI*60/180); // scaling factor to keep total directional intensity to 0.5\n this._direction = [\n Math.cos(Math.PI*theta/180) * scale,\n Math.sin(Math.PI*theta/180) * scale,\n -0.5\n ];\n\n if (config.ambient == null) {\n this.ambient = GLSL.expandVec3(0.5);\n }\n }\n this.direction = this._direction.map(parseFloat);\n }\n\n get direction () {\n return this._direction;\n }\n\n set direction (v) {\n this._direction = Vector.normalize(Vector.copy(v));\n }\n\n // Inject struct and calculate function\n static inject() {\n ShaderProgram.addBlock(Light.block, shaderSrc_directionalLight);\n }\n\n setupProgram (_program) {\n super.setupProgram(_program);\n _program.uniform('3fv', `u_${this.name}.direction`, this.direction);\n }\n\n}\nLight.types['directional'] = DirectionalLight;\n\n\nclass PointLight extends Light {\n\n constructor (view, config) {\n super(view, config);\n this.type = 'point';\n this.struct_name = 'PointLight';\n\n this.position = config.position || [0, 0, '100px'];\n this.position_eye = []; // position in eyespace\n this.origin = config.origin || 'ground';\n this.attenuation = !isNaN(parseFloat(config.attenuation)) ? parseFloat(config.attenuation) : 0;\n\n if (config.radius) {\n if (Array.isArray(config.radius) && config.radius.length === 2) {\n this.radius = config.radius;\n }\n else {\n this.radius = [null, config.radius];\n }\n }\n else {\n this.radius = null;\n }\n }\n\n // Inject struct and calculate function\n static inject () {\n ShaderProgram.addBlock(Light.block, shaderSrc_pointLight);\n }\n\n // Inject isntance-specific settings\n inject() {\n super.inject();\n\n ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_EXPONENT'] = (this.attenuation !== 0);\n ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_INNER_RADIUS'] = (this.radius != null && this.radius[0] != null);\n ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_OUTER_RADIUS'] = (this.radius != null);\n }\n\n update () {\n this.updateEyePosition();\n }\n\n updateEyePosition () {\n if (this.origin === 'world') {\n // For world origin, format is: [longitude, latitude, meters (default) or pixels w/px units]\n\n // Move light's world position into camera space\n let [x, y] = Geo.latLngToMeters(this.position);\n this.position_eye[0] = x - this.view.camera.position_meters[0];\n this.position_eye[1] = y - this.view.camera.position_meters[1];\n\n this.position_eye[2] = StyleParser.convertUnits(this.position[2],\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) });\n this.position_eye[2] = this.position_eye[2] - this.view.camera.position_meters[2];\n }\n else if (this.origin === 'ground' || this.origin === 'camera') {\n // For camera or ground origin, format is: [x, y, z] in meters (default) or pixels w/px units\n\n // Light is in camera space by default\n this.position_eye = StyleParser.convertUnits(this.position,\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) });\n\n if (this.origin === 'ground') {\n // Leave light's xy in camera space, but z needs to be moved relative to ground plane\n this.position_eye[2] = this.position_eye[2] - this.view.camera.position_meters[2];\n }\n }\n this.position_eye[3] = 1;\n }\n\n setupProgram (_program) {\n super.setupProgram(_program);\n\n _program.uniform('4fv', `u_${this.name}.position`, this.position_eye);\n\n if(ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_EXPONENT']) {\n _program.uniform('1f', `u_${this.name}.attenuationExponent`, this.attenuation);\n }\n\n if(ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_INNER_RADIUS']) {\n _program.uniform('1f', `u_${this.name}.innerRadius`,\n StyleParser.convertUnits(this.radius[0],\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) }));\n }\n\n if(ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_OUTER_RADIUS']) {\n _program.uniform('1f', `u_${this.name}.outerRadius`,\n StyleParser.convertUnits(this.radius[1],\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) }));\n }\n }\n}\nLight.types['point'] = PointLight;\n\n\nclass SpotLight extends PointLight {\n\n constructor (view, config) {\n super(view, config);\n this.type = 'spotlight';\n this.struct_name = 'SpotLight';\n\n this.direction = this._direction = (config.direction || [0, 0, -1]).map(parseFloat); // [x, y, z]\n this.exponent = config.exponent ? parseFloat(config.exponent) : 0.2;\n this.angle = config.angle ? parseFloat(config.angle) : 20;\n }\n\n get direction () {\n return this._direction;\n }\n\n set direction (v) {\n this._direction = Vector.normalize(Vector.copy(v));\n }\n\n // Inject struct and calculate function\n static inject () {\n ShaderProgram.addBlock(Light.block, shaderSrc_spotLight);\n }\n\n setupProgram (_program) {\n super.setupProgram(_program);\n\n _program.uniform('3fv', `u_${this.name}.direction`, this.direction);\n _program.uniform('1f', `u_${this.name}.spotCosCutoff`, Math.cos(this.angle * 3.14159 / 180));\n _program.uniform('1f', `u_${this.name}.spotExponent`, this.exponent);\n }\n\n}\nLight.types['spotlight'] = SpotLight;\n", + "import GLSL from './gl/glsl';\nimport StyleParser from './styles/style_parser';\n\nlet fs = require('fs');\nconst shaderSrc_material = fs.readFileSync(__dirname + '/gl/shaders/material.glsl', 'utf8');\n\nconst material_props = ['emission', 'ambient', 'diffuse', 'specular'];\n\nexport default class Material {\n constructor (config) {\n\n config = config || {};\n\n // These properties all have the same defaults, so they can be set in bulk\n material_props.forEach(prop => {\n const value = config[prop];\n if (value != null) {\n if (value.texture) {\n this[prop] = {\n texture: value.texture,\n mapping: value.mapping || 'spheremap',\n scale: GLSL.expandVec3(value.scale != null ? value.scale : 1),\n amount: GLSL.expandVec4(value.amount != null ? value.amount : 1)\n };\n }\n else if (typeof value === 'number' || Array.isArray(value)) {\n this[prop] = { amount: GLSL.expandVec4(value) };\n }\n else if (typeof value === 'string') {\n this[prop] = { amount: StyleParser.parseColor(value) };\n }\n else {\n this[prop] = value;\n }\n }\n });\n\n // Extra specular props\n if (this.specular) {\n this.specular.shininess = config.shininess ? parseFloat(config.shininess) : 0.2;\n }\n\n // Normal mapping\n if (config.normal != null) {\n this.normal = {\n texture: config.normal.texture,\n mapping: config.normal.mapping || 'triplanar',\n scale: GLSL.expandVec3(config.normal.scale != null ? config.normal.scale : 1),\n amount: config.normal.amount != null ? config.normal.amount : 1\n };\n }\n }\n\n // Determine if a material config block has sufficient properties to create a material\n static isValid (config) {\n if (config == null) {\n return false;\n }\n\n if (config.emission == null &&\n config.ambient == null &&\n config.diffuse == null &&\n config.specular == null) {\n return false;\n }\n\n return true;\n }\n\n inject (style) {\n // For each property, sets defines to configure texture mapping, with a pattern like:\n // TANGRAM_MATERIAL_DIFFUSE, TANGRAM_MATERIAL_DIFFUSE_TEXTURE, TANGRAM_MATERIAL_DIFFUSE_TEXTURE_SPHEREMAP\n // Also sets flags to keep track of each unique mapping type being used, e.g.:\n // TANGRAM_MATERIAL_TEXTURE_SPHEREMAP\n // Enables texture coordinates if needed and not already on\n material_props.forEach(prop => {\n let def = `TANGRAM_MATERIAL_${prop.toUpperCase()}`;\n let texdef = def + '_TEXTURE';\n style.defines[def] = (this[prop] != null);\n if (this[prop] && this[prop].texture) {\n style.defines[texdef] = true;\n style.defines[texdef + '_' + this[prop].mapping.toUpperCase()] = true;\n style.defines[`TANGRAM_MATERIAL_TEXTURE_${this[prop].mapping.toUpperCase()}`] = true;\n style.texcoords = style.texcoords || (this[prop].mapping === 'uv');\n }\n });\n\n // Normal mapping\n // As anove, sets flags to keep track of each unique mapping type being used, e.g.:\n // TANGRAM_MATERIAL_TEXTURE_SPHEREMAP\n if (this.normal && this.normal.texture) {\n style.defines['TANGRAM_MATERIAL_NORMAL_TEXTURE'] = true;\n style.defines['TANGRAM_MATERIAL_NORMAL_TEXTURE_' + this.normal.mapping.toUpperCase()] = true;\n style.defines[`TANGRAM_MATERIAL_TEXTURE_${this.normal.mapping.toUpperCase()}`] = true;\n style.texcoords = style.texcoords || (this.normal.mapping === 'uv');\n }\n\n style.replaceShaderBlock(Material.block, shaderSrc_material, 'Material');\n style.addShaderBlock('setup', '\\nmaterial = u_material;\\n', 'Material');\n }\n\n setupProgram (_program) {\n // For each property, sets uniforms in the pattern:\n // u_material.diffuse, u_material.diffuseScale u_material_diffuse_texture\n material_props.forEach(prop => {\n if (this[prop]) {\n if (this[prop].texture) {\n _program.setTextureUniform(`u_material_${prop}_texture`, this[prop].texture);\n _program.uniform('3fv', `u_material.${prop}Scale`, this[prop].scale);\n _program.uniform('4fv', `u_material.${prop}`, this[prop].amount);\n } else if (this[prop].amount) {\n _program.uniform('4fv', `u_material.${prop}`, this[prop].amount);\n }\n }\n });\n\n // Extra specular props\n if (this.specular) {\n _program.uniform('1f', 'u_material.shininess', this.specular.shininess);\n }\n\n // Normal mapping\n if (this.normal && this.normal.texture) {\n _program.setTextureUniform('u_material_normal_texture', this.normal.texture);\n _program.uniform('3fv', 'u_material.normalScale', this.normal.scale);\n _program.uniform('1f', 'u_material.normalAmount', this.normal.amount);\n }\n }\n}\n\nMaterial.block = 'material';\n", + "/*jshint worker: true*/\n\nimport './utils/polyfills';\n\n// The leaflet layer plugin is currently the primary public API\nimport {leafletLayer} from './leaflet_layer';\n\n// The scene worker is only activated when a worker thread is instantiated, but must always be loaded\nimport Scene from './scene';\nimport {SceneWorker} from './scene_worker';\n\n// Additional modules are exposed for debugging\nimport version from './utils/version';\nimport log from './utils/log';\nimport Thread from './utils/thread';\nimport Utils from './utils/utils';\nimport Geo from './geo';\nimport Vector from './vector';\nimport DataSource from './sources/data_source';\nimport './sources/geojson';\nimport './sources/topojson';\nimport './sources/mvt';\nimport './sources/raster';\nimport GLSL from './gl/glsl';\nimport ShaderProgram from './gl/shader_program';\nimport VertexData from './gl/vertex_data';\nimport Texture from './gl/texture';\nimport Material from './material';\nimport Light from './light';\nimport WorkerBroker from './utils/worker_broker';\nimport {layerCache} from './styles/layer';\nimport {StyleManager} from './styles/style_manager';\nimport StyleParser from './styles/style_parser';\nimport Collision from './labels/collision';\nimport FeatureSelection from './selection';\nimport CanvasText from './styles/text/canvas_text';\nimport debugSettings from './utils/debug_settings';\n\nimport yaml from 'js-yaml';\nimport JSZip from 'jszip';\n\n// Make some modules accessible for debugging\nvar debug = {\n log,\n yaml,\n Thread,\n Utils,\n Geo,\n Vector,\n DataSource,\n GLSL,\n ShaderProgram,\n VertexData,\n Texture,\n Material,\n Light,\n Scene,\n SceneWorker,\n WorkerBroker,\n layerCache,\n StyleManager,\n StyleParser,\n Collision,\n FeatureSelection,\n CanvasText,\n debugSettings\n};\n\nif (Thread.is_main) {\n Utils.requestAnimationFramePolyfill();\n\n // Attach Promise polyfill to window\n // Allows FontFaceObserver to use polyfill (without needing to include its own duplicate polyfill)\n if (window.Promise === undefined) {\n window.Promise = Promise;\n JSZip.external.Promise = Promise;\n }\n}\n\nmodule.exports = {\n leafletLayer,\n debug,\n version\n};\n", + "import log from './utils/log';\nimport Utils from './utils/utils';\nimport debugSettings from './utils/debug_settings';\nimport * as URLs from './utils/urls';\nimport WorkerBroker from './utils/worker_broker';\nimport Task from './utils/task';\nimport subscribeMixin from './utils/subscribe';\nimport sliceObject from './utils/slice';\nimport Context from './gl/context';\nimport Texture from './gl/texture';\nimport ShaderProgram from './gl/shader_program';\nimport VertexArrayObject from './gl/vao';\nimport {StyleManager} from './styles/style_manager';\nimport {Style} from './styles/style';\nimport StyleParser from './styles/style_parser';\nimport SceneLoader from './scene_loader';\nimport View from './view';\nimport Light from './light';\nimport Tile from './tile';\nimport TileManager from './tile_manager';\nimport DataSource from './sources/data_source';\nimport FeatureSelection from './selection';\nimport RenderStateManager from './gl/render_state';\nimport CanvasText from './styles/text/canvas_text';\nimport FontManager from './styles/text/font_manager';\nimport MediaCapture from './utils/media_capture';\n\n// Load scene definition: pass an object directly, or a URL as string to load remotely\nexport default class Scene {\n\n constructor(config_source, options) {\n options = options || {};\n subscribeMixin(this);\n\n this.id = Scene.id++;\n this.initialized = false;\n this.initializing = null; // will be a promise that resolves when scene is loaded\n this.sources = {};\n\n this.view = new View(this, options);\n this.tile_manager = new TileManager({ scene: this, view: this.view });\n this.num_workers = options.numWorkers || 2;\n if (options.disableVertexArrayObjects === true) {\n VertexArrayObject.disabled = true;\n }\n\n Utils.use_high_density_display = options.highDensityDisplay !== undefined ? options.highDensityDisplay : true;\n Utils.updateDevicePixelRatio();\n\n this.config = null;\n this.config_source = config_source;\n this.config_bundle = null;\n this.last_valid_config_source = null;\n\n this.styles = null;\n this.style_manager = new StyleManager();\n\n this.building = null; // tracks current scene building state (tiles being built, etc.)\n this.dirty = true; // request a redraw\n\n if (options.preUpdate){\n // optional pre-render loop hook\n this.subscribe({'pre_update': options.preUpdate});\n }\n\n if (options.postUpdate){\n // optional post-render loop hook\n this.subscribe({'post_update': options.postUpdate});\n }\n\n this.render_loop = !options.disableRenderLoop; // disable render loop - app will have to manually call Scene.render() per frame\n this.render_loop_active = false;\n this.render_loop_stop = false;\n this.render_count = 0;\n this.last_render_count = 0;\n this.render_count_changed = false;\n this.frame = 0;\n this.last_main_render = -1; // frame counter for last main render pass\n this.last_selection_render = -1; // frame counter for last selection render pass\n this.media_capture = new MediaCapture();\n this.selection = null;\n this.introspection = (options.introspection === true) ? true : false;\n this.resetTime();\n\n this.container = options.container;\n this.canvas = null;\n this.contextOptions = options.webGLContextOptions;\n\n this.lights = null;\n this.background = null;\n\n this.createListeners();\n this.updating = 0;\n this.generation = Scene.generation; // an id that is incremented each time the scene config is invalidated\n this.last_complete_generation = Scene.generation; // last generation id with a complete view\n this.setupDebug();\n\n this.log_level = options.logLevel || 'warn';\n log.setLevel(this.log_level);\n log.reset();\n }\n\n static create (config, options = {}) {\n return new Scene(config, options);\n }\n\n // Load scene (or reload existing scene if no new source specified)\n // Options:\n // `base_path`: base URL against which scene resources should be resolved (useful for Play) (default nulll)\n // `blocking`: should rendering block on scene load completion (default true)\n load(config_source = null, options = {}) {\n if (this.initializing) {\n return this.initializing;\n }\n log.reset();\n\n this.updating++;\n this.initialized = false;\n this.initial_build_time = null;\n\n // Backwards compatibilty for passing `base_path` string as second argument\n // (since transitioned to using options argument to accept more parameters)\n options = (typeof options === 'string') ? { base_path: options } : options;\n\n // Should rendering block on load (not desirable for initial load, often desired for live style-switching)\n options.blocking = (options.blocking !== undefined) ? options.blocking : true;\n\n if (this.render_loop !== false) {\n this.setupRenderLoop();\n }\n\n // Load scene definition (sources, styles, etc.), then create styles & workers\n this.createCanvas();\n this.initializing = this.loadScene(config_source, options)\n .then(() => this.createWorkers())\n .then(() => {\n this.resetFeatureSelection();\n\n // Scene loaded from a JS object, or modified by a `load` event, may contain compiled JS functions\n // which need to be serialized, while one loaded only from a URL does not.\n const serialize_funcs = ((typeof this.config_source === 'object') || this.hasSubscribersFor('load'));\n\n const updating = this.updateConfig({ serialize_funcs, normalize: false, load_event: true, fade_in: true });\n if (options.blocking === true) {\n return updating;\n }\n }).then(() => {\n this.updating--;\n this.initializing = null;\n this.initialized = true;\n this.last_valid_config_source = this.config_source;\n this.last_valid_options = { base_path: options.base_path, file_type: options.file_type };\n\n this.requestRedraw();\n }).catch(error => {\n this.initializing = null;\n this.updating = 0;\n\n // Report and revert to last valid config if available\n let type, message;\n if (error.name === 'YAMLException') {\n type = 'yaml';\n message = 'Error parsing scene YAML';\n }\n else {\n // TODO: more error types\n message = 'Error initializing scene';\n }\n this.trigger('error', { type, message, error, url: this.config_source });\n\n message = `Scene.load() failed to load ${this.config_source}: ${error.message}`;\n if (this.last_valid_config_source) {\n log('warn', message, error);\n log('info', `Scene.load() reverting to last valid configuration`);\n return this.load(this.last_valid_config_source, this.last_valid_base_path);\n }\n log('error', message, error);\n throw error;\n });\n\n return this.initializing;\n }\n\n destroy() {\n this.initialized = false;\n this.render_loop_stop = true; // schedule render loop to stop\n\n this.destroyListeners();\n\n if (this.canvas && this.canvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas);\n this.canvas = null;\n }\n this.container = null;\n\n if (this.selection) {\n this.selection.destroy();\n }\n\n if (this.gl) {\n Texture.destroy(this.gl);\n this.style_manager.destroy(this.gl);\n this.styles = {};\n\n ShaderProgram.reset();\n\n // Force context loss\n let ext = this.gl.getExtension('WEBGL_lose_context');\n if (ext) {\n ext.loseContext();\n }\n\n this.gl = null;\n }\n\n this.sources = {};\n\n this.destroyWorkers();\n this.tile_manager.destroy();\n this.tile_manager = null;\n log.reset();\n }\n\n createCanvas() {\n if (this.canvas) {\n return;\n }\n\n this.container = this.container || document.body;\n this.canvas = document.createElement('canvas');\n this.canvas.style.position = 'absolute';\n this.canvas.style.top = 0;\n this.canvas.style.left = 0;\n\n // Force tangram canvas underneath all leaflet layers, and set background to transparent\n this.container.style.backgroundColor = 'transparent';\n this.container.appendChild(this.canvas);\n\n try {\n this.gl = Context.getContext(this.canvas, Object.assign({\n alpha: true, premultipliedAlpha: true,\n stencil: true,\n device_pixel_ratio: Utils.device_pixel_ratio\n }, this.contextOptions));\n }\n catch(e) {\n throw new Error(\n \"Couldn't create WebGL context. \" +\n \"Your browser may not support WebGL, or it's turned off? \" +\n \"Visit http://webglreport.com/ for more info.\"\n );\n }\n\n this.resizeMap(this.container.clientWidth, this.container.clientHeight);\n VertexArrayObject.init(this.gl);\n this.render_states = new RenderStateManager(this.gl);\n this.media_capture.setCanvas(this.canvas, this.gl);\n }\n\n // Get the URL to load the web worker from\n getWorkerUrl() {\n let worker_url;\n /* jshint -W117 */\n // ignore uninitialized worker src variable (defined in parent scope)\n if (typeof __worker_src__ !== \"undefined\"){\n let source = '(' + __worker_src__ + ')()';\n if (__worker_src_origin__ && __worker_src_map__ !== '') {\n let origin = __worker_src_origin__.slice(0, __worker_src_origin__.lastIndexOf('/')+1);\n source += '\\n//#' + ' sourceMappingURL=' + origin + __worker_src_map__;\n }\n worker_url = URLs.createObjectURL(new Blob([source], { type: 'application/javascript' }));\n }\n /* jshint +W117 */\n\n if (!worker_url) {\n throw new Error(\"Couldn't find internal Tangram source variable (may indicate the library did not build correctly)\");\n }\n return worker_url;\n }\n\n // Update list of any custom data source scripts (if any)\n updateDataSourceScripts () {\n let prev_scripts = [...(this.data_source_scripts||[])]; // save list of previously loaded scripts\n let scripts = Object.keys(this.config.sources).map(s => this.config.sources[s].scripts).filter(x => x);\n this.data_source_scripts = [].concat(...scripts).sort();\n\n // Scripts changed?\n return !(this.data_source_scripts.length === prev_scripts.length &&\n this.data_source_scripts.every((v, i) => v === prev_scripts[i]));\n }\n\n // Web workers handle heavy duty tile construction: networking, geometry processing, etc.\n createWorkers() {\n // Reset old workers (if any) if we need to re-instantiate with new external scripts\n if (this.updateDataSourceScripts()) {\n this.destroyWorkers();\n }\n\n if (!this.workers) {\n return this.makeWorkers(this.getWorkerUrl());\n }\n return Promise.resolve();\n }\n\n // Instantiate workers from URL, init event handlers\n makeWorkers(url) {\n\n // Let VertexElements know if 32 bit indices for element arrays are available\n let has_element_index_uint = this.gl.getExtension(\"OES_element_index_uint\") ? true : false;\n\n let queue = [];\n this.workers = [];\n for (let id=0; id < this.num_workers; id++) {\n let worker = new Worker(url);\n this.workers[id] = worker;\n\n WorkerBroker.addWorker(worker);\n\n log('debug', `Scene.makeWorkers: initializing worker ${id}`);\n let _id = id;\n queue.push(WorkerBroker.postMessage(worker, 'self.init', this.id, id, this.num_workers, this.log_level, Utils.device_pixel_ratio, has_element_index_uint, this.data_source_scripts).then(\n (id) => {\n log('debug', `Scene.makeWorkers: initialized worker ${id}`);\n return id;\n },\n (error) => {\n log('error', `Scene.makeWorkers: failed to initialize worker ${_id}:`, error);\n return Promise.reject(error);\n })\n );\n }\n\n this.next_worker = 0;\n return Promise.all(queue).then(() => {\n log.setWorkers(this.workers);\n\n // Free memory after worker initialization\n URLs.revokeObjectURL(url);\n });\n }\n\n destroyWorkers() {\n if (Array.isArray(this.workers)) {\n log.setWorkers(null);\n this.workers.forEach((worker) => {\n worker.terminate();\n });\n this.workers = null;\n }\n }\n\n // Scene is ready for rendering\n ready() {\n if (!this.view.ready() || Object.keys(this.sources).length === 0) {\n return false;\n }\n return true;\n }\n\n // Resize the map when device pixel ratio changes, e.g. when switching between displays\n updateDevicePixelRatio () {\n if (Utils.updateDevicePixelRatio()) {\n WorkerBroker.postMessage(this.workers, 'self.updateDevicePixelRatio', Utils.device_pixel_ratio)\n .then(() => this.rebuild())\n .then(() => this.resizeMap(this.view.size.css.width, this.view.size.css.height));\n }\n }\n\n resizeMap(width, height) {\n if (width === 0 && height === 0) {\n return;\n }\n\n this.dirty = true;\n this.view.setViewportSize(width, height);\n if (this.gl) {\n Context.resize(this.gl, width, height, Utils.device_pixel_ratio);\n }\n }\n\n // Request scene be redrawn at next animation loop\n requestRedraw() {\n this.dirty = true;\n }\n\n // Redraw scene immediately - don't wait for animation loop\n // Use sparingly, but for cases where you need the closest possible sync with other UI elements,\n // such as other, non-WebGL map layers (e.g. Leaflet raster layers, markers, etc.)\n immediateRedraw() {\n this.dirty = true;\n this.update();\n }\n\n renderLoop () {\n this.render_loop_active = true; // only let the render loop instantiate once\n\n if (this.initialized) {\n // Render the scene\n this.update();\n }\n\n // Pending background tasks\n Task.setState({ user_moving_view: this.view.user_input_active });\n Task.processAll();\n\n // Request the next frame if not scheduled to stop\n if (!this.render_loop_stop) {\n window.requestAnimationFrame(this.renderLoop.bind(this));\n }\n else {\n this.render_loop_stop = false;\n this.render_loop_active = false;\n }\n }\n\n // Setup the render loop\n setupRenderLoop() {\n if (!this.render_loop_active) {\n setTimeout(() => { this.renderLoop(); }, 0); // delay start by one tick\n }\n }\n\n update() {\n // Determine which passes (if any) to render\n let main = this.dirty;\n let selection = this.selection ? this.selection.hasPendingRequests() : false;\n var will_render = !(\n (main === false && selection === false) ||\n this.initialized === false ||\n this.updating > 0 ||\n this.ready() === false\n );\n\n // Pre-render loop hook\n this.trigger('pre_update', will_render);\n\n // Update view (needs to update user input timer even if no render will occur)\n this.view.update();\n\n // Bail if no need to render\n if (!will_render) {\n return false;\n }\n this.dirty = false; // subclasses can set this back to true when animation is needed\n\n // Render the scene\n this.updateDevicePixelRatio();\n this.render({ main, selection });\n this.updateViewComplete(); // fires event when rendered tile set or style changes\n this.media_capture.completeScreenshot(); // completes screenshot capture if requested\n\n // Post-render loop hook\n this.trigger('post_update', will_render);\n\n // Redraw every frame if animating\n if (this.animated === true || this.view.isAnimating()) {\n this.dirty = true;\n }\n\n this.frame++;\n log('trace', 'Scene.render()');\n return true;\n }\n\n // Accepts flags indicating which render passes should be made\n render({ main, selection }) {\n var gl = this.gl;\n\n // Update styles, camera, lights\n Object.keys(this.lights).forEach(i => this.lights[i].update());\n\n // Render main pass\n if (main) {\n this.render_count = this.renderPass();\n this.last_main_render = this.frame;\n }\n\n // Render selection pass (if needed)\n if (selection) {\n if (this.view.panning || this.view.user_input_active) {\n this.selection.clearPendingRequests();\n return;\n }\n\n // Only re-render if selection buffer is out of date (relative to main render buffer)\n // and not locked (e.g. no tiles are actively building)\n if (!this.selection.locked && this.last_selection_render < this.last_main_render) {\n this.selection.bind(); // switch to FBO\n this.renderPass(\n 'selection_program', // render w/alternate program\n { allow_blend: false });\n\n // Reset to screen buffer\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.viewport(0, 0, this.canvas.width, this.canvas.height);\n gl.clearColor(...this.background.color); // restore scene background color\n this.last_selection_render = this.frame;\n }\n\n this.selection.read(); // process any pending results from selection buffer\n }\n\n this.render_count_changed = false;\n if (this.render_count !== this.last_render_count) {\n this.render_count_changed = true;\n\n this.getFeatureSelectionMapSize().then(size => {\n if (size) { // returns undefined if previous request pending\n log('info', `Scene: rendered ${this.render_count} primitives (${size} features in selection map)`);\n }\n });\n }\n this.last_render_count = this.render_count;\n\n return true;\n }\n\n // Render all active styles, grouped by blend/depth type (opaque, overlay, etc.) and by program (style)\n // Called both for main render pass, and for secondary passes like selection buffer\n renderPass(program_key = 'program', { allow_blend } = {}) {\n // optionally force alpha off (e.g. for selection pass)\n allow_blend = (allow_blend == null) ? true : allow_blend;\n\n this.clearFrame();\n\n // Sort styles by blend order\n let styles = this.tile_manager.getActiveStyles().\n map(s => this.styles[s]).\n filter(s => s). // guard against missing styles, such as while loading a new scene\n sort(Style.blendOrderSort);\n\n // Render styles\n let count = 0; // how many primitives were rendered\n let last_blend;\n for (let s=0; s < styles.length; s++) {\n let style = styles[s];\n\n // Only update render state when blend mode changes\n if (style.blend !== last_blend) {\n let state = Object.assign({},\n Style.render_states[style.blend], // render state for blend mode\n { blend: (allow_blend && style.blend) } // enable/disable blending (e.g. no blend for selection)\n );\n this.setRenderState(state);\n }\n\n // Depth pre-pass for translucency\n let translucent = (style.blend === 'translucent' && program_key === 'program'); // skip for selection buffer render pass\n if (translucent) {\n this.gl.colorMask(false, false, false, false);\n this.renderStyle(style.name, program_key);\n\n this.gl.colorMask(true, true, true, true);\n this.gl.depthFunc(this.gl.EQUAL);\n\n // stencil buffer prevents compounding alpha from overlapping polys\n this.gl.enable(this.gl.STENCIL_TEST);\n this.gl.clear(this.gl.STENCIL_BUFFER_BIT);\n this.gl.stencilFunc(this.gl.EQUAL, this.gl.ZERO, 0xFF);\n this.gl.stencilOp(this.gl.KEEP, this.gl.KEEP, this.gl.INCR);\n }\n\n // Main render pass\n count += this.renderStyle(style.name, program_key);\n\n if (translucent) {\n // disable translucency-specific settings\n this.gl.disable(this.gl.STENCIL_TEST);\n this.gl.depthFunc(this.gl.LESS);\n }\n\n last_blend = style.blend;\n }\n\n return count;\n }\n\n renderStyle(style_name, program_key) {\n let style = this.styles[style_name];\n let first_for_style = true;\n let render_count = 0;\n let program;\n\n // Render tile GL geometries\n let renderable_tiles = this.tile_manager.getRenderableTiles();\n for (let t=0; t < renderable_tiles.length; t++) {\n let tile = renderable_tiles[t];\n\n if (tile.meshes[style_name] == null) {\n continue;\n }\n\n // Style-specific state\n // Only setup style if rendering for first time this frame\n // (lazy init, not all styles will be used in all screen views; some styles might be defined but never used)\n if (first_for_style === true) {\n first_for_style = false;\n program = this.setupStyle(style, program_key);\n if (!program) {\n return 0;\n }\n }\n\n // Skip proxy tiles if new tiles have finished loading this style\n if (!tile.shouldProxyForStyle(style_name)) {\n // log('trace', `Scene.renderStyle(): Skip proxy tile for style '${style_name}' `, tile, tile.proxy_for);\n continue;\n }\n\n // Tile-specific state\n this.view.setupTile(tile, program);\n\n // Render tile\n tile.meshes[style_name].forEach(mesh => {\n if (style.render(mesh)) {\n this.requestRedraw();\n }\n render_count += mesh.geometry_count;\n });\n }\n\n return render_count;\n }\n\n setupStyle(style, program_key) {\n // Get shader program from style, lazily compiling if necessary\n let program;\n try {\n program = style.getProgram(program_key);\n if (!program) {\n return;\n }\n }\n catch(error) {\n this.trigger('warning', {\n type: 'styles',\n message: `Error compiling style ${style.name}`,\n style,\n shader_errors: style.program && style.program.shader_errors\n });\n return;\n }\n\n program.use();\n style.setup();\n\n program.uniform('1f', 'u_time', this.animated ? (((+new Date()) - this.start_time) / 1000) : 0);\n this.view.setupProgram(program);\n for (let i in this.lights) {\n this.lights[i].setupProgram(program);\n }\n\n return program;\n }\n\n clearFrame() {\n if (!this.initialized) {\n return;\n }\n this.render_states.depth_write.set({ depth_write: true });\n this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT | this.gl.STENCIL_BUFFER_BIT);\n }\n\n setRenderState({ depth_test, depth_write, cull_face, blend } = {}) {\n if (!this.initialized) {\n return;\n }\n\n // Defaults\n // TODO: when we abstract out support for multiple render passes, these can be per-pass config options\n let render_states = this.render_states;\n depth_test = (depth_test === false) ? false : render_states.defaults.depth_test; // default true\n depth_write = (depth_write === false) ? false : render_states.defaults.depth_write; // default true\n cull_face = (cull_face === false) ? false : render_states.defaults.culling; // default true\n blend = (blend != null) ? blend : render_states.defaults.blending; // default false\n\n // Reset frame state\n let gl = this.gl;\n\n render_states.depth_test.set({ depth_test });\n render_states.depth_write.set({ depth_write });\n render_states.culling.set({ cull: cull_face, face: render_states.defaults.culling_face });\n\n // Blending of alpha channel is modified to account for WebGL alpha behavior, see:\n // http://webglfundamentals.org/webgl/lessons/webgl-and-alpha.html\n // http://stackoverflow.com/a/11533416\n if (blend) {\n // Opaque: all source, no destination\n if (blend === 'opaque') {\n render_states.blending.set({\n blend: false\n });\n }\n // Traditional alpha blending\n else if (blend === 'overlay' || blend === 'inlay' || blend === 'translucent') {\n render_states.blending.set({\n blend: true,\n src: gl.SRC_ALPHA, dst: gl.ONE_MINUS_SRC_ALPHA,\n src_alpha: gl.ONE, dst_alpha: gl.ONE_MINUS_SRC_ALPHA\n });\n }\n // Additive blending\n else if (blend === 'add') {\n render_states.blending.set({\n blend: true,\n src: gl.ONE, dst: gl.ONE\n });\n }\n // Multiplicative blending\n else if (blend === 'multiply') {\n render_states.blending.set({\n blend: true,\n src: gl.ZERO, dst: gl.SRC_COLOR\n });\n }\n }\n else {\n render_states.blending.set({ blend: false });\n }\n }\n\n // Request feature selection at given pixel. Runs async and returns results via a promise.\n getFeatureAt(pixel, { radius } = {}) {\n if (!this.initialized) {\n log('debug', \"Scene.getFeatureAt() called before scene was initialized\");\n return Promise.resolve();\n }\n\n // Scale point and radius to [0..1] range\n let point = {\n x: pixel.x / this.view.size.css.width,\n y: pixel.y / this.view.size.css.height\n };\n\n if (radius > 0) {\n radius = {\n x: radius / this.view.size.css.width,\n y: radius / this.view.size.css.height\n };\n }\n else {\n radius = null;\n }\n\n return this.selection.getFeatureAt(point, { radius }).\n then(selection => Object.assign(selection, { pixel })).\n catch(error => Promise.resolve({ error }));\n }\n\n // Query features within visible tiles, with optional filter conditions\n queryFeatures({ filter, unique = true, group_by = null, visible = null, geometry = false } = {}) {\n filter = Utils.serializeWithFunctions(filter);\n let tile_keys = this.tile_manager.getRenderableTiles().map(t => t.key);\n return WorkerBroker.postMessage(this.workers, 'self.queryFeatures', { filter, visible, geometry, tile_keys }).then(results => {\n let features = [];\n let keys = {};\n let groups = {};\n\n // Optional uniqueify criteria\n // Valid values: true, false/null, single property name, or array of property names\n unique = (typeof unique === 'string') ? [unique] : unique;\n const uniqueify = unique && (obj => JSON.stringify(Array.isArray(unique) ? sliceObject(obj, unique) : obj));\n\n // Optional grouping criteria\n // Valid values: false/null, single property name, or array of property names\n group_by = (typeof group_by === 'string' || Array.isArray(group_by)) && group_by;\n const group = group_by && (obj => {\n return Array.isArray(group_by) ? JSON.stringify(sliceObject(obj, group_by)) : obj[group_by];\n });\n\n results.forEach(r => r.forEach(feature => {\n if (uniqueify) {\n let str = uniqueify(feature);\n if (keys[str]) {\n return;\n }\n keys[str] = true;\n }\n\n if (group) {\n let str = group(feature.properties);\n groups[str] = groups[str] || [];\n groups[str].push(feature);\n }\n else {\n features.push(feature);\n }\n }));\n return group ? groups : features; // returned grouped results, or all results\n });\n }\n\n // Rebuild all tiles, without re-parsing the config or re-compiling styles\n // sync: boolean of whether to sync the config object to the worker\n // sources: optional array of data sources to selectively rebuild (by default all our rebuilt)\n rebuild({ new_generation = true, sources = null, serialize_funcs, profile = false, fade_in = false } = {}) {\n return new Promise((resolve, reject) => {\n // Skip rebuild if already in progress\n if (this.building) {\n // Queue up to one rebuild call at a time, only save last request\n if (this.building.queued && this.building.queued.reject) {\n // notify previous request that it did not complete\n log('debug', 'Scene.rebuild: request superceded by a newer call');\n this.building.queued.resolve(false); // false flag indicates rebuild request was superceded\n }\n\n // Save queued request\n let options = { new_generation, sources, serialize_funcs, profile, fade_in };\n this.building.queued = { resolve, reject, options };\n log('trace', `Scene.rebuild(): queuing request`);\n return;\n }\n\n // Track tile build state\n this.building = { resolve, reject };\n\n // Profiling\n if (profile) {\n this._profile('Scene.rebuild');\n }\n\n // Increment generation to ensure style/tile building stay in sync\n // (skipped if calling function already incremented)\n if (new_generation) {\n this.generation = ++Scene.generation;\n for (let style in this.styles) {\n this.styles[style].setGeneration(this.generation);\n }\n }\n\n // Update config (in case JS objects were manipulated directly)\n this.syncConfigToWorker({ serialize_funcs });\n this.resetFeatureSelection(sources);\n this.resetTime();\n\n // Rebuild visible tiles\n this.tile_manager.pruneToVisibleTiles();\n this.tile_manager.forEachTile(tile => {\n if (!sources || sources.indexOf(tile.source.name) > -1) {\n this.tile_manager.buildTile(tile, { fade_in });\n }\n });\n this.tile_manager.updateTilesForView(); // picks up additional tiles for any new/changed data sources\n this.tile_manager.checkBuildQueue(); // resolve immediately if no tiles to build\n }).then(() => {\n // Profiling\n if (profile) {\n this._profileEnd('Scene.rebuild');\n }\n });\n }\n\n // Tile manager finished building tiles\n // TODO move to tile manager\n tileManagerBuildDone() {\n CanvasText.pruneTextCache();\n\n if (this.building) {\n log('info', `Scene: build geometry finished`);\n if (this.building.resolve) {\n if (this.initial_build_time == null) {\n this.initial_build_time = (+new Date()) - this.start_time;\n log('debug', `Scene: initial build time: ${this.initial_build_time}`);\n }\n this.building.resolve(true);\n }\n\n // Another rebuild queued?\n var queued = this.building.queued;\n this.building = null;\n if (queued) {\n log('debug', `Scene: starting queued rebuild() request`);\n this.rebuild(queued.options).then(queued.resolve, queued.reject);\n }\n }\n }\n\n /**\n Load (or reload) the scene config\n @return {Promise}\n */\n loadScene(config_source = null, { base_path, file_type } = {}) {\n this.config_source = config_source || this.config_source;\n this.config_globals_applied = [];\n\n if (typeof this.config_source === 'string') {\n this.base_path = URLs.pathForURL(base_path || this.config_source);\n }\n else {\n this.base_path = URLs.pathForURL(base_path);\n }\n\n // backwards compatibility for accessing base path under previous name\n // TODO: schedule for deprecation\n this.config_path = this.base_path;\n\n return SceneLoader.loadScene(this.config_source, { path: this.base_path, type: file_type }).then(({config, bundle}) => {\n this.config = config;\n this.config_bundle = bundle;\n return this.config;\n });\n }\n\n // Add source to a scene, arguments `name` and `config` need to be provided:\n // - If the name doesn't match a sources it will create it\n // - the `config` obj follow the YAML scene spec, ex: ```{type: 'TopoJSON', url: \"//tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.topojson\"]}```\n // that looks like:\n //\n // scene.setDataSource(\"osm\", {type: 'TopoJSON', url: \"//tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.topojson\" });\n //\n // - also can be pass a ```data``` obj: ```{type: 'GeoJSON', data: JSObj ]}```\n //\n // var geojson_data = {};\n // ...\n // scene.setDataSource(\"dynamic_data\", {type: 'GeoJSON', data: geojson_data });\n //\n setDataSource (name, config) {\n if (!name || !config || !config.type || (!config.url && !config.data)) {\n log('error', \"No name provided or not a valid config:\", name, config);\n return;\n }\n\n let load = (this.config.sources[name] == null);\n let source = this.config.sources[name] = Object.assign({}, config);\n\n // Convert raw data into blob URL\n if (source.data && typeof source.data === 'object') {\n source.url = URLs.createObjectURL(new Blob([JSON.stringify(source.data)]));\n delete source.data;\n }\n\n if (load) {\n return this.updateConfig({ rebuild: { sources: [name] } });\n } else {\n return this.rebuild({ sources: [name] });\n }\n }\n\n createDataSources() {\n let reset = []; // sources to reset\n let prev_source_names = Object.keys(this.sources);\n let source_id = 0;\n\n for (var name in this.config.sources) {\n let source = this.config.sources[name];\n let prev_source = this.sources[name];\n\n try {\n let config = Object.assign({}, source, { name, id: source_id++ });\n this.sources[name] = DataSource.create(config, this.sources);\n if (!this.sources[name]) {\n throw {};\n }\n }\n catch(e) {\n delete this.sources[name];\n let message = `Could not create data source: ${e.message}`;\n log('warn', `Scene: ${message}`, source);\n this.trigger('warning', { type: 'sources', source, message });\n }\n\n // Data source changed?\n if (DataSource.changed(this.sources[name], prev_source)) {\n reset.push(name);\n }\n }\n\n // Sources that were removed\n prev_source_names.forEach(s => {\n if (!this.config.sources[s]) {\n delete this.sources[s]; // TODO: remove from workers too?\n reset.push(s);\n }\n });\n\n // Remove tiles from sources that have changed\n if (reset.length > 0) {\n this.tile_manager.removeTiles(tile => {\n return (reset.indexOf(tile.source.name) > -1);\n });\n }\n\n // Mark sources that will generate geometry tiles\n // (all except those that are only raster sources attached to other sources)\n for (let ln in this.config.layers) {\n let layer = this.config.layers[ln];\n if (layer.enabled !== false && layer.data && this.sources[layer.data.source]) {\n this.sources[layer.data.source].builds_geometry_tiles = true;\n }\n }\n }\n\n // Load all textures in the scene definition\n loadTextures() {\n return Texture.createFromObject(this.gl, this.config.textures).\n then(() => Texture.createDefault(this.gl)); // create a 'default' texture for placeholders\n }\n\n // Called (currently manually) after styles are updated in stylesheet\n updateStyles() {\n if (!this.initialized && !this.initializing) {\n throw new Error('Scene.updateStyles() called before scene was initialized');\n }\n\n // (Re)build styles from config\n this.styles = this.style_manager.build(this.config.styles);\n this.style_manager.initStyles(this);\n\n // Optionally set GL context (used when initializing or re-initializing GL resources)\n for (let style in this.styles) {\n this.styles[style].setGL(this.gl);\n }\n\n this.dirty = true;\n }\n\n // Is scene currently animating?\n get animated () {\n // Use explicitly set scene animation flag if defined, otherwise enabled animation if any animated styles are in view\n return (this.config.scene.animated !== undefined ?\n this.config.scene.animated :\n this.tile_manager.getActiveStyles().some(s => this.styles[s].animated));\n }\n\n // Get active camera - for public API\n getActiveCamera() {\n return this.view.getActiveCamera();\n }\n\n // Set active camera - for public API\n setActiveCamera(name) {\n return this.view.setActiveCamera(name);\n }\n\n // Create lighting\n createLights() {\n this.lights = {};\n for (let i in this.config.lights) {\n if (!this.config.lights[i] || typeof this.config.lights[i] !== 'object') {\n continue;\n }\n let light = this.config.lights[i];\n light.name = i.replace('-', '_'); // light names are injected in shaders, can't have hyphens\n light.visible = (light.visible === false) ? false : true;\n if (light.visible) {\n this.lights[light.name] = Light.create(this.view, light);\n }\n }\n Light.inject(this.lights);\n }\n\n // Set background color\n setBackground() {\n let bg = this.config.scene.background;\n this.background = {};\n if (bg && bg.color) {\n this.background.color = StyleParser.parseColor(bg.color);\n }\n if (!this.background.color) {\n this.background.color = [0, 0, 0, 0]; // default background TODO: vary w/scene alpha\n }\n\n // if background is fully opaque, set canvas background to match\n if (this.background.color[3] === 1) {\n this.canvas.style.backgroundColor =\n `rgba(${this.background.color.map(c => Math.floor(c * 255)).join(', ')})`;\n }\n else {\n this.canvas.style.backgroundColor = 'transparent';\n }\n\n this.gl.clearColor(...this.background.color);\n }\n\n // Turn introspection mode on/off\n setIntrospection (val) {\n if (val !== this.introspection) {\n this.introspection = val || false;\n this.updating++;\n return this.updateConfig({ normalize: false }).then(() => this.updating--);\n }\n return Promise.resolve();\n }\n\n // Update scene config, and optionally rebuild geometry\n // rebuild can be boolean, or an object containing rebuild options to passthrough\n updateConfig({ load_event = false, rebuild = true, serialize_funcs, normalize = true, fade_in = false } = {}) {\n this.generation = ++Scene.generation;\n this.updating++;\n\n this.config = SceneLoader.applyGlobalProperties(this.config, this.config_globals_applied);\n if (normalize) {\n // normalize whole scene\n SceneLoader.normalize(this.config, this.config_bundle);\n }\n else {\n // special handling for shader uniforms that are globals\n SceneLoader.hoistStyleShaderUniformTextures(this.config, this.config_bundle, { include_globals: true });\n\n // just normalize top-level textures - necessary for adding base path to globals\n SceneLoader.normalizeTextures(this.config, this.config_bundle);\n }\n this.trigger(load_event ? 'load' : 'update', { config: this.config });\n\n this.style_manager.init();\n this.view.reset();\n this.createLights();\n this.createDataSources();\n this.loadTextures();\n this.setBackground();\n FontManager.loadFonts(this.config.fonts);\n\n // TODO: detect changes to styles? already (currently) need to recompile anyway when camera or lights change\n this.updateStyles();\n\n // Optionally rebuild geometry\n let done = rebuild ?\n this.rebuild(Object.assign({ new_generation: false, serialize_funcs, fade_in }, typeof rebuild === 'object' && rebuild)) :\n this.syncConfigToWorker({ serialize_funcs }); // rebuild() also syncs config\n\n // Finish by updating bounds and re-rendering\n this.updating--;\n this.view.updateBounds();\n this.requestRedraw();\n\n return done;\n }\n\n // Serialize config and send to worker\n syncConfigToWorker({ serialize_funcs = true } = {}) {\n // Tell workers we're about to rebuild (so they can update styles, etc.)\n let config_serialized =\n serialize_funcs ? Utils.serializeWithFunctions(this.config) : JSON.stringify(this.config);\n return WorkerBroker.postMessage(this.workers, 'self.updateConfig', {\n config: config_serialized,\n generation: this.generation,\n introspection: this.introspection\n }, debugSettings);\n }\n\n // Listen to related objects\n createListeners () {\n this.listeners = {};\n\n this.listeners.view = {\n move: () => this.trigger('move')\n };\n this.view.subscribe(this.listeners.view);\n\n this.listeners.texture = {\n update: () => this.dirty = true,\n warning: (data) => this.trigger('warning', Object.assign({ type: 'textures' }, data))\n };\n Texture.subscribe(this.listeners.texture);\n\n this.listeners.scene_loader = {\n error: (data) => this.trigger('error', Object.assign({ type: 'scene' }, data))\n };\n SceneLoader.subscribe(this.listeners.scene_loader);\n }\n\n destroyListeners () {\n this.unsubscribeAll();\n this.view.unsubscribe(this.listeners.view);\n Texture.unsubscribe(this.listeners.texture);\n SceneLoader.unsubscribe(this.listeners.scene_loader);\n this.listeners = null;\n }\n\n resetFeatureSelection(sources = null) {\n if (!this.selection) {\n this.selection = new FeatureSelection(this.gl, this.workers, () => this.building);\n }\n else if (this.workers) {\n WorkerBroker.postMessage(this.workers, 'self.resetFeatureSelection', sources);\n }\n }\n\n // Gets the current feature selection map size across all workers. Returns a promise.\n getFeatureSelectionMapSize() {\n if (this.fetching_selection_map) {\n return Promise.resolve(); // return undefined if already pending\n }\n this.fetching_selection_map = true;\n\n return WorkerBroker.postMessage(this.workers, 'self.getFeatureSelectionMapSize')\n .then(sizes => {\n this.fetching_selection_map = false;\n return sizes.reduce((a, b) => a + b);\n });\n }\n\n // Reset internal clock, mostly useful for consistent experience when changing styles/debugging\n resetTime() {\n this.start_time = +new Date();\n }\n\n // Fires event when rendered tile set or style changes\n updateViewComplete () {\n if ((this.render_count_changed || this.generation !== this.last_complete_generation) &&\n !this.tile_manager.isLoadingVisibleTiles()) {\n this.last_complete_generation = this.generation;\n this.trigger('view_complete');\n }\n }\n\n resetViewComplete () {\n this.last_complete_generation = null;\n }\n\n // Take a screenshot\n // Asynchronous because we have to wait for next render to capture buffer\n // Returns a promise\n screenshot ({ background = 'white' } = {}) {\n this.requestRedraw();\n return this.media_capture.screenshot({background});\n }\n\n startVideoCapture () {\n this.requestRedraw();\n return this.media_capture.startVideoCapture();\n }\n\n stopVideoCapture () {\n return this.media_capture.stopVideoCapture();\n }\n\n\n // Stats/debug/profiling methods\n\n // Profile helpers, issues a profile on main thread & all workers\n _profile(name) {\n console.profile(`main thread: ${name}`);\n WorkerBroker.postMessage(this.workers, 'self.profile', name);\n }\n\n _profileEnd(name) {\n console.profileEnd(`main thread: ${name}`);\n WorkerBroker.postMessage(this.workers, 'self.profileEnd', name);\n }\n\n // Debug config and functions\n setupDebug () {\n let scene = this;\n this.debug = {\n // Rebuild geometry a given # of times and print average, min, max timings\n timeRebuild (num = 1, options = {}) {\n let times = [];\n let cycle = () => {\n let start = +new Date();\n scene.rebuild(options).then(() => {\n times.push(+new Date() - start);\n\n if (times.length < num) {\n cycle();\n }\n else {\n let avg = ~~(times.reduce((a, b) => a + b) / times.length);\n log('info', `Profiled rebuild ${num} times: ${avg} avg (${Math.min(...times)} min, ${Math.max(...times)} max)`);\n }\n });\n };\n cycle();\n },\n\n // Return geometry counts of visible tiles, grouped by style name\n geometryCountByStyle () {\n let counts = {};\n scene.tile_manager.getRenderableTiles().forEach(tile => {\n for (let style in tile.meshes) {\n counts[style] = counts[style] || 0;\n tile.meshes[style].forEach(mesh => {\n counts[style] += mesh.geometry_count;\n });\n }\n });\n return counts;\n },\n\n geometryCountByBaseStyle () {\n let style_counts = scene.debug.geometryCountByStyle();\n let counts = {};\n for (let style in style_counts) {\n let base = scene.styles[style].baseStyle();\n counts[base] = counts[base] || 0;\n counts[base] += style_counts[style];\n }\n return counts;\n },\n\n geometrySizeByStyle () {\n let sizes = {};\n scene.tile_manager.getRenderableTiles().forEach(tile => {\n for (let style in tile.meshes) {\n sizes[style] = sizes[style] || 0;\n tile.meshes[style].forEach(mesh => {\n sizes[style] += mesh.buffer_size;\n });\n }\n });\n return sizes;\n },\n\n geometrySizeByBaseStyle () {\n let style_sizes = scene.debug.geometrySizeByStyle();\n let sizes = {};\n for (let style in style_sizes) {\n let base = scene.styles[style].baseStyle();\n sizes[base] = sizes[base] || 0;\n sizes[base] += style_sizes[style];\n }\n return sizes;\n },\n\n layerStats () {\n if (debugSettings.layer_stats) {\n return Tile.debugSumLayerStats(scene.tile_manager.getRenderableTiles());\n }\n else {\n log('warn', `Enable the 'layer_stats' debug setting to collect layer stats`);\n return {};\n }\n },\n\n renderableTilesCount () {\n return scene.tile_manager.getRenderableTiles().length;\n }\n };\n }\n\n}\n\nScene.id = 0; // unique id for a scene instance\nScene.generation = 0; // id that is incremented each time a scene config is re-parsed\n", "import Utils from './utils/utils';\nimport * as URLs from './utils/urls';\n\nimport JSZip from 'jszip';\nimport yaml from 'js-yaml';\n\nexport class SceneBundle {\n\n constructor(url, path, parent = null) {\n this.url = url;\n\n // If a base path was provided, use it for resolving local bundle resources only if\n // the base path is absolute, or this bundle's path is relative\n if (path && (!URLs.isRelativeURL(path) || URLs.isRelativeURL(this.url))) {\n this.path = path;\n }\n else {\n this.path = URLs.pathForURL(this.url);\n }\n\n this.path_for_parent = path || this.path; // for resolving paths relative to a parent bundle\n this.parent = parent;\n\n // An ancestor bundle may be a container (e.g. zip file) that needs to resolve relative paths\n // for any scenes it contains, e.g. `root.zip` has a `root.yaml` that includes a `folder/child.yaml`:\n // resources within `child.yaml` must be resolved through the bundle for `root.zip`\n this.container = null;\n if (this.parent) {\n if (this.parent.container) {\n this.container = this.parent.container;\n }\n else if (this.parent.isContainer()) {\n this.container = this.parent;\n }\n }\n }\n\n load() {\n return loadResource(this.url);\n }\n\n // Info for retrieving a specific resource from this bundle\n // url: fully qualified URL to retrieve the content of the resource (e.g. zips will transform this to blob URL)\n // path: original path of the resource within the bundle (for resolving paths up the bundle tree)\n // type: file extension (used for determining bundle type, `yaml` or `zip`)\n resourceFor(url) {\n return {\n url: this.urlFor(url),\n path: this.pathFor(url),\n type: this.typeFor(url)\n };\n }\n\n urlFor(url) {\n if (isGlobal(url)) {\n return url;\n }\n\n if (URLs.isRelativeURL(url) && this.container) {\n return this.parent.urlFor(this.path_for_parent + url);\n }\n return URLs.addBaseURL(url, this.path);\n }\n\n pathFor(url) {\n return URLs.pathForURL(url);\n }\n\n typeFor(url) {\n return URLs.extensionForURL(url);\n }\n\n isContainer() {\n return false;\n }\n\n}\n\nexport class ZipSceneBundle extends SceneBundle {\n\n constructor(url, path, parent) {\n super(url, path, parent);\n this.zip = null;\n this.files = {};\n this.root = null;\n this.path = '';\n }\n\n isContainer() {\n return true;\n }\n\n load() {\n this.zip = new JSZip();\n\n if (typeof this.url === 'string') {\n return Utils.io(this.url, 60000, 'arraybuffer')\n .then(body => this.zip.loadAsync(body))\n .then(() => this.parseZipFiles())\n .then(() => this.loadRoot())\n .catch(e => Promise.reject(e));\n } else {\n return Promise.resolve(this);\n }\n }\n\n urlFor(url) {\n if (isGlobal(url)) {\n return url;\n }\n\n if (URLs.isRelativeURL(url)) {\n return this.urlForZipFile(URLs.flattenRelativeURL(url));\n }\n return super.urlFor(url);\n }\n\n typeFor(url) {\n if (URLs.isRelativeURL(url)) {\n return this.typeForZipFile(url);\n }\n return super.typeFor(url);\n }\n\n loadRoot() {\n return this.findRoot()\n .then(() => loadResource(this.urlForZipFile(this.root)));\n }\n\n findRoot() {\n // There must be a single YAML file at the top level of the zip\n const yamls = Object.keys(this.files)\n .filter(path => this.files[path].depth === 0)\n .filter(path => URLs.extensionForURL(path) === 'yaml');\n\n if (yamls.length === 1) {\n this.root = yamls[0];\n }\n\n // No root found\n if (!this.root) {\n let msg = `Could not find root scene for bundle '${this.url}': `;\n msg += `The zip archive's root level must contain a single scene file with the '.yaml' extension. `;\n if (yamls.length > 0) {\n msg += `Found multiple YAML files at the root level: ${yamls.map(r => '\\'' + r + '\\'' ).join(', ')}.`;\n }\n else {\n msg += `Found NO YAML files at the root level.`;\n }\n return Promise.reject(Error(msg));\n }\n return Promise.resolve();\n }\n\n parseZipFiles() {\n let paths = [];\n let queue = [];\n this.zip.forEach((path, file) => {\n if (!file.dir) {\n paths.push(path);\n queue.push(file.async('arraybuffer'));\n }\n });\n\n return Promise.all(queue).then(data => {\n for (let i=0; i < data.length; i++) {\n let path = paths[i];\n let depth = path.split('/').length - 1;\n this.files[path] = {\n data: data[i],\n type: URLs.extensionForURL(path),\n depth\n };\n }\n });\n }\n\n urlForZipFile(file) {\n if (this.files[file]) {\n if (!this.files[file].url) {\n this.files[file].url = URLs.createObjectURL(new Blob([this.files[file].data]));\n }\n\n return this.files[file].url;\n }\n }\n\n typeForZipFile(file) {\n return this.files[file] && this.files[file].type;\n }\n\n}\n\nexport function createSceneBundle(url, path, parent, type = null) {\n if ((type != null && type === 'zip') ||\n (typeof url === 'string' && !URLs.isLocalURL(url) && URLs.extensionForURL(url) === 'zip')) {\n return new ZipSceneBundle(url, path, parent);\n }\n return new SceneBundle(url, path, parent);\n}\n\n// References a global property?\nexport function isGlobal (val) {\n if (val && val.slice(0, 7) === 'global.') {\n return true;\n }\n return false;\n}\n\nfunction parseResource (body) {\n var data;\n try {\n // jsyaml 'json' option allows duplicate keys\n // Keeping this for backwards compatibility, but should consider migrating to requiring\n // unique keys, as this is YAML spec. But Tangram ES currently accepts dupe keys as well,\n // so should consider how best to unify.\n data = yaml.safeLoad(body, { json: true });\n } catch (e) {\n throw e;\n }\n return data;\n}\n\nfunction loadResource (source) {\n return new Promise((resolve, reject) => {\n if (typeof source === 'string') {\n Utils.io(source).then((body) => {\n try {\n let data = parseResource(body);\n resolve(data);\n }\n catch(e) {\n reject(e);\n }\n }, reject);\n } else {\n // shallow copy to avoid modifying provided object, allowing a single config object to be loaded multiple times\n // TODO: address possible modifications to nested properties (mostly harmless / due to data normalization)\n source = Object.assign({}, source);\n resolve(source);\n }\n });\n}\n", "import log from './utils/log';\nimport GLSL from './gl/glsl';\nimport * as URLs from './utils/urls';\nimport mergeObjects from './utils/merge';\nimport subscribeMixin from './utils/subscribe';\nimport {createSceneBundle, isGlobal} from './scene_bundle';\nimport {isReserved} from './styles/layer';\n\nvar SceneLoader;\n\nexport default SceneLoader = {\n\n // Load scenes definitions from URL & proprocess\n loadScene(url, { path, type } = {}) {\n let errors = [];\n return this.loadSceneRecursive({ url, path, type }, null, errors).\n then(result => this.finalize(result)).\n then(({ config, bundle }) => {\n if (!config) {\n // root scene failed to load, reject with first error\n return Promise.reject(errors[0]);\n }\n else if (errors.length > 0) {\n // scene loaded, but some imports had errors\n errors.forEach(error => {\n let message = `Failed to import scene: ${error.url}`;\n log('error', message, error);\n this.trigger('error', { type: 'scene_import', message, error, url: error.url });\n });\n }\n return { config, bundle };\n });\n },\n\n // Loads scene files from URL, recursively loading 'import' scenes\n // Optional *initial* path only (won't be passed to recursive 'import' calls)\n // Useful for loading resources in base scene file from a separate location\n // (e.g. in Tangram Play, when modified local scene should still refer to original resource URLs)\n loadSceneRecursive({ url, path, type }, parent, errors = []) {\n if (!url) {\n return Promise.resolve({});\n }\n\n let bundle = createSceneBundle(url, path, parent, type);\n\n return bundle.load().then(config => {\n if (config.import == null) {\n this.normalize(config, bundle);\n return { config, bundle };\n }\n\n // accept single entry or array\n if (!Array.isArray(config.import)) {\n config.import = [config.import]; // convert to array\n }\n\n // Collect URLs of scenes to import\n let imports = [];\n config.import.forEach(url => {\n // Convert scene objects to URLs\n if (typeof url === 'object') {\n url = URLs.createObjectURL(new Blob([JSON.stringify(url)]));\n }\n\n imports.push(bundle.resourceFor(url));\n });\n delete config.import; // don't want to merge this property\n\n return Promise.\n all(imports.map(resource => this.loadSceneRecursive(resource, bundle, errors))).\n then(results => {\n results.forEach(r => this.normalize(r.config, r.bundle)); // first normalize imports\n let configs = results.map(r => r.config);\n config = mergeObjects(...configs, config);\n this.normalize(config, bundle); // last normalize parent, after merge\n return { config, bundle };\n });\n }).catch(error => {\n // Collect scene load errors as we go\n error.url = url;\n errors.push(error);\n return {};\n });\n },\n\n // Normalize properties that should be adjust within each local scene file (usually by path)\n normalize(config, bundle) {\n this.normalizeDataSources(config, bundle);\n this.normalizeFonts(config, bundle);\n this.normalizeTextures(config, bundle);\n this.hoistTextures(config, bundle);\n return { config, bundle };\n },\n\n // Expand paths for data source\n normalizeDataSources(config, bundle) {\n config.sources = config.sources || {};\n\n for (let sn in config.sources) {\n this.normalizeDataSource(config.sources[sn], bundle);\n }\n\n return config;\n },\n\n normalizeDataSource(source, bundle) {\n source.url = bundle.urlFor(source.url);\n\n if (Array.isArray(source.scripts)) {\n source.scripts = source.scripts.map(url => bundle.urlFor(url));\n }\n\n return source;\n },\n\n // Expand paths for fonts\n normalizeFonts(config, bundle) {\n config.fonts = config.fonts || {};\n\n for (let family in config.fonts) {\n if (Array.isArray(config.fonts[family])) {\n config.fonts[family].forEach(face => {\n face.url = face.url && bundle.urlFor(face.url);\n });\n }\n else {\n let face = config.fonts[family];\n face.url = face.url && bundle.urlFor(face.url);\n }\n }\n\n return config;\n },\n\n // Expand paths and centralize texture definitions for a scene object\n normalizeTextures(config, bundle) {\n config.textures = config.textures || {};\n\n // Add current scene's base path to globally defined textures\n // Only adds path for textures with relative URLs, so textures in imported scenes get the base\n // path of their immediate scene file\n if (config.textures) {\n for (let tn in config.textures) {\n let texture = config.textures[tn];\n if (texture.url) {\n texture.url = bundle.urlFor(texture.url);\n }\n }\n }\n },\n\n // Move inline (URL string) textures to the scene's top-level set of textures (config.textures).\n // There are 4 such cases of textures:\n // - in a style's `texture` property\n // - in a style's `material` properties\n // - in a style's custom uniforms (`shaders.uniforms`)\n // - in a draw groups `texture` property\n hoistTextures (config, bundle) {\n // Resolve URLs for inline textures\n if (config.styles) {\n for (let sn in config.styles) {\n let style = config.styles[sn];\n\n // Style `texture`\n let tex = style.texture;\n if (typeof tex === 'string' && !config.textures[tex]) {\n style.texture = this.hoistTexture(tex, config, bundle);\n }\n\n // Material\n if (style.material) {\n ['emission', 'ambient', 'diffuse', 'specular', 'normal'].forEach(prop => {\n // Material property has a texture\n let tex = style.material[prop] != null && style.material[prop].texture;\n if (typeof tex === 'string' && !config.textures[tex]) {\n style.material[prop].texture = this.hoistTexture(tex, config, bundle);\n }\n });\n }\n }\n }\n\n // Special handling for shader uniforms, exclude globals because they are ambiguous:\n // could later be resolved to a string value indicating a texture, but could also be a vector or other type\n this.hoistStyleShaderUniformTextures(config, bundle, { include_globals: false });\n\n // Resolve and hoist inline textures in draw blocks\n if (config.layers) {\n let stack = [config.layers];\n while (stack.length > 0) {\n let layer = stack.pop();\n\n // only recurse into objects\n if (typeof layer !== 'object' || Array.isArray(layer)) {\n continue;\n }\n\n for (let prop in layer) {\n if (prop === 'draw') { // process draw groups for current layer\n let draws = layer[prop];\n for (let group in draws) {\n if (draws[group].texture) {\n let tex = draws[group].texture;\n if (typeof tex === 'string' && !config.textures[tex]) {\n draws[group].texture = this.hoistTexture(tex, config, bundle);\n }\n }\n\n // special handling for outlines :(\n if (draws[group].outline && draws[group].outline.texture) {\n let tex = draws[group].outline.texture;\n if (typeof tex === 'string' && !config.textures[tex]) {\n draws[group].outline.texture = this.hoistTexture(tex, config, bundle);\n }\n }\n }\n\n }\n else if (isReserved(prop)) {\n continue; // skip reserved keyword\n }\n else {\n stack.push(layer[prop]); // traverse sublayer\n }\n }\n }\n }\n },\n\n hoistStyleShaderUniformTextures (config, bundle, { include_globals }) {\n // Resolve URLs for inline textures\n if (config.styles) {\n for (let sn in config.styles) {\n let style = config.styles[sn];\n\n // Shader uniforms\n if (style.shaders && style.shaders.uniforms) {\n GLSL.parseUniforms(style.shaders.uniforms).forEach(({type, value, key, uniforms}) => {\n // Texture by URL (string-named texture not referencing existing texture definition)\n if (type === 'sampler2D' && typeof value === 'string' && !config.textures[value] &&\n (include_globals || !isGlobal(value))) {\n uniforms[key] = this.hoistTexture(value, config, bundle);\n }\n });\n }\n }\n }\n },\n\n // Convert an inline URL texture to a global one, and return the texture's (possibly modified) name\n hoistTexture (tex, config, bundle) {\n let global = isGlobal(tex);\n let url = global ? tex : bundle.urlFor(tex);\n let name = global ? `texture-${url}` : url;\n config.textures[name] = { url };\n return name;\n },\n\n // Substitutes global scene properties (those defined in the `config.global` object) for any style values\n // of the form `global.`, for example `color: global.park_color` would be replaced with the value (if any)\n // defined for the `park_color` property in `config.global.park_color`.\n applyGlobalProperties(config, applied) {\n if (!config.global || Object.keys(config.global).length === 0) {\n return config; // no global properties to transform\n }\n\n // Parse properties from globals\n const separator = ':';\n const props = flattenProperties(config.global, separator);\n\n // Re-apply previously applied properties\n // NB: a current shortcoming here is that you cannot \"un-link\" a target property from a global\n // at run-time. Once a global property substitution has been recorderd, it will always be re-applied\n // on subsequent scene updates, even if the target property was updated to another literal value.\n // This is unlikely to be a common occurrence an acceptable limitation for now.\n applied.forEach(({ prop, target, key }) => {\n if (target) {\n target[key] = props[prop];\n // log('info', `Re-applying ${prop} with value ${props[prop]} to key ${key} in`, target);\n }\n });\n\n // Recursively look-up a global property name. Allows globals to refer to other globals, e.g.:\n // global:\n // color: global.secret_color\n // secret_color: red\n function lookupGlobalName (key, props, stack = []) {\n if (stack.indexOf(key) > -1) {\n log({ level: 'warn', once: true }, `Global properties: cyclical reference detected`, stack);\n return;\n }\n stack.push(key);\n\n const prop = (key.slice(0, 7) === 'global.') && (key.slice(7).replace(/\\./g, separator));\n if (prop && props[prop] !== undefined) {\n if (typeof props[prop] === 'string' && props[prop].slice(0, 7) === 'global.') {\n return lookupGlobalName(props[prop], props, stack);\n }\n return prop;\n }\n }\n\n // Find and apply new properties\n function applyGlobals (obj, target, key) {\n // Convert string\n if (typeof obj === 'string') {\n const prop = lookupGlobalName(obj, props);\n const val = props[prop];\n if (val !== undefined) {\n // Save record of where property is applied\n applied.push({ prop, target, key });\n\n // Apply property\n obj = val;\n }\n }\n // Loop through object keys or array indices\n else if (Array.isArray(obj)) {\n for (let p=0; p < obj.length; p++) {\n obj[p] = applyGlobals(obj[p], obj, p);\n }\n }\n else if (typeof obj === 'object') {\n for (let p in obj) {\n obj[p] = applyGlobals(obj[p], obj, p);\n }\n }\n return obj;\n }\n\n return applyGlobals(config);\n },\n\n // Normalize some scene-wide settings that apply to the final, merged scene\n finalize({ config, bundle }) {\n if (!config) {\n return {};\n }\n\n // Ensure top-level properties\n config.global = config.global || {};\n config.scene = config.scene || {};\n config.cameras = config.cameras || {};\n config.lights = config.lights || {};\n config.styles = config.styles || {};\n config.layers = config.layers || {};\n\n // If only one camera specified, set it as default\n if (config.camera) {\n config.cameras.default = config.camera;\n }\n\n // If no cameras specified, create one\n if (Object.keys(config.cameras).length === 0) {\n config.cameras.default = {};\n }\n\n // If no lights specified, create default\n if (Object.keys(config.lights).length === 0 ||\n Object.keys(config.lights).every(i => config.lights[i].visible === false)) {\n config.lights.default_light = {\n type: 'directional'\n };\n }\n\n return { config, bundle };\n }\n\n};\n\n// Flatten nested properties for simpler string look-ups\n// e.g. global.background.color -> 'global:background:color'\nfunction flattenProperties (obj, separator = ':', prefix = null, props = {}) {\n prefix = prefix ? (prefix + separator) : '';\n\n for (let p in obj) {\n let key = prefix + p;\n let val = obj[p];\n props[key] = val;\n\n if (typeof val === 'object' && !Array.isArray(val)) {\n flattenProperties(val, separator, key, props);\n }\n }\n return props;\n}\n\nsubscribeMixin(SceneLoader);\n", - "/*jshint worker: true*/\nimport Thread from './utils/thread';\nimport Utils from './utils/utils';\nimport {mergeDebugSettings} from './utils/debug_settings';\nimport log from './utils/log';\nimport WorkerBroker from './utils/worker_broker'; // jshint ignore:line\nimport Tile from './tile';\nimport Geo from './geo';\nimport DataSource from './sources/data_source';\nimport FeatureSelection from './selection';\nimport {StyleParser} from './styles/style_parser';\nimport {StyleManager} from './styles/style_manager';\nimport {parseLayers, FilterOptions} from './styles/layer';\nimport {buildFilter} from './styles/filter';\nimport Texture from './gl/texture';\nimport VertexElements from './gl/vertex_elements';\n\nexport var SceneWorker = self;\n\n// Worker functionality will only be defined in worker thread\nif (Thread.is_worker) {\n\nObject.assign(self, {\n\n FeatureSelection,\n\n sources: {},\n styles: {},\n layers: {},\n tiles: {},\n\n // Initialize worker\n init (scene_id, worker_id, num_workers, log_level, device_pixel_ratio, has_element_index_unit, external_scripts) {\n self.scene_id = scene_id;\n self._worker_id = worker_id;\n self.num_workers = num_workers;\n log.setLevel(log_level);\n Utils.device_pixel_ratio = device_pixel_ratio;\n VertexElements.setElementIndexUint(has_element_index_unit);\n FeatureSelection.setPrefix(self._worker_id);\n self.style_manager = new StyleManager();\n self.importCustomScripts(external_scripts);\n return worker_id;\n },\n\n // Import custom scripts\n importCustomScripts(scripts) {\n if (scripts.length === 0) {\n return;\n }\n log('debug', 'loading custom data source scripts in worker:', scripts);\n\n // `window` is already shimmed to allow compatibility with some other libraries (e.g. FontFaceObserver)\n // So there's an extra dance here to look for any additional `window` properties added by these script imports,\n // then add them to the worker `self` scope.\n let prev_names = Object.getOwnPropertyNames(window);\n\n importScripts(...scripts);\n\n Object.getOwnPropertyNames(window).forEach(prop => {\n if (prev_names.indexOf(prop) === -1) {\n self[prop] = window[prop]; // new property added to window, also add it to self\n }\n });\n },\n\n // Starts a config refresh\n updateConfig ({ config, generation, introspection }, debug) {\n config = JSON.parse(config);\n mergeDebugSettings(debug);\n\n self.generation = generation;\n self.introspection = introspection;\n\n // Data block functions are not context wrapped like the rest of the style functions are\n // TODO: probably want a cleaner way to exclude these\n for (let layer in config.layers) {\n if (config.layers[layer]) {\n config.layers[layer].data = Utils.stringsToFunctions(config.layers[layer].data);\n }\n }\n\n // Expand global properties\n self.global = Utils.stringsToFunctions(config.global);\n\n // Create data sources\n self.createDataSources(config);\n\n // Expand styles\n config.styles = Utils.stringsToFunctions(config.styles, StyleParser.wrapFunction);\n self.styles = self.style_manager.build(config.styles);\n self.style_manager.initStyles({\n generation: self.generation,\n styles: self.styles,\n sources: self.sources,\n introspection: self.introspection\n });\n\n // Parse each top-level layer as a separate tree\n self.layers = parseLayers(config.layers, self.style_manager.styles);\n\n // Sync tetxure info from main thread\n self.syncing_textures = self.syncTextures(config.textures);\n\n // Return promise for when config refresh finishes\n self.configuring = self.syncing_textures.then(() => {\n log('debug', `updated config`);\n });\n },\n\n // Create data sources and clear tile cache if necessary\n createDataSources (config) {\n // Save and compare previous sources\n self.last_config_sources = self.config_sources || {};\n self.config_sources = config.sources;\n let last_sources = self.sources;\n let changed = [];\n\n // Parse new sources\n config.sources = Utils.stringsToFunctions(config.sources);\n self.sources = {}; // clear previous sources\n for (let name in config.sources) {\n if (JSON.stringify(self.last_config_sources[name]) === JSON.stringify(config.sources[name])) {\n self.sources[name] = last_sources[name];\n continue;\n }\n\n let source;\n try {\n source = DataSource.create(Object.assign({}, config.sources[name], {name}), self.sources);\n }\n catch(e) {\n continue;\n }\n\n if (!source) {\n continue;\n }\n self.sources[name] = source;\n changed.push(name);\n }\n\n // Clear tile cache for data sources that changed\n changed.forEach(source => {\n for (let t in self.tiles) {\n if (self.tiles[t].source === source) {\n delete self.tiles[t];\n }\n }\n });\n },\n\n // Returns a promise that fulfills when config refresh is finished\n awaitConfiguration () {\n return self.configuring;\n },\n\n // Build a tile: load from tile source if building for first time, otherwise rebuild with existing data\n buildTile ({ tile }) {\n // Tile cached?\n if (self.getTile(tile.key) != null) {\n // Already loading?\n if (self.getTile(tile.key).loading === true) {\n return;\n }\n }\n\n // Update tile cache\n tile = self.tiles[tile.key] = Object.assign(self.getTile(tile.key) || {}, tile);\n\n // Update config (styles, etc.), then build tile\n return self.awaitConfiguration().then(() => {\n // First time building the tile\n if (tile.loaded !== true) {\n\n tile.loading = true;\n tile.loaded = false;\n tile.error = null;\n\n self.loadTileSourceData(tile).then(() => {\n if (!self.getTile(tile.key)) {\n log('trace', `stop tile build after data source load because tile was removed: ${tile.key}`);\n return;\n }\n\n // Warn and continue on data source error\n if (tile.source_data.error) {\n log('warn', `tile load error(s) for ${tile.key}: ${tile.source_data.error}`);\n }\n\n tile.loading = false;\n tile.loaded = true;\n Tile.buildGeometry(tile, self);\n }).catch((error) => {\n tile.loading = false;\n tile.loaded = false;\n tile.error = error.stack;\n log('error', `tile load error for ${tile.key}: ${tile.error}`);\n\n // Send error to main thread\n WorkerBroker.postMessage(`TileManager_${self.scene_id}.buildTileError`, Tile.slice(tile));\n });\n }\n // Tile already loaded, just rebuild\n else {\n log('trace', `used worker cache for tile ${tile.key}`);\n\n // Build geometry\n try {\n Tile.buildGeometry(tile, self);\n }\n catch(error) {\n // Send error to main thread\n tile.error = error.toString();\n WorkerBroker.postMessage(`TileManager_${self.scene_id}.buildTileError`, Tile.slice(tile));\n }\n }\n });\n },\n\n // Load this tile's data source\n loadTileSourceData (tile) {\n if (self.sources[tile.source]) {\n return self.sources[tile.source].load(tile);\n }\n else {\n tile.source_data = {};\n return Promise.resolve(tile);\n }\n },\n\n getTile(key) {\n return self.tiles[key];\n },\n\n // Remove tile\n removeTile (key) {\n var tile = self.tiles[key];\n\n if (tile != null) {\n // Cancel if loading\n if (tile.loading === true) {\n log('trace', `cancel tile load for ${key}`);\n tile.loading = false;\n Tile.cancel(tile);\n }\n\n // Remove from cache\n FeatureSelection.clearTile(key);\n delete self.tiles[key];\n log('trace', `remove tile from cache for ${key}`);\n }\n },\n\n // Query features within visible tiles, with optional filter conditions\n queryFeatures ({ filter, visible, geometry, tile_keys }) {\n let features = [];\n let tiles = tile_keys.map(t => self.tiles[t]).filter(t => t);\n\n // Compile feature filter\n if (filter != null) {\n filter = ['{', '['].indexOf(filter[0]) > -1 ? JSON.parse(filter) : filter; // de-serialize if looks like an object\n filter = Utils.stringsToFunctions(filter, StyleParser.wrapFunction);\n }\n filter = buildFilter(filter, FilterOptions);\n\n tiles.forEach(tile => {\n for (let layer in tile.source_data.layers) {\n let data = tile.source_data.layers[layer];\n data.features.forEach(feature => {\n // Optionally check if feature is visible (e.g. was rendered for current generation)\n if ((visible === true && feature.generation !== self.generation) ||\n (visible === false && feature.generation === self.generation)) {\n return;\n }\n\n // Apply feature filter\n let context = StyleParser.getFeatureParseContext(feature, tile, self.global);\n context.source = tile.source; // add data source name\n context.layer = layer; // add data source layer name\n\n if (!filter(context)) {\n return;\n }\n\n // Info to return with each feature\n let subset = {\n type: feature.type,\n properties: feature.properties\n };\n\n // Optionally include geometry in response\n if (geometry === true) {\n // Transform back to lat lng (copy geometry to avoid local modification)\n subset.geometry = Geo.copyGeometry(feature.geometry);\n Geo.tileSpaceToLatlng(subset.geometry, tile.coords.z, tile.min, tile.max);\n }\n\n features.push(subset);\n });\n }\n });\n return features;\n },\n\n // Get a feature from the selection map\n getFeatureSelection ({ id, key } = {}) {\n var selection = FeatureSelection.map[key];\n\n return {\n id: id,\n feature: (selection && selection.feature)\n };\n },\n\n // Resets the feature selection state\n resetFeatureSelection (sources = null) {\n FeatureSelection.reset(sources);\n },\n\n // Selection map size for this worker\n getFeatureSelectionMapSize () {\n return FeatureSelection.getMapSize();\n },\n\n // Texture info needs to be synced from main thread, e.g. width/height, which we only know after the texture loads\n syncTextures (tex_config) {\n let textures = [];\n if (tex_config) {\n textures.push(...Object.keys(tex_config));\n }\n\n log('trace', 'sync textures to worker:', textures);\n if (textures.length > 0) {\n return Texture.syncTexturesToWorker(textures);\n }\n return Promise.resolve();\n },\n\n // Sync device pixel ratio from main thread\n updateDevicePixelRatio (device_pixel_ratio) {\n Utils.device_pixel_ratio = device_pixel_ratio;\n },\n\n // Profiling helpers\n profile (name) {\n console.profile(`worker ${self._worker_id}: ${name}`);\n },\n\n profileEnd (name) {\n console.profileEnd(`worker ${self._worker_id}: ${name}`);\n }\n\n});\n\nWorkerBroker.addTarget('self', self);\n\n}\n", + "/*jshint worker: true*/\nimport Thread from './utils/thread';\nimport Utils from './utils/utils';\nimport {mergeDebugSettings} from './utils/debug_settings';\nimport log from './utils/log';\nimport WorkerBroker from './utils/worker_broker'; // jshint ignore:line\nimport Tile from './tile';\nimport Geo from './geo';\nimport DataSource from './sources/data_source';\nimport FeatureSelection from './selection';\nimport StyleParser from './styles/style_parser';\nimport {StyleManager} from './styles/style_manager';\nimport {parseLayers, FilterOptions} from './styles/layer';\nimport {buildFilter} from './styles/filter';\nimport Texture from './gl/texture';\nimport VertexElements from './gl/vertex_elements';\n\nexport var SceneWorker = self;\n\n// Worker functionality will only be defined in worker thread\nif (Thread.is_worker) {\n\nObject.assign(self, {\n\n FeatureSelection,\n\n sources: {},\n styles: {},\n layers: {},\n tiles: {},\n\n // Initialize worker\n init (scene_id, worker_id, num_workers, log_level, device_pixel_ratio, has_element_index_unit, external_scripts) {\n self.scene_id = scene_id;\n self._worker_id = worker_id;\n self.num_workers = num_workers;\n log.setLevel(log_level);\n Utils.device_pixel_ratio = device_pixel_ratio;\n VertexElements.setElementIndexUint(has_element_index_unit);\n FeatureSelection.setPrefix(self._worker_id);\n self.style_manager = new StyleManager();\n self.importCustomScripts(external_scripts);\n return worker_id;\n },\n\n // Import custom scripts\n importCustomScripts(scripts) {\n if (scripts.length === 0) {\n return;\n }\n log('debug', 'loading custom data source scripts in worker:', scripts);\n\n // `window` is already shimmed to allow compatibility with some other libraries (e.g. FontFaceObserver)\n // So there's an extra dance here to look for any additional `window` properties added by these script imports,\n // then add them to the worker `self` scope.\n let prev_names = Object.getOwnPropertyNames(window);\n\n importScripts(...scripts);\n\n Object.getOwnPropertyNames(window).forEach(prop => {\n if (prev_names.indexOf(prop) === -1) {\n self[prop] = window[prop]; // new property added to window, also add it to self\n }\n });\n },\n\n // Starts a config refresh\n updateConfig ({ config, generation, introspection }, debug) {\n config = JSON.parse(config);\n mergeDebugSettings(debug);\n\n self.generation = generation;\n self.introspection = introspection;\n\n // Data block functions are not context wrapped like the rest of the style functions are\n // TODO: probably want a cleaner way to exclude these\n for (let layer in config.layers) {\n if (config.layers[layer]) {\n config.layers[layer].data = Utils.stringsToFunctions(config.layers[layer].data);\n }\n }\n\n // Expand global properties\n self.global = Utils.stringsToFunctions(config.global);\n\n // Create data sources\n self.createDataSources(config);\n\n // Expand styles\n config.styles = Utils.stringsToFunctions(config.styles, StyleParser.wrapFunction);\n self.styles = self.style_manager.build(config.styles);\n self.style_manager.initStyles({\n generation: self.generation,\n styles: self.styles,\n sources: self.sources,\n introspection: self.introspection\n });\n\n // Parse each top-level layer as a separate tree\n self.layers = parseLayers(config.layers, self.style_manager.styles);\n\n // Sync tetxure info from main thread\n self.syncing_textures = self.syncTextures(config.textures);\n\n // Return promise for when config refresh finishes\n self.configuring = self.syncing_textures.then(() => {\n log('debug', `updated config`);\n });\n },\n\n // Create data sources and clear tile cache if necessary\n createDataSources (config) {\n // Save and compare previous sources\n self.last_config_sources = self.config_sources || {};\n self.config_sources = config.sources;\n let last_sources = self.sources;\n let changed = [];\n\n // Parse new sources\n config.sources = Utils.stringsToFunctions(config.sources);\n self.sources = {}; // clear previous sources\n for (let name in config.sources) {\n if (JSON.stringify(self.last_config_sources[name]) === JSON.stringify(config.sources[name])) {\n self.sources[name] = last_sources[name];\n continue;\n }\n\n let source;\n try {\n source = DataSource.create(Object.assign({}, config.sources[name], {name}), self.sources);\n }\n catch(e) {\n continue;\n }\n\n if (!source) {\n continue;\n }\n self.sources[name] = source;\n changed.push(name);\n }\n\n // Clear tile cache for data sources that changed\n changed.forEach(source => {\n for (let t in self.tiles) {\n if (self.tiles[t].source === source) {\n delete self.tiles[t];\n }\n }\n });\n },\n\n // Returns a promise that fulfills when config refresh is finished\n awaitConfiguration () {\n return self.configuring;\n },\n\n // Build a tile: load from tile source if building for first time, otherwise rebuild with existing data\n buildTile ({ tile }) {\n // Tile cached?\n if (self.getTile(tile.key) != null) {\n // Already loading?\n if (self.getTile(tile.key).loading === true) {\n return;\n }\n }\n\n // Update tile cache\n tile = self.tiles[tile.key] = Object.assign(self.getTile(tile.key) || {}, tile);\n\n // Update config (styles, etc.), then build tile\n return self.awaitConfiguration().then(() => {\n // First time building the tile\n if (tile.loaded !== true) {\n\n tile.loading = true;\n tile.loaded = false;\n tile.error = null;\n\n self.loadTileSourceData(tile).then(() => {\n if (!self.getTile(tile.key)) {\n log('trace', `stop tile build after data source load because tile was removed: ${tile.key}`);\n return;\n }\n\n // Warn and continue on data source error\n if (tile.source_data.error) {\n log('warn', `tile load error(s) for ${tile.key}: ${tile.source_data.error}`);\n }\n\n tile.loading = false;\n tile.loaded = true;\n Tile.buildGeometry(tile, self);\n }).catch((error) => {\n tile.loading = false;\n tile.loaded = false;\n tile.error = error.stack;\n log('error', `tile load error for ${tile.key}: ${tile.error}`);\n\n // Send error to main thread\n WorkerBroker.postMessage(`TileManager_${self.scene_id}.buildTileError`, Tile.slice(tile));\n });\n }\n // Tile already loaded, just rebuild\n else {\n log('trace', `used worker cache for tile ${tile.key}`);\n\n // Build geometry\n try {\n Tile.buildGeometry(tile, self);\n }\n catch(error) {\n // Send error to main thread\n tile.error = error.toString();\n WorkerBroker.postMessage(`TileManager_${self.scene_id}.buildTileError`, Tile.slice(tile));\n }\n }\n });\n },\n\n // Load this tile's data source\n loadTileSourceData (tile) {\n if (self.sources[tile.source]) {\n return self.sources[tile.source].load(tile);\n }\n else {\n tile.source_data = {};\n return Promise.resolve(tile);\n }\n },\n\n getTile(key) {\n return self.tiles[key];\n },\n\n // Remove tile\n removeTile (key) {\n var tile = self.tiles[key];\n\n if (tile != null) {\n // Cancel if loading\n if (tile.loading === true) {\n log('trace', `cancel tile load for ${key}`);\n tile.loading = false;\n Tile.cancel(tile);\n }\n\n // Remove from cache\n FeatureSelection.clearTile(key);\n delete self.tiles[key];\n log('trace', `remove tile from cache for ${key}`);\n }\n },\n\n // Query features within visible tiles, with optional filter conditions\n queryFeatures ({ filter, visible, geometry, tile_keys }) {\n let features = [];\n let tiles = tile_keys.map(t => self.tiles[t]).filter(t => t);\n\n // Compile feature filter\n if (filter != null) {\n filter = ['{', '['].indexOf(filter[0]) > -1 ? JSON.parse(filter) : filter; // de-serialize if looks like an object\n filter = Utils.stringsToFunctions(filter, StyleParser.wrapFunction);\n }\n filter = buildFilter(filter, FilterOptions);\n\n tiles.forEach(tile => {\n for (let layer in tile.source_data.layers) {\n let data = tile.source_data.layers[layer];\n data.features.forEach(feature => {\n // Optionally check if feature is visible (e.g. was rendered for current generation)\n if ((visible === true && feature.generation !== self.generation) ||\n (visible === false && feature.generation === self.generation)) {\n return;\n }\n\n // Apply feature filter\n let context = StyleParser.getFeatureParseContext(feature, tile, self.global);\n context.source = tile.source; // add data source name\n context.layer = layer; // add data source layer name\n\n if (!filter(context)) {\n return;\n }\n\n // Info to return with each feature\n let subset = {\n type: feature.type,\n properties: feature.properties\n };\n\n // Optionally include geometry in response\n if (geometry === true) {\n // Transform back to lat lng (copy geometry to avoid local modification)\n subset.geometry = Geo.copyGeometry(feature.geometry);\n Geo.tileSpaceToLatlng(subset.geometry, tile.coords.z, tile.min, tile.max);\n }\n\n features.push(subset);\n });\n }\n });\n return features;\n },\n\n // Get a feature from the selection map\n getFeatureSelection ({ id, key } = {}) {\n var selection = FeatureSelection.map[key];\n\n return {\n id: id,\n feature: (selection && selection.feature)\n };\n },\n\n // Resets the feature selection state\n resetFeatureSelection (sources = null) {\n FeatureSelection.reset(sources);\n },\n\n // Selection map size for this worker\n getFeatureSelectionMapSize () {\n return FeatureSelection.getMapSize();\n },\n\n // Texture info needs to be synced from main thread, e.g. width/height, which we only know after the texture loads\n syncTextures (tex_config) {\n let textures = [];\n if (tex_config) {\n textures.push(...Object.keys(tex_config));\n }\n\n log('trace', 'sync textures to worker:', textures);\n if (textures.length > 0) {\n return Texture.syncTexturesToWorker(textures);\n }\n return Promise.resolve();\n },\n\n // Sync device pixel ratio from main thread\n updateDevicePixelRatio (device_pixel_ratio) {\n Utils.device_pixel_ratio = device_pixel_ratio;\n },\n\n // Profiling helpers\n profile (name) {\n console.profile(`worker ${self._worker_id}: ${name}`);\n },\n\n profileEnd (name) {\n console.profileEnd(`worker ${self._worker_id}: ${name}`);\n }\n\n});\n\nWorkerBroker.addTarget('self', self);\n\n}\n", "import log from './utils/log';\nimport Texture from './gl/texture';\nimport WorkerBroker from './utils/worker_broker';\n\nexport default class FeatureSelection {\n\n constructor(gl, workers, lock_fn) {\n this.gl = gl;\n this.workers = workers; // pool of workers to request feature look-ups from, keyed by id\n this._lock_fn = (typeof lock_fn === 'function') && lock_fn; // indicates if safe to read/write selection buffer this frame\n this.init();\n }\n\n init() {\n // Selection state tracking\n this.requests = {}; // pending selection requests\n this.feature = null; // currently selected feature\n this.read_delay = 0; // delay time from selection render to framebuffer sample, to avoid CPU/GPU sync lock\n this.read_delay_timer = null; // current timer (setTimeout) for delayed selection reads\n this.pixels = null; // allocated lazily on request\n\n // Frame buffer for selection\n // TODO: initiate lazily in case we don't need to do any selection\n this.fbo = this.gl.createFramebuffer();\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this.fbo);\n this.fbo_size = { width: 256, height: 256 }; // TODO: make configurable / adaptive based on canvas size\n\n // Texture for the FBO color attachment\n var fbo_texture = Texture.create( this.gl, 'selection_fbo', { filtering: 'nearest' });\n fbo_texture.setData(this.fbo_size.width, this.fbo_size.height, null, { filtering: 'nearest' });\n this.gl.framebufferTexture2D(this.gl.FRAMEBUFFER, this.gl.COLOR_ATTACHMENT0, this.gl.TEXTURE_2D, fbo_texture.texture, 0);\n\n // Renderbuffer for the FBO depth attachment\n var fbo_depth_rb = this.gl.createRenderbuffer();\n this.gl.bindRenderbuffer(this.gl.RENDERBUFFER, fbo_depth_rb);\n this.gl.renderbufferStorage(this.gl.RENDERBUFFER, this.gl.DEPTH_COMPONENT16, this.fbo_size.width, this.fbo_size.height);\n this.gl.framebufferRenderbuffer(this.gl.FRAMEBUFFER, this.gl.DEPTH_ATTACHMENT, this.gl.RENDERBUFFER, fbo_depth_rb);\n\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null);\n }\n\n destroy() {\n if (this.gl && this.fbo) {\n this.gl.deleteFramebuffer(this.fbo);\n this.fbo = null;\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null);\n }\n\n // TODO: free texture?\n }\n\n // external lock function determines when it's safe to read/write from selection buffer\n get locked () {\n return (this._lock_fn && this._lock_fn()) || false;\n }\n\n bind() {\n // Switch to FBO\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this.fbo);\n this.gl.viewport(0, 0, this.fbo_size.width, this.fbo_size.height);\n this.gl.clearColor(...FeatureSelection.defaultColor);\n }\n\n // Request feature selection\n // Runs asynchronously, schedules selection buffer to be updated\n getFeatureAt(point, { radius }) {\n // ensure requested point is in canvas bounds\n if (!point || point.x < 0 || point.y < 0 || point.x > 1 || point.y > 1) {\n return Promise.resolve({ feature: null, changed: false });\n }\n\n return new Promise((resolve, reject) => {\n // Queue requests for feature selection, and they will be picked up by the render loop\n this.selection_request_id = (this.selection_request_id + 1) || 0;\n this.requests[this.selection_request_id] = {\n id: this.selection_request_id,\n point,\n radius,\n resolve,\n reject\n };\n });\n }\n\n // Any pending selection requests\n pendingRequests() {\n return Object.keys(this.requests).length ? this.requests : null;\n }\n\n hasPendingRequests() {\n return this.pendingRequests() != null;\n }\n\n clearPendingRequests() {\n for (var r in this.requests) {\n var request = this.requests[r];\n\n // This request was already sent to the worker, we're just awaiting its reply\n if (request.sent) {\n continue;\n }\n\n // Reject request since it will never be fulfilled\n // TODO: pass a reason for rejection?\n request.reject({ request });\n delete this.requests[r];\n }\n }\n\n // Read pending results from the selection buffer. Called after rendering to selection buffer.\n read() {\n // Delay reading the pixel result from the selection buffer to avoid CPU/GPU sync lock.\n // Calling readPixels synchronously caused a massive performance hit, presumably since it\n // forced this function to wait for the GPU to finish rendering and retrieve the texture contents.\n if (this.read_delay_timer != null) {\n clearTimeout(this.read_delay_timer);\n }\n this.read_delay_timer = setTimeout(() => {\n if (this.locked) {\n return;\n }\n\n var gl = this.gl;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.fbo);\n\n for (var r in this.requests) {\n var request = this.requests[r];\n\n // This request was already sent to the worker, we're just awaiting its reply\n if (request.sent) {\n continue;\n }\n\n // Check selection map against FBO\n let feature_key, worker_id = 255;\n let {point, radius} = request;\n let diam_px;\n\n if (!radius) {\n radius = { x: 0, y: 0 };\n diam_px = { x: 1, y: 1 };\n }\n else {\n // diameter in selection buffer pixels\n let max_radius = Math.min(this.fbo_size.width, this.fbo_size.height);\n diam_px = {\n x: Math.min(Math.ceil(radius.x * 2 * this.fbo_size.width), max_radius),\n y: Math.min(Math.ceil(radius.y * 2 * this.fbo_size.height), max_radius)\n };\n }\n\n // allocate or resize\n if (this.pixels == null || this.pixels.byteLength < diam_px.x * diam_px.y * 4) {\n this.pixels = new Uint8Array(diam_px.x * diam_px.y * 4);\n }\n\n // clear pixels\n if (this.pixels.fill instanceof Function) {\n this.pixels.fill(0); // native typed array fill\n }\n else {\n for (let p=0; p < this.pixels.length; p++) {\n this.pixels[p] = 0;\n }\n }\n\n // capture pixels\n gl.readPixels(\n Math.round(((point.x - radius.x) * this.fbo_size.width)),\n Math.round((1 - point.y - radius.y) * this.fbo_size.height),\n diam_px.x, diam_px.y, gl.RGBA, gl.UNSIGNED_BYTE, this.pixels);\n\n // first check center pixel (avoid scanning all pixels if cursor is directly on a feature)\n let p = (Math.round(diam_px.y / 2) * diam_px.x + Math.round(diam_px.x / 2)) * 4;\n let v = this.pixels[p] + (this.pixels[p+1] << 8) + (this.pixels[p+2] << 16); // feature id in RGB channels\n if (v > 0) {\n feature_key = (v + (this.pixels[p+3] << 24)) >>> 0; // worker id in alpha channel\n worker_id = this.pixels[p+3];\n }\n else {\n // scan all pixels for feature closest to cursor\n let min_dist = -1 >>> 0;\n p = 0;\n for (let y=0; y < diam_px.y; y++) {\n for (let x=0; x < diam_px.x; x++, p += 4) {\n v = this.pixels[p] + (this.pixels[p+1] << 8) + (this.pixels[p+2] << 16); // feature id in RGB channels\n if (v > 0) { // non-zero value indicates a feature\n // check to see if closer than last found feature\n let dist = (x - diam_px.x/2) * (x - diam_px.x/2) + (y - diam_px.y/2) * (y - diam_px.y/2);\n if (dist <= min_dist) {\n // get worker id from alpha channel\n feature_key = (v + (this.pixels[p+3] << 24)) >>> 0;\n worker_id = this.pixels[p+3];\n min_dist = dist;\n }\n }\n }\n }\n }\n\n // If feature found, ask appropriate web worker to lookup feature\n if (worker_id !== 255) { // 255 indicates an empty selection buffer pixel\n if (this.workers[worker_id] != null) {\n WorkerBroker.postMessage(\n this.workers[worker_id],\n 'self.getFeatureSelection',\n { id: request.id, key: feature_key })\n .then(message => {\n this.finishRead(message);\n });\n }\n }\n // No feature found, but still need to resolve promise\n else {\n this.finishRead({ id: request.id });\n }\n\n request.sent = true;\n }\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n }, this.read_delay);\n }\n\n // Called on main thread when a web worker finds a feature in the selection buffer\n finishRead (message) {\n var request = this.requests[message.id];\n if (!request) {\n log('error', \"FeatureSelection.finishRead(): could not find message\", message);\n return; // request was cleared before it returned\n }\n\n var feature = message.feature;\n var changed = false;\n if ((feature != null && this.feature == null) ||\n (feature == null && this.feature != null) ||\n (feature != null && this.feature != null &&\n JSON.stringify(feature) !== JSON.stringify(this.feature))) {\n changed = true;\n }\n\n this.feature = feature; // store the most recently selected feature\n\n // Resolve the request\n request.resolve({ feature, changed, request });\n delete this.requests[message.id]; // done processing this request\n }\n\n\n // Selection map generation\n // Each worker will create its own independent, 'local' selection map\n\n // Create a unique 32-bit color to identify a feature\n // Workers independently create/modify selection colors in their own threads, but we also\n // need the main thread to know where each feature color originated. To accomplish this,\n // we partition the map by setting the 4th component (alpha channel) to the worker's id.\n static makeEntry(tile) {\n // 32-bit color key\n this.map_entry++;\n var ir = this.map_entry & 255;\n var ig = (this.map_entry >> 8) & 255;\n var ib = (this.map_entry >> 16) & 255;\n var ia = this.map_prefix;\n var r = ir / 255;\n var g = ig / 255;\n var b = ib / 255;\n var a = ia / 255;\n var key = (ir + (ig << 8) + (ib << 16) + (ia << 24)) >>> 0; // need unsigned right shift to convert to positive #\n\n this.map[key] = {\n color: [r, g, b, a],\n };\n this.map_size++;\n\n // Initialize tile-specific tracking info\n if (!this.tiles[tile.key]) {\n this.tiles[tile.key] = {\n entries: [], // set of feature entries in this thread\n tile: { // subset of tile properties to pass back with feature\n key: tile.key,\n coords: tile.coords,\n style_zoom: tile.style_zoom,\n source: tile.source,\n generation: tile.generation\n }\n };\n }\n\n this.tiles[tile.key].entries.push(key);\n\n return this.map[key];\n }\n\n static makeColor(feature, tile, context) {\n var selector = this.makeEntry(tile);\n selector.feature = {\n id: feature.id,\n properties: feature.properties,\n source_name: context.source,\n source_layer: context.layer,\n layers: context.layers,\n tile: this.tiles[tile.key].tile\n };\n\n return selector.color;\n }\n\n static reset(sources) {\n // Clear specific sources\n if (Array.isArray(sources)) {\n sources.forEach(source => this.clearSource(source));\n }\n // Clear all sources\n else {\n this.tiles = {};\n this.map = {};\n this.map_size = 0;\n this.map_entry = 0;\n }\n }\n\n static clearSource(source) {\n for (let key in this.tiles) {\n if (this.tiles[key].tile.source === source) {\n this.clearTile(key);\n }\n }\n }\n\n static clearTile(key) {\n if (this.tiles[key]) {\n this.tiles[key].entries.forEach(k => delete this.map[k]);\n this.map_size -= this.tiles[key].entries.length;\n delete this.tiles[key];\n }\n }\n\n static getMapSize() {\n return this.map_size;\n }\n\n static setPrefix(prefix) {\n this.map_prefix = prefix;\n }\n\n}\n\n// Static properties\nFeatureSelection.map = {}; // this will be unique per module instance (so unique per worker)\nFeatureSelection.tiles = {}; // selection keys, by tile\nFeatureSelection.map_size = 0;\nFeatureSelection.map_entry = 0;\nFeatureSelection.map_prefix = 0; // set by worker to worker id #\nFeatureSelection.defaultColor = [0, 0, 0, 1];\n", "/*jshint worker: true */\nimport Geo from '../geo';\nimport {MethodNotImplemented} from '../utils/errors';\nimport Utils from '../utils/utils';\nimport * as URLs from '../utils/urls';\nimport log from '../utils/log';\n\nexport default class DataSource {\n\n constructor (config, sources) {\n this.config = config; // save original config\n this.sources = sources; // full set of data sources TODO: centralize these like textures?\n this.id = config.id;\n this.name = config.name;\n this.pad_scale = config.pad_scale || 0.0001; // scale tile up by small factor to cover seams\n this.default_winding = null; // winding order will adapt to data source\n this.rasters = []; // attached raster tile sources\n if (Array.isArray(config.rasters)) { // copy unique set of raster sources\n config.rasters.forEach(r => {\n if (this.rasters.indexOf(r) === -1) {\n this.rasters.push(r);\n }\n });\n }\n\n // Optional function to transform source data\n this.transform = config.transform;\n if (typeof this.transform === 'function') {\n this.transform.bind(this);\n }\n\n // Optional additional data to pass to the transform function\n this.extra_data = config.extra_data;\n\n // Optional additional scripts made available to the transform function\n // NOTE: these are loaded alongside the library when the workers are instantiated\n this.scripts = config.scripts;\n\n // overzoom will apply for zooms higher than this\n this.max_zoom = (config.max_zoom != null) ? config.max_zoom : Geo.default_source_max_zoom;\n\n this.setTileSize(config.tile_size);\n this.max_coord_zoom = this.max_zoom + this.zoom_bias;\n\n // no tiles will be requested or displayed outside of these min/max values\n this.min_display_zoom = (config.min_display_zoom != null) ? config.min_display_zoom : 0;\n this.max_display_zoom = (config.max_display_zoom != null) ? config.max_display_zoom : null;\n }\n\n // Create a tile source by type, factory-style\n static create (source, sources) {\n if (DataSource.types[source.type]) {\n return new DataSource.types[source.type](source, sources);\n }\n }\n\n // Check if a data source definition changed\n static changed (source, prev_source) {\n if (!source || !prev_source) {\n return true;\n }\n\n let cur = Object.assign({}, source.config, { id: null }); // null out ids since we don't want to compare them\n let prev = Object.assign({}, prev_source.config, { id: null });\n\n return JSON.stringify(cur) !== JSON.stringify(prev);\n }\n\n // Mercator projection\n static projectData (source) {\n var timer = +new Date();\n for (var t in source.layers) {\n var num_features = source.layers[t].features.length;\n for (var f=0; f < num_features; f++) {\n var feature = source.layers[t].features[f];\n Geo.transformGeometry(feature.geometry, coord => {\n var [x, y] = Geo.latLngToMeters(coord);\n coord[0] = x;\n coord[1] = y;\n });\n }\n }\n\n if (source.debug !== undefined) {\n source.debug.projection = +new Date() - timer;\n }\n }\n\n /**\n Re-scale geometries within each source to internal tile units\n */\n static scaleData (source, {coords: {z}, min, max}) {\n let units_per_meter = Geo.unitsPerMeter(z);\n for (var t in source.layers) {\n var num_features = source.layers[t].features.length;\n for (var f=0; f < num_features; f++) {\n var feature = source.layers[t].features[f];\n Geo.transformGeometry(feature.geometry, coord => {\n coord[0] = (coord[0] - min.x) * units_per_meter;\n coord[1] = (coord[1] - min.y) * units_per_meter * -1; // flip coords positive\n });\n }\n }\n }\n\n load(dest) {\n dest.source_data = {};\n dest.source_data.layers = {};\n dest.pad_scale = this.pad_scale;\n dest.rasters = [...this.rasters]; // copy list of rasters to load for tile\n\n return this._load(dest).then((dest) => {\n // Post-processing\n for (let layer in dest.source_data.layers) {\n let data = dest.source_data.layers[layer];\n if (data && data.features) {\n data.features.forEach(feature => {\n Geo.transformGeometry(feature.geometry, coord => {\n // Flip Y coords\n coord[1] = -coord[1];\n\n // Slightly scale up tile to cover seams\n if (this.pad_scale) {\n coord[0] = Math.round(coord[0] * (1 + this.pad_scale) - (Geo.tile_scale * this.pad_scale/2));\n coord[1] = Math.round(coord[1] * (1 + this.pad_scale) - (Geo.tile_scale * this.pad_scale/2));\n }\n });\n\n // Use first encountered polygon winding order as default for data source\n this.updateDefaultWinding(feature.geometry);\n });\n }\n }\n\n dest.default_winding = this.default_winding || 'CCW';\n return dest;\n });\n }\n\n // Sub-classes must implement\n _load(dest) {\n throw new MethodNotImplemented('_load');\n }\n\n // Set the internal tile size in pixels, e.g. '256px' (default), '512px', etc.\n // Must be a power of 2, and greater than or equal to 256\n setTileSize (tile_size) {\n this.tile_size = tile_size || 256;\n if (typeof this.tile_size !== 'number' || this.tile_size < 256 || !Utils.isPowerOf2(this.tile_size)) {\n log({ level: 'warn', once: true },\n `Data source '${this.name}': 'tile_size' parameter must be a number that is a power of 2 greater than or equal to 256, but was '${tile_size}'`);\n this.tile_size = 256;\n }\n\n // # of zoom levels bigger than 256px tiles - 8 in place of log2(256)\n this.zoom_bias = Math.log2(this.tile_size) - 8;\n }\n\n // Infer winding for data source from first ring of provided geometry\n updateDefaultWinding (geom) {\n if (this.default_winding == null) {\n if (geom.type === 'Polygon') {\n this.default_winding = Geo.ringWinding(geom.coordinates[0]);\n }\n else if (geom.type === 'MultiPolygon') {\n this.default_winding = Geo.ringWinding(geom.coordinates[0][0]);\n }\n }\n return this.default_winding;\n }\n\n // All data sources support a min zoom, tiled sources can subclass for more specific limits (e.g. bounding box)\n includesTile (coords, style_zoom) {\n // Limit by this data source\n if (coords.z < this.min_display_zoom || (this.max_display_zoom != null && style_zoom > this.max_display_zoom)) {\n return false;\n }\n\n // Limit by any dependent raster sources\n for (let r=0; r < this.rasters.length; r++) {\n const source_name = this.rasters[r];\n if (this.sources[source_name] &&\n this.sources[source_name] !== this &&\n !this.sources[source_name].includesTile(coords, coords.z)) {\n return false;\n }\n }\n\n return true;\n }\n\n // Register a new data source type, under a type name\n static register(type_class, type_name) {\n if (!type_class || !type_name) {\n return;\n }\n\n DataSource.types[type_name] = type_class;\n }\n\n}\n\nDataSource.types = {}; // set of supported data source classes, referenced by type name\n\n\n/*** Generic network loading source - abstract class ***/\n\nlet network_request_id = 0; // used to namespace URL requests\n\nexport class NetworkSource extends DataSource {\n\n constructor (source, sources) {\n super(source, sources);\n this.response_type = \"\"; // use to set explicit XHR type\n\n // Add extra URL params, and warn on duplicates\n let [url, dupes] = URLs.addParamsToURL(source.url, source.url_params);\n this.url = url;\n dupes.forEach(([param, value]) => {\n log({ level: 'warn', once: true },\n `Data source '${this.name}': parameter '${param}' already present in URL '${source.url}', ` +\n `skipping value '${param}=${value}' specified in 'url_params'`);\n });\n\n if (typeof this.url !== 'string') {\n throw Error('Network data source must provide a string `url` property');\n }\n }\n\n _load (dest) {\n let url = this.formatUrl(this.url, dest);\n\n let source_data = dest.source_data;\n source_data.url = url;\n dest.debug = dest.debug || {};\n dest.debug.network = +new Date();\n\n return new Promise((resolve, reject) => {\n source_data.error = null;\n // For testing network errors\n // var promise = Utils.io(url, 60 * 100, this.response_type);\n // if (Math.random() < .7) {\n // promise = Promise.reject(Error('fake data source error'));\n // }\n // promise.then((body) => {\n\n let request_id = (network_request_id++) + '-' + url;\n let promise = Utils.io(url, 60 * 1000, this.response_type, 'GET', {}, request_id);\n source_data.request_id = request_id;\n\n promise.then((body) => {\n dest.debug.response_size = body.length || body.byteLength;\n dest.debug.network = +new Date() - dest.debug.network;\n dest.debug.parsing = +new Date();\n this.parseSourceData(dest, source_data, body);\n dest.debug.parsing = +new Date() - dest.debug.parsing;\n resolve(dest);\n }).catch((error) => {\n source_data.error = error.stack;\n resolve(dest); // resolve request but pass along error\n });\n });\n }\n\n // Sub-classes must implement:\n\n formatUrl (url_template, dest) {\n throw new MethodNotImplemented('formatUrl');\n }\n\n parseSourceData (dest, source, reponse) {\n throw new MethodNotImplemented('parseSourceData');\n }\n}\n\n\n/*** Generic network tile loading - abstract class ***/\n\nexport class NetworkTileSource extends NetworkSource {\n\n constructor (source, sources) {\n super(source, sources);\n\n this.tiled = true;\n this.parseBounds(source);\n\n // indicates if source should build geometry tiles, enabled for sources referenced in the scene's layers,\n // and left disabled for sources that are never referenced, or only used as raster textures\n this.builds_geometry_tiles = false;\n\n this.tms = (source.tms === true); // optionally flip tile coords for TMS\n\n // optional list of subdomains to round-robin through\n if (this.url.search('{s}') > -1) {\n if (Array.isArray(source.url_subdomains) && source.url_subdomains.length > 0) {\n this.url_subdomains = source.url_subdomains;\n this.next_url_subdomain = 0;\n }\n else {\n log({ level: 'warn', once: true },\n `Data source '${this.name}': source URL includes '\\{s\\}' subdomain marker ('${this.url}'), but no subdomains ` +\n `were specified in 'url_subdomains' parameter`);\n }\n }\n }\n\n // Get bounds from source config parameters\n parseBounds (source) {\n if (Array.isArray(source.bounds) && source.bounds.length === 4) {\n this.bounds = source.bounds;\n let [w, s, e, n] = this.bounds;\n this.bounds_meters = {\n min: Geo.latLngToMeters([w, n]),\n max: Geo.latLngToMeters([e, s]),\n };\n this.bounds_tiles = { min: {}, max: {} }; // max tile bounds per zoom (lazily evaluated)\n }\n }\n\n // Returns false if tile is outside data source's bounds, true if within\n checkBounds (coords) {\n // Check tile bounds\n if (this.bounds) {\n coords = Geo.wrapTile(coords, { x: true });\n\n let min = this.bounds_tiles.min[coords.z];\n if (!min) {\n min = this.bounds_tiles.min[coords.z] = Geo.tileForMeters(this.bounds_meters.min, coords.z);\n }\n\n let max = this.bounds_tiles.max[coords.z];\n if (!max) {\n max = this.bounds_tiles.max[coords.z] = Geo.tileForMeters(this.bounds_meters.max, coords.z);\n }\n\n if (coords.x < min.x || coords.x > max.x ||\n coords.y < min.y || coords.y > max.y) {\n return false;\n }\n }\n return true;\n }\n\n includesTile (coords, style_zoom) {\n if (!super.includesTile(coords, style_zoom)) {\n return false;\n }\n\n // Check tile bounds\n if (!this.checkBounds(coords)) {\n return false;\n }\n return true;\n }\n\n formatUrl(url_template, tile) {\n let coords = Geo.wrapTile(tile.coords, { x: true });\n\n if (this.tms) {\n coords.y = Math.pow(2, coords.z) - 1 - coords.y; // optionally flip tile coords for TMS\n }\n\n let url = url_template.replace('{x}', coords.x).replace('{y}', coords.y).replace('{z}', coords.z);\n\n if (this.url_subdomains != null) {\n url = url.replace('{s}', this.url_subdomains[this.next_url_subdomain]);\n this.next_url_subdomain = (this.next_url_subdomain + 1) % this.url_subdomains.length;\n }\n return url;\n }\n\n // Checks for the x/y/z tile pattern in URL template\n urlHasTilePattern(url) {\n return url &&\n url.search('{x}') > -1 &&\n url.search('{y}') > -1 &&\n url.search('{z}') > -1;\n }\n\n}\n", "import log from '../utils/log';\nimport DataSource, {NetworkSource, NetworkTileSource} from './data_source';\nimport {decodeMultiPolygon} from './mvt';\nimport Geo from '../geo';\n\n// For tiling GeoJSON client-side\nimport geojsonvt from 'geojson-vt';\n\n/**\n GeoJSON standalone (non-tiled) source\n Uses geojson-vt split into tiles client-side\n*/\n\nexport class GeoJSONSource extends NetworkSource {\n\n constructor(source, sources) {\n super(source, sources);\n this.load_data = null;\n this.tile_indexes = {}; // geojson-vt tile indices, by layer name\n this.max_zoom = Math.max(this.max_zoom || 0, 15); // TODO: max zoom < 15 causes artifacts/no-draw at 20, investigate\n this.setTileSize(512); // auto-tile to 512px tiles for better labelling\n this.pad_scale = 0; // we don't want padding on auto-tiled sources\n }\n\n _load(dest) {\n if (!this.load_data) {\n this.load_data = super._load({ source_data: { layers: {} } }).then(data => {\n // Warn and continue on data source error\n if (data.source_data.error) {\n log('warn', `data source load error(s) for source '${this.name}', URL '${this.url}': ${data.source_data.error}`);\n }\n\n let layers = data.source_data.layers;\n for (let layer_name in layers) {\n this.tile_indexes[layer_name] = geojsonvt(layers[layer_name], {\n maxZoom: this.max_zoom, // max zoom to preserve detail on\n tolerance: 1.5, // simplification tolerance (higher means simpler) NB: half the default to accomodate 512px tiles\n extent: Geo.tile_scale, // tile extent (both width and height)\n buffer: 0.0001 // tile buffer on each side\n });\n }\n\n this.loaded = true;\n return data;\n });\n }\n\n return this.load_data.then(() => {\n for (let layer_name in this.tile_indexes) {\n dest.source_data.layers[layer_name] = this.getTileFeatures(dest, layer_name);\n }\n return dest;\n });\n }\n\n getTileFeatures(tile, layer_name) {\n let coords = Geo.wrapTile(tile.coords, { x: true });\n\n // request a particular tile\n let t = this.tile_indexes[layer_name].getTile(coords.z, coords.x, coords.y);\n\n // Convert from MVT-style JSON struct to GeoJSON\n let collection;\n if (t && t.features) {\n collection = {\n type: 'FeatureCollection',\n features: []\n };\n\n for (let i=0; i < t.features.length; i++) {\n const feature = t.features[i];\n\n // GeoJSON feature\n let f = {\n type: 'Feature',\n geometry: {},\n properties: feature.tags\n };\n\n if (feature.type === 1) {\n f.geometry.coordinates = feature.geometry.map(coord => [coord[0], coord[1]]);\n f.geometry.type = 'MultiPoint';\n }\n else if (feature.type === 2 || feature.type === 3) {\n f.geometry.coordinates = feature.geometry.map(ring =>\n ring.map(coord => [coord[0], coord[1]])\n );\n\n if (feature.type === 2) {\n f.geometry.type = 'MultiLineString';\n }\n else {\n f.geometry = decodeMultiPolygon(f.geometry); // un-flatten rings\n if (f.geometry == null) { // skip polys that couldn't be decoded (e.g. degenerate)\n continue;\n }\n }\n }\n else {\n continue;\n }\n\n collection.features.push(f);\n }\n }\n\n return collection;\n }\n\n formatUrl (dest) {\n return this.url;\n }\n\n parseSourceData (tile, source, response) {\n let parsed_response = JSON.parse(response);\n let layers = this.getLayers(parsed_response);\n source.layers = this.preprocessLayers(layers);\n }\n\n preprocessLayers (layers){\n for (let key in layers) {\n let layer = layers[key];\n this.preprocessFeatures(layer.features);\n }\n\n // Apply optional data transform\n if (typeof this.transform === 'function') {\n if (Object.keys(layers).length === 1 && layers._default) {\n layers._default = this.transform(layers._default, this.extra_data); // single-layer\n }\n else {\n layers = this.transform(layers, this.extra_data); // multiple layers\n }\n }\n\n return layers;\n }\n\n // Preprocess features. Currently used to add a new \"centroid\" feature for polygon labeling\n preprocessFeatures (features) {\n // Define centroids for polygons for centroid label placement\n // Avoids redundant label placement for each generated tile at higher zoom levels\n if (this.config.generate_label_centroids){\n let features_centroid = [];\n let centroid_properties = {\"label_placement\" : true};\n\n features.forEach(feature => {\n if (feature.geometry == null) {\n return; // no geometry (which is valid GeoJSON)\n }\n\n let coordinates, centroid_feature;\n switch (feature.geometry.type) {\n case 'Polygon':\n coordinates = feature.geometry.coordinates;\n centroid_feature = getCentroidFeatureForPolygon(coordinates, feature.properties, centroid_properties);\n features_centroid.push(centroid_feature);\n break;\n case 'MultiPolygon':\n // Add centroid feature for largest polygon\n coordinates = feature.geometry.coordinates;\n let max_area = -Infinity;\n let max_area_index = 0;\n for (let index = 0; index < coordinates.length; index++) {\n let area = Geo.polygonArea(coordinates[index]);\n if (area > max_area) {\n max_area = area;\n max_area_index = index;\n }\n }\n centroid_feature = getCentroidFeatureForPolygon(coordinates[max_area_index], feature.properties, centroid_properties);\n features_centroid.push(centroid_feature);\n break;\n }\n });\n\n // append centroid features to features array\n features_centroid = features_centroid.filter(x => x); // remove null features\n Array.prototype.push.apply(features, features_centroid);\n }\n\n return features;\n }\n\n // Detect single or multiple layers in returned data\n getLayers (data) {\n if (data.type === 'Feature') {\n return {\n _default: {\n type: 'FeatureCollection',\n features: [data]\n }\n };\n }\n else if (data.type === 'FeatureCollection') {\n return {\n _default: data\n };\n }\n else {\n return data;\n }\n }\n\n}\n\n/**\n GeoJSON vector tiles\n @class GeoJSONTileSource\n*/\nexport class GeoJSONTileSource extends NetworkTileSource {\n\n constructor(source, sources) {\n super(source, sources);\n\n // Check for URL tile pattern, if not found, treat as standalone GeoJSON/TopoJSON object\n if (!this.urlHasTilePattern(this.url)) {\n // Check instance type from parent class\n if (source.type === 'GeoJSON') {\n // Replace instance type\n return new GeoJSONSource(source);\n }\n else {\n // Pass back to parent class to instantiate\n return null;\n }\n }\n return this;\n }\n\n parseSourceData (tile, source, response) {\n let data = JSON.parse(response);\n this.prepareGeoJSON(data, tile, source);\n }\n\n prepareGeoJSON (data, tile, source) {\n // Apply optional data transform\n if (typeof this.transform === 'function') {\n data = this.transform(data, this.extra_data);\n }\n\n source.layers = GeoJSONSource.prototype.getLayers(data);\n\n // A \"synthetic\" tile that adjusts the tile min anchor to account for tile longitude wrapping\n let anchor = {\n coords: tile.coords,\n min: Geo.metersForTile(Geo.wrapTile(tile.coords, { x: true }))\n };\n\n DataSource.projectData(source); // mercator projection\n DataSource.scaleData(source, anchor); // re-scale from meters to local tile coords\n }\n\n}\n\nDataSource.register(GeoJSONTileSource, 'GeoJSON'); // prefered shorter name\n\n// Helper function to create centroid point feature from polygon coordinates and provided feature meta-data\nfunction getCentroidFeatureForPolygon (coordinates, properties, newProperties) {\n let centroid = Geo.centroid(coordinates);\n if (!centroid) {\n return;\n }\n\n // clone properties and mixix newProperties\n let centroid_properties = {};\n Object.assign(centroid_properties, properties, newProperties);\n\n return {\n type: \"Feature\",\n properties: centroid_properties,\n geometry: {\n type: \"Point\",\n coordinates: centroid\n }\n };\n}\n", @@ -516,21 +514,21 @@ "import DataSource, {NetworkTileSource} from './data_source';\nimport Tile from '../tile';\nimport Geo from '../geo';\n\nexport class RasterTileSource extends NetworkTileSource {\n\n constructor(source, sources) {\n super(source, sources);\n\n if (this.rasters.indexOf(this.name) === -1) {\n this.rasters.unshift(this.name); // add this raster as the first\n }\n this.filtering = source.filtering; // optional texture filtering (nearest, linear, mipmap)\n\n // save texture objects by tile key, so URL remains stable if tile is built multiple times,\n // e.g. avoid re-loading the same tile texture under a different subdomain when using tile hosts\n this.textures = {};\n }\n\n load(tile) {\n tile.source_data = {};\n tile.source_data.layers = {};\n tile.pad_scale = this.pad_scale;\n tile.rasters = [...this.rasters]; // copy list of rasters to load for tile\n\n // Generate a single quad that fills the entire tile\n let scale = Geo.tile_scale;\n tile.source_data.layers = {\n _default: {\n type: 'FeatureCollection',\n features: [{\n geometry: {\n type: 'Polygon',\n coordinates: [[\n [0, 0], [scale, 0],\n [scale, -scale], [0, -scale], [0, 0]\n ]]\n },\n properties: {}\n }]\n }\n };\n\n tile.default_winding = 'CW';\n return Promise.resolve(tile);\n }\n\n // Return texture info for a raster tile\n tileTexture (tile) {\n let key = tile.coords.key;\n if (!this.textures[key]) {\n let coords = Tile.coordinateWithMaxZoom(tile.coords, this.max_zoom);\n let url = this.formatUrl(this.url, { coords });\n this.textures[key] = { url, filtering: this.filtering, coords };\n }\n return this.textures[key];\n }\n\n}\n\nDataSource.register(RasterTileSource, 'Raster');\n", "import DataSource from './data_source';\nimport {GeoJSONSource, GeoJSONTileSource} from './geojson';\n\nimport * as topojson from 'topojson-client';\n\n/**\n TopoJSON standalone (non-tiled) source\n Uses geojson-vt split into tiles client-side\n*/\n\nexport class TopoJSONSource extends GeoJSONSource {\n\n parseSourceData (tile, source, response) {\n let data = JSON.parse(response);\n data = this.toGeoJSON(data);\n\n let layers = this.getLayers(data);\n super.preprocessLayers(layers);\n source.layers = layers;\n }\n\n toGeoJSON (data) {\n // Single layer\n if (data.objects &&\n Object.keys(data.objects).length === 1) {\n let layer = Object.keys(data.objects)[0];\n data = getTopoJSONFeature(data, data.objects[layer]);\n }\n // Multiple layers\n else {\n let layers = {};\n for (let key in data.objects) {\n layers[key] = getTopoJSONFeature(data, data.objects[key]);\n }\n data = layers;\n }\n return data;\n }\n\n}\n\nfunction getTopoJSONFeature (topology, object) {\n let feature = topojson.feature(topology, object);\n\n // Convert single feature to a feature collection\n if (feature.type === 'Feature') {\n feature = {\n type: 'FeatureCollection',\n features: [feature]\n };\n }\n return feature;\n}\n\n\n/**\n TopoJSON vector tiles\n @class TopoJSONTileSource\n*/\nexport class TopoJSONTileSource extends GeoJSONTileSource {\n\n constructor(source, sources) {\n super(source, sources);\n\n // Replace with non-tiled source if tiled source failed to instantiate\n if (!this.urlHasTilePattern(this.url)) {\n return new TopoJSONSource(source);\n }\n }\n\n parseSourceData (tile, source, response) {\n let data = JSON.parse(response);\n data = TopoJSONSource.prototype.toGeoJSON(data);\n this.prepareGeoJSON(data, tile, source);\n }\n\n}\n\nDataSource.register(TopoJSONTileSource, 'TopoJSON'); // prefered shorter name\n", "function notNull(x) { return x != null; }\nfunction wrap(x) { return '(' + x + ')';}\n\nfunction maybeQuote(value) {\n if (typeof value === 'string') {\n return '\"' + value + '\"';\n }\n return value;\n}\n\nfunction lookUp(key) {\n if (key[0] === '$') {\n return 'context[\\'' + key.substring(1) + '\\']';\n }\n return 'context.feature.properties[\\'' + key + '\\']';\n}\n\nfunction nullValue(key, value) {\n return ' true ';\n}\n\nfunction propertyEqual(key, value) {\n return wrap(maybeQuote(value) + ' === ' + lookUp(key));\n}\n\nfunction propertyOr(key, values) {\n return wrap(values.map(function (x) { return propertyEqual(key, x); }).join(' || '));\n}\n\nfunction printNested(values, joiner) {\n return wrap(values.filter(notNull).map(function (x) {\n return wrap(x.join(' && '));\n }).join(' ' + joiner + ' '));\n}\n\nfunction any(_, values, options) {\n return (values && values.length > 0) ? printNested(values.map(function(v) { return parseFilter(v, options); }), '||') : 'true';\n}\n\nfunction all(_, values, options) {\n return (values && values.length > 0) ? printNested(values.map(function(v) { return parseFilter(v, options); }), '&&') : 'true';\n}\n\nfunction not(key, value, options) {\n return '!' + wrap(parseFilter(value, options).join(' && '));\n}\n\nfunction none(key, values, options) {\n return '!' + wrap(any(null, values, options));\n}\n\nfunction propertyMatchesBoolean(key, value) {\n return wrap(lookUp(key) + (value ? ' != ' : ' == ') + 'null');\n}\n\nfunction rangeMatch(key, values, options) {\n var expressions = [];\n var transform = options && (typeof options.rangeTransform === 'function') && options.rangeTransform;\n\n if (values.max) {\n var max = transform ? transform(values.max) : values.max;\n expressions.push('' + lookUp(key) + ' < ' + max);\n }\n\n if (values.min) {\n var min = transform ? min = transform(values.min) : values.min;\n expressions.push('' + lookUp(key) + ' >= ' + min);\n }\n\n return wrap(expressions.join(' && '));\n}\n\nfunction parseFilter(filter, options) {\n var filterAST = [];\n\n // Function filter\n if (typeof filter === 'function') {\n return [wrap(filter.toString() + '(context)')];\n }\n // Array filter, implicit 'any'\n else if (Array.isArray(filter)) {\n return [any(null, filter, options)];\n }\n // Null filter object\n else if (filter == null) {\n return ['true'];\n }\n\n // Object filter, e.g. implicit 'all'\n var keys = Object.keys(filter);\n for (var k=0; k < keys.length; k++) {\n var key = keys[k];\n\n var value = filter[key],\n type = typeof value;\n if (type === 'string' || type === 'number') {\n filterAST.push(propertyEqual(key, value));\n } else if (type === 'boolean') {\n filterAST.push(propertyMatchesBoolean(key, value));\n } else if (key === 'not') {\n filterAST.push(not(key, value, options));\n } else if (key === 'any') {\n filterAST.push(any(key, value, options));\n } else if (key === 'all') {\n filterAST.push(all(key, value, options));\n } else if (key === 'none') {\n filterAST.push(none(key, value, options));\n } else if (Array.isArray(value)) {\n filterAST.push(propertyOr(key, value));\n } else if (type === 'object' && value != null) {\n if (value.max || value.min) {\n filterAST.push(rangeMatch(key, value, options));\n }\n } else if (value == null) {\n filterAST.push(nullValue(key, value));\n } else {\n throw new Error('Unknown Query syntax: ' + value);\n }\n }\n\n return keys.length === 0 ? ['true'] : filterAST;\n}\n\nfunction filterToString(filterAST) {\n return wrap(filterAST.join(' && '));\n}\n\nexport function buildFilter(filter, options) {\n if (filter == null) { return function () { return true; }; }\n // jshint evil: true\n return new Function('context', 'return ' + filterToString(parseFilter(filter, options)) + ';');\n}\n", - "import {StyleParser} from './style_parser';\nimport Utils from '../utils/utils';\nimport log from '../utils/log';\nimport mergeObjects from '../utils/merge';\nimport {buildFilter} from './filter';\n\n// N.B.: 'visible' is legacy compatibility for 'enabled'\nconst reserved = ['filter', 'draw', 'visible', 'enabled', 'data'];\n\nlet layer_cache = {};\nexport function layerCache () {\n return layer_cache;\n}\n\nfunction cacheKey (layers) {\n if (layers.length > 1) {\n var k = layers[0];\n for (var i=1; i < layers.length; i++) {\n k += '/' + layers[i];\n }\n\n return k;\n }\n return layers[0];\n}\n\n// Merge matching layer trees into a final draw group\nexport function mergeTrees(matchingTrees, group) {\n let draws, treeDepth = 0;\n\n // Find deepest tree\n for (let t=0; t < matchingTrees.length; t++) {\n if (matchingTrees[t].length > treeDepth) {\n treeDepth = matchingTrees[t].length;\n }\n }\n\n // No layers to parse\n if (treeDepth === 0) {\n return null;\n }\n\n // Merged draw group object\n let draw = {\n visible: true, // visible by default\n };\n\n // Iterate trees in parallel\n for (let x=0; x < treeDepth; x++) {\n // Pull out the requested draw group, for each tree, at this depth (avoiding duplicates at the same level in tree)\n draws = [];\n matchingTrees.forEach(tree => {\n if (tree[x] && tree[x][group] && draws.indexOf(tree[x][group]) === -1) {\n draws.push(tree[x][group]);\n }\n });\n if (draws.length === 0) {\n continue;\n }\n\n // Sort by layer name before merging, so layers are applied deterministically\n // when multiple layers modify the same properties\n draws.sort((a, b) => (a && a.layer_name) > (b && b.layer_name) ? 1 : -1);\n\n // Merge draw objects\n mergeObjects(draw, ...draws);\n\n // Remove layer names, they were only used transiently to sort and calculate final layer\n // (final merged names will not be accurate since only one tree can win)\n delete draw.layer_name;\n }\n\n // Short-circuit if not visible\n if (draw.visible === false) {\n return null;\n }\n\n return draw;\n}\n\nconst blacklist = ['any', 'all', 'not', 'none'];\n\nclass Layer {\n\n constructor({ layer, name, parent, draw, visible, enabled, filter, styles }) {\n this.id = Layer.id++;\n this.config_data = layer.data;\n this.parent = parent;\n this.name = name;\n this.full_name = this.parent ? (this.parent.full_name + ':' + this.name) : this.name;\n this.draw = draw;\n this.filter = filter;\n this.styles = styles;\n this.is_built = false;\n\n enabled = (enabled === undefined) ? visible : enabled; // `visible` property is backwards compatible for `enabled`\n if (this.parent && this.parent.visible === false) {\n this.enabled = false; // all descendants of disabled layer are also disabled\n }\n else {\n this.enabled = (enabled !== false); // layer is enabled unless explicitly set to disabled\n }\n\n // Denormalize layer name to draw groups\n if (this.draw) {\n for (let group in this.draw) {\n this.draw[group] = (this.draw[group] == null) ? {} : this.draw[group];\n if (typeof this.draw[group] !== 'object') {\n // Invalid draw group\n let msg = `Draw group '${group}' for layer ${this.full_name} is invalid, must be an object, `;\n msg += `but was set to \\`${group}: ${this.draw[group]}\\` instead`;\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n\n delete this.draw[group];\n }\n else {\n this.draw[group].layer_name = this.full_name;\n }\n }\n }\n }\n\n build () {\n log('trace', `Building layer '${this.full_name}'`);\n this.buildFilter();\n this.buildDraw();\n this.is_built = true;\n }\n\n buildDraw() {\n this.draw = Utils.stringsToFunctions(this.draw, StyleParser.wrapFunction);\n this.calculatedDraw = calculateDraw(this);\n }\n\n buildFilter() {\n this.filter_original = this.filter;\n this.filter = Utils.stringsToFunctions(this.filter, StyleParser.wrapFunction);\n\n let type = typeof this.filter;\n if (this.filter != null && type !== 'object' && type !== 'function') {\n // Invalid filter\n let msg = `Filter for layer ${this.full_name} is invalid, filter value must be an object or function, `;\n msg += `but was set to \\`filter: ${this.filter}\\` instead`;\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n return;\n }\n\n try {\n this.buildZooms();\n this.buildPropMatches();\n if (this.filter != null && (typeof this.filter === 'function' || Object.keys(this.filter).length > 0)) {\n this.filter = buildFilter(this.filter, FilterOptions);\n }\n else {\n this.filter = null;\n }\n }\n catch(e) {\n // Invalid filter\n let msg = `Filter for layer ${this.full_name} is invalid, \\`filter: ${JSON.stringify(this.filter)}\\` `;\n msg += `failed with error '${e.message}', stack trace: ${e.stack}`;\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n }\n }\n\n // Zooms often cull large swaths of the layer tree, so they get special treatment and are checked first\n buildZooms() {\n let zoom = this.filter && this.filter.$zoom;\n let ztype = typeof zoom;\n if (zoom != null && ztype !== 'function') { // don't accelerate function-based filters\n this.zooms = {};\n\n if (ztype === 'number') {\n this.zooms[zoom] = true;\n }\n else if (Array.isArray(zoom)) {\n for (let z=0; z < zoom.length; z++) {\n this.zooms[zoom[z]] = true;\n }\n }\n else if (ztype === 'object' && (zoom.min != null || zoom.max != null)) {\n let zmin = zoom.min || 0;\n let zmax = zoom.max || 25; // TODO: replace constant for max possible zoom\n for (let z=zmin; z < zmax; z++) {\n this.zooms[z] = true;\n }\n }\n\n delete this.filter.$zoom; // don't process zoom through usual generic filter logic\n }\n }\n\n buildPropMatches() {\n if (!this.filter || Array.isArray(this.filter) || typeof this.filter === 'function') {\n return;\n }\n\n Object.keys(this.filter).forEach(key => {\n if (blacklist.indexOf(key) === -1) {\n let val = this.filter[key];\n let type = typeof val;\n let array = Array.isArray(val);\n\n if (!(array || type === 'string' || type === 'number')) {\n return;\n }\n\n if (key[0] === '$') {\n // Context property\n this.context_prop_matches = this.context_prop_matches || [];\n this.context_prop_matches.push([key.substring(1), array ? val : [val]]);\n }\n else {\n // Feature property\n this.feature_prop_matches = this.feature_prop_matches || [];\n this.feature_prop_matches.push([key, array ? val : [val]]);\n }\n\n delete this.filter[key];\n }\n });\n }\n\n doPropMatches (context) {\n if (this.feature_prop_matches) {\n for (let r=0; r < this.feature_prop_matches.length; r++) {\n let match = this.feature_prop_matches[r];\n let val = context.feature.properties[match[0]];\n if (val == null || match[1].indexOf(val) === -1) {\n return false;\n }\n }\n }\n\n if (this.context_prop_matches) {\n for (let r=0; r < this.context_prop_matches.length; r++) {\n let match = this.context_prop_matches[r];\n let val = context[match[0]];\n if (val == null || match[1].indexOf(val) === -1) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n doesMatch (context) {\n if (!this.enabled) {\n return false;\n }\n\n if (!this.is_built) {\n this.build();\n }\n\n // zoom pre-filter: skip rest of filter if out of layer zoom range\n if (this.zooms != null && !this.zooms[context.zoom]) {\n return false;\n }\n\n // direct feature property matches\n if (!this.doPropMatches(context)) {\n return false;\n }\n\n // any remaining filter (more complex matches or dynamic function)\n let match;\n if (this.filter instanceof Function){\n try {\n match = this.filter(context);\n }\n catch (error) {\n // Filter function error\n let msg = `Filter for this ${this.full_name}: \\`filter: ${this.filter_original}\\` `;\n msg += `failed with error '${error.message}', stack trace: ${error.stack}`;\n log('error', msg, context.feature);\n }\n }\n else {\n match = this.filter == null;\n }\n\n if (match) {\n if (this.children_to_parse) {\n parseLayerChildren(this, this.children_to_parse, this.styles);\n delete this.children_to_parse;\n }\n\n return true;\n }\n return false;\n }\n\n}\n\nLayer.id = 0;\n\n\nexport class LayerLeaf extends Layer {\n constructor (config) {\n super(config);\n this.is_leaf = true;\n }\n\n}\n\nexport class LayerTree extends Layer {\n constructor (config) {\n super(config);\n this.is_tree = true;\n this.layers = config.layers || [];\n }\n\n addLayer (layer) {\n this.layers.push(layer);\n }\n\n buildDrawGroups (context) {\n let layers = [], layer_ids = [];\n matchFeature(context, [this], layers, layer_ids);\n\n if (layers.length > 0) {\n let cache_key = cacheKey(layer_ids);\n\n // Only evaluate each layer combination once (undefined means not yet evaluated,\n // null means evaluated with no draw object)\n if (layer_cache[cache_key] === undefined) {\n // Find all the unique visible draw blocks for this layer tree\n let draw_groups = layers.map(x => x && x.visible !== false && x.calculatedDraw);\n let draw_keys = {};\n\n for (let r=0; r < draw_groups.length; r++) {\n let stack = draw_groups[r];\n if (!stack) {\n continue;\n }\n for (let g=0; g < stack.length; g++) {\n let group = stack[g];\n for (let key in group) {\n draw_keys[key] = true;\n }\n }\n }\n\n // Calculate each draw group\n for (let draw_key in draw_keys) {\n layer_cache[cache_key] = layer_cache[cache_key] || {};\n layer_cache[cache_key][draw_key] = mergeTrees(draw_groups, draw_key);\n\n // Only save the ones that weren't null\n if (!layer_cache[cache_key][draw_key]) {\n delete layer_cache[cache_key][draw_key];\n }\n else {\n layer_cache[cache_key][draw_key].key = cache_key + '/' + draw_key;\n layer_cache[cache_key][draw_key].layers = layers.map(x => x && x.full_name);\n layer_cache[cache_key][draw_key].group = draw_key;\n }\n }\n\n // No layers evaluated\n if (layer_cache[cache_key] && Object.keys(layer_cache[cache_key]).length === 0) {\n layer_cache[cache_key] = null;\n }\n }\n return layer_cache[cache_key];\n }\n }\n\n}\n\nexport const FilterOptions = {\n // Handle unit conversions on filter ranges\n rangeTransform(val) {\n if (typeof val === 'string' && val.trim().slice(-3) === 'px2') {\n return `${parseFloat(val)} * context.meters_per_pixel_sq`;\n }\n return val;\n }\n};\n\nexport function isReserved(key) {\n return reserved.indexOf(key) > -1;\n}\n\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\nexport function groupProps(obj) {\n let reserved = {}, children = {};\n\n for (let key in obj) {\n if (isReserved(key)) {\n reserved[key] = obj[key];\n } else {\n children[key] = obj[key];\n }\n }\n return [reserved, children];\n}\n\nexport function calculateDraw(layer) {\n\n let draw = [];\n\n if (layer.parent) {\n let cs = layer.parent.calculatedDraw || [];\n draw.push(...cs);\n }\n\n draw.push(layer.draw);\n return draw;\n}\n\nexport function parseLayerNode(name, layer, parent, styles) {\n\n layer = (layer == null) ? {} : layer;\n\n let properties = { name, layer, parent, styles };\n let [reserved, children] = groupProps(layer);\n let empty = isEmpty(children);\n let Create;\n\n if (empty && parent != null) {\n Create = LayerLeaf;\n } else {\n Create = LayerTree;\n }\n\n let r = new Create(Object.assign(properties, reserved));\n\n // only process child layers if this layer is enabled\n if (r.enabled) {\n if (parent) {\n parent.addLayer(r);\n }\n r.children_to_parse = empty ? null : children;\n }\n\n return r;\n}\n\nfunction parseLayerChildren (parent, children, styles) {\n for (let key in children) {\n let child = children[key];\n if (typeof child === 'object' && !Array.isArray(child)) {\n parseLayerNode(key, child, parent, styles);\n } else {\n // Invalid layer\n let msg = `Layer value must be an object: cannot create layer '${key}: ${JSON.stringify(child)}'`;\n msg += `, under parent layer '${parent.full_name}'.`;\n\n // If the parent is a style name, this may be an incorrectly nested layer\n if (styles[parent.name]) {\n msg += ` The parent name '${parent.name}' is also the name of a style, did you mean to create a 'draw' group`;\n if (parent.parent) {\n msg += ` under '${parent.parent.name}'`;\n }\n msg += ` instead?`;\n }\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n }\n }\n}\n\n\nexport function parseLayers (layers, styles) {\n layer_cache = {}; // clear layer cache\n let layer_trees = {};\n\n for (let key in layers) {\n let layer = layers[key];\n if (layer) {\n layer_trees[key] = parseLayerNode(key, layer, null, styles);\n }\n }\n\n return layer_trees;\n}\n\nexport function matchFeature(context, layers, collected_layers, collected_layers_ids) {\n let matched = false;\n let childMatched = false;\n\n if (layers.length === 0) { return; }\n\n for (let r=0; r < layers.length; r++) {\n let current = layers[r];\n\n if (current.is_leaf) {\n if (current.doesMatch(context)) {\n matched = true;\n collected_layers.push(current);\n collected_layers_ids.push(current.id);\n }\n\n } else if (current.is_tree) {\n if (current.doesMatch(context)) {\n matched = true;\n\n childMatched = matchFeature(\n context,\n current.layers,\n collected_layers,\n collected_layers_ids\n );\n\n if (!childMatched) {\n collected_layers.push(current);\n collected_layers_ids.push(current.id);\n }\n }\n }\n }\n\n return matched;\n}\n", + "import StyleParser from './style_parser';\nimport Utils from '../utils/utils';\nimport log from '../utils/log';\nimport mergeObjects from '../utils/merge';\nimport {buildFilter} from './filter';\n\n// N.B.: 'visible' is legacy compatibility for 'enabled'\nconst reserved = ['filter', 'draw', 'visible', 'enabled', 'data'];\n\nlet layer_cache = {};\nexport function layerCache () {\n return layer_cache;\n}\n\nfunction cacheKey (layers) {\n if (layers.length > 1) {\n var k = layers[0];\n for (var i=1; i < layers.length; i++) {\n k += '/' + layers[i];\n }\n\n return k;\n }\n return layers[0];\n}\n\n// Merge matching layer trees into a final draw group\nexport function mergeTrees(matchingTrees, group) {\n let draws, treeDepth = 0;\n\n // Find deepest tree\n for (let t=0; t < matchingTrees.length; t++) {\n if (matchingTrees[t].length > treeDepth) {\n treeDepth = matchingTrees[t].length;\n }\n }\n\n // No layers to parse\n if (treeDepth === 0) {\n return null;\n }\n\n // Merged draw group object\n let draw = {\n visible: true, // visible by default\n };\n\n // Iterate trees in parallel\n for (let x=0; x < treeDepth; x++) {\n // Pull out the requested draw group, for each tree, at this depth (avoiding duplicates at the same level in tree)\n draws = [];\n matchingTrees.forEach(tree => {\n if (tree[x] && tree[x][group] && draws.indexOf(tree[x][group]) === -1) {\n draws.push(tree[x][group]);\n }\n });\n if (draws.length === 0) {\n continue;\n }\n\n // Sort by layer name before merging, so layers are applied deterministically\n // when multiple layers modify the same properties\n draws.sort((a, b) => (a && a.layer_name) > (b && b.layer_name) ? 1 : -1);\n\n // Merge draw objects\n mergeObjects(draw, ...draws);\n\n // Remove layer names, they were only used transiently to sort and calculate final layer\n // (final merged names will not be accurate since only one tree can win)\n delete draw.layer_name;\n }\n\n // Short-circuit if not visible\n if (draw.visible === false) {\n return null;\n }\n\n return draw;\n}\n\nconst blacklist = ['any', 'all', 'not', 'none'];\n\nclass Layer {\n\n constructor({ layer, name, parent, draw, visible, enabled, filter, styles }) {\n this.id = Layer.id++;\n this.config_data = layer.data;\n this.parent = parent;\n this.name = name;\n this.full_name = this.parent ? (this.parent.full_name + ':' + this.name) : this.name;\n this.draw = draw;\n this.filter = filter;\n this.styles = styles;\n this.is_built = false;\n\n enabled = (enabled === undefined) ? visible : enabled; // `visible` property is backwards compatible for `enabled`\n if (this.parent && this.parent.visible === false) {\n this.enabled = false; // all descendants of disabled layer are also disabled\n }\n else {\n this.enabled = (enabled !== false); // layer is enabled unless explicitly set to disabled\n }\n\n // Denormalize layer name to draw groups\n if (this.draw) {\n for (let group in this.draw) {\n this.draw[group] = (this.draw[group] == null) ? {} : this.draw[group];\n if (typeof this.draw[group] !== 'object') {\n // Invalid draw group\n let msg = `Draw group '${group}' for layer ${this.full_name} is invalid, must be an object, `;\n msg += `but was set to \\`${group}: ${this.draw[group]}\\` instead`;\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n\n delete this.draw[group];\n }\n else {\n this.draw[group].layer_name = this.full_name;\n }\n }\n }\n }\n\n build () {\n log('trace', `Building layer '${this.full_name}'`);\n this.buildFilter();\n this.buildDraw();\n this.is_built = true;\n }\n\n buildDraw() {\n this.draw = Utils.stringsToFunctions(this.draw, StyleParser.wrapFunction);\n this.calculatedDraw = calculateDraw(this);\n }\n\n buildFilter() {\n this.filter_original = this.filter;\n this.filter = Utils.stringsToFunctions(this.filter, StyleParser.wrapFunction);\n\n let type = typeof this.filter;\n if (this.filter != null && type !== 'object' && type !== 'function') {\n // Invalid filter\n let msg = `Filter for layer ${this.full_name} is invalid, filter value must be an object or function, `;\n msg += `but was set to \\`filter: ${this.filter}\\` instead`;\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n return;\n }\n\n try {\n this.buildZooms();\n this.buildPropMatches();\n if (this.filter != null && (typeof this.filter === 'function' || Object.keys(this.filter).length > 0)) {\n this.filter = buildFilter(this.filter, FilterOptions);\n }\n else {\n this.filter = null;\n }\n }\n catch(e) {\n // Invalid filter\n let msg = `Filter for layer ${this.full_name} is invalid, \\`filter: ${JSON.stringify(this.filter)}\\` `;\n msg += `failed with error '${e.message}', stack trace: ${e.stack}`;\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n }\n }\n\n // Zooms often cull large swaths of the layer tree, so they get special treatment and are checked first\n buildZooms() {\n let zoom = this.filter && this.filter.$zoom;\n let ztype = typeof zoom;\n if (zoom != null && ztype !== 'function') { // don't accelerate function-based filters\n this.zooms = {};\n\n if (ztype === 'number') {\n this.zooms[zoom] = true;\n }\n else if (Array.isArray(zoom)) {\n for (let z=0; z < zoom.length; z++) {\n this.zooms[zoom[z]] = true;\n }\n }\n else if (ztype === 'object' && (zoom.min != null || zoom.max != null)) {\n let zmin = zoom.min || 0;\n let zmax = zoom.max || 25; // TODO: replace constant for max possible zoom\n for (let z=zmin; z < zmax; z++) {\n this.zooms[z] = true;\n }\n }\n\n delete this.filter.$zoom; // don't process zoom through usual generic filter logic\n }\n }\n\n buildPropMatches() {\n if (!this.filter || Array.isArray(this.filter) || typeof this.filter === 'function') {\n return;\n }\n\n Object.keys(this.filter).forEach(key => {\n if (blacklist.indexOf(key) === -1) {\n let val = this.filter[key];\n let type = typeof val;\n let array = Array.isArray(val);\n\n if (!(array || type === 'string' || type === 'number')) {\n return;\n }\n\n if (key[0] === '$') {\n // Context property\n this.context_prop_matches = this.context_prop_matches || [];\n this.context_prop_matches.push([key.substring(1), array ? val : [val]]);\n }\n else {\n // Feature property\n this.feature_prop_matches = this.feature_prop_matches || [];\n this.feature_prop_matches.push([key, array ? val : [val]]);\n }\n\n delete this.filter[key];\n }\n });\n }\n\n doPropMatches (context) {\n if (this.feature_prop_matches) {\n for (let r=0; r < this.feature_prop_matches.length; r++) {\n let match = this.feature_prop_matches[r];\n let val = context.feature.properties[match[0]];\n if (val == null || match[1].indexOf(val) === -1) {\n return false;\n }\n }\n }\n\n if (this.context_prop_matches) {\n for (let r=0; r < this.context_prop_matches.length; r++) {\n let match = this.context_prop_matches[r];\n let val = context[match[0]];\n if (val == null || match[1].indexOf(val) === -1) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n doesMatch (context) {\n if (!this.enabled) {\n return false;\n }\n\n if (!this.is_built) {\n this.build();\n }\n\n // zoom pre-filter: skip rest of filter if out of layer zoom range\n if (this.zooms != null && !this.zooms[context.zoom]) {\n return false;\n }\n\n // direct feature property matches\n if (!this.doPropMatches(context)) {\n return false;\n }\n\n // any remaining filter (more complex matches or dynamic function)\n let match;\n if (this.filter instanceof Function){\n try {\n match = this.filter(context);\n }\n catch (error) {\n // Filter function error\n let msg = `Filter for this ${this.full_name}: \\`filter: ${this.filter_original}\\` `;\n msg += `failed with error '${error.message}', stack trace: ${error.stack}`;\n log('error', msg, context.feature);\n }\n }\n else {\n match = this.filter == null;\n }\n\n if (match) {\n if (this.children_to_parse) {\n parseLayerChildren(this, this.children_to_parse, this.styles);\n delete this.children_to_parse;\n }\n\n return true;\n }\n return false;\n }\n\n}\n\nLayer.id = 0;\n\n\nexport class LayerLeaf extends Layer {\n constructor (config) {\n super(config);\n this.is_leaf = true;\n }\n\n}\n\nexport class LayerTree extends Layer {\n constructor (config) {\n super(config);\n this.is_tree = true;\n this.layers = config.layers || [];\n }\n\n addLayer (layer) {\n this.layers.push(layer);\n }\n\n buildDrawGroups (context) {\n let layers = [], layer_ids = [];\n matchFeature(context, [this], layers, layer_ids);\n\n if (layers.length > 0) {\n let cache_key = cacheKey(layer_ids);\n\n // Only evaluate each layer combination once (undefined means not yet evaluated,\n // null means evaluated with no draw object)\n if (layer_cache[cache_key] === undefined) {\n // Find all the unique visible draw blocks for this layer tree\n let draw_groups = layers.map(x => x && x.visible !== false && x.calculatedDraw);\n let draw_keys = {};\n\n for (let r=0; r < draw_groups.length; r++) {\n let stack = draw_groups[r];\n if (!stack) {\n continue;\n }\n for (let g=0; g < stack.length; g++) {\n let group = stack[g];\n for (let key in group) {\n draw_keys[key] = true;\n }\n }\n }\n\n // Calculate each draw group\n for (let draw_key in draw_keys) {\n layer_cache[cache_key] = layer_cache[cache_key] || {};\n layer_cache[cache_key][draw_key] = mergeTrees(draw_groups, draw_key);\n\n // Only save the ones that weren't null\n if (!layer_cache[cache_key][draw_key]) {\n delete layer_cache[cache_key][draw_key];\n }\n else {\n layer_cache[cache_key][draw_key].key = cache_key + '/' + draw_key;\n layer_cache[cache_key][draw_key].layers = layers.map(x => x && x.full_name);\n layer_cache[cache_key][draw_key].group = draw_key;\n }\n }\n\n // No layers evaluated\n if (layer_cache[cache_key] && Object.keys(layer_cache[cache_key]).length === 0) {\n layer_cache[cache_key] = null;\n }\n }\n return layer_cache[cache_key];\n }\n }\n\n}\n\nexport const FilterOptions = {\n // Handle unit conversions on filter ranges\n rangeTransform(val) {\n if (typeof val === 'string' && val.trim().slice(-3) === 'px2') {\n return `${parseFloat(val)} * context.meters_per_pixel_sq`;\n }\n return val;\n }\n};\n\nexport function isReserved(key) {\n return reserved.indexOf(key) > -1;\n}\n\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\nexport function groupProps(obj) {\n let reserved = {}, children = {};\n\n for (let key in obj) {\n if (isReserved(key)) {\n reserved[key] = obj[key];\n } else {\n children[key] = obj[key];\n }\n }\n return [reserved, children];\n}\n\nexport function calculateDraw(layer) {\n\n let draw = [];\n\n if (layer.parent) {\n let cs = layer.parent.calculatedDraw || [];\n draw.push(...cs);\n }\n\n draw.push(layer.draw);\n return draw;\n}\n\nexport function parseLayerNode(name, layer, parent, styles) {\n\n layer = (layer == null) ? {} : layer;\n\n let properties = { name, layer, parent, styles };\n let [reserved, children] = groupProps(layer);\n let empty = isEmpty(children);\n let Create;\n\n if (empty && parent != null) {\n Create = LayerLeaf;\n } else {\n Create = LayerTree;\n }\n\n let r = new Create(Object.assign(properties, reserved));\n\n // only process child layers if this layer is enabled\n if (r.enabled) {\n if (parent) {\n parent.addLayer(r);\n }\n r.children_to_parse = empty ? null : children;\n }\n\n return r;\n}\n\nfunction parseLayerChildren (parent, children, styles) {\n for (let key in children) {\n let child = children[key];\n if (typeof child === 'object' && !Array.isArray(child)) {\n parseLayerNode(key, child, parent, styles);\n } else {\n // Invalid layer\n let msg = `Layer value must be an object: cannot create layer '${key}: ${JSON.stringify(child)}'`;\n msg += `, under parent layer '${parent.full_name}'.`;\n\n // If the parent is a style name, this may be an incorrectly nested layer\n if (styles[parent.name]) {\n msg += ` The parent name '${parent.name}' is also the name of a style, did you mean to create a 'draw' group`;\n if (parent.parent) {\n msg += ` under '${parent.parent.name}'`;\n }\n msg += ` instead?`;\n }\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n }\n }\n}\n\n\nexport function parseLayers (layers, styles) {\n layer_cache = {}; // clear layer cache\n let layer_trees = {};\n\n for (let key in layers) {\n let layer = layers[key];\n if (layer) {\n layer_trees[key] = parseLayerNode(key, layer, null, styles);\n }\n }\n\n return layer_trees;\n}\n\nexport function matchFeature(context, layers, collected_layers, collected_layers_ids) {\n let matched = false;\n let childMatched = false;\n\n if (layers.length === 0) { return; }\n\n for (let r=0; r < layers.length; r++) {\n let current = layers[r];\n\n if (current.is_leaf) {\n if (current.doesMatch(context)) {\n matched = true;\n collected_layers.push(current);\n collected_layers_ids.push(current.id);\n }\n\n } else if (current.is_tree) {\n if (current.doesMatch(context)) {\n matched = true;\n\n childMatched = matchFeature(\n context,\n current.layers,\n collected_layers,\n collected_layers_ids\n );\n\n if (!childMatched) {\n collected_layers.push(current);\n collected_layers_ids.push(current.id);\n }\n }\n }\n }\n\n return matched;\n}\n", "// Renders an array specifying a line pattern of alternating dashes and spaces,\n// similar to an SVG `dasharray` or Canvas setLineDash(), into a byte array of RGBA pixels\n// Returns:\n// {\n// pixel: rendered image in Uint8Array buffer\n// length: pixel length of rendered dash pattern (sum of all dashes and spaces)\n// }\n//\n// https://www.w3.org/TR/SVG/painting.html#StrokeDasharrayProperty\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray\n// https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash\n\nconst default_dash_color = [255, 255, 255, 255];\nconst default_background_color = [0, 0, 0, 0];\n\nexport default function renderDashArray (pattern, options = {}) {\n const dash_pixel = options.dash_color || default_dash_color;\n const background_color = options.background_color || default_background_color;\n const dashes = pattern;\n const scale = options.scale || 1;\n\n // If pattern is odd, repeat it to make it even (see SVG spec)\n if (dashes.length % 2 === 1) {\n Array.prototype.push.apply(dashes, dashes);\n }\n\n let dash = true;\n let pixels = [];\n for (let i=0; i < dashes.length; i++) {\n let segment = Math.floor(dashes[i] * scale);\n for (let s=0; s < segment; s++) {\n Array.prototype.push.apply(pixels, dash ? dash_pixel : background_color);\n }\n dash = !dash; // alternate between dashes and spaces\n }\n\n pixels = new Uint8Array(pixels); // convert to typed array\n const length = pixels.length / 4; // one RGBA byte sequences to one pixel\n\n return { pixels, length };\n}\n", - "// Line rendering style\n\nimport {Style} from '../style';\nimport {StyleParser} from '../style_parser';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\nimport Texture from '../../gl/texture';\nimport VertexLayout from '../../gl/vertex_layout';\nimport {buildPolylines} from '../../builders/polylines';\nimport renderDashArray from './dasharray';\nimport Geo from '../../geo';\nimport WorkerBroker from '../../utils/worker_broker';\nimport hashString from '../../utils/hash';\nimport {shaderSrc_polygonsVertex, shaderSrc_polygonsFragment} from '../polygons/polygons';\n\nexport var Lines = Object.create(Style);\n\nLines.vertex_layouts = [[], []]; // first dimension is texcoords on/off, second is offsets on/off\nLines.variants = {}; // mesh variants by variant key\nLines.dash_textures = {}; // needs to be cleared on scene config update\n\nconst DASH_SCALE = 20; // adjustment factor for UV scale to for line dash patterns w/fractional pixel width\n\nObject.assign(Lines, {\n name: 'lines',\n built_in: true,\n vertex_shader_src: shaderSrc_polygonsVertex,\n fragment_shader_src: shaderSrc_polygonsFragment,\n selection: true, // enable feature selection\n\n init() {\n Style.init.apply(this, arguments);\n\n // Tell the shader we want a order in vertex attributes, and to extrude lines\n this.defines.TANGRAM_LAYER_ORDER = true;\n this.defines.TANGRAM_EXTRUDE_LINES = true;\n this.defines.TANGRAM_TEXTURE_COORDS = true; // texcoords attribute is set to static when not needed\n\n // Additional single-allocated object used for holding outline style as it is processed\n // Separate from this.feature_style so that outline properties do not overwrite calculated\n // inline properties (outline call is made *within* the inline call)\n this.outline_feature_style = {};\n this.inline_feature_style = this.feature_style; // save reference to main computed style object\n },\n\n // Calculate width or offset at zoom given in `context`\n calcDistance (prop, context) {\n return (prop && StyleParser.evalCachedDistanceProperty(prop, context)) || 0;\n },\n\n // Calculate width or offset at next zoom (used for zoom-based interpolation in shader)\n calcDistanceNextZoom (prop, context) {\n context.zoom++;\n let val = this.calcDistance(prop, context);\n context.zoom--;\n return val;\n },\n\n // Calculate width at current and next zoom, and scaling factor between\n calcWidth (draw, style, context) {\n // line width in meters\n let width = this.calcDistance(draw.width, context);\n if (width < 0) {\n return; // skip lines with negative width\n }\n\n let next_width;\n if (draw.next_width) {\n next_width = this.calcDistanceNextZoom(draw.next_width, context);\n }\n else {\n next_width = width / 2; // when width is static, width at next zoom is just half as many tile units\n }\n\n if ((width === 0 && next_width === 0) || next_width < 0) {\n return false; // skip lines that don't interpolate to a positive value at next zoom\n }\n\n // these values are saved for later calculating the outline width, which needs to add the base line's width\n style.width_unscaled = width;\n style.next_width_unscaled = next_width;\n\n // calculate relative change in line width between zooms\n // interpolate from the line width at the zoom mid-point, towards/away from the previous/next integer zoom\n if (draw.next_width) {\n next_width *= 2; // NB: a given width is twice as big in screen space at the next zoom\n let mid_width = (width + next_width) * 0.5;\n style.width = mid_width * context.units_per_meter_overzoom; // width at zoom mid-point\n style.width_scale = 1 - (next_width / mid_width);\n }\n else {\n style.width = width * context.units_per_meter_overzoom;\n style.width_scale = 0;\n }\n\n // optional adjustment to texcoord width based on scale\n if (draw.texcoords) {\n // when drawing an outline, use the inline's texture scale\n // (e.g. keeps dashed outline pattern locked to inline pattern)\n if (draw.inline_texcoord_width) {\n style.texcoord_width = draw.inline_texcoord_width;\n }\n // when drawing an inline, calculate UVs based on line width\n else {\n // UVs can't calc for zero-width, use next zoom width in that case\n style.texcoord_width = (style.width_unscaled || style.next_width_unscaled) * context.units_per_meter_overzoom / context.tile.overzoom2; // shorten calcs\n }\n }\n\n return true;\n },\n\n // Calculate offset at current and next zoom, and scaling factor between\n calcOffset (draw, style, context) {\n // Pre-calculated offset passed\n // This happens when a line passes pre-computed offset values to its outline\n if (draw.offset_precalc) {\n style.offset = draw.offset_precalc;\n style.offset_scale = draw.offset_scale_precalc;\n }\n // Offset to calculate\n else if (draw.offset) {\n let offset = this.calcDistance(draw.offset, context);\n\n if (draw.next_offset) {\n let next_offset = this.calcDistanceNextZoom(draw.next_offset, context) * 2;\n\n if (Math.abs(offset) >= Math.abs(next_offset)) {\n style.offset = offset * context.units_per_meter_overzoom;\n if (offset !== 0) {\n style.offset_scale = 1 - (next_offset / offset);\n }\n else {\n style.offset_scale = 0;\n }\n }\n else {\n style.offset = next_offset * context.units_per_meter_overzoom;\n if (next_offset !== 0) {\n style.offset_scale = (1 - (offset / next_offset)) * -1;\n }\n else {\n style.offset_scale = 0;\n }\n }\n }\n else {\n style.offset = offset * context.units_per_meter_overzoom;\n style.offset_scale = 0;\n }\n }\n // No offset\n else {\n style.offset = 0;\n style.offset_scale = 0;\n }\n },\n\n _parseFeature (feature, draw, context) {\n var style = this.feature_style;\n\n // calculate line width at current and next zoom\n if (this.calcWidth(draw, style, context) === false) {\n return; // missing or zero width\n }\n\n // calculate line offset at current and next zoom\n this.calcOffset(draw, style, context);\n\n style.color = this.parseColor(draw.color, context);\n if (!style.color) {\n return;\n }\n\n style.variant = draw.variant; // pre-calculated mesh variant\n\n // height defaults to feature height, but extrude style can dynamically adjust height by returning a number or array (instead of a boolean)\n style.z = (draw.z && StyleParser.evalCachedDistanceProperty(draw.z || 0, context)) || StyleParser.defaults.z;\n style.height = feature.properties.height || StyleParser.defaults.height;\n style.extrude = StyleParser.evalProperty(draw.extrude, context);\n if (style.extrude) {\n if (typeof style.extrude === 'number') {\n style.height = style.extrude;\n }\n else if (Array.isArray(style.extrude)) {\n style.height = style.extrude[1];\n }\n }\n\n // Raise line height if extruded\n if (style.extrude && style.height) {\n style.z += style.height;\n }\n\n style.z *= Geo.height_scale; // provide sub-meter precision of height values\n style.height *= Geo.height_scale;\n\n style.cap = draw.cap;\n style.join = draw.join;\n\n style.miter_limit = draw.miter_limit;\n style.tile_edges = draw.tile_edges; // usually activated for debugging, or rare visualization needs\n\n // Construct an outline style\n // Reusable outline style object, marked as already wrapped in cache objects (preprocessed = true)\n style.outline = style.outline || {\n width: {}, next_width: {},\n preprocessed: true\n };\n\n if (draw.outline && draw.outline.visible !== false && draw.outline.color && draw.outline.width) {\n // outline width in meters\n // NB: multiply by 2 because outline is applied on both sides of line\n let outline_width = this.calcDistance(draw.outline.width, context) * 2;\n let outline_next_width = this.calcDistanceNextZoom(draw.outline.next_width, context) * 2;\n\n if ((outline_width === 0 && outline_next_width === 0) || outline_width < 0 || outline_next_width < 0) {\n // skip lines that don't interpolate between zero or greater width\n style.outline.width.value = null;\n style.outline.next_width.value = null;\n style.outline.color = null;\n style.outline.inline_texcoord_width = null;\n style.outline.texcoords = false;\n }\n else {\n // Maintain consistent outline width around the line fill\n style.outline.width.value = outline_width + style.width_unscaled;\n style.outline.next_width.value = outline_next_width + style.next_width_unscaled;\n style.outline.inline_texcoord_width = style.texcoord_width;\n\n // Offset is directly copied from fill to outline, no need to re-calculate it\n style.outline.offset_precalc = style.offset;\n style.outline.offset_scale_precalc = style.offset_scale;\n\n // Inherited properties\n style.outline.color = draw.outline.color;\n style.outline.cap = draw.outline.cap;\n style.outline.join = draw.outline.join;\n style.outline.miter_limit = draw.outline.miter_limit;\n style.outline.texcoords = draw.outline.texcoords;\n style.outline.style = draw.outline.style;\n style.outline.variant = draw.outline.variant;\n\n // Explicitly defined outline order, or inherited from inner line\n if (draw.outline.order) {\n style.outline.order = this.parseOrder(draw.outline.order, context);\n }\n else {\n style.outline.order = style.order;\n }\n\n // Don't let outline be above inner line\n if (style.outline.order > style.order) {\n style.outline.order = style.order;\n }\n\n // Outlines are always at half-layer intervals to avoid conflicting with inner lines\n style.outline.order -= 0.5;\n\n // Ensure outlines in a separate mesh variant are drawn first\n style.outline.variant_order = 0;\n }\n }\n else {\n style.outline.width.value = null;\n style.outline.next_width.value = null;\n style.outline.color = null;\n style.outline.inline_texcoord_width = null;\n }\n\n return style;\n },\n\n _preprocess (draw) {\n draw.color = StyleParser.createColorPropertyCache(draw.color);\n draw.width = StyleParser.createPropertyCache(draw.width, StyleParser.parseUnits);\n if (draw.width && draw.width.type !== StyleParser.CACHE_TYPE.STATIC) {\n draw.next_width = StyleParser.createPropertyCache(draw.width, StyleParser.parseUnits);\n }\n draw.offset = draw.offset && StyleParser.createPropertyCache(draw.offset, StyleParser.parseUnits);\n if (draw.offset && draw.offset.type !== StyleParser.CACHE_TYPE.STATIC) {\n draw.next_offset = StyleParser.createPropertyCache(draw.offset, StyleParser.parseUnits);\n }\n draw.z = StyleParser.createPropertyCache(draw.z, StyleParser.parseUnits);\n\n draw.dash = (draw.dash !== undefined ? draw.dash : this.dash);\n draw.dash_key = draw.dash && this.dashTextureKey(draw.dash);\n draw.dash_background_color = (draw.dash_background_color !== undefined ? draw.dash_background_color : this.dash_background_color);\n draw.dash_background_color = draw.dash_background_color && StyleParser.parseColor(draw.dash_background_color);\n draw.texture_merged = draw.dash_key || ((draw.texture !== undefined ? draw.texture : this.texture));\n draw.texcoords = ((this.texcoords || draw.texture_merged) ? 1 : 0);\n this.computeVariant(draw);\n\n if (draw.outline) {\n draw.outline.style = draw.outline.style || this.name;\n draw.outline.color = StyleParser.createColorPropertyCache(draw.outline.color);\n draw.outline.width = StyleParser.createPropertyCache(draw.outline.width, StyleParser.parseUnits);\n draw.outline.next_width = StyleParser.createPropertyCache(draw.outline.width, StyleParser.parseUnits); // width re-computed for next zoom\n\n draw.outline.cap = draw.outline.cap || draw.cap;\n draw.outline.join = draw.outline.join || draw.join;\n draw.outline.miter_limit = draw.outline.miter_limit || draw.miter_limit;\n draw.outline.offset = draw.offset;\n\n // outline inhertits dash pattern, but NOT explicit texture\n let outline_style = this.styles[draw.outline.style];\n draw.outline.dash = (draw.outline.dash !== undefined ? draw.outline.dash : outline_style.dash);\n draw.outline.texture = (draw.outline.texture !== undefined ? draw.outline.texture : outline_style.texture);\n\n if (draw.outline.dash != null) { // dash was defined by outline draw or style\n draw.outline.dash_key = draw.outline.dash && this.dashTextureKey(draw.outline.dash);\n draw.outline.texture_merged = draw.outline.dash_key;\n }\n else if (draw.outline.dash === null) { // dash explicitly disabled by outline draw or style\n draw.outline.dash_key = null;\n draw.outline.texture_merged = draw.outline.texture;\n }\n else if (draw.outline.texture != null) { // texture was defined by outline draw or style\n draw.outline.dash_key = null; // outline explicitly turning off dash\n draw.outline.texture_merged = draw.outline.texture;\n }\n else { // no dash or texture defined for outline, inherit parent dash\n draw.outline.dash = draw.dash;\n draw.outline.dash_key = draw.outline.dash && this.dashTextureKey(draw.outline.dash);\n draw.outline.texture_merged = draw.outline.dash_key;\n }\n draw.outline.dash_background_color = (draw.outline.dash_background_color !== undefined ? draw.outline.dash_background_color : outline_style.dash_background_color);\n draw.outline.dash_background_color = (draw.outline.dash_background_color !== undefined ? draw.outline.dash_background_color : draw.dash_background_color);\n draw.outline.dash_background_color = draw.outline.dash_background_color && StyleParser.parseColor(draw.outline.dash_background_color);\n draw.outline.texcoords = ((outline_style.texcoords || draw.outline.texture_merged) ? 1 : 0);\n this.computeVariant(draw.outline);\n }\n return draw;\n },\n\n // Unique string key for a dash pattern (used as texture name)\n dashTextureKey (dash) {\n return '__dash_' + JSON.stringify(dash);\n },\n\n // Return or render a dash pattern texture\n getDashTexture (dash) {\n let dash_key = this.dashTextureKey(dash);\n\n if (Lines.dash_textures[dash_key] == null) {\n Lines.dash_textures[dash_key] = true;\n\n // Render line pattern\n const dash_texture = renderDashArray(dash, { scale: DASH_SCALE });\n Texture.create(this.gl, dash_key, {\n data: dash_texture.pixels,\n height: dash_texture.length,\n width: 1,\n filtering: 'nearest'\n });\n }\n },\n\n // Override\n endData (tile) {\n return Style.endData.call(this, tile).then(tile_data => {\n if (tile_data) {\n tile_data.uniforms.u_has_line_texture = false;\n tile_data.uniforms.u_texture = Texture.default;\n tile_data.uniforms.u_v_scale_adjust = Geo.tile_scale;\n\n let pending = [];\n for (let m in tile_data.meshes) {\n let variant = tile_data.meshes[m].variant;\n if (variant.texture) {\n let uniforms = tile_data.meshes[m].uniforms = tile_data.meshes[m].uniforms || {};\n uniforms.u_has_line_texture = true;\n uniforms.u_texture = variant.texture;\n uniforms.u_texture_ratio = 1;\n\n if (variant.dash) {\n uniforms.u_v_scale_adjust = Geo.tile_scale * DASH_SCALE;\n uniforms.u_dash_background_color = variant.dash_background_color || [0, 0, 0, 0];\n }\n\n if (variant.dash_key && Lines.dash_textures[variant.dash_key] == null) {\n Lines.dash_textures[variant.dash_key] = true;\n WorkerBroker.postMessage(this.main_thread_target+'.getDashTexture', variant.dash);\n }\n\n if (Texture.textures[variant.texture] == null) {\n pending.push(\n Texture.syncTexturesToWorker([variant.texture]).then(textures => {\n let texture = textures[variant.texture];\n if (texture) {\n uniforms.u_texture_ratio = texture.height / texture.width;\n }\n })\n );\n }\n else {\n let texture = Texture.textures[variant.texture];\n uniforms.u_texture_ratio = texture.height / texture.width;\n }\n }\n }\n return Promise.all(pending).then(() => tile_data);\n }\n return tile_data;\n });\n },\n\n // Calculate and store mesh variant (unique by draw group but not feature)\n computeVariant (draw) {\n let key = (draw.offset ? 1 : 0);\n if (draw.dash_key) {\n key += draw.dash_key;\n if (draw.dash_background_color) {\n key += draw.dash_background_color;\n }\n }\n\n if (draw.texture_merged) {\n key += draw.texture_merged;\n }\n key += '/' + draw.texcoords;\n key = hashString(key);\n draw.variant = key;\n\n if (Lines.variants[key] == null) {\n Lines.variants[key] = {\n key,\n order: draw.variant_order,\n offset: (draw.offset ? 1 : 0),\n texcoords: draw.texcoords,\n texture: draw.texture_merged,\n dash: draw.dash,\n dash_key: draw.dash_key,\n dash_background_color: draw.dash_background_color\n };\n }\n },\n\n // Override\n // Create or return desired vertex layout permutation based on flags\n vertexLayoutForMeshVariant (variant) {\n if (Lines.vertex_layouts[variant.key] == null) {\n // Basic attributes, others can be added (see texture UVs below)\n let attribs = [\n { name: 'a_position', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_extrude', size: 2, type: gl.SHORT, normalized: false },\n { name: 'a_offset', size: 2, type: gl.SHORT, normalized: false, static: (variant.offset ? null : [0, 0]) },\n { name: 'a_scaling', size: 2, type: gl.SHORT, normalized: false },\n { name: 'a_texcoord', size: 2, type: gl.UNSIGNED_SHORT, normalized: true, static: (variant.texcoords ? null : [0, 0]) },\n { name: 'a_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true },\n { name: 'a_selection_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true }\n ];\n Lines.vertex_layouts[variant.key] = new VertexLayout(attribs);\n }\n return Lines.vertex_layouts[variant.key];\n },\n\n // Override\n meshVariantTypeForDraw (draw) {\n return Lines.variants[draw.variant]; // return pre-calculated mesh variant\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style, mesh) {\n let i = 0;\n\n // a_position.xyz - vertex position\n // a_position.w - layer order\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = style.z || 0;\n this.vertex_template[i++] = this.scaleOrder(style.order);\n\n // a_extrude.xy - extrusion vector\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n\n // a_offset.xy - normal vector\n // offset can be static or dynamic depending on style\n if (mesh.variant.offset) {\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n }\n\n // a_scaling.xy - scaling to previous and next zoom\n this.vertex_template[i++] = style.width_scale * 1024; // line width\n this.vertex_template[i++] = style.offset_scale * 1024; // line offset\n\n // Add texture UVs to template only if needed\n if (mesh.variant.texcoords) {\n // a_texcoord.uv\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n }\n\n // a_color.rgba\n this.vertex_template[i++] = style.color[0] * 255;\n this.vertex_template[i++] = style.color[1] * 255;\n this.vertex_template[i++] = style.color[2] * 255;\n this.vertex_template[i++] = style.color[3] * 255;\n\n // selection color\n if (this.selection) {\n // a_selection_color.rgba\n this.vertex_template[i++] = style.selection_color[0] * 255;\n this.vertex_template[i++] = style.selection_color[1] * 255;\n this.vertex_template[i++] = style.selection_color[2] * 255;\n this.vertex_template[i++] = style.selection_color[3] * 255;\n }\n\n return this.vertex_template;\n },\n\n buildLines(lines, style, mesh, context, options) {\n // Outline (build first so that blended geometry without a depth test is drawn first/under the inner line)\n this.feature_style = this.outline_feature_style; // swap in outline-specific style holder\n if (style.outline && style.outline.color != null && style.outline.width.value != null) {\n var outline_style = this.styles[style.outline.style];\n if (outline_style) {\n outline_style.addFeature(context.feature, style.outline, context);\n }\n }\n\n // Main line\n this.feature_style = this.inline_feature_style; // restore calculated style for inline\n let vertex_data = mesh.vertex_data;\n let vertex_layout = vertex_data.vertex_layout;\n let vertex_template = this.makeVertexTemplate(style, mesh);\n return buildPolylines(\n lines,\n style.width,\n vertex_data,\n vertex_template,\n {\n cap: style.cap,\n join: style.join,\n miter_limit: style.miter_limit,\n extrude_index: vertex_layout.index.a_extrude,\n offset_index: vertex_layout.index.a_offset,\n texcoord_index: vertex_layout.index.a_texcoord,\n texcoord_width: style.texcoord_width,\n texcoord_normalize: 65535, // scale UVs to unsigned shorts\n closed_polygon: options && options.closed_polygon,\n remove_tile_edges: !style.tile_edges && options && options.remove_tile_edges,\n tile_edge_tolerance: Geo.tile_scale * context.tile.pad_scale * 2,\n offset: style.offset\n }\n );\n },\n\n buildPolygons(polygons, style, mesh, context) {\n // Render polygons as individual lines\n let geom_count = 0;\n for (let p=0; p < polygons.length; p++) {\n geom_count += this.buildLines(polygons[p], style, mesh, context, { closed_polygon: true, remove_tile_edges: true });\n }\n return geom_count;\n }\n\n});\n", - "// Point + text label rendering style\n\nimport log from '../../utils/log';\nimport {Style} from '../style';\nimport {StyleParser} from '../style_parser';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\nimport VertexLayout from '../../gl/vertex_layout';\nimport {buildQuadsForPoints} from '../../builders/points';\nimport Texture from '../../gl/texture';\nimport Geo from '../../geo';\nimport Vector from '../../vector';\nimport Collision from '../../labels/collision';\nimport LabelPoint from '../../labels/label_point';\nimport placePointsOnLine from '../../labels/point_placement';\nimport {TextLabels} from '../text/text_labels';\nimport {VIEW_PAN_SNAP_TIME} from '../../view';\nimport debugSettings from '../../utils/debug_settings';\n\nlet fs = require('fs');\nconst shaderSrc_pointsVertex = fs.readFileSync(__dirname + '/points_vertex.glsl', 'utf8');\nconst shaderSrc_pointsFragment = fs.readFileSync(__dirname + '/points_fragment.glsl', 'utf8');\n\nconst PLACEMENT = LabelPoint.PLACEMENT;\n\nconst pre_angles_normalize = 128 / Math.PI;\nconst angles_normalize = 16384 / Math.PI;\nconst offsets_normalize = 64;\nconst texcoord_normalize = 65535;\n\nexport var Points = Object.create(Style);\n\nPoints.variants = {}; // mesh variants by variant key\n\n// texture types\nconst TANGRAM_POINT_TYPE_TEXTURE = 1; // style texture/sprites (assigned by user)\nconst TANGRAM_POINT_TYPE_LABEL = 2; // labels (generated by rendering labels to canvas)\nconst TANGRAM_POINT_TYPE_SHADER = 3; // point (drawn in shader)\n\n// default point size in pixels\nconst DEFAULT_POINT_SIZE = [16, 16];\n\n// Mixin text label methods\nObject.assign(Points, TextLabels);\n\nObject.assign(Points, {\n name: 'points',\n built_in: true,\n vertex_shader_src: shaderSrc_pointsVertex,\n fragment_shader_src: shaderSrc_pointsFragment,\n selection: true, // enable feature selection\n collision: true, // style includes a collision pass\n blend: 'overlay', // overlays drawn on top of all other styles, with blending\n\n init(options = {}) {\n Style.init.call(this, options);\n\n // Vertex layout\n let attribs = [\n { name: 'a_position', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_shape', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_texcoord', size: 2, type: gl.UNSIGNED_SHORT, normalized: true },\n { name: 'a_offset', size: 2, type: gl.SHORT, normalized: false },\n { name: 'a_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true },\n { name: 'a_outline_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true, static: [0, 0, 0, 0] },\n { name: 'a_outline_edge', size: 1, type: gl.FLOAT, normalized: false, static: 0 },\n { name: 'a_selection_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true }\n ];\n\n this.vertex_layout = new VertexLayout(attribs);\n\n // Modified vertex layout for shader-drawn points\n attribs = attribs.map(x => Object.assign({}, x)); // copy attribs\n attribs.forEach(attrib => {\n // clear the static attribute value for shader points\n if (attrib.name === 'a_outline_color' || attrib.name === 'a_outline_edge') {\n attrib.static = null;\n }\n });\n this.vertex_layout_shader_point = new VertexLayout(attribs);\n\n // Shader defines\n this.setupDefines();\n\n // Include code for SDF-drawn shader points\n this.defines.TANGRAM_HAS_SHADER_POINTS = true;\n\n // texture types\n this.defines.TANGRAM_POINT_TYPE_TEXTURE = TANGRAM_POINT_TYPE_TEXTURE;\n this.defines.TANGRAM_POINT_TYPE_LABEL = TANGRAM_POINT_TYPE_LABEL;\n this.defines.TANGRAM_POINT_TYPE_SHADER = TANGRAM_POINT_TYPE_SHADER;\n\n this.collision_group_points = this.name+'-points';\n this.collision_group_text = this.name+'-text';\n\n this.reset();\n },\n\n // Setup defines common to points base and child (text) styles\n setupDefines () {\n // If we're not rendering as overlay, we need a layer attribute\n if (this.blend !== 'overlay') {\n this.defines.TANGRAM_LAYER_ORDER = true;\n }\n\n // Fade out when tile is zooming out, e.g. acting as proxy tiles\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT = true;\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT_RATE = 2; // fade at 2x, e.g. fully transparent at 0.5 zoom level away\n\n // Fade in (depending on tile proxy status)\n if (debugSettings.suppress_label_fade_in === true) {\n this.fade_in_time = 0;\n this.defines.TANGRAM_FADE_IN_RATE = null;\n }\n else {\n this.fade_in_time = 0.15; // time in seconds\n this.defines.TANGRAM_FADE_IN_RATE = 1 / this.fade_in_time;\n }\n\n // Snap points to pixel grid after panning stop\n if (debugSettings.suppress_label_snap_animation !== true) {\n this.defines.TANGRAM_VIEW_PAN_SNAP_RATE = 1 / VIEW_PAN_SNAP_TIME; // inverse time in seconds\n }\n },\n\n reset () {\n this.queues = {};\n this.resetText();\n this.texture_missing_sprites = {}; // track which missing sprites we've found (reduce dupe log messages)\n },\n\n // Override to queue features instead of processing immediately\n addFeature (feature, draw, context) {\n let tile = context.tile;\n if (tile.generation !== this.generation) {\n return;\n }\n\n // Point styling\n let style = {};\n style.color = this.parseColor(draw.color, context);\n style.texture = draw.texture; // optional point texture, specified in `draw` or at style level\n style.label_texture = null; // assigned by labelling code if needed\n\n // require color or texture\n if (!style.color && !style.texture) {\n return;\n }\n\n // optional sprite\n let sprite_info;\n if (this.hasSprites(style)) {\n sprite_info = this.parseSprite(style, draw, context);\n if (sprite_info) {\n style.texcoords = sprite_info.texcoords;\n }\n else {\n return;\n }\n }\n\n // point size defined explicitly, or defaults to sprite size, or generic fallback\n style.size = draw.size;\n if (!style.size) {\n style.size = (sprite_info && sprite_info.css_size) || DEFAULT_POINT_SIZE;\n }\n else {\n style.size = StyleParser.evalCachedPointSizeProperty(draw.size, sprite_info, context);\n if (style.size == null) {\n log({ level: 'warn', once: true }, `Layer '${draw.layers[draw.layers.length-1]}': ` +\n `'size' includes % and/or ratio-based scaling (${JSON.stringify(draw.size.value)}); ` +\n `these can only applied to sprites, but no sprite was specified, skipping features in layer`);\n return;\n }\n else if (typeof style.size === 'number') {\n style.size = [style.size, style.size]; // convert 1d size to 2d\n }\n }\n\n // incorporate outline into size\n if (draw.outline) {\n style.outline_width = StyleParser.evalCachedProperty(draw.outline.width, context) || StyleParser.defaults.outline.width;\n style.outline_color = this.parseColor(draw.outline.color, context);\n }\n\n style.outline_edge_pct = 0;\n if (style.outline_width && style.outline_color) {\n let outline_width = style.outline_width;\n style.size[0] += outline_width;\n style.size[1] += outline_width;\n style.outline_edge_pct = outline_width / Math.min(style.size[0], style.size[1]) * 2; // UV distance at which outline starts\n }\n\n // size will be scaled to 16-bit signed int, so max allowed width + height of 256 pixels\n style.size = [\n Math.min(style.size[0], 256),\n Math.min(style.size[1], 256)\n ];\n\n // Placement strategy\n style.placement = draw.placement;\n style.placement_min_length_ratio = StyleParser.evalCachedProperty(draw.placement_min_length_ratio, context);\n\n // Spacing parameter (in pixels) to equally space points along a line\n if (style.placement === PLACEMENT.SPACED && draw.placement_spacing) {\n style.placement_spacing = StyleParser.evalCachedProperty(draw.placement_spacing, context);\n }\n\n // Angle parameter (can be a number or the string \"auto\")\n style.angle = StyleParser.evalProperty(draw.angle, context) || 0;\n\n // points can be placed off the ground\n style.z = (draw.z && StyleParser.evalCachedDistanceProperty(draw.z, context)) || StyleParser.defaults.z;\n\n style.tile_edges = draw.tile_edges; // usually activated for debugging, or rare visualization needs\n\n this.computeLayout(style, feature, draw, context, tile);\n\n // Text styling\n let tf =\n draw.text &&\n draw.text.visible !== false && // explicitly handle `visible` property for nested text\n this.parseTextFeature(feature, draw.text, context, tile);\n\n if (Array.isArray(tf)) {\n tf = null; // NB: boundary labels not supported for point label attachments, should log warning\n log({ level: 'warn', once: true }, `Layer '${draw.layers[draw.layers.length-1]}': ` +\n `cannot use boundary labels (e.g. 'text_source: { left: ..., right: ... }') for 'text' labels attached to 'points'; ` +\n `provided 'text_source' value was ${JSON.stringify(draw.text.text_source)}`);\n }\n\n if (tf) {\n tf.layout.parent = style; // parent point will apply additional anchor/offset to text\n\n // Text labels have a default priority of 0.5 below their parent point (+0.5, priority is lower-is-better)\n // This can be overriden, as long as it is less than or equal to the default\n tf.layout.priority = draw.text.priority ? Math.max(tf.layout.priority, style.priority + 0.5) : (style.priority + 0.5);\n\n // Text labels attached to points should not be moved into tile\n // (they should stay fixed relative to the point)\n tf.layout.move_into_tile = false;\n\n Collision.addStyle(this.collision_group_text, tile.id);\n }\n\n this.queueFeature({ feature, draw, context, style, text_feature: tf }, tile); // queue the feature for later processing\n\n // Register with collision manager\n Collision.addStyle(this.collision_group_points, tile.id);\n },\n\n hasSprites (style) {\n return style.texture && Texture.textures[style.texture] && Texture.textures[style.texture].sprites;\n },\n\n getSpriteInfo (style, sprite) {\n let info = Texture.textures[style.texture].sprites[sprite] && Texture.getSpriteInfo(style.texture, sprite);\n if (sprite && !info) {\n // track misisng sprites (per texture)\n this.texture_missing_sprites[style.texture] = this.texture_missing_sprites[style.texture] || {};\n if (!this.texture_missing_sprites[style.texture][sprite]) { // only log each missing sprite once\n log('debug', `Style: in style '${this.name}', could not find sprite '${sprite}' for texture '${style.texture}'`);\n this.texture_missing_sprites[style.texture][sprite] = true;\n }\n }\n else if (info) {\n info.sprite = sprite;\n }\n return info;\n },\n\n parseSprite (style, draw, context) {\n let sprite = StyleParser.evalProperty(draw.sprite, context);\n let sprite_info = this.getSpriteInfo(style, sprite) || this.getSpriteInfo(style, draw.sprite_default);\n return sprite_info;\n },\n\n // Queue features for deferred processing (collect all features first so we can do collision on the whole group)\n queueFeature (q, tile) {\n if (!this.tile_data[tile.id] || !this.queues[tile.id]) {\n this.startData(tile);\n }\n this.queues[tile.id] = this.queues[tile.id] || [];\n this.queues[tile.id].push(q);\n },\n\n // Override\n endData (tile) {\n if (tile.canceled) {\n log('trace', `Style ${this.name}: stop tile build because tile was canceled: ${tile.key}`);\n return Promise.resolve();\n }\n\n let queue = this.queues[tile.id];\n delete this.queues[tile.id];\n\n // For each point feature, create one or more labels\n let text_objs = [];\n let point_objs = [];\n\n queue.forEach(q => {\n let style = q.style;\n let feature = q.feature;\n let geometry = feature.geometry;\n\n let feature_labels = this.buildLabels(style.size, geometry, style);\n for (let i = 0; i < feature_labels.length; i++) {\n let label = feature_labels[i];\n let point_obj = {\n feature,\n draw: q.draw,\n context: q.context,\n style,\n label\n };\n point_objs.push(point_obj);\n\n if (q.text_feature) {\n let text_obj = {\n feature,\n draw: q.text_feature.draw,\n context: q.context,\n text: q.text_feature.text,\n text_settings_key: q.text_feature.text_settings_key,\n layout: q.text_feature.layout,\n point_label: label,\n linked: point_obj // link so text only renders when parent point is placed\n };\n text_objs.push(text_obj);\n\n // Unless text feature is optional, create a two-way link so that parent\n // point will only render when text is also placed\n if (!q.draw.text.optional) {\n point_obj.linked = text_obj; // two-way link\n }\n }\n }\n });\n\n // Collide both points and text, then build features\n return Promise.\n all([\n // Points\n Collision.collide(point_objs, this.collision_group_points, tile.id).then(point_objs => {\n point_objs.forEach(q => {\n this.feature_style = q.style;\n this.feature_style.label = q.label;\n Style.addFeature.call(this, q.feature, q.draw, q.context);\n });\n }),\n // Labels\n this.collideAndRenderTextLabels(tile, this.collision_group_text, text_objs)\n ]).then(([, { labels, texts, textures }]) => {\n // Process labels\n if (labels && texts) {\n // Build queued features\n labels.forEach(q => {\n let text_settings_key = q.text_settings_key;\n let text_info = texts[text_settings_key] && texts[text_settings_key][q.text];\n\n // setup styling object expected by Style class\n let style = this.feature_style;\n style.label = q.label;\n style.size = text_info.size.logical_size;\n style.angle = 0; // text attached to point is always upright\n style.texcoords = text_info.align[q.label.align].texcoords;\n style.label_texture = textures[text_info.align[q.label.align].texture_id];\n\n Style.addFeature.call(this, q.feature, q.draw, q.context);\n });\n }\n this.freeText(tile);\n\n // Finish tile mesh\n return Style.endData.call(this, tile).then(tile_data => {\n // Attach tile-specific label atlas to mesh as a texture uniform\n if (tile_data && textures && textures.length) {\n tile_data.textures = tile_data.textures || [];\n tile_data.textures.push(...textures); // assign texture ownership to tile\n }\n return tile_data;\n });\n });\n },\n\n _preprocess (draw) {\n draw.color = StyleParser.createColorPropertyCache(draw.color);\n draw.texture = (draw.texture !== undefined ? draw.texture : this.texture); // optional or default texture\n\n if (draw.outline) {\n draw.outline.color = StyleParser.createColorPropertyCache(draw.outline.color);\n draw.outline.width = StyleParser.createPropertyCache(draw.outline.width, v => Array.isArray(v) ? v.map(parseFloat) : parseFloat(v));\n }\n\n draw.z = StyleParser.createPropertyCache(draw.z, StyleParser.parseUnits);\n\n // Size (1d value or 2d array)\n try {\n draw.size = StyleParser.createPointSizePropertyCache(draw.size);\n }\n catch(e) {\n log({ level: 'warn', once: true }, `Layer '${draw.layers[draw.layers.length-1]}': ` +\n `${e} (${JSON.stringify(draw.size)}), skipping features in layer`);\n return null;\n }\n\n // Offset (2d array)\n draw.offset = StyleParser.createPropertyCache(draw.offset,\n v => (Array.isArray(v) && v.map(parseFloat).map(v => isNaN(v) ? 0 : v)) || [0, 0]\n );\n\n // Buffer (1d value or or 2d array) - must be >= 0\n draw.buffer = StyleParser.createPropertyCache(draw.buffer,\n v => (Array.isArray(v) ? v : [v, v]).map(v => Math.max(parseFloat(v), 0)).map(v => isNaN(v) ? 0 : v) || [0, 0]\n );\n\n // Repeat rules - no repeat limitation for points by default\n draw.repeat_distance = StyleParser.createPropertyCache(draw.repeat_distance, parseFloat);\n\n // Placement strategies\n draw.placement = PLACEMENT[draw.placement && draw.placement.toUpperCase()];\n if (draw.placement == null) {\n draw.placement = PLACEMENT.VERTEX;\n }\n\n draw.placement_spacing = draw.placement_spacing != null ? draw.placement_spacing : 80; // default spacing\n draw.placement_spacing = StyleParser.createPropertyCache(draw.placement_spacing, parseFloat);\n\n draw.placement_min_length_ratio = draw.placement_min_length_ratio != null ? draw.placement_min_length_ratio : 1;\n draw.placement_min_length_ratio = StyleParser.createPropertyCache(draw.placement_min_length_ratio, parseFloat);\n\n if (typeof draw.angle === 'number') {\n draw.angle = draw.angle * Math.PI / 180;\n }\n else {\n draw.angle = draw.angle || 0; // angle can be a string like \"auto\" (use angle of geometry)\n }\n\n // Optional text styling\n draw.text = this.preprocessText(draw.text); // will return null if valid text styling wasn't provided\n if (draw.text) {\n draw.text.key = draw.key; // inherits parent properties\n draw.text.group = draw.group;\n draw.text.layers = draw.layers;\n draw.text.order = draw.order;\n draw.text.repeat_group = draw.text.repeat_group || draw.repeat_group;\n draw.text.anchor = draw.text.anchor || this.default_anchor;\n draw.text.optional = (typeof draw.text.optional === 'boolean') ? draw.text.optional : false; // default text to required\n draw.text.interactive = draw.text.interactive || draw.interactive; // inherits from point\n }\n\n return draw;\n },\n\n // Default to trying all anchor placements\n default_anchor: ['bottom', 'top', 'right', 'left'],\n\n // Compute label layout-related properties\n computeLayout (target, feature, draw, context, tile) {\n let layout = target || {};\n layout.id = feature;\n layout.units_per_pixel = tile.units_per_pixel || 1;\n\n // collision flag\n layout.collide = (draw.collide === false) ? false : true;\n\n // tile boundary handling\n layout.cull_from_tile = (draw.cull_from_tile != null) ? draw.cull_from_tile : false;\n\n // points should not move into tile if over tile boundary\n layout.move_into_tile = false;\n\n // label anchors (point labels only)\n // label position will be adjusted in the given direction, relative to its original point\n // one of: left, right, top, bottom, top-left, top-right, bottom-left, bottom-right\n layout.anchor = draw.anchor;\n\n // label offset and buffer in pixel (applied in screen space)\n layout.offset = StyleParser.evalCachedProperty(draw.offset, context) || StyleParser.zeroPair;\n layout.buffer = StyleParser.evalCachedProperty(draw.buffer, context) || StyleParser.zeroPair;\n\n // repeat rules\n layout.repeat_distance = StyleParser.evalCachedProperty(draw.repeat_distance, context);\n if (layout.repeat_distance) {\n layout.repeat_distance *= layout.units_per_pixel;\n\n if (typeof draw.repeat_group === 'function') {\n layout.repeat_group = draw.repeat_group(context);\n }\n else if (typeof draw.repeat_group === 'string') {\n layout.repeat_group = draw.repeat_group;\n }\n else {\n layout.repeat_group = draw.key; // default to unique set of matching layers\n }\n }\n\n // label priority (lower is higher)\n let priority = draw.priority;\n if (priority != null) {\n if (typeof priority === 'function') {\n priority = priority(context);\n }\n }\n else {\n priority = -1 >>> 0; // default to max priority value if none set\n }\n layout.priority = priority;\n\n return layout;\n },\n\n // Implements label building for TextLabels mixin\n buildTextLabels (tile, feature_queue) {\n let labels = [];\n for (let f=0; f < feature_queue.length; f++) {\n let fq = feature_queue[f];\n let text_info = this.texts[tile.id][fq.text_settings_key][fq.text];\n let size = text_info.size.collision_size;\n fq.label = new LabelPoint(fq.point_label.position, size, fq.layout);\n labels.push(fq);\n }\n return labels;\n },\n\n // Builds one or more point labels for a geometry\n buildLabels (size, geometry, options) {\n let labels = [];\n\n if (geometry.type === \"Point\") {\n labels.push(new LabelPoint(geometry.coordinates, size, options));\n }\n else if (geometry.type === \"MultiPoint\") {\n let points = geometry.coordinates;\n for (let i = 0; i < points.length; ++i) {\n let point = points[i];\n labels.push(new LabelPoint(point, size, options));\n }\n }\n else if (geometry.type === \"LineString\") {\n let line = geometry.coordinates;\n let point_labels = placePointsOnLine(line, size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n else if (geometry.type === \"MultiLineString\") {\n let lines = geometry.coordinates;\n for (let ln = 0; ln < lines.length; ln++) {\n let line = lines[ln];\n let point_labels = placePointsOnLine(line, size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n else if (geometry.type === \"Polygon\") {\n // Point at polygon centroid (of outer ring)\n if (options.placement === PLACEMENT.CENTROID) {\n let centroid = Geo.centroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, options));\n }\n // Point at each polygon vertex (all rings)\n else {\n let rings = geometry.coordinates;\n for (let ln = 0; ln < rings.length; ln++) {\n let point_labels = placePointsOnLine(rings[ln], size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n }\n else if (geometry.type === \"MultiPolygon\") {\n if (options.placement === PLACEMENT.CENTROID) {\n let centroid = Geo.multiCentroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, options));\n }\n else {\n let polys = geometry.coordinates;\n for (let p = 0; p < polys.length; p++) {\n let rings = polys[p];\n for (let ln = 0; ln < rings.length; ln++) {\n let point_labels = placePointsOnLine(rings[ln], size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n }\n }\n\n return labels;\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style, mesh) {\n let color = style.color || StyleParser.defaults.color;\n let vertex_layout = mesh.vertex_data.vertex_layout;\n\n // position - x & y coords will be filled in per-vertex below\n this.fillVertexTemplate(vertex_layout, 'a_position', 0, { size: 2 });\n this.fillVertexTemplate(vertex_layout, 'a_position', style.z || 0, { size: 1, offset: 2 });\n // layer order - w coord of 'position' attribute (for packing efficiency)\n this.fillVertexTemplate(vertex_layout, 'a_position', this.scaleOrder(style.order), { size: 1, offset: 3 });\n\n // scaling vector - (x, y) components per pixel, z = angle\n this.fillVertexTemplate(vertex_layout, 'a_shape', 0, { size: 3 }); // NB: w coord is currently unused, change size: 4 if needed\n\n // texture coords\n this.fillVertexTemplate(vertex_layout, 'a_texcoord', 0, { size: 2 });\n\n // offsets\n this.fillVertexTemplate(vertex_layout, 'a_offset', 0, { size: 2 });\n\n // color\n this.fillVertexTemplate(vertex_layout, 'a_color', Vector.mult(color, 255), { size: 4 });\n\n // outline (can be static or dynamic depending on style)\n if (this.defines.TANGRAM_HAS_SHADER_POINTS && mesh.variant.shader_point) {\n let outline_color = style.outline_color || StyleParser.defaults.outline.color;\n this.fillVertexTemplate(vertex_layout, 'a_outline_color', Vector.mult(outline_color, 255), { size: 4 });\n this.fillVertexTemplate(vertex_layout, 'a_outline_edge', style.outline_edge_pct || StyleParser.defaults.outline.width, { size: 1 });\n }\n\n // selection color\n if (this.selection) {\n this.fillVertexTemplate(vertex_layout, 'a_selection_color', Vector.mult(style.selection_color, 255), { size: 4 });\n }\n\n return this.vertex_template;\n },\n\n buildQuad(points, size, angle, angles, pre_angles, offset, offsets, texcoord_scale, curve, vertex_data, vertex_template) {\n if (size[0] <= 0 || size[1] <= 0) {\n return 0; // size must be positive\n }\n\n return buildQuadsForPoints(\n points,\n vertex_data,\n vertex_template,\n {\n texcoord_index: vertex_data.vertex_layout.index.a_texcoord,\n position_index: vertex_data.vertex_layout.index.a_position,\n shape_index: vertex_data.vertex_layout.index.a_shape,\n offset_index: vertex_data.vertex_layout.index.a_offset,\n offsets_index: vertex_data.vertex_layout.index.a_offsets,\n pre_angles_index: vertex_data.vertex_layout.index.a_pre_angles,\n angles_index: vertex_data.vertex_layout.index.a_angles\n },\n {\n quad: size,\n quad_normalize: 256, // values have an 8-bit fraction\n offset,\n offsets,\n pre_angles: pre_angles,\n angle: angle * 4096, // values have a 12-bit fraction\n angles: angles,\n curve,\n texcoord_scale,\n texcoord_normalize,\n pre_angles_normalize,\n angles_normalize,\n offsets_normalize\n }\n );\n },\n\n // Build quad for point sprite\n build (style, mesh, context) {\n let label = style.label;\n if (label.type === 'curved') {\n return this.buildArticulatedLabel(label, style, mesh, context);\n }\n else {\n return this.buildLabel(label, style, mesh, context);\n }\n },\n\n buildLabel (label, style, mesh, context) {\n let vertex_template = this.makeVertexTemplate(style, mesh);\n let angle = label.angle || style.angle;\n\n let size, texcoords;\n if (label.type){\n size = style.size[label.type];\n texcoords = style.texcoords[label.type].texcoord;\n }\n else {\n size = style.size;\n texcoords = style.texcoords;\n }\n\n // setup style or label texture if applicable\n mesh.uniforms = mesh.uniforms || {};\n if (style.label_texture) {\n mesh.uniforms.u_texture = style.label_texture;\n mesh.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh.uniforms.u_apply_color_blocks = false;\n }\n else if (style.texture) {\n mesh.uniforms.u_texture = style.texture;\n mesh.uniforms.u_point_type = TANGRAM_POINT_TYPE_TEXTURE;\n mesh.uniforms.u_apply_color_blocks = true;\n }\n else {\n mesh.uniforms.u_texture = Texture.default; // ensure a tetxure is always bound to avoid GL warnings ('no texture bound to unit' in Chrome)\n mesh.uniforms.u_point_type = TANGRAM_POINT_TYPE_SHADER;\n mesh.uniforms.u_apply_color_blocks = true;\n }\n\n let offset = label.offset;\n\n // TODO: instead of passing null, pass arrays with fingerprintable values\n // This value is checked in the shader to determine whether to apply curving logic\n return this.buildQuad(\n [label.position], // position\n size, // size in pixels\n angle, // angle in radians\n null, // placeholder for multiple angles\n null, // placeholder for multiple pre_angles\n offset, // offset from center in pixels\n null, // placeholder for multiple offsets\n texcoords, // texture UVs\n false, // if curved boolean\n mesh.vertex_data, vertex_template // VBO and data for current vertex\n );\n },\n\n buildArticulatedLabel (label, style, mesh, context) {\n let vertex_template = this.makeVertexTemplate(style, mesh);\n let angle = label.angle;\n let geom_count = 0;\n\n // two passes for stroke and fill, where stroke needs to be drawn first (painter's algorithm)\n // this ensures strokes don't overlap on other fills\n\n // pass for stroke\n for (let i = 0; i < label.num_segments; i++){\n let size = style.size[label.type][i];\n let texcoord_stroke = style.texcoords_stroke[i];\n\n // re-point to correct label texture\n style.label_texture = style.label_textures[i];\n let mesh_data = this.getTileMesh(context.tile, this.meshVariantTypeForDraw(style));\n\n // add label texture uniform if needed\n mesh_data.uniforms = mesh_data.uniforms || {};\n mesh_data.uniforms.u_texture = style.label_texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh_data.uniforms.u_apply_color_blocks = false;\n\n let offset = label.offset || [0,0];\n let position = label.position;\n\n let angles = label.angles[i];\n let offsets = label.offsets[i];\n let pre_angles = label.pre_angles[i];\n\n geom_count += this.buildQuad(\n [position], // position\n size, // size in pixels\n angle, // angle in degrees\n angles, // angles per segment\n pre_angles, // pre_angle array (rotation applied before offseting)\n offset, // offset from center in pixels\n offsets, // offsets per segment\n texcoord_stroke, // texture UVs for stroked text\n true, // if curved\n mesh_data.vertex_data, vertex_template // VBO and data for current vertex\n );\n }\n\n // pass for fill\n for (let i = 0; i < label.num_segments; i++){\n let size = style.size[label.type][i];\n let texcoord = style.texcoords[label.type][i].texcoord;\n\n // re-point to correct label texture\n style.label_texture = style.label_textures[i];\n let mesh_data = this.getTileMesh(context.tile, this.meshVariantTypeForDraw(style));\n\n // add label texture uniform if needed\n mesh_data.uniforms = mesh_data.uniforms || {};\n mesh_data.uniforms.u_texture = style.label_texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh_data.uniforms.u_apply_color_blocks = false;\n\n let offset = label.offset || [0,0];\n let position = label.position;\n\n let angles = label.angles[i];\n let offsets = label.offsets[i];\n let pre_angles = label.pre_angles[i];\n\n geom_count += this.buildQuad(\n [position], // position\n size, // size in pixels\n angle, // angle in degrees\n angles, // angles per segment\n pre_angles, // pre_angle array (rotation applied before offseting)\n offset, // offset from center in pixels\n offsets, // offsets per segment\n texcoord, // texture UVs for fill text\n true, // if curved\n mesh_data.vertex_data, vertex_template // VBO and data for current vertex\n );\n }\n\n return geom_count;\n },\n\n // Override to pass-through to generic point builder\n buildLines (lines, style, mesh, context) {\n return this.build(style, mesh, context);\n },\n\n buildPoints (points, style, mesh, context) {\n return this.build(style, mesh, context);\n },\n\n buildPolygons (points, style, mesh, context) {\n return this.build(style, mesh, context);\n },\n\n // Override\n vertexLayoutForMeshVariant (variant) {\n if (variant.shader_point) {\n return this.vertex_layout_shader_point;\n }\n return this.vertex_layout;\n },\n\n // Override\n meshVariantTypeForDraw (draw) {\n let key = draw.label_texture || draw.texture || this.default_mesh_variant.key; // unique key by texture name\n if (Points.variants[key] == null) {\n Points.variants[key] = {\n key,\n shader_point: (key === this.default_mesh_variant.key), // is shader point\n order: (draw.label_texture ? 1 : 0) // put text on top of points (e.g. for highway shields, etc.)\n };\n }\n return Points.variants[key]; // return pre-calculated mesh variant\n },\n\n makeMesh (vertex_data, vertex_elements, options = {}) {\n // Add label fade time\n options = Object.assign({}, options, { fade_in_time: this.fade_in_time });\n return Style.makeMesh.call(this, vertex_data, vertex_elements, options);\n }\n\n});\n", - "// Polygon rendering style\n\nimport {Style} from '../style';\nimport {StyleParser} from '../style_parser';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\nimport VertexLayout from '../../gl/vertex_layout';\nimport {buildPolygons, buildExtrudedPolygons} from '../../builders/polygons';\nimport Geo from '../../geo';\n\nlet fs = require('fs');\nexport const shaderSrc_polygonsVertex = fs.readFileSync(__dirname + '/polygons_vertex.glsl', 'utf8');\nexport const shaderSrc_polygonsFragment = fs.readFileSync(__dirname + '/polygons_fragment.glsl', 'utf8');\n\nexport var Polygons = Object.create(Style);\n\nObject.assign(Polygons, {\n name: 'polygons',\n built_in: true,\n vertex_shader_src: shaderSrc_polygonsVertex,\n fragment_shader_src: shaderSrc_polygonsFragment,\n selection: true, // enable feature selection\n\n init() {\n Style.init.apply(this, arguments);\n\n // Basic attributes, others can be added (see texture UVs below)\n var attribs = [\n { name: 'a_position', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_normal', size: 3, type: gl.BYTE, normalized: true }, // gets padded to 4-bytes\n { name: 'a_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true },\n { name: 'a_selection_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true }\n ];\n\n // Tell the shader we have a normal and order attributes\n this.defines.TANGRAM_NORMAL_ATTRIBUTE = true;\n this.defines.TANGRAM_LAYER_ORDER = true;\n\n // Optional texture UVs\n if (this.texcoords) {\n this.defines.TANGRAM_TEXTURE_COORDS = true;\n\n // Add vertex attribute for UVs only when needed\n attribs.push({ name: 'a_texcoord', size: 2, type: gl.UNSIGNED_SHORT, normalized: true });\n }\n\n this.vertex_layout = new VertexLayout(attribs);\n },\n\n _parseFeature (feature, draw, context) {\n var style = this.feature_style;\n\n style.color = this.parseColor(draw.color, context);\n if (!style.color) {\n return null;\n }\n\n style.z = (draw.z && StyleParser.evalCachedDistanceProperty(draw.z, context)) || StyleParser.defaults.z;\n style.z *= Geo.height_scale; // provide sub-meter precision of height values\n\n style.extrude = StyleParser.evalProperty(draw.extrude, context);\n if (style.extrude) {\n // use feature's height and min_height properties\n if (style.extrude === true) {\n style.height = feature.properties.height || StyleParser.defaults.height;\n style.min_height = feature.properties.min_height || StyleParser.defaults.min_height;\n\n }\n // explicit height, no min_height\n else if (typeof style.extrude === 'number') {\n style.height = style.extrude;\n style.min_height = 0;\n }\n // explicit height and min_height\n else if (Array.isArray(style.extrude)) {\n style.min_height = style.extrude[0];\n style.height = style.extrude[1];\n }\n\n style.height *= Geo.height_scale; // provide sub-meter precision of height values\n style.min_height *= Geo.height_scale;\n }\n\n style.tile_edges = draw.tile_edges; // usually activated for debugging, or rare visualization needs\n\n return style;\n },\n\n _preprocess (draw) {\n draw.color = StyleParser.createColorPropertyCache(draw.color);\n draw.z = StyleParser.createPropertyCache(draw.z, StyleParser.parseUnits);\n return draw;\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style) {\n let i = 0;\n\n // position - x & y coords will be filled in per-vertex below\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = style.z || 0;\n\n // layer order - w coord of 'position' attribute (for packing efficiency)\n this.vertex_template[i++] = this.scaleOrder(style.order);\n\n // normal\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 1 * 127;\n\n // color\n this.vertex_template[i++] = style.color[0] * 255;\n this.vertex_template[i++] = style.color[1] * 255;\n this.vertex_template[i++] = style.color[2] * 255;\n this.vertex_template[i++] = style.color[3] * 255;\n\n // selection color\n if (this.selection) {\n this.vertex_template[i++] = style.selection_color[0] * 255;\n this.vertex_template[i++] = style.selection_color[1] * 255;\n this.vertex_template[i++] = style.selection_color[2] * 255;\n this.vertex_template[i++] = style.selection_color[3] * 255;\n }\n\n // Add texture UVs to template only if needed\n if (this.texcoords) {\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n }\n\n return this.vertex_template;\n },\n\n buildPolygons(polygons, style, mesh, context) {\n let vertex_template = this.makeVertexTemplate(style);\n let options = {\n texcoord_index: this.vertex_layout.index.a_texcoord,\n texcoord_normalize: 65535, // scale UVs to unsigned shorts\n remove_tile_edges: !style.tile_edges,\n tile_edge_tolerance: Geo.tile_scale * context.tile.pad_scale * 4,\n winding: context.winding\n };\n\n // Extruded polygons (e.g. 3D buildings)\n if (style.extrude && style.height) {\n return buildExtrudedPolygons(\n polygons,\n style.z, style.height, style.min_height,\n mesh.vertex_data, vertex_template,\n this.vertex_layout.index.a_normal,\n 127, // scale normals to signed bytes\n options\n );\n }\n // Regular polygons\n else {\n return buildPolygons(\n polygons,\n mesh.vertex_data, vertex_template,\n options\n );\n }\n }\n\n});\n", - "// Raster tile rendering style\n\nimport {StyleParser} from '../style_parser';\nimport {Polygons} from '../polygons/polygons';\n\nexport let RasterStyle = Object.create(Polygons);\n\nObject.assign(RasterStyle, {\n name: 'raster',\n super: Polygons,\n built_in: true,\n\n init() {\n // Required for raster tiles\n this.raster = this.raster || 'color';\n\n this.super.init.apply(this, arguments);\n\n this.selection = false; // raster styles can't support feature selection\n },\n\n _preprocess (draw) {\n // Raster tiles default to white vertex color, as this color will tint the underlying texture\n draw.color = draw.color || StyleParser.defaults.color;\n return this.super._preprocess.apply(this, arguments);\n }\n\n});\n", - "// Rendering styles\n\nimport {StyleParser} from './style_parser';\nimport FeatureSelection from '../selection';\nimport ShaderProgram from '../gl/shader_program';\nimport VBOMesh from '../gl/vbo_mesh';\nimport Texture from '../gl/texture';\nimport Material from '../material';\nimport Light from '../light';\nimport {RasterTileSource} from '../sources/raster';\nimport log from '../utils/log';\nimport mergeObjects from '../utils/merge';\nimport Thread from '../utils/thread';\nimport WorkerBroker from '../utils/worker_broker';\nimport debugSettings from '../utils/debug_settings';\n\nlet fs = require('fs');\nconst shaderSrc_selectionFragment = fs.readFileSync(__dirname + '/../gl/shaders/selection_fragment.glsl', 'utf8');\nconst shaderSrc_rasters = fs.readFileSync(__dirname + '/../gl/shaders/rasters.glsl', 'utf8');\n\n// Base class\n\nexport var Style = {\n init ({ generation, styles, sources = {}, introspection } = {}) {\n this.setGeneration(generation);\n this.styles = styles; // styles for scene\n this.sources = sources; // data sources for scene\n this.defines = (this.hasOwnProperty('defines') && this.defines) || {}; // #defines to be injected into the shaders\n this.shaders = (this.hasOwnProperty('shaders') && this.shaders) || {}; // shader customization (uniforms, defines, blocks, etc.)\n this.introspection = introspection || false;\n this.selection = this.selection || this.introspection || false; // flag indicating if this style supports feature selection\n this.compile_setup = false; // one-time setup steps for program compilation\n this.program = null; // GL program reference (for main render pass)\n this.selection_program = null; // GL program reference for feature selection render pass\n this.feature_style = {}; // style for feature currently being parsed, shared to lessen GC/memory thrash\n this.vertex_template = []; // shared single-vertex template, filled out by each style\n this.tile_data = {};\n\n // Default world coords to wrap every 100,000 meters, can turn off by setting this to 'false'\n this.defines.TANGRAM_WORLD_POSITION_WRAP = 100000;\n\n // Blending\n this.blend = this.blend || 'opaque'; // default: opaque styles are drawn first, without blending\n this.defines[`TANGRAM_BLEND_${this.blend.toUpperCase()}`] = true;\n if (this.blend_order == null) { // controls order of rendering for styles w/non-opaque blending\n this.blend_order = -1; // defaults to first\n }\n\n this.removeShaderBlock('setup'); // clear before material injection\n\n // If the style defines its own material, replace the inherited material instance\n if (!(this.material instanceof Material)) {\n if (!Material.isValid(this.material)) {\n this.material = StyleParser.defaults.material;\n }\n this.material = new Material(this.material);\n }\n this.material.inject(this);\n\n // Set lighting mode: fragment, vertex, or none (specified as 'false')\n Light.setMode(this.lighting, this);\n\n // Setup raster samplers if needed\n this.setupRasters();\n\n this.initialized = true;\n },\n\n destroy () {\n if (this.program) {\n this.program.destroy();\n this.program = null;\n }\n\n if (this.selection_program) {\n this.selection_program.destroy();\n this.selection_program = null;\n }\n\n WorkerBroker.removeTarget(this.main_thread_target);\n this.gl = null;\n this.initialized = false;\n },\n\n reset () {\n },\n\n baseStyle () {\n return this.base || this.name;\n },\n\n setGeneration (generation) {\n // Scene generation id this style was created for\n this.generation = generation;\n\n // Provide a hook for this object to be called from worker threads\n this.main_thread_target = ['Style', this.name, this.generation].join('/');\n if (Thread.is_main) {\n WorkerBroker.addTarget(this.main_thread_target, this);\n }\n },\n\n fillVertexTemplate(vertex_layout, attribute, value, { size, offset }) {\n offset = (offset === undefined) ? 0 : offset;\n\n let index = vertex_layout.index[attribute];\n if (index === undefined) {\n log('warn', `Style: in style '${this.name}', no index found in vertex layout for attribute '${attribute}'`);\n return;\n }\n\n for (let i = 0; i < size; ++i) {\n let v = value.length > i ? value[i] : value;\n this.vertex_template[index + i + offset] = v;\n }\n },\n\n /*** Style parsing and geometry construction ***/\n\n // Returns an object to hold feature data (for a tile or other object)\n startData (tile) {\n this.tile_data[tile.id] = this.tile_data[tile.id] || {\n meshes: {},\n uniforms: {},\n textures: []\n };\n },\n\n // Finalizes an object holding feature data (for a tile or other object)\n endData (tile) {\n var tile_data = this.tile_data[tile.id];\n this.tile_data[tile.id] = null;\n\n if (tile_data && Object.keys(tile_data.meshes).length > 0) {\n for (let variant in tile_data.meshes) {\n let mesh = tile_data.meshes[variant];\n\n // Remove empty mesh variants\n if (mesh.vertex_data.vertex_count === 0) {\n delete tile_data.meshes[variant];\n continue;\n }\n\n // Only keep final byte buffer\n mesh.vertex_data.end();\n mesh.vertex_elements = mesh.vertex_data.element_buffer;\n mesh.vertex_data = mesh.vertex_data.vertex_buffer; // convert from instance to raw typed array\n }\n\n // Load raster tiles passed from data source\n // Blocks mesh completion to avoid flickering\n return this.buildRasterTextures(tile, tile_data).then(tile_data => tile_data);\n }\n else {\n return Promise.resolve(null); // don't send tile data back if doesn't have geometry\n }\n },\n\n // Has mesh data for a given tile?\n hasDataForTile (tile) {\n return this.tile_data[tile.id] != null;\n },\n\n getTileMesh (tile, variant) {\n let meshes = this.tile_data[tile.id].meshes;\n if (meshes[variant.key] == null) {\n meshes[variant.key] = {\n variant,\n vertex_data: this.vertexLayoutForMeshVariant(variant).createVertexData()\n };\n }\n return meshes[variant.key];\n },\n\n vertexLayoutForMeshVariant (variant) {\n return this.vertex_layout;\n },\n\n default_mesh_variant: { key: 0 },\n meshVariantTypeForDraw (draw) {\n return this.default_mesh_variant;\n },\n\n addFeature (feature, draw, context) {\n let tile = context.tile;\n if (tile.generation !== this.generation) {\n return;\n }\n\n if (!this.tile_data[tile.id]) {\n this.startData(tile);\n }\n\n let style = this.parseFeature(feature, draw, context);\n if (!style) {\n return; // skip feature\n }\n\n let mesh = this.getTileMesh(tile, this.meshVariantTypeForDraw(style));\n if (this.buildGeometry(feature.geometry, style, mesh, context) > 0) {\n feature.generation = this.generation; // track scene generation that feature was rendered for\n }\n },\n\n buildGeometry (geometry, style, mesh, context) {\n let geom_count;\n if (geometry.type === 'Polygon') {\n geom_count = this.buildPolygons([geometry.coordinates], style, mesh, context);\n }\n else if (geometry.type === 'MultiPolygon') {\n geom_count = this.buildPolygons(geometry.coordinates, style, mesh, context);\n }\n else if (geometry.type === 'LineString') {\n geom_count = this.buildLines([geometry.coordinates], style, mesh, context);\n }\n else if (geometry.type === 'MultiLineString') {\n geom_count = this.buildLines(geometry.coordinates, style, mesh, context);\n }\n else if (geometry.type === 'Point') {\n geom_count = this.buildPoints([geometry.coordinates], style, mesh, context);\n }\n else if (geometry.type === 'MultiPoint') {\n geom_count = this.buildPoints(geometry.coordinates, style, mesh, context);\n }\n\n // Optionally collect per-layer stats\n if (geom_count > 0 && debugSettings.layer_stats) {\n let tile = context.tile;\n tile.debug.layers = tile.debug.layers || { list: {}, tree: {} };\n let list = tile.debug.layers.list;\n let tree = tile.debug.layers.tree;\n let ftree = {}; // tree of layers for this feature\n context.layers.forEach(layer => {\n addLayerDebugEntry(list, layer, 1, geom_count, {[this.name]: geom_count}, {[this.baseStyle()]: geom_count});\n\n let node = tree;\n let fnode = ftree;\n let levels = layer.split(':');\n for (let i=0; i < levels.length; i++) {\n let level = levels[i];\n node[level] = node[level] || { features: 0, geoms: 0, styles: {}, base: {} };\n\n if (fnode[level] == null) { // only count each layer level once per feature\n fnode[level] = {};\n addLayerDebugEntry(node, level, 1, geom_count, {[this.name]: geom_count}, {[this.baseStyle()]: geom_count});\n }\n\n if (i < levels.length - 1) {\n node[level].layers = node[level].layers || {};\n }\n node = node[level].layers;\n fnode = fnode[level];\n }\n });\n }\n\n return geom_count;\n },\n\n parseFeature (feature, draw, context) {\n try {\n var style = this.feature_style;\n\n // Calculate order\n style.order = this.parseOrder(draw.order, context);\n if (style.order == null && this.blend !== 'overlay') {\n let msg = `Layer '${draw.layers.join(', ')}', draw group '${draw.group}': `;\n msg += `'order' parameter is required unless blend mode is 'overlay'`;\n if (draw.order != null) {\n msg += `; 'order' was set to a dynamic value (e.g. string tied to feature property, `;\n msg += `or JS function), but evaluated to null for one or more features`;\n }\n log({ level: 'warn', once: true }, msg);\n return;\n }\n\n // Subclass implementation\n style = this._parseFeature(feature, draw, context);\n if (!style) {\n return; // skip feature\n }\n\n // Feature selection (only if feature is marked as interactive, and style supports it)\n if (this.selection) {\n style.interactive = StyleParser.evalProperty(this.introspection || draw.interactive, context);\n }\n else {\n style.interactive = false;\n }\n\n if (style.interactive === true) {\n style.selection_color = FeatureSelection.makeColor(feature, context.tile, context);\n }\n else {\n style.selection_color = FeatureSelection.defaultColor;\n }\n\n return style;\n }\n catch(error) {\n log('error', 'Style.parseFeature: style parsing error', feature, style, error.stack);\n }\n },\n\n _parseFeature (feature, draw, context) {\n return this.feature_style;\n },\n\n preprocess (draw) {\n // Preprocess first time\n if (!draw.preprocessed) {\n // Apply draw defaults\n if (this.draw) {\n // Merge each property separately to avoid modifying `draw` instance identity\n for (let param in this.draw) {\n let val = this.draw[param];\n if (typeof val === 'object' && !Array.isArray(val)) { // nested param (e.g. `outline`)\n draw[param] = mergeObjects({}, val, draw[param]);\n }\n else if (draw[param] == null) { // simple param (single scalar value or array)\n draw[param] = val;\n }\n }\n }\n\n draw = this._preprocess(draw); // optional subclass implementation\n if (!draw) {\n return;\n }\n draw.preprocessed = true;\n }\n return draw;\n },\n\n // optionally implemented by subclass\n _preprocess (draw) {\n return draw;\n },\n\n // Parse an order value\n parseOrder (order, context) {\n // Calculate order if it was not cached\n if (typeof order !== 'number') {\n return StyleParser.calculateOrder(order, context);\n }\n return order;\n },\n\n // Expand final precision for half-layers (for outlines)\n scaleOrder (order) {\n return order * 2;\n },\n\n // Parse a color of choose a default if acceptable, return undefined if color missing\n parseColor(color, context) {\n // Need either a color, or a shader block for 'color' or 'filter'\n if (color) {\n return StyleParser.evalCachedColorProperty(color, context);\n }\n else if (this.shaders.blocks.color || this.shaders.blocks.filter) {\n return StyleParser.defaults.color;\n }\n },\n\n // Build functions are no-ops until overriden\n buildPolygons () { return 0; },\n buildLines () { return 0; },\n buildPoints () { return 0; },\n\n\n /*** GL state and rendering ***/\n\n setGL (gl) {\n this.gl = gl;\n this.max_texture_size = Texture.getMaxTextureSize(this.gl);\n },\n\n makeMesh (vertex_data, vertex_elements, options = {}) {\n let vertex_layout = this.vertexLayoutForMeshVariant(options.variant);\n return new VBOMesh(this.gl, vertex_data, vertex_elements, vertex_layout, options);\n },\n\n render (mesh) {\n return mesh.render();\n },\n\n // Get a specific program, compiling if necessary\n getProgram (key = 'program') {\n this.compileSetup();\n\n const program = this[key];\n if (!program || program.error) {\n return;\n }\n\n if (!program.compiled) {\n log('debug', `Compiling style '${this.name}', program key '${key}'`);\n try {\n program.compile();\n }\n catch(e) {\n log('error', `Style: error compiling program for style '${this.name}' (program key '${key}')`, this, e.stack);\n }\n }\n return program;\n },\n\n // One-time setup for compiling style's programs\n compileSetup () {\n if (this.compile_setup) {\n return;\n }\n\n if (!this.gl) {\n throw(new Error(`style.compile(): skipping for ${this.name} because no GL context`));\n }\n\n // Build defines & for selection (need to create a new object since the first is stored as a reference by the program)\n var defines = this.buildDefineList();\n if (this.selection) {\n var selection_defines = Object.assign({}, defines);\n selection_defines.TANGRAM_FEATURE_SELECTION = true;\n }\n\n // Shader blocks\n var blocks = (this.shaders && this.shaders.blocks);\n var block_scopes = (this.shaders && this.shaders.block_scopes);\n\n // Uniforms\n var uniforms = Object.assign({}, this.shaders && this.shaders.uniforms);\n for (let u in uniforms) { // validate uniforms\n if (uniforms[u] == null) {\n log({ level: 'warn', once: true }, `Style '${this.name}' has invalid uniform '${u}': uniform values must be non-null`);\n }\n }\n\n // Accept a single extension, or an array of extensions\n var extensions = (this.shaders && this.shaders.extensions);\n if (typeof extensions === 'string') {\n extensions = [extensions];\n }\n\n // Create shaders\n this.program = new ShaderProgram(\n this.gl,\n this.vertex_shader_src,\n this.fragment_shader_src,\n {\n name: this.name,\n defines,\n uniforms,\n blocks,\n block_scopes,\n extensions\n }\n );\n\n if (this.selection) {\n this.selection_program = new ShaderProgram(\n this.gl,\n this.vertex_shader_src,\n shaderSrc_selectionFragment,\n {\n name: (this.name + ' (selection)'),\n defines: selection_defines,\n uniforms,\n blocks,\n block_scopes,\n extensions\n }\n );\n }\n else {\n this.selection_program = null;\n }\n\n this.compile_setup = true;\n },\n\n // Add a shader block\n addShaderBlock (key, block, scope = null) {\n this.shaders.blocks = this.shaders.blocks || {};\n this.shaders.blocks[key] = this.shaders.blocks[key] || [];\n this.shaders.blocks[key].push(block);\n\n this.shaders.block_scopes = this.shaders.block_scopes || {};\n this.shaders.block_scopes[key] = this.shaders.block_scopes[key] || [];\n this.shaders.block_scopes[key].push(scope);\n },\n\n // Remove all shader blocks for key\n removeShaderBlock (key) {\n if (this.shaders.blocks) {\n this.shaders.blocks[key] = null;\n }\n },\n\n replaceShaderBlock (key, block, scope = null) {\n this.removeShaderBlock(key);\n this.addShaderBlock(key, block, scope);\n },\n\n /** TODO: could probably combine and generalize this with similar method in ShaderProgram\n * (list of define objects that inherit from each other)\n */\n buildDefineList () {\n // Add any custom defines to built-in style defines\n var defines = {}; // create a new object to avoid mutating a prototype value that may be shared with other styles\n if (this.defines != null) {\n for (var d in this.defines) {\n defines[d] = this.defines[d];\n }\n }\n if (this.shaders != null && this.shaders.defines != null) {\n for (d in this.shaders.defines) {\n defines[d] = this.shaders.defines[d];\n }\n }\n return defines;\n\n },\n\n // Determines if 'raster' parameter is set to a valid value\n hasRasters () {\n return (['color', 'normal', 'custom'].indexOf(this.raster) > -1);\n },\n\n // Setup raster access in shaders\n setupRasters () {\n if (!this.hasRasters()) {\n return;\n }\n\n // Enable raster textures and configure how first raster is applied\n if (this.raster === 'color') {\n this.defines.TANGRAM_RASTER_TEXTURE_COLOR = true;\n }\n else if (this.raster === 'normal') {\n this.defines.TANGRAM_RASTER_TEXTURE_NORMAL = true;\n }\n // else custom raster (samplers will be made available but not automatically applied)\n\n // A given style may be built with multiple data sources, each of which may attach\n // a variable number of raster sources (0 to N, where N is the max number of raster sources\n // defined for the scene). This means we don't know *which* or *how many* rasters will be\n // bound now, at initial compile-time; we only know this at geometry build-time. To ensure\n // that we can bind as many raster sources as needed, we declare our uniform arrays to hold\n // the maximum number of possible sources. At render time, only the necessary number of rasters\n // are bound (the remaining slots aren't intended to be accessed).\n let num_raster_sources =\n Object.keys(this.sources)\n .filter(s => this.sources[s] instanceof RasterTileSource)\n .length;\n\n this.defines.TANGRAM_NUM_RASTER_SOURCES = `${num_raster_sources}`; // force to string to avoid auto-float conversion\n if (num_raster_sources > 0) {\n // Use model position of tile's coordinate zoom for raster tile texture UVs\n this.defines.TANGRAM_MODEL_POSITION_BASE_ZOOM_VARYING = true;\n\n // Uniforms and macros for raster samplers\n this.replaceShaderBlock('raster', shaderSrc_rasters, 'Raster');\n }\n },\n\n // Load raster tile textures and set uniforms\n buildRasterTextures (tile, tile_data) {\n if (!this.hasRasters()) {\n return Promise.resolve(tile_data);\n }\n\n let configs = {}; // texture configs to pass to texture builder, keyed by texture name\n let index = {}; // index into raster sampler array, keyed by texture name\n\n // TODO: data source could retrieve raster texture URLs\n tile.rasters.map(r => this.sources[r]).filter(x => x).forEach((source, i) => {\n if (source instanceof RasterTileSource) {\n let config = source.tileTexture(tile);\n configs[config.url] = config;\n index[config.url] = i;\n }\n });\n\n if (Object.keys(configs).length === 0) {\n return Promise.resolve(tile_data);\n }\n\n // Load textures on main thread and return when done\n // We want to block the building of a raster tile mesh until its texture is loaded,\n // to avoid flickering while loading (texture will render as black)\n return WorkerBroker.postMessage(this.main_thread_target+'.loadTextures', configs)\n .then(textures => {\n if (!textures || textures.length < 1) { // no textures found (unexpected)\n // TODO: warning\n return tile_data;\n }\n else if (textures.some(t => !t.loaded)) { // some textures failed, throw out style for this tile\n return null;\n }\n\n // Set texture uniforms (returned after loading from main thread)\n tile_data.uniforms = tile_data.uniforms || {};\n tile_data.textures = tile_data.textures || [];\n\n let u_samplers = tile_data.uniforms['u_rasters'] = [];\n let u_sizes = tile_data.uniforms['u_raster_sizes'] = [];\n let u_offsets = tile_data.uniforms['u_raster_offsets'] = [];\n\n textures.forEach(t => {\n let i = index[t.name];\n let raster_coords = configs[t.name].coords; // tile coords of raster tile\n\n u_samplers[i] = t.name;\n tile_data.textures.push(t.name);\n\n u_sizes[i] = [t.width, t.height];\n\n // Tile geometry may be at a higher zoom than the raster tile texture,\n // (e.g. an overzoomed raster tile), in which case we need to adjust the\n // raster texture UVs to offset to the appropriate starting point for\n // this geometry tile.\n if (tile.coords.z > raster_coords.z) {\n let dz = tile.coords.z - raster_coords.z; // # of levels raster source is overzoomed\n let dz2 = Math.pow(2, dz);\n u_offsets[i] = [\n (((tile.coords.x % dz2) + dz2) % dz2) / dz2, // double-modulo to handle negative (wrapped) tile coords\n (dz2 - 1 - (tile.coords.y % dz2)) / dz2, // GL texture coords are +Y up\n 1 / dz2\n ];\n }\n else {\n u_offsets[i] = [0, 0, 1];\n }\n });\n\n return tile_data;\n }\n );\n },\n\n // Called on main thread\n loadTextures (textures) {\n // NB: only return name and size of textures loaded, because we can't send actual texture objects to worker\n return Texture.createFromObject(this.gl, textures)\n .then(() => {\n return Promise.all(Object.keys(textures).map(t => {\n return Texture.textures[t] && Texture.textures[t].load();\n }).filter(x => x));\n })\n .then(textures => {\n textures.forEach(t => t.retain());\n return textures.map(t => ({ name: t.name, width: t.width, height: t.height, loaded: t.loaded }));\n });\n },\n\n // Setup any GL state for rendering\n setup () {\n this.setUniforms();\n this.material.setupProgram(ShaderProgram.current);\n },\n\n // Set style uniforms on currently bound program\n setUniforms () {\n var program = ShaderProgram.current;\n if (!program) {\n return;\n }\n\n program.setUniforms(this.shaders && this.shaders.uniforms, true); // reset texture unit to 0\n },\n\n // Render state settings by blend mode\n render_states: {\n opaque: { depth_test: true, depth_write: true },\n translucent: { depth_test: true, depth_write: true },\n add: { depth_test: true, depth_write: false },\n multiply: { depth_test: true, depth_write: false },\n inlay: { depth_test: true, depth_write: false },\n overlay: { depth_test: false, depth_write: false }\n },\n\n // Default sort order for blend modes\n default_blend_orders: {\n opaque: 0,\n add: 1,\n multiply: 2,\n inlay: 3,\n translucent: 4,\n overlay: 5\n },\n\n // Comparison function for sorting styles by blend\n blendOrderSort (a, b) {\n // opaque always comes first\n if (a.blend === 'opaque' || b.blend === 'opaque') {\n if (a.blend === 'opaque' && b.blend === 'opaque') { // if both are opaque\n return a.name < b.name ? -1 : 1; // use name as tie breaker\n }\n else if (a.blend === 'opaque') {\n return -1; // only `a` was opaque\n }\n else {\n return 1; // only `b` was opaque\n }\n }\n\n // use explicit blend order if possible\n if (a.blend_order < b.blend_order) {\n return -1;\n }\n else if (a.blend_order > b.blend_order) {\n return 1;\n }\n\n // if blend orders are equal, use default order by blend mode\n if (Style.default_blend_orders[a.blend] < Style.default_blend_orders[b.blend]) {\n return -1;\n }\n else if (Style.default_blend_orders[a.blend] > Style.default_blend_orders[b.blend]) {\n return 1;\n }\n\n return a.name < b.name ? -1 : 1; // use name as tie breaker\n }\n\n};\n\n// add feature and geometry counts for a single layer\nexport function addLayerDebugEntry (target, layer, faeture_count, geom_count, styles, bases) {\n target[layer] = target[layer] || { features: 0, geoms: 0, styles: {}, base: {} };\n target[layer].features += faeture_count; // feature count\n target[layer].geoms += geom_count; // geometry count\n\n // geometry count by style\n for (let style in styles) {\n target[layer].styles[style] = target[layer].styles[style] || 0;\n target[layer].styles[style] += styles[style];\n }\n\n // geometry count by base style\n for (let style in bases) {\n target[layer].base[style] = target[layer].base[style] || 0;\n target[layer].base[style] += bases[style];\n }\n}\n", + "// Line rendering style\n\nimport log from '../../utils/log';\nimport {Style} from '../style';\nimport StyleParser from '../style_parser';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\nimport Texture from '../../gl/texture';\nimport VertexLayout from '../../gl/vertex_layout';\nimport {buildPolylines} from '../../builders/polylines';\nimport renderDashArray from './dasharray';\nimport Geo from '../../geo';\nimport WorkerBroker from '../../utils/worker_broker';\nimport hashString from '../../utils/hash';\nimport {shaderSrc_polygonsVertex, shaderSrc_polygonsFragment} from '../polygons/polygons';\n\nexport const Lines = Object.create(Style);\n\nLines.vertex_layouts = [[], []]; // first dimension is texcoords on/off, second is offsets on/off\nLines.variants = {}; // mesh variants by variant key\nLines.dash_textures = {}; // needs to be cleared on scene config update\n\nconst DASH_SCALE = 20; // adjustment factor for UV scale to for line dash patterns w/fractional pixel width\n\nObject.assign(Lines, {\n name: 'lines',\n built_in: true,\n vertex_shader_src: shaderSrc_polygonsVertex,\n fragment_shader_src: shaderSrc_polygonsFragment,\n selection: true, // enable feature selection\n\n init() {\n Style.init.apply(this, arguments);\n\n // Tell the shader we want a order in vertex attributes, and to extrude lines\n this.defines.TANGRAM_LAYER_ORDER = true;\n this.defines.TANGRAM_EXTRUDE_LINES = true;\n this.defines.TANGRAM_TEXTURE_COORDS = true; // texcoords attribute is set to static when not needed\n\n // Additional single-allocated object used for holding outline style as it is processed\n // Separate from this.feature_style so that outline properties do not overwrite calculated\n // inline properties (outline call is made *within* the inline call)\n this.outline_feature_style = {};\n this.inline_feature_style = this.feature_style; // save reference to main computed style object\n },\n\n // Calculate width or offset at zoom given in `context`\n calcDistance (prop, context) {\n return (prop && StyleParser.evalCachedDistanceProperty(prop, context)) || 0;\n },\n\n // Calculate width or offset at next zoom (used for zoom-based interpolation in shader)\n calcDistanceNextZoom (prop, context) {\n context.zoom++;\n let val = this.calcDistance(prop, context);\n context.zoom--;\n return val;\n },\n\n // Calculate width at current and next zoom, and scaling factor between\n calcWidth (draw, style, context) {\n // line width in meters\n let width = this.calcDistance(draw.width, context);\n if (width < 0) {\n return; // skip lines with negative width\n }\n\n let next_width;\n if (draw.next_width) {\n next_width = this.calcDistanceNextZoom(draw.next_width, context);\n }\n else {\n next_width = width / 2; // when width is static, width at next zoom is just half as many tile units\n }\n\n if ((width === 0 && next_width === 0) || next_width < 0) {\n return false; // skip lines that don't interpolate to a positive value at next zoom\n }\n\n // these values are saved for later calculating the outline width, which needs to add the base line's width\n style.width_unscaled = width;\n style.next_width_unscaled = next_width;\n\n // calculate relative change in line width between zooms\n // interpolate from the line width at the zoom mid-point, towards/away from the previous/next integer zoom\n if (draw.next_width) {\n next_width *= 2; // NB: a given width is twice as big in screen space at the next zoom\n let mid_width = (width + next_width) * 0.5;\n style.width = mid_width * context.units_per_meter_overzoom; // width at zoom mid-point\n style.width_scale = 1 - (next_width / mid_width);\n }\n else {\n style.width = width * context.units_per_meter_overzoom;\n style.width_scale = 0;\n }\n\n // optional adjustment to texcoord width based on scale\n if (draw.texcoords) {\n // when drawing an outline, use the inline's texture scale\n // (e.g. keeps dashed outline pattern locked to inline pattern)\n if (draw.inline_texcoord_width) {\n style.texcoord_width = draw.inline_texcoord_width;\n }\n // when drawing an inline, calculate UVs based on line width\n else {\n // UVs can't calc for zero-width, use next zoom width in that case\n style.texcoord_width = (style.width_unscaled || style.next_width_unscaled) * context.units_per_meter_overzoom / context.tile.overzoom2; // shorten calcs\n }\n }\n\n return true;\n },\n\n // Calculate offset at current and next zoom, and scaling factor between\n calcOffset (draw, style, context) {\n // Pre-calculated offset passed\n // This happens when a line passes pre-computed offset values to its outline\n if (draw.offset_precalc) {\n style.offset = draw.offset_precalc;\n style.offset_scale = draw.offset_scale_precalc;\n }\n // Offset to calculate\n else if (draw.offset) {\n let offset = this.calcDistance(draw.offset, context);\n\n if (draw.next_offset) {\n let next_offset = this.calcDistanceNextZoom(draw.next_offset, context) * 2;\n\n if (Math.abs(offset) >= Math.abs(next_offset)) {\n style.offset = offset * context.units_per_meter_overzoom;\n if (offset !== 0) {\n style.offset_scale = 1 - (next_offset / offset);\n }\n else {\n style.offset_scale = 0;\n }\n }\n else {\n style.offset = next_offset * context.units_per_meter_overzoom;\n if (next_offset !== 0) {\n style.offset_scale = (1 - (offset / next_offset)) * -1;\n }\n else {\n style.offset_scale = 0;\n }\n }\n }\n else {\n style.offset = offset * context.units_per_meter_overzoom;\n style.offset_scale = 0;\n }\n }\n // No offset\n else {\n style.offset = 0;\n style.offset_scale = 0;\n }\n },\n\n _parseFeature (feature, draw, context) {\n var style = this.feature_style;\n\n // calculate line width at current and next zoom\n if (this.calcWidth(draw, style, context) === false) {\n return; // missing or zero width\n }\n\n // calculate line offset at current and next zoom\n this.calcOffset(draw, style, context);\n\n style.color = this.parseColor(draw.color, context);\n if (!style.color) {\n return;\n }\n\n style.variant = draw.variant; // pre-calculated mesh variant\n\n // height defaults to feature height, but extrude style can dynamically adjust height by returning a number or array (instead of a boolean)\n style.z = (draw.z && StyleParser.evalCachedDistanceProperty(draw.z || 0, context)) || StyleParser.defaults.z;\n style.height = feature.properties.height || StyleParser.defaults.height;\n style.extrude = StyleParser.evalProperty(draw.extrude, context);\n if (style.extrude) {\n if (typeof style.extrude === 'number') {\n style.height = style.extrude;\n }\n else if (Array.isArray(style.extrude)) {\n style.height = style.extrude[1];\n }\n }\n\n // Raise line height if extruded\n if (style.extrude && style.height) {\n style.z += style.height;\n }\n\n style.z *= Geo.height_scale; // provide sub-meter precision of height values\n style.height *= Geo.height_scale;\n\n style.cap = draw.cap;\n style.join = draw.join;\n\n style.miter_limit = draw.miter_limit;\n style.tile_edges = draw.tile_edges; // usually activated for debugging, or rare visualization needs\n\n // Construct an outline style\n // Reusable outline style object, marked as already wrapped in cache objects (preprocessed = true)\n style.outline = style.outline || {\n width: {}, next_width: {},\n preprocessed: true\n };\n\n if (draw.outline && draw.outline.visible !== false && draw.outline.color && draw.outline.width) {\n // outline width in meters\n // NB: multiply by 2 because outline is applied on both sides of line\n let outline_width = this.calcDistance(draw.outline.width, context) * 2;\n let outline_next_width = this.calcDistanceNextZoom(draw.outline.next_width, context) * 2;\n\n if ((outline_width === 0 && outline_next_width === 0) || outline_width < 0 || outline_next_width < 0) {\n // skip lines that don't interpolate between zero or greater width\n style.outline.width.value = null;\n style.outline.next_width.value = null;\n style.outline.color = null;\n style.outline.inline_texcoord_width = null;\n style.outline.texcoords = false;\n }\n else {\n // Maintain consistent outline width around the line fill\n style.outline.width.value = outline_width + style.width_unscaled;\n style.outline.next_width.value = outline_next_width + style.next_width_unscaled;\n style.outline.inline_texcoord_width = style.texcoord_width;\n\n // Offset is directly copied from fill to outline, no need to re-calculate it\n style.outline.offset_precalc = style.offset;\n style.outline.offset_scale_precalc = style.offset_scale;\n\n // Inherited properties\n style.outline.color = draw.outline.color;\n style.outline.cap = draw.outline.cap;\n style.outline.join = draw.outline.join;\n style.outline.miter_limit = draw.outline.miter_limit;\n style.outline.texcoords = draw.outline.texcoords;\n style.outline.style = draw.outline.style;\n style.outline.variant = draw.outline.variant;\n\n // Explicitly defined outline order, or inherited from inner line\n if (draw.outline.order) {\n style.outline.order = this.parseOrder(draw.outline.order, context);\n }\n else {\n style.outline.order = style.order;\n }\n\n // Don't let outline be above inner line\n if (style.outline.order > style.order) {\n style.outline.order = style.order;\n }\n\n // Outlines are always at half-layer intervals to avoid conflicting with inner lines\n style.outline.order -= 0.5;\n\n // Ensure outlines in a separate mesh variant are drawn first\n style.outline.variant_order = 0;\n }\n }\n else {\n style.outline.width.value = null;\n style.outline.next_width.value = null;\n style.outline.color = null;\n style.outline.inline_texcoord_width = null;\n }\n\n return style;\n },\n\n _preprocess (draw) {\n draw.color = StyleParser.createColorPropertyCache(draw.color);\n draw.width = StyleParser.createPropertyCache(draw.width, StyleParser.parseUnits);\n if (draw.width && draw.width.type !== StyleParser.CACHE_TYPE.STATIC) {\n draw.next_width = StyleParser.createPropertyCache(draw.width, StyleParser.parseUnits);\n }\n draw.offset = draw.offset && StyleParser.createPropertyCache(draw.offset, StyleParser.parseUnits);\n if (draw.offset && draw.offset.type !== StyleParser.CACHE_TYPE.STATIC) {\n draw.next_offset = StyleParser.createPropertyCache(draw.offset, StyleParser.parseUnits);\n }\n draw.z = StyleParser.createPropertyCache(draw.z, StyleParser.parseUnits);\n\n draw.dash = (draw.dash !== undefined ? draw.dash : this.dash);\n draw.dash_key = draw.dash && this.dashTextureKey(draw.dash);\n draw.dash_background_color = (draw.dash_background_color !== undefined ? draw.dash_background_color : this.dash_background_color);\n draw.dash_background_color = draw.dash_background_color && StyleParser.parseColor(draw.dash_background_color);\n draw.texture_merged = draw.dash_key || ((draw.texture !== undefined ? draw.texture : this.texture));\n draw.texcoords = ((this.texcoords || draw.texture_merged) ? 1 : 0);\n this.computeVariant(draw);\n\n if (draw.outline) {\n draw.outline.style = draw.outline.style || this.name;\n draw.outline.color = StyleParser.createColorPropertyCache(draw.outline.color);\n draw.outline.width = StyleParser.createPropertyCache(draw.outline.width, StyleParser.parseUnits);\n draw.outline.next_width = StyleParser.createPropertyCache(draw.outline.width, StyleParser.parseUnits); // width re-computed for next zoom\n\n draw.outline.cap = draw.outline.cap || draw.cap;\n draw.outline.join = draw.outline.join || draw.join;\n draw.outline.miter_limit = draw.outline.miter_limit || draw.miter_limit;\n draw.outline.offset = draw.offset;\n\n // outline inhertits dash pattern, but NOT explicit texture\n let outline_style = this.styles[draw.outline.style];\n if (outline_style) {\n draw.outline.dash = (draw.outline.dash !== undefined ? draw.outline.dash : outline_style.dash);\n draw.outline.texture = (draw.outline.texture !== undefined ? draw.outline.texture : outline_style.texture);\n\n if (draw.outline.dash != null) { // dash was defined by outline draw or style\n draw.outline.dash_key = draw.outline.dash && this.dashTextureKey(draw.outline.dash);\n draw.outline.texture_merged = draw.outline.dash_key;\n }\n else if (draw.outline.dash === null) { // dash explicitly disabled by outline draw or style\n draw.outline.dash_key = null;\n draw.outline.texture_merged = draw.outline.texture;\n }\n else if (draw.outline.texture != null) { // texture was defined by outline draw or style\n draw.outline.dash_key = null; // outline explicitly turning off dash\n draw.outline.texture_merged = draw.outline.texture;\n }\n else { // no dash or texture defined for outline, inherit parent dash\n draw.outline.dash = draw.dash;\n draw.outline.dash_key = draw.outline.dash && this.dashTextureKey(draw.outline.dash);\n draw.outline.texture_merged = draw.outline.dash_key;\n }\n draw.outline.dash_background_color = (draw.outline.dash_background_color !== undefined ? draw.outline.dash_background_color : outline_style.dash_background_color);\n draw.outline.dash_background_color = (draw.outline.dash_background_color !== undefined ? draw.outline.dash_background_color : draw.dash_background_color);\n draw.outline.dash_background_color = draw.outline.dash_background_color && StyleParser.parseColor(draw.outline.dash_background_color);\n draw.outline.texcoords = ((outline_style.texcoords || draw.outline.texture_merged) ? 1 : 0);\n this.computeVariant(draw.outline);\n }\n else {\n log({ level: 'warn', once: true }, `Layer '${draw.layers[draw.layers.length-1]}': ` +\n `line 'outline' specifies non-existent draw style '${draw.outline.style}' (or maybe the style is ` +\n `defined but is missing a 'base' or has another error), skipping outlines in layer`);\n draw.outline = null;\n }\n }\n return draw;\n },\n\n // Unique string key for a dash pattern (used as texture name)\n dashTextureKey (dash) {\n return '__dash_' + JSON.stringify(dash);\n },\n\n // Return or render a dash pattern texture\n getDashTexture (dash) {\n let dash_key = this.dashTextureKey(dash);\n\n if (Lines.dash_textures[dash_key] == null) {\n Lines.dash_textures[dash_key] = true;\n\n // Render line pattern\n const dash_texture = renderDashArray(dash, { scale: DASH_SCALE });\n Texture.create(this.gl, dash_key, {\n data: dash_texture.pixels,\n height: dash_texture.length,\n width: 1,\n filtering: 'nearest'\n });\n }\n },\n\n // Override\n endData (tile) {\n return Style.endData.call(this, tile).then(tile_data => {\n if (tile_data) {\n tile_data.uniforms.u_has_line_texture = false;\n tile_data.uniforms.u_texture = Texture.default;\n tile_data.uniforms.u_v_scale_adjust = Geo.tile_scale;\n\n let pending = [];\n for (let m in tile_data.meshes) {\n let variant = tile_data.meshes[m].variant;\n if (variant.texture) {\n let uniforms = tile_data.meshes[m].uniforms = tile_data.meshes[m].uniforms || {};\n uniforms.u_has_line_texture = true;\n uniforms.u_texture = variant.texture;\n uniforms.u_texture_ratio = 1;\n\n if (variant.dash) {\n uniforms.u_v_scale_adjust = Geo.tile_scale * DASH_SCALE;\n uniforms.u_dash_background_color = variant.dash_background_color || [0, 0, 0, 0];\n }\n\n if (variant.dash_key && Lines.dash_textures[variant.dash_key] == null) {\n Lines.dash_textures[variant.dash_key] = true;\n WorkerBroker.postMessage(this.main_thread_target+'.getDashTexture', variant.dash);\n }\n\n if (Texture.textures[variant.texture] == null) {\n pending.push(\n Texture.syncTexturesToWorker([variant.texture]).then(textures => {\n let texture = textures[variant.texture];\n if (texture) {\n uniforms.u_texture_ratio = texture.height / texture.width;\n }\n })\n );\n }\n else {\n let texture = Texture.textures[variant.texture];\n uniforms.u_texture_ratio = texture.height / texture.width;\n }\n }\n }\n return Promise.all(pending).then(() => tile_data);\n }\n return tile_data;\n });\n },\n\n // Calculate and store mesh variant (unique by draw group but not feature)\n computeVariant (draw) {\n let key = (draw.offset ? 1 : 0);\n if (draw.dash_key) {\n key += draw.dash_key;\n if (draw.dash_background_color) {\n key += draw.dash_background_color;\n }\n }\n\n if (draw.texture_merged) {\n key += draw.texture_merged;\n }\n key += '/' + draw.texcoords;\n key = hashString(key);\n draw.variant = key;\n\n if (Lines.variants[key] == null) {\n Lines.variants[key] = {\n key,\n order: draw.variant_order,\n offset: (draw.offset ? 1 : 0),\n texcoords: draw.texcoords,\n texture: draw.texture_merged,\n dash: draw.dash,\n dash_key: draw.dash_key,\n dash_background_color: draw.dash_background_color\n };\n }\n },\n\n // Override\n // Create or return desired vertex layout permutation based on flags\n vertexLayoutForMeshVariant (variant) {\n if (Lines.vertex_layouts[variant.key] == null) {\n // Basic attributes, others can be added (see texture UVs below)\n let attribs = [\n { name: 'a_position', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_extrude', size: 2, type: gl.SHORT, normalized: false },\n { name: 'a_offset', size: 2, type: gl.SHORT, normalized: false, static: (variant.offset ? null : [0, 0]) },\n { name: 'a_scaling', size: 2, type: gl.SHORT, normalized: false },\n { name: 'a_texcoord', size: 2, type: gl.UNSIGNED_SHORT, normalized: true, static: (variant.texcoords ? null : [0, 0]) },\n { name: 'a_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true },\n { name: 'a_selection_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true }\n ];\n Lines.vertex_layouts[variant.key] = new VertexLayout(attribs);\n }\n return Lines.vertex_layouts[variant.key];\n },\n\n // Override\n meshVariantTypeForDraw (draw) {\n return Lines.variants[draw.variant]; // return pre-calculated mesh variant\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style, mesh) {\n let i = 0;\n\n // a_position.xyz - vertex position\n // a_position.w - layer order\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = style.z || 0;\n this.vertex_template[i++] = this.scaleOrder(style.order);\n\n // a_extrude.xy - extrusion vector\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n\n // a_offset.xy - normal vector\n // offset can be static or dynamic depending on style\n if (mesh.variant.offset) {\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n }\n\n // a_scaling.xy - scaling to previous and next zoom\n this.vertex_template[i++] = style.width_scale * 1024; // line width\n this.vertex_template[i++] = style.offset_scale * 1024; // line offset\n\n // Add texture UVs to template only if needed\n if (mesh.variant.texcoords) {\n // a_texcoord.uv\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n }\n\n // a_color.rgba\n this.vertex_template[i++] = style.color[0] * 255;\n this.vertex_template[i++] = style.color[1] * 255;\n this.vertex_template[i++] = style.color[2] * 255;\n this.vertex_template[i++] = style.color[3] * 255;\n\n // selection color\n if (this.selection) {\n // a_selection_color.rgba\n this.vertex_template[i++] = style.selection_color[0] * 255;\n this.vertex_template[i++] = style.selection_color[1] * 255;\n this.vertex_template[i++] = style.selection_color[2] * 255;\n this.vertex_template[i++] = style.selection_color[3] * 255;\n }\n\n return this.vertex_template;\n },\n\n buildLines(lines, style, mesh, context, options) {\n // Outline (build first so that blended geometry without a depth test is drawn first/under the inner line)\n this.feature_style = this.outline_feature_style; // swap in outline-specific style holder\n if (style.outline && style.outline.color != null && style.outline.width.value != null) {\n var outline_style = this.styles[style.outline.style];\n if (outline_style) {\n outline_style.addFeature(context.feature, style.outline, context);\n }\n }\n\n // Main line\n this.feature_style = this.inline_feature_style; // restore calculated style for inline\n let vertex_data = mesh.vertex_data;\n let vertex_layout = vertex_data.vertex_layout;\n let vertex_template = this.makeVertexTemplate(style, mesh);\n return buildPolylines(\n lines,\n style.width,\n vertex_data,\n vertex_template,\n {\n cap: style.cap,\n join: style.join,\n miter_limit: style.miter_limit,\n extrude_index: vertex_layout.index.a_extrude,\n offset_index: vertex_layout.index.a_offset,\n texcoord_index: vertex_layout.index.a_texcoord,\n texcoord_width: style.texcoord_width,\n texcoord_normalize: 65535, // scale UVs to unsigned shorts\n closed_polygon: options && options.closed_polygon,\n remove_tile_edges: !style.tile_edges && options && options.remove_tile_edges,\n tile_edge_tolerance: Geo.tile_scale * context.tile.pad_scale * 2,\n offset: style.offset\n }\n );\n },\n\n buildPolygons(polygons, style, mesh, context) {\n // Render polygons as individual lines\n let geom_count = 0;\n for (let p=0; p < polygons.length; p++) {\n geom_count += this.buildLines(polygons[p], style, mesh, context, { closed_polygon: true, remove_tile_edges: true });\n }\n return geom_count;\n }\n\n});\n", + "// Point + text label rendering style\n\nimport log from '../../utils/log';\nimport {Style} from '../style';\nimport StyleParser from '../style_parser';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\nimport VertexLayout from '../../gl/vertex_layout';\nimport {buildQuadsForPoints} from '../../builders/points';\nimport Texture from '../../gl/texture';\nimport Geo from '../../geo';\nimport Vector from '../../vector';\nimport Collision from '../../labels/collision';\nimport LabelPoint from '../../labels/label_point';\nimport placePointsOnLine from '../../labels/point_placement';\nimport {TextLabels} from '../text/text_labels';\nimport {VIEW_PAN_SNAP_TIME} from '../../view';\nimport debugSettings from '../../utils/debug_settings';\n\nlet fs = require('fs');\nconst shaderSrc_pointsVertex = fs.readFileSync(__dirname + '/points_vertex.glsl', 'utf8');\nconst shaderSrc_pointsFragment = fs.readFileSync(__dirname + '/points_fragment.glsl', 'utf8');\n\nconst PLACEMENT = LabelPoint.PLACEMENT;\n\nconst pre_angles_normalize = 128 / Math.PI;\nconst angles_normalize = 16384 / Math.PI;\nconst offsets_normalize = 64;\nconst texcoord_normalize = 65535;\n\nexport const Points = Object.create(Style);\n\nPoints.variants = {}; // mesh variants by variant key\n\n// texture types\nconst TANGRAM_POINT_TYPE_TEXTURE = 1; // style texture/sprites (assigned by user)\nconst TANGRAM_POINT_TYPE_LABEL = 2; // labels (generated by rendering labels to canvas)\nconst TANGRAM_POINT_TYPE_SHADER = 3; // point (drawn in shader)\n\n// default point size in pixels\nconst DEFAULT_POINT_SIZE = 16;\n\n// Mixin text label methods\nObject.assign(Points, TextLabels);\n\nObject.assign(Points, {\n name: 'points',\n built_in: true,\n vertex_shader_src: shaderSrc_pointsVertex,\n fragment_shader_src: shaderSrc_pointsFragment,\n selection: true, // enable feature selection\n collision: true, // style includes a collision pass\n blend: 'overlay', // overlays drawn on top of all other styles, with blending\n\n init(options = {}) {\n Style.init.call(this, options);\n\n // Vertex layout\n let attribs = [\n { name: 'a_position', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_shape', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_texcoord', size: 2, type: gl.UNSIGNED_SHORT, normalized: true },\n { name: 'a_offset', size: 2, type: gl.SHORT, normalized: false },\n { name: 'a_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true },\n { name: 'a_outline_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true, static: [0, 0, 0, 0] },\n { name: 'a_outline_edge', size: 1, type: gl.FLOAT, normalized: false, static: 0 },\n { name: 'a_selection_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true }\n ];\n\n this.vertex_layout = new VertexLayout(attribs);\n\n // Modified vertex layout for shader-drawn points\n attribs = attribs.map(x => Object.assign({}, x)); // copy attribs\n attribs.forEach(attrib => {\n // clear the static attribute value for shader points\n if (attrib.name === 'a_outline_color' || attrib.name === 'a_outline_edge') {\n attrib.static = null;\n }\n });\n this.vertex_layout_shader_point = new VertexLayout(attribs);\n\n // Shader defines\n this.setupDefines();\n\n // Include code for SDF-drawn shader points\n this.defines.TANGRAM_HAS_SHADER_POINTS = true;\n\n // texture types\n this.defines.TANGRAM_POINT_TYPE_TEXTURE = TANGRAM_POINT_TYPE_TEXTURE;\n this.defines.TANGRAM_POINT_TYPE_LABEL = TANGRAM_POINT_TYPE_LABEL;\n this.defines.TANGRAM_POINT_TYPE_SHADER = TANGRAM_POINT_TYPE_SHADER;\n\n this.collision_group_points = this.name+'-points';\n this.collision_group_text = this.name+'-text';\n\n this.reset();\n },\n\n // Setup defines common to points base and child (text) styles\n setupDefines () {\n // If we're not rendering as overlay, we need a layer attribute\n if (this.blend !== 'overlay') {\n this.defines.TANGRAM_LAYER_ORDER = true;\n }\n\n // Fade out when tile is zooming out, e.g. acting as proxy tiles\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT = true;\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT_RATE = 2; // fade at 2x, e.g. fully transparent at 0.5 zoom level away\n\n // Fade in (depending on tile proxy status)\n if (debugSettings.suppress_label_fade_in === true) {\n this.fade_in_time = 0;\n this.defines.TANGRAM_FADE_IN_RATE = null;\n }\n else {\n this.fade_in_time = 0.15; // time in seconds\n this.defines.TANGRAM_FADE_IN_RATE = 1 / this.fade_in_time;\n }\n\n // Snap points to pixel grid after panning stop\n if (debugSettings.suppress_label_snap_animation !== true) {\n this.defines.TANGRAM_VIEW_PAN_SNAP_RATE = 1 / VIEW_PAN_SNAP_TIME; // inverse time in seconds\n }\n },\n\n reset () {\n this.queues = {};\n this.resetText();\n this.texture_missing_sprites = {}; // track which missing sprites we've found (reduce dupe log messages)\n },\n\n // Override to queue features instead of processing immediately\n addFeature (feature, draw, context) {\n let tile = context.tile;\n if (tile.generation !== this.generation) {\n return;\n }\n\n // Point styling\n let style = {};\n style.color = this.parseColor(draw.color, context);\n style.texture = draw.texture; // optional point texture, specified in `draw` or at style level\n style.label_texture = null; // assigned by labelling code if needed\n\n // require color or texture\n if (!style.color && !style.texture) {\n return;\n }\n\n // optional sprite\n let sprite_info;\n if (this.hasSprites(style)) {\n sprite_info = this.parseSprite(style, draw, context);\n if (sprite_info) {\n style.texcoords = sprite_info.texcoords;\n }\n else {\n return;\n }\n }\n\n // point size defined explicitly, or defaults to sprite size, or generic fallback\n style.size = draw.size;\n if (!style.size) {\n style.size = (sprite_info && sprite_info.css_size) || [DEFAULT_POINT_SIZE, DEFAULT_POINT_SIZE];\n }\n else {\n style.size = StyleParser.evalCachedPointSizeProperty(draw.size, sprite_info, context);\n if (style.size == null) {\n log({ level: 'warn', once: true }, `Layer '${draw.layers[draw.layers.length-1]}': ` +\n `'size' includes % and/or ratio-based scaling (${JSON.stringify(draw.size.value)}); ` +\n `these can only applied to sprites, but no sprite was specified, skipping features in layer`);\n return;\n }\n else if (typeof style.size === 'number') {\n style.size = [style.size, style.size]; // convert 1d size to 2d\n }\n }\n\n // incorporate outline into size\n if (draw.outline) {\n style.outline_width = StyleParser.evalCachedProperty(draw.outline.width, context) || StyleParser.defaults.outline.width;\n style.outline_color = this.parseColor(draw.outline.color, context);\n }\n\n style.outline_edge_pct = 0;\n if (style.outline_width && style.outline_color) {\n let outline_width = style.outline_width;\n style.size[0] += outline_width;\n style.size[1] += outline_width;\n style.outline_edge_pct = outline_width / Math.min(style.size[0], style.size[1]) * 2; // UV distance at which outline starts\n }\n\n // size will be scaled to 16-bit signed int, so max allowed width + height of 256 pixels\n style.size[0] = Math.min(style.size[0], 256);\n style.size[1] = Math.min(style.size[1], 256);\n\n // Placement strategy\n style.placement = draw.placement;\n style.placement_min_length_ratio = StyleParser.evalCachedProperty(draw.placement_min_length_ratio, context);\n\n // Spacing parameter (in pixels) to equally space points along a line\n if (style.placement === PLACEMENT.SPACED && draw.placement_spacing) {\n style.placement_spacing = StyleParser.evalCachedProperty(draw.placement_spacing, context);\n }\n\n // Angle parameter (can be a number or the string \"auto\")\n style.angle = StyleParser.evalProperty(draw.angle, context) || 0;\n\n // points can be placed off the ground\n style.z = (draw.z && StyleParser.evalCachedDistanceProperty(draw.z, context)) || StyleParser.defaults.z;\n\n style.tile_edges = draw.tile_edges; // usually activated for debugging, or rare visualization needs\n\n this.computeLayout(style, feature, draw, context, tile);\n\n // Text styling\n let tf =\n draw.text &&\n draw.text.visible !== false && // explicitly handle `visible` property for nested text\n this.parseTextFeature(feature, draw.text, context, tile);\n\n if (Array.isArray(tf)) {\n tf = null; // NB: boundary labels not supported for point label attachments, should log warning\n log({ level: 'warn', once: true }, `Layer '${draw.layers[draw.layers.length-1]}': ` +\n `cannot use boundary labels (e.g. 'text_source: { left: ..., right: ... }') for 'text' labels attached to 'points'; ` +\n `provided 'text_source' value was ${JSON.stringify(draw.text.text_source)}`);\n }\n\n if (tf) {\n tf.layout.parent = style; // parent point will apply additional anchor/offset to text\n\n // Text labels have a default priority of 0.5 below their parent point (+0.5, priority is lower-is-better)\n // This can be overriden, as long as it is less than or equal to the default\n tf.layout.priority = draw.text.priority ? Math.max(tf.layout.priority, style.priority + 0.5) : (style.priority + 0.5);\n\n // Text labels attached to points should not be moved into tile\n // (they should stay fixed relative to the point)\n tf.layout.move_into_tile = false;\n\n Collision.addStyle(this.collision_group_text, tile.id);\n }\n\n this.queueFeature({ feature, draw, context, style, text_feature: tf }, tile); // queue the feature for later processing\n\n // Register with collision manager\n Collision.addStyle(this.collision_group_points, tile.id);\n },\n\n hasSprites (style) {\n return style.texture && Texture.textures[style.texture] && Texture.textures[style.texture].sprites;\n },\n\n getSpriteInfo (style, sprite) {\n let info = Texture.textures[style.texture].sprites[sprite] && Texture.getSpriteInfo(style.texture, sprite);\n if (sprite && !info) {\n // track misisng sprites (per texture)\n this.texture_missing_sprites[style.texture] = this.texture_missing_sprites[style.texture] || {};\n if (!this.texture_missing_sprites[style.texture][sprite]) { // only log each missing sprite once\n log('debug', `Style: in style '${this.name}', could not find sprite '${sprite}' for texture '${style.texture}'`);\n this.texture_missing_sprites[style.texture][sprite] = true;\n }\n }\n else if (info) {\n info.sprite = sprite;\n }\n return info;\n },\n\n parseSprite (style, draw, context) {\n let sprite = StyleParser.evalProperty(draw.sprite, context);\n let sprite_info = this.getSpriteInfo(style, sprite) || this.getSpriteInfo(style, draw.sprite_default);\n return sprite_info;\n },\n\n // Queue features for deferred processing (collect all features first so we can do collision on the whole group)\n queueFeature (q, tile) {\n if (!this.tile_data[tile.id] || !this.queues[tile.id]) {\n this.startData(tile);\n }\n this.queues[tile.id] = this.queues[tile.id] || [];\n this.queues[tile.id].push(q);\n },\n\n // Override\n endData (tile) {\n if (tile.canceled) {\n log('trace', `Style ${this.name}: stop tile build because tile was canceled: ${tile.key}`);\n return Promise.resolve();\n }\n\n let queue = this.queues[tile.id];\n delete this.queues[tile.id];\n\n // For each point feature, create one or more labels\n let text_objs = [];\n let point_objs = [];\n\n queue.forEach(q => {\n let style = q.style;\n let feature = q.feature;\n let geometry = feature.geometry;\n\n let feature_labels = this.buildLabels(style.size, geometry, style);\n for (let i = 0; i < feature_labels.length; i++) {\n let label = feature_labels[i];\n let point_obj = {\n feature,\n draw: q.draw,\n context: q.context,\n style,\n label\n };\n point_objs.push(point_obj);\n\n if (q.text_feature) {\n let text_obj = {\n feature,\n draw: q.text_feature.draw,\n context: q.context,\n text: q.text_feature.text,\n text_settings_key: q.text_feature.text_settings_key,\n layout: q.text_feature.layout,\n point_label: label,\n linked: point_obj // link so text only renders when parent point is placed\n };\n text_objs.push(text_obj);\n\n // Unless text feature is optional, create a two-way link so that parent\n // point will only render when text is also placed\n if (!q.draw.text.optional) {\n point_obj.linked = text_obj; // two-way link\n }\n }\n }\n });\n\n // Collide both points and text, then build features\n return Promise.\n all([\n // Points\n Collision.collide(point_objs, this.collision_group_points, tile.id).then(point_objs => {\n point_objs.forEach(q => {\n this.feature_style = q.style;\n this.feature_style.label = q.label;\n Style.addFeature.call(this, q.feature, q.draw, q.context);\n });\n }),\n // Labels\n this.collideAndRenderTextLabels(tile, this.collision_group_text, text_objs)\n ]).then(([, { labels, texts, textures }]) => {\n // Process labels\n if (labels && texts) {\n // Build queued features\n labels.forEach(q => {\n let text_settings_key = q.text_settings_key;\n let text_info = texts[text_settings_key] && texts[text_settings_key][q.text];\n\n // setup styling object expected by Style class\n let style = this.feature_style;\n style.label = q.label;\n style.size = text_info.size.logical_size;\n style.angle = 0; // text attached to point is always upright\n style.texcoords = text_info.align[q.label.align].texcoords;\n style.label_texture = textures[text_info.align[q.label.align].texture_id];\n\n Style.addFeature.call(this, q.feature, q.draw, q.context);\n });\n }\n this.freeText(tile);\n\n // Finish tile mesh\n return Style.endData.call(this, tile).then(tile_data => {\n // Attach tile-specific label atlas to mesh as a texture uniform\n if (tile_data && textures && textures.length) {\n tile_data.textures = tile_data.textures || [];\n tile_data.textures.push(...textures); // assign texture ownership to tile\n }\n return tile_data;\n });\n });\n },\n\n _preprocess (draw) {\n draw.color = StyleParser.createColorPropertyCache(draw.color);\n draw.texture = (draw.texture !== undefined ? draw.texture : this.texture); // optional or default texture\n\n if (draw.outline) {\n draw.outline.color = StyleParser.createColorPropertyCache(draw.outline.color);\n draw.outline.width = StyleParser.createPropertyCache(draw.outline.width, StyleParser.parsePositiveNumber);\n }\n\n draw.z = StyleParser.createPropertyCache(draw.z, StyleParser.parseUnits);\n\n // Size (1d value or 2d array)\n try {\n draw.size = StyleParser.createPointSizePropertyCache(draw.size);\n }\n catch(e) {\n log({ level: 'warn', once: true }, `Layer '${draw.layers[draw.layers.length-1]}': ` +\n `${e} (${JSON.stringify(draw.size)}), skipping features in layer`);\n return null;\n }\n\n // Offset (2d array)\n draw.offset = StyleParser.createPropertyCache(draw.offset,\n v => Array.isArray(v) && v.map(StyleParser.parseNumber)\n );\n\n // Buffer (1d value or or 2d array) - must be >= 0\n draw.buffer = StyleParser.createPropertyCache(draw.buffer,\n v => (Array.isArray(v) ? v : [v, v]).map(StyleParser.parsePositiveNumber)\n );\n\n // Repeat rules - no repeat limitation for points by default\n draw.repeat_distance = StyleParser.createPropertyCache(draw.repeat_distance, StyleParser.parseNumber);\n\n // Placement strategies\n draw.placement = PLACEMENT[draw.placement && draw.placement.toUpperCase()];\n if (draw.placement == null) {\n draw.placement = PLACEMENT.VERTEX;\n }\n\n draw.placement_spacing = draw.placement_spacing != null ? draw.placement_spacing : 80; // default spacing\n draw.placement_spacing = StyleParser.createPropertyCache(draw.placement_spacing, StyleParser.parsePositiveNumber);\n\n draw.placement_min_length_ratio = draw.placement_min_length_ratio != null ? draw.placement_min_length_ratio : 1;\n draw.placement_min_length_ratio = StyleParser.createPropertyCache(draw.placement_min_length_ratio, StyleParser.parsePositiveNumber);\n\n if (typeof draw.angle === 'number') {\n draw.angle = draw.angle * Math.PI / 180;\n }\n else {\n draw.angle = draw.angle || 0; // angle can be a string like \"auto\" (use angle of geometry)\n }\n\n // Optional text styling\n draw.text = this.preprocessText(draw.text); // will return null if valid text styling wasn't provided\n if (draw.text) {\n draw.text.key = draw.key; // inherits parent properties\n draw.text.group = draw.group;\n draw.text.layers = draw.layers;\n draw.text.order = draw.order;\n draw.text.repeat_group = draw.text.repeat_group || draw.repeat_group;\n draw.text.anchor = draw.text.anchor || this.default_anchor;\n draw.text.optional = (typeof draw.text.optional === 'boolean') ? draw.text.optional : false; // default text to required\n draw.text.interactive = draw.text.interactive || draw.interactive; // inherits from point\n }\n\n return draw;\n },\n\n // Default to trying all anchor placements\n default_anchor: ['bottom', 'top', 'right', 'left'],\n\n // Compute label layout-related properties\n computeLayout (target, feature, draw, context, tile) {\n let layout = target || {};\n layout.id = feature;\n layout.units_per_pixel = tile.units_per_pixel || 1;\n\n // collision flag\n layout.collide = (draw.collide === false) ? false : true;\n\n // tile boundary handling\n layout.cull_from_tile = (draw.cull_from_tile != null) ? draw.cull_from_tile : false;\n\n // points should not move into tile if over tile boundary\n layout.move_into_tile = false;\n\n // label anchors (point labels only)\n // label position will be adjusted in the given direction, relative to its original point\n // one of: left, right, top, bottom, top-left, top-right, bottom-left, bottom-right\n layout.anchor = draw.anchor;\n\n // label offset and buffer in pixel (applied in screen space)\n layout.offset = StyleParser.evalCachedProperty(draw.offset, context) || StyleParser.zeroPair;\n layout.buffer = StyleParser.evalCachedProperty(draw.buffer, context) || StyleParser.zeroPair;\n\n // repeat rules\n layout.repeat_distance = StyleParser.evalCachedProperty(draw.repeat_distance, context);\n if (layout.repeat_distance) {\n layout.repeat_distance *= layout.units_per_pixel;\n\n if (typeof draw.repeat_group === 'function') {\n layout.repeat_group = draw.repeat_group(context);\n }\n else if (typeof draw.repeat_group === 'string') {\n layout.repeat_group = draw.repeat_group;\n }\n else {\n layout.repeat_group = draw.key; // default to unique set of matching layers\n }\n }\n\n // label priority (lower is higher)\n let priority = draw.priority;\n if (priority != null) {\n if (typeof priority === 'function') {\n priority = priority(context);\n }\n }\n else {\n priority = -1 >>> 0; // default to max priority value if none set\n }\n layout.priority = priority;\n\n return layout;\n },\n\n // Implements label building for TextLabels mixin\n buildTextLabels (tile, feature_queue) {\n let labels = [];\n for (let f=0; f < feature_queue.length; f++) {\n let fq = feature_queue[f];\n let text_info = this.texts[tile.id][fq.text_settings_key][fq.text];\n let size = text_info.size.collision_size;\n fq.label = new LabelPoint(fq.point_label.position, size, fq.layout);\n labels.push(fq);\n }\n return labels;\n },\n\n // Builds one or more point labels for a geometry\n buildLabels (size, geometry, options) {\n let labels = [];\n\n if (geometry.type === \"Point\") {\n labels.push(new LabelPoint(geometry.coordinates, size, options));\n }\n else if (geometry.type === \"MultiPoint\") {\n let points = geometry.coordinates;\n for (let i = 0; i < points.length; ++i) {\n let point = points[i];\n labels.push(new LabelPoint(point, size, options));\n }\n }\n else if (geometry.type === \"LineString\") {\n let line = geometry.coordinates;\n let point_labels = placePointsOnLine(line, size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n else if (geometry.type === \"MultiLineString\") {\n let lines = geometry.coordinates;\n for (let ln = 0; ln < lines.length; ln++) {\n let line = lines[ln];\n let point_labels = placePointsOnLine(line, size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n else if (geometry.type === \"Polygon\") {\n // Point at polygon centroid (of outer ring)\n if (options.placement === PLACEMENT.CENTROID) {\n let centroid = Geo.centroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, options));\n }\n // Point at each polygon vertex (all rings)\n else {\n let rings = geometry.coordinates;\n for (let ln = 0; ln < rings.length; ln++) {\n let point_labels = placePointsOnLine(rings[ln], size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n }\n else if (geometry.type === \"MultiPolygon\") {\n if (options.placement === PLACEMENT.CENTROID) {\n let centroid = Geo.multiCentroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, options));\n }\n else {\n let polys = geometry.coordinates;\n for (let p = 0; p < polys.length; p++) {\n let rings = polys[p];\n for (let ln = 0; ln < rings.length; ln++) {\n let point_labels = placePointsOnLine(rings[ln], size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n }\n }\n\n return labels;\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style, mesh) {\n let color = style.color || StyleParser.defaults.color;\n let vertex_layout = mesh.vertex_data.vertex_layout;\n\n // position - x & y coords will be filled in per-vertex below\n this.fillVertexTemplate(vertex_layout, 'a_position', 0, { size: 2 });\n this.fillVertexTemplate(vertex_layout, 'a_position', style.z || 0, { size: 1, offset: 2 });\n // layer order - w coord of 'position' attribute (for packing efficiency)\n this.fillVertexTemplate(vertex_layout, 'a_position', this.scaleOrder(style.order), { size: 1, offset: 3 });\n\n // scaling vector - (x, y) components per pixel, z = angle\n this.fillVertexTemplate(vertex_layout, 'a_shape', 0, { size: 3 }); // NB: w coord is currently unused, change size: 4 if needed\n\n // texture coords\n this.fillVertexTemplate(vertex_layout, 'a_texcoord', 0, { size: 2 });\n\n // offsets\n this.fillVertexTemplate(vertex_layout, 'a_offset', 0, { size: 2 });\n\n // color\n this.fillVertexTemplate(vertex_layout, 'a_color', Vector.mult(color, 255), { size: 4 });\n\n // outline (can be static or dynamic depending on style)\n if (this.defines.TANGRAM_HAS_SHADER_POINTS && mesh.variant.shader_point) {\n let outline_color = style.outline_color || StyleParser.defaults.outline.color;\n this.fillVertexTemplate(vertex_layout, 'a_outline_color', Vector.mult(outline_color, 255), { size: 4 });\n this.fillVertexTemplate(vertex_layout, 'a_outline_edge', style.outline_edge_pct || StyleParser.defaults.outline.width, { size: 1 });\n }\n\n // selection color\n if (this.selection) {\n this.fillVertexTemplate(vertex_layout, 'a_selection_color', Vector.mult(style.selection_color, 255), { size: 4 });\n }\n\n return this.vertex_template;\n },\n\n buildQuad(points, size, angle, angles, pre_angles, offset, offsets, texcoord_scale, curve, vertex_data, vertex_template) {\n if (size[0] <= 0 || size[1] <= 0) {\n return 0; // size must be positive\n }\n\n return buildQuadsForPoints(\n points,\n vertex_data,\n vertex_template,\n {\n texcoord_index: vertex_data.vertex_layout.index.a_texcoord,\n position_index: vertex_data.vertex_layout.index.a_position,\n shape_index: vertex_data.vertex_layout.index.a_shape,\n offset_index: vertex_data.vertex_layout.index.a_offset,\n offsets_index: vertex_data.vertex_layout.index.a_offsets,\n pre_angles_index: vertex_data.vertex_layout.index.a_pre_angles,\n angles_index: vertex_data.vertex_layout.index.a_angles\n },\n {\n quad: size,\n quad_normalize: 256, // values have an 8-bit fraction\n offset,\n offsets,\n pre_angles: pre_angles,\n angle: angle * 4096, // values have a 12-bit fraction\n angles: angles,\n curve,\n texcoord_scale,\n texcoord_normalize,\n pre_angles_normalize,\n angles_normalize,\n offsets_normalize\n }\n );\n },\n\n // Build quad for point sprite\n build (style, mesh, context) {\n let label = style.label;\n if (label.type === 'curved') {\n return this.buildArticulatedLabel(label, style, mesh, context);\n }\n else {\n return this.buildLabel(label, style, mesh, context);\n }\n },\n\n buildLabel (label, style, mesh, context) {\n let vertex_template = this.makeVertexTemplate(style, mesh);\n let angle = label.angle || style.angle;\n\n let size, texcoords;\n if (label.type){\n size = style.size[label.type];\n texcoords = style.texcoords[label.type].texcoord;\n }\n else {\n size = style.size;\n texcoords = style.texcoords;\n }\n\n // setup style or label texture if applicable\n mesh.uniforms = mesh.uniforms || {};\n if (style.label_texture) {\n mesh.uniforms.u_texture = style.label_texture;\n mesh.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh.uniforms.u_apply_color_blocks = false;\n }\n else if (style.texture) {\n mesh.uniforms.u_texture = style.texture;\n mesh.uniforms.u_point_type = TANGRAM_POINT_TYPE_TEXTURE;\n mesh.uniforms.u_apply_color_blocks = true;\n }\n else {\n mesh.uniforms.u_texture = Texture.default; // ensure a tetxure is always bound to avoid GL warnings ('no texture bound to unit' in Chrome)\n mesh.uniforms.u_point_type = TANGRAM_POINT_TYPE_SHADER;\n mesh.uniforms.u_apply_color_blocks = true;\n }\n\n let offset = label.offset;\n\n // TODO: instead of passing null, pass arrays with fingerprintable values\n // This value is checked in the shader to determine whether to apply curving logic\n return this.buildQuad(\n [label.position], // position\n size, // size in pixels\n angle, // angle in radians\n null, // placeholder for multiple angles\n null, // placeholder for multiple pre_angles\n offset, // offset from center in pixels\n null, // placeholder for multiple offsets\n texcoords, // texture UVs\n false, // if curved boolean\n mesh.vertex_data, vertex_template // VBO and data for current vertex\n );\n },\n\n buildArticulatedLabel (label, style, mesh, context) {\n let vertex_template = this.makeVertexTemplate(style, mesh);\n let angle = label.angle;\n let geom_count = 0;\n\n // two passes for stroke and fill, where stroke needs to be drawn first (painter's algorithm)\n // this ensures strokes don't overlap on other fills\n\n // pass for stroke\n for (let i = 0; i < label.num_segments; i++){\n let size = style.size[label.type][i];\n let texcoord_stroke = style.texcoords_stroke[i];\n\n // re-point to correct label texture\n style.label_texture = style.label_textures[i];\n let mesh_data = this.getTileMesh(context.tile, this.meshVariantTypeForDraw(style));\n\n // add label texture uniform if needed\n mesh_data.uniforms = mesh_data.uniforms || {};\n mesh_data.uniforms.u_texture = style.label_texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh_data.uniforms.u_apply_color_blocks = false;\n\n let offset = label.offset || [0,0];\n let position = label.position;\n\n let angles = label.angles[i];\n let offsets = label.offsets[i];\n let pre_angles = label.pre_angles[i];\n\n geom_count += this.buildQuad(\n [position], // position\n size, // size in pixels\n angle, // angle in degrees\n angles, // angles per segment\n pre_angles, // pre_angle array (rotation applied before offseting)\n offset, // offset from center in pixels\n offsets, // offsets per segment\n texcoord_stroke, // texture UVs for stroked text\n true, // if curved\n mesh_data.vertex_data, vertex_template // VBO and data for current vertex\n );\n }\n\n // pass for fill\n for (let i = 0; i < label.num_segments; i++){\n let size = style.size[label.type][i];\n let texcoord = style.texcoords[label.type][i].texcoord;\n\n // re-point to correct label texture\n style.label_texture = style.label_textures[i];\n let mesh_data = this.getTileMesh(context.tile, this.meshVariantTypeForDraw(style));\n\n // add label texture uniform if needed\n mesh_data.uniforms = mesh_data.uniforms || {};\n mesh_data.uniforms.u_texture = style.label_texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh_data.uniforms.u_apply_color_blocks = false;\n\n let offset = label.offset || [0,0];\n let position = label.position;\n\n let angles = label.angles[i];\n let offsets = label.offsets[i];\n let pre_angles = label.pre_angles[i];\n\n geom_count += this.buildQuad(\n [position], // position\n size, // size in pixels\n angle, // angle in degrees\n angles, // angles per segment\n pre_angles, // pre_angle array (rotation applied before offseting)\n offset, // offset from center in pixels\n offsets, // offsets per segment\n texcoord, // texture UVs for fill text\n true, // if curved\n mesh_data.vertex_data, vertex_template // VBO and data for current vertex\n );\n }\n\n return geom_count;\n },\n\n // Override to pass-through to generic point builder\n buildLines (lines, style, mesh, context) {\n return this.build(style, mesh, context);\n },\n\n buildPoints (points, style, mesh, context) {\n return this.build(style, mesh, context);\n },\n\n buildPolygons (points, style, mesh, context) {\n return this.build(style, mesh, context);\n },\n\n // Override\n vertexLayoutForMeshVariant (variant) {\n if (variant.shader_point) {\n return this.vertex_layout_shader_point;\n }\n return this.vertex_layout;\n },\n\n // Override\n meshVariantTypeForDraw (draw) {\n let key = draw.label_texture || draw.texture || this.default_mesh_variant.key; // unique key by texture name\n if (Points.variants[key] == null) {\n Points.variants[key] = {\n key,\n shader_point: (key === this.default_mesh_variant.key), // is shader point\n order: (draw.label_texture ? 1 : 0) // put text on top of points (e.g. for highway shields, etc.)\n };\n }\n return Points.variants[key]; // return pre-calculated mesh variant\n },\n\n makeMesh (vertex_data, vertex_elements, options = {}) {\n // Add label fade time\n options = Object.assign({}, options, { fade_in_time: this.fade_in_time });\n return Style.makeMesh.call(this, vertex_data, vertex_elements, options);\n }\n\n});\n", + "// Polygon rendering style\n\nimport {Style} from '../style';\nimport StyleParser from '../style_parser';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\nimport VertexLayout from '../../gl/vertex_layout';\nimport {buildPolygons, buildExtrudedPolygons} from '../../builders/polygons';\nimport Geo from '../../geo';\n\nlet fs = require('fs');\nexport const shaderSrc_polygonsVertex = fs.readFileSync(__dirname + '/polygons_vertex.glsl', 'utf8');\nexport const shaderSrc_polygonsFragment = fs.readFileSync(__dirname + '/polygons_fragment.glsl', 'utf8');\n\nexport var Polygons = Object.create(Style);\n\nObject.assign(Polygons, {\n name: 'polygons',\n built_in: true,\n vertex_shader_src: shaderSrc_polygonsVertex,\n fragment_shader_src: shaderSrc_polygonsFragment,\n selection: true, // enable feature selection\n\n init() {\n Style.init.apply(this, arguments);\n\n // Basic attributes, others can be added (see texture UVs below)\n var attribs = [\n { name: 'a_position', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_normal', size: 3, type: gl.BYTE, normalized: true }, // gets padded to 4-bytes\n { name: 'a_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true },\n { name: 'a_selection_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true }\n ];\n\n // Tell the shader we have a normal and order attributes\n this.defines.TANGRAM_NORMAL_ATTRIBUTE = true;\n this.defines.TANGRAM_LAYER_ORDER = true;\n\n // Optional texture UVs\n if (this.texcoords) {\n this.defines.TANGRAM_TEXTURE_COORDS = true;\n\n // Add vertex attribute for UVs only when needed\n attribs.push({ name: 'a_texcoord', size: 2, type: gl.UNSIGNED_SHORT, normalized: true });\n }\n\n this.vertex_layout = new VertexLayout(attribs);\n },\n\n _parseFeature (feature, draw, context) {\n var style = this.feature_style;\n\n style.color = this.parseColor(draw.color, context);\n if (!style.color) {\n return null;\n }\n\n style.z = (draw.z && StyleParser.evalCachedDistanceProperty(draw.z, context)) || StyleParser.defaults.z;\n style.z *= Geo.height_scale; // provide sub-meter precision of height values\n\n style.extrude = StyleParser.evalProperty(draw.extrude, context);\n if (style.extrude) {\n // use feature's height and min_height properties\n if (style.extrude === true) {\n style.height = feature.properties.height || StyleParser.defaults.height;\n style.min_height = feature.properties.min_height || StyleParser.defaults.min_height;\n\n }\n // explicit height, no min_height\n else if (typeof style.extrude === 'number') {\n style.height = style.extrude;\n style.min_height = 0;\n }\n // explicit height and min_height\n else if (Array.isArray(style.extrude)) {\n style.min_height = style.extrude[0];\n style.height = style.extrude[1];\n }\n\n style.height *= Geo.height_scale; // provide sub-meter precision of height values\n style.min_height *= Geo.height_scale;\n }\n\n style.tile_edges = draw.tile_edges; // usually activated for debugging, or rare visualization needs\n\n return style;\n },\n\n _preprocess (draw) {\n draw.color = StyleParser.createColorPropertyCache(draw.color);\n draw.z = StyleParser.createPropertyCache(draw.z, StyleParser.parseUnits);\n return draw;\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style) {\n let i = 0;\n\n // position - x & y coords will be filled in per-vertex below\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = style.z || 0;\n\n // layer order - w coord of 'position' attribute (for packing efficiency)\n this.vertex_template[i++] = this.scaleOrder(style.order);\n\n // normal\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 1 * 127;\n\n // color\n this.vertex_template[i++] = style.color[0] * 255;\n this.vertex_template[i++] = style.color[1] * 255;\n this.vertex_template[i++] = style.color[2] * 255;\n this.vertex_template[i++] = style.color[3] * 255;\n\n // selection color\n if (this.selection) {\n this.vertex_template[i++] = style.selection_color[0] * 255;\n this.vertex_template[i++] = style.selection_color[1] * 255;\n this.vertex_template[i++] = style.selection_color[2] * 255;\n this.vertex_template[i++] = style.selection_color[3] * 255;\n }\n\n // Add texture UVs to template only if needed\n if (this.texcoords) {\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n }\n\n return this.vertex_template;\n },\n\n buildPolygons(polygons, style, mesh, context) {\n let vertex_template = this.makeVertexTemplate(style);\n let options = {\n texcoord_index: this.vertex_layout.index.a_texcoord,\n texcoord_normalize: 65535, // scale UVs to unsigned shorts\n remove_tile_edges: !style.tile_edges,\n tile_edge_tolerance: Geo.tile_scale * context.tile.pad_scale * 4,\n winding: context.winding\n };\n\n // Extruded polygons (e.g. 3D buildings)\n if (style.extrude && style.height) {\n return buildExtrudedPolygons(\n polygons,\n style.z, style.height, style.min_height,\n mesh.vertex_data, vertex_template,\n this.vertex_layout.index.a_normal,\n 127, // scale normals to signed bytes\n options\n );\n }\n // Regular polygons\n else {\n return buildPolygons(\n polygons,\n mesh.vertex_data, vertex_template,\n options\n );\n }\n }\n\n});\n", + "// Raster tile rendering style\n\nimport StyleParser from '../style_parser';\nimport {Polygons} from '../polygons/polygons';\n\nexport let RasterStyle = Object.create(Polygons);\n\nObject.assign(RasterStyle, {\n name: 'raster',\n super: Polygons,\n built_in: true,\n\n init() {\n // Required for raster tiles\n this.raster = this.raster || 'color';\n\n this.super.init.apply(this, arguments);\n\n this.selection = false; // raster styles can't support feature selection\n },\n\n _preprocess (draw) {\n // Raster tiles default to white vertex color, as this color will tint the underlying texture\n draw.color = draw.color || StyleParser.defaults.color;\n return this.super._preprocess.apply(this, arguments);\n }\n\n});\n", + "// Rendering styles\n\nimport StyleParser from './style_parser';\nimport FeatureSelection from '../selection';\nimport ShaderProgram from '../gl/shader_program';\nimport VBOMesh from '../gl/vbo_mesh';\nimport Texture from '../gl/texture';\nimport Material from '../material';\nimport Light from '../light';\nimport {RasterTileSource} from '../sources/raster';\nimport log from '../utils/log';\nimport mergeObjects from '../utils/merge';\nimport Thread from '../utils/thread';\nimport WorkerBroker from '../utils/worker_broker';\nimport debugSettings from '../utils/debug_settings';\n\nlet fs = require('fs');\nconst shaderSrc_selectionFragment = fs.readFileSync(__dirname + '/../gl/shaders/selection_fragment.glsl', 'utf8');\nconst shaderSrc_rasters = fs.readFileSync(__dirname + '/../gl/shaders/rasters.glsl', 'utf8');\n\n// Base class\n\nexport var Style = {\n init ({ generation, styles, sources = {}, introspection } = {}) {\n this.setGeneration(generation);\n this.styles = styles; // styles for scene\n this.sources = sources; // data sources for scene\n this.defines = (this.hasOwnProperty('defines') && this.defines) || {}; // #defines to be injected into the shaders\n this.shaders = (this.hasOwnProperty('shaders') && this.shaders) || {}; // shader customization (uniforms, defines, blocks, etc.)\n this.introspection = introspection || false;\n this.selection = this.selection || this.introspection || false; // flag indicating if this style supports feature selection\n this.compile_setup = false; // one-time setup steps for program compilation\n this.program = null; // GL program reference (for main render pass)\n this.selection_program = null; // GL program reference for feature selection render pass\n this.feature_style = {}; // style for feature currently being parsed, shared to lessen GC/memory thrash\n this.vertex_template = []; // shared single-vertex template, filled out by each style\n this.tile_data = {};\n\n // Default world coords to wrap every 100,000 meters, can turn off by setting this to 'false'\n this.defines.TANGRAM_WORLD_POSITION_WRAP = 100000;\n\n // Blending\n this.blend = this.blend || 'opaque'; // default: opaque styles are drawn first, without blending\n this.defines[`TANGRAM_BLEND_${this.blend.toUpperCase()}`] = true;\n if (this.blend_order == null) { // controls order of rendering for styles w/non-opaque blending\n this.blend_order = -1; // defaults to first\n }\n\n this.removeShaderBlock('setup'); // clear before material injection\n\n // If the style defines its own material, replace the inherited material instance\n if (!(this.material instanceof Material)) {\n if (!Material.isValid(this.material)) {\n this.material = StyleParser.defaults.material;\n }\n this.material = new Material(this.material);\n }\n this.material.inject(this);\n\n // Set lighting mode: fragment, vertex, or none (specified as 'false')\n Light.setMode(this.lighting, this);\n\n // Setup raster samplers if needed\n this.setupRasters();\n\n this.initialized = true;\n },\n\n destroy () {\n if (this.program) {\n this.program.destroy();\n this.program = null;\n }\n\n if (this.selection_program) {\n this.selection_program.destroy();\n this.selection_program = null;\n }\n\n WorkerBroker.removeTarget(this.main_thread_target);\n this.gl = null;\n this.initialized = false;\n },\n\n reset () {\n },\n\n baseStyle () {\n return this.base || this.name;\n },\n\n setGeneration (generation) {\n // Scene generation id this style was created for\n this.generation = generation;\n\n // Provide a hook for this object to be called from worker threads\n this.main_thread_target = ['Style', this.name, this.generation].join('/');\n if (Thread.is_main) {\n WorkerBroker.addTarget(this.main_thread_target, this);\n }\n },\n\n fillVertexTemplate(vertex_layout, attribute, value, { size, offset }) {\n offset = (offset === undefined) ? 0 : offset;\n\n let index = vertex_layout.index[attribute];\n if (index === undefined) {\n log('warn', `Style: in style '${this.name}', no index found in vertex layout for attribute '${attribute}'`);\n return;\n }\n\n for (let i = 0; i < size; ++i) {\n let v = value.length > i ? value[i] : value;\n this.vertex_template[index + i + offset] = v;\n }\n },\n\n /*** Style parsing and geometry construction ***/\n\n // Returns an object to hold feature data (for a tile or other object)\n startData (tile) {\n this.tile_data[tile.id] = this.tile_data[tile.id] || {\n meshes: {},\n uniforms: {},\n textures: []\n };\n },\n\n // Finalizes an object holding feature data (for a tile or other object)\n endData (tile) {\n var tile_data = this.tile_data[tile.id];\n this.tile_data[tile.id] = null;\n\n if (tile_data && Object.keys(tile_data.meshes).length > 0) {\n for (let variant in tile_data.meshes) {\n let mesh = tile_data.meshes[variant];\n\n // Remove empty mesh variants\n if (mesh.vertex_data.vertex_count === 0) {\n delete tile_data.meshes[variant];\n continue;\n }\n\n // Only keep final byte buffer\n mesh.vertex_data.end();\n mesh.vertex_elements = mesh.vertex_data.element_buffer;\n mesh.vertex_data = mesh.vertex_data.vertex_buffer; // convert from instance to raw typed array\n }\n\n // Load raster tiles passed from data source\n // Blocks mesh completion to avoid flickering\n return this.buildRasterTextures(tile, tile_data).then(tile_data => tile_data);\n }\n else {\n return Promise.resolve(null); // don't send tile data back if doesn't have geometry\n }\n },\n\n // Has mesh data for a given tile?\n hasDataForTile (tile) {\n return this.tile_data[tile.id] != null;\n },\n\n getTileMesh (tile, variant) {\n let meshes = this.tile_data[tile.id].meshes;\n if (meshes[variant.key] == null) {\n meshes[variant.key] = {\n variant,\n vertex_data: this.vertexLayoutForMeshVariant(variant).createVertexData()\n };\n }\n return meshes[variant.key];\n },\n\n vertexLayoutForMeshVariant (variant) {\n return this.vertex_layout;\n },\n\n default_mesh_variant: { key: 0 },\n meshVariantTypeForDraw (draw) {\n return this.default_mesh_variant;\n },\n\n addFeature (feature, draw, context) {\n let tile = context.tile;\n if (tile.generation !== this.generation) {\n return;\n }\n\n if (!this.tile_data[tile.id]) {\n this.startData(tile);\n }\n\n let style = this.parseFeature(feature, draw, context);\n if (!style) {\n return; // skip feature\n }\n\n let mesh = this.getTileMesh(tile, this.meshVariantTypeForDraw(style));\n if (this.buildGeometry(feature.geometry, style, mesh, context) > 0) {\n feature.generation = this.generation; // track scene generation that feature was rendered for\n }\n },\n\n buildGeometry (geometry, style, mesh, context) {\n let geom_count;\n if (geometry.type === 'Polygon') {\n geom_count = this.buildPolygons([geometry.coordinates], style, mesh, context);\n }\n else if (geometry.type === 'MultiPolygon') {\n geom_count = this.buildPolygons(geometry.coordinates, style, mesh, context);\n }\n else if (geometry.type === 'LineString') {\n geom_count = this.buildLines([geometry.coordinates], style, mesh, context);\n }\n else if (geometry.type === 'MultiLineString') {\n geom_count = this.buildLines(geometry.coordinates, style, mesh, context);\n }\n else if (geometry.type === 'Point') {\n geom_count = this.buildPoints([geometry.coordinates], style, mesh, context);\n }\n else if (geometry.type === 'MultiPoint') {\n geom_count = this.buildPoints(geometry.coordinates, style, mesh, context);\n }\n\n // Optionally collect per-layer stats\n if (geom_count > 0 && debugSettings.layer_stats) {\n let tile = context.tile;\n tile.debug.layers = tile.debug.layers || { list: {}, tree: {} };\n let list = tile.debug.layers.list;\n let tree = tile.debug.layers.tree;\n let ftree = {}; // tree of layers for this feature\n context.layers.forEach(layer => {\n addLayerDebugEntry(list, layer, 1, geom_count, {[this.name]: geom_count}, {[this.baseStyle()]: geom_count});\n\n let node = tree;\n let fnode = ftree;\n let levels = layer.split(':');\n for (let i=0; i < levels.length; i++) {\n let level = levels[i];\n node[level] = node[level] || { features: 0, geoms: 0, styles: {}, base: {} };\n\n if (fnode[level] == null) { // only count each layer level once per feature\n fnode[level] = {};\n addLayerDebugEntry(node, level, 1, geom_count, {[this.name]: geom_count}, {[this.baseStyle()]: geom_count});\n }\n\n if (i < levels.length - 1) {\n node[level].layers = node[level].layers || {};\n }\n node = node[level].layers;\n fnode = fnode[level];\n }\n });\n }\n\n return geom_count;\n },\n\n parseFeature (feature, draw, context) {\n try {\n var style = this.feature_style;\n\n // Calculate order\n style.order = this.parseOrder(draw.order, context);\n if (style.order == null && this.blend !== 'overlay') {\n let msg = `Layer '${draw.layers.join(', ')}', draw group '${draw.group}': `;\n msg += `'order' parameter is required unless blend mode is 'overlay'`;\n if (draw.order != null) {\n msg += `; 'order' was set to a dynamic value (e.g. string tied to feature property, `;\n msg += `or JS function), but evaluated to null for one or more features`;\n }\n log({ level: 'warn', once: true }, msg);\n return;\n }\n\n // Subclass implementation\n style = this._parseFeature(feature, draw, context);\n if (!style) {\n return; // skip feature\n }\n\n // Feature selection (only if feature is marked as interactive, and style supports it)\n if (this.selection) {\n style.interactive = StyleParser.evalProperty(this.introspection || draw.interactive, context);\n }\n else {\n style.interactive = false;\n }\n\n if (style.interactive === true) {\n style.selection_color = FeatureSelection.makeColor(feature, context.tile, context);\n }\n else {\n style.selection_color = FeatureSelection.defaultColor;\n }\n\n return style;\n }\n catch(error) {\n log('error', 'Style.parseFeature: style parsing error', feature, style, error.stack);\n }\n },\n\n _parseFeature (feature, draw, context) {\n return this.feature_style;\n },\n\n preprocess (draw) {\n // Preprocess first time\n if (!draw.preprocessed) {\n // Apply draw defaults\n if (this.draw) {\n // Merge each property separately to avoid modifying `draw` instance identity\n for (let param in this.draw) {\n let val = this.draw[param];\n if (typeof val === 'object' && !Array.isArray(val)) { // nested param (e.g. `outline`)\n draw[param] = mergeObjects({}, val, draw[param]);\n }\n else if (draw[param] == null) { // simple param (single scalar value or array)\n draw[param] = val;\n }\n }\n }\n\n draw = this._preprocess(draw); // optional subclass implementation\n if (!draw) {\n return;\n }\n draw.preprocessed = true;\n }\n return draw;\n },\n\n // optionally implemented by subclass\n _preprocess (draw) {\n return draw;\n },\n\n // Parse an order value\n parseOrder (order, context) {\n // Calculate order if it was not cached\n if (typeof order !== 'number') {\n return StyleParser.calculateOrder(order, context);\n }\n return order;\n },\n\n // Expand final precision for half-layers (for outlines)\n scaleOrder (order) {\n return order * 2;\n },\n\n // Parse a color of choose a default if acceptable, return undefined if color missing\n parseColor(color, context) {\n // Need either a color, or a shader block for 'color' or 'filter'\n if (color) {\n return StyleParser.evalCachedColorProperty(color, context);\n }\n else if (this.shaders.blocks.color || this.shaders.blocks.filter) {\n return StyleParser.defaults.color;\n }\n },\n\n // Build functions are no-ops until overriden\n buildPolygons () { return 0; },\n buildLines () { return 0; },\n buildPoints () { return 0; },\n\n\n /*** GL state and rendering ***/\n\n setGL (gl) {\n this.gl = gl;\n this.max_texture_size = Texture.getMaxTextureSize(this.gl);\n },\n\n makeMesh (vertex_data, vertex_elements, options = {}) {\n let vertex_layout = this.vertexLayoutForMeshVariant(options.variant);\n return new VBOMesh(this.gl, vertex_data, vertex_elements, vertex_layout, options);\n },\n\n render (mesh) {\n return mesh.render();\n },\n\n // Get a specific program, compiling if necessary\n getProgram (key = 'program') {\n this.compileSetup();\n\n const program = this[key];\n if (!program || program.error) {\n return;\n }\n\n if (!program.compiled) {\n log('debug', `Compiling style '${this.name}', program key '${key}'`);\n try {\n program.compile();\n }\n catch(e) {\n log('error', `Style: error compiling program for style '${this.name}' (program key '${key}')`, this, e.stack);\n }\n }\n return program;\n },\n\n // One-time setup for compiling style's programs\n compileSetup () {\n if (this.compile_setup) {\n return;\n }\n\n if (!this.gl) {\n throw(new Error(`style.compile(): skipping for ${this.name} because no GL context`));\n }\n\n // Build defines & for selection (need to create a new object since the first is stored as a reference by the program)\n var defines = this.buildDefineList();\n if (this.selection) {\n var selection_defines = Object.assign({}, defines);\n selection_defines.TANGRAM_FEATURE_SELECTION = true;\n }\n\n // Shader blocks\n var blocks = (this.shaders && this.shaders.blocks);\n var block_scopes = (this.shaders && this.shaders.block_scopes);\n\n // Uniforms\n var uniforms = Object.assign({}, this.shaders && this.shaders.uniforms);\n for (let u in uniforms) { // validate uniforms\n if (uniforms[u] == null) {\n log({ level: 'warn', once: true }, `Style '${this.name}' has invalid uniform '${u}': uniform values must be non-null`);\n }\n }\n\n // Accept a single extension, or an array of extensions\n var extensions = (this.shaders && this.shaders.extensions);\n if (typeof extensions === 'string') {\n extensions = [extensions];\n }\n\n // Create shaders\n this.program = new ShaderProgram(\n this.gl,\n this.vertex_shader_src,\n this.fragment_shader_src,\n {\n name: this.name,\n defines,\n uniforms,\n blocks,\n block_scopes,\n extensions\n }\n );\n\n if (this.selection) {\n this.selection_program = new ShaderProgram(\n this.gl,\n this.vertex_shader_src,\n shaderSrc_selectionFragment,\n {\n name: (this.name + ' (selection)'),\n defines: selection_defines,\n uniforms,\n blocks,\n block_scopes,\n extensions\n }\n );\n }\n else {\n this.selection_program = null;\n }\n\n this.compile_setup = true;\n },\n\n // Add a shader block\n addShaderBlock (key, block, scope = null) {\n this.shaders.blocks = this.shaders.blocks || {};\n this.shaders.blocks[key] = this.shaders.blocks[key] || [];\n this.shaders.blocks[key].push(block);\n\n this.shaders.block_scopes = this.shaders.block_scopes || {};\n this.shaders.block_scopes[key] = this.shaders.block_scopes[key] || [];\n this.shaders.block_scopes[key].push(scope);\n },\n\n // Remove all shader blocks for key\n removeShaderBlock (key) {\n if (this.shaders.blocks) {\n this.shaders.blocks[key] = null;\n }\n },\n\n replaceShaderBlock (key, block, scope = null) {\n this.removeShaderBlock(key);\n this.addShaderBlock(key, block, scope);\n },\n\n /** TODO: could probably combine and generalize this with similar method in ShaderProgram\n * (list of define objects that inherit from each other)\n */\n buildDefineList () {\n // Add any custom defines to built-in style defines\n var defines = {}; // create a new object to avoid mutating a prototype value that may be shared with other styles\n if (this.defines != null) {\n for (var d in this.defines) {\n defines[d] = this.defines[d];\n }\n }\n if (this.shaders != null && this.shaders.defines != null) {\n for (d in this.shaders.defines) {\n defines[d] = this.shaders.defines[d];\n }\n }\n return defines;\n\n },\n\n // Determines if 'raster' parameter is set to a valid value\n hasRasters () {\n return (['color', 'normal', 'custom'].indexOf(this.raster) > -1);\n },\n\n // Setup raster access in shaders\n setupRasters () {\n if (!this.hasRasters()) {\n return;\n }\n\n // Enable raster textures and configure how first raster is applied\n if (this.raster === 'color') {\n this.defines.TANGRAM_RASTER_TEXTURE_COLOR = true;\n }\n else if (this.raster === 'normal') {\n this.defines.TANGRAM_RASTER_TEXTURE_NORMAL = true;\n }\n // else custom raster (samplers will be made available but not automatically applied)\n\n // A given style may be built with multiple data sources, each of which may attach\n // a variable number of raster sources (0 to N, where N is the max number of raster sources\n // defined for the scene). This means we don't know *which* or *how many* rasters will be\n // bound now, at initial compile-time; we only know this at geometry build-time. To ensure\n // that we can bind as many raster sources as needed, we declare our uniform arrays to hold\n // the maximum number of possible sources. At render time, only the necessary number of rasters\n // are bound (the remaining slots aren't intended to be accessed).\n let num_raster_sources =\n Object.keys(this.sources)\n .filter(s => this.sources[s] instanceof RasterTileSource)\n .length;\n\n this.defines.TANGRAM_NUM_RASTER_SOURCES = `${num_raster_sources}`; // force to string to avoid auto-float conversion\n if (num_raster_sources > 0) {\n // Use model position of tile's coordinate zoom for raster tile texture UVs\n this.defines.TANGRAM_MODEL_POSITION_BASE_ZOOM_VARYING = true;\n\n // Uniforms and macros for raster samplers\n this.replaceShaderBlock('raster', shaderSrc_rasters, 'Raster');\n }\n },\n\n // Load raster tile textures and set uniforms\n buildRasterTextures (tile, tile_data) {\n if (!this.hasRasters()) {\n return Promise.resolve(tile_data);\n }\n\n let configs = {}; // texture configs to pass to texture builder, keyed by texture name\n let index = {}; // index into raster sampler array, keyed by texture name\n\n // TODO: data source could retrieve raster texture URLs\n tile.rasters.map(r => this.sources[r]).filter(x => x).forEach((source, i) => {\n if (source instanceof RasterTileSource) {\n let config = source.tileTexture(tile);\n configs[config.url] = config;\n index[config.url] = i;\n }\n });\n\n if (Object.keys(configs).length === 0) {\n return Promise.resolve(tile_data);\n }\n\n // Load textures on main thread and return when done\n // We want to block the building of a raster tile mesh until its texture is loaded,\n // to avoid flickering while loading (texture will render as black)\n return WorkerBroker.postMessage(this.main_thread_target+'.loadTextures', configs)\n .then(textures => {\n if (!textures || textures.length < 1) { // no textures found (unexpected)\n // TODO: warning\n return tile_data;\n }\n else if (textures.some(t => !t.loaded)) { // some textures failed, throw out style for this tile\n return null;\n }\n\n // Set texture uniforms (returned after loading from main thread)\n tile_data.uniforms = tile_data.uniforms || {};\n tile_data.textures = tile_data.textures || [];\n\n let u_samplers = tile_data.uniforms['u_rasters'] = [];\n let u_sizes = tile_data.uniforms['u_raster_sizes'] = [];\n let u_offsets = tile_data.uniforms['u_raster_offsets'] = [];\n\n textures.forEach(t => {\n let i = index[t.name];\n let raster_coords = configs[t.name].coords; // tile coords of raster tile\n\n u_samplers[i] = t.name;\n tile_data.textures.push(t.name);\n\n u_sizes[i] = [t.width, t.height];\n\n // Tile geometry may be at a higher zoom than the raster tile texture,\n // (e.g. an overzoomed raster tile), in which case we need to adjust the\n // raster texture UVs to offset to the appropriate starting point for\n // this geometry tile.\n if (tile.coords.z > raster_coords.z) {\n let dz = tile.coords.z - raster_coords.z; // # of levels raster source is overzoomed\n let dz2 = Math.pow(2, dz);\n u_offsets[i] = [\n (((tile.coords.x % dz2) + dz2) % dz2) / dz2, // double-modulo to handle negative (wrapped) tile coords\n (dz2 - 1 - (tile.coords.y % dz2)) / dz2, // GL texture coords are +Y up\n 1 / dz2\n ];\n }\n else {\n u_offsets[i] = [0, 0, 1];\n }\n });\n\n return tile_data;\n }\n );\n },\n\n // Called on main thread\n loadTextures (textures) {\n // NB: only return name and size of textures loaded, because we can't send actual texture objects to worker\n return Texture.createFromObject(this.gl, textures)\n .then(() => {\n return Promise.all(Object.keys(textures).map(t => {\n return Texture.textures[t] && Texture.textures[t].load();\n }).filter(x => x));\n })\n .then(textures => {\n textures.forEach(t => t.retain());\n return textures.map(t => ({ name: t.name, width: t.width, height: t.height, loaded: t.loaded }));\n });\n },\n\n // Setup any GL state for rendering\n setup () {\n this.setUniforms();\n this.material.setupProgram(ShaderProgram.current);\n },\n\n // Set style uniforms on currently bound program\n setUniforms () {\n var program = ShaderProgram.current;\n if (!program) {\n return;\n }\n\n program.setUniforms(this.shaders && this.shaders.uniforms, true); // reset texture unit to 0\n },\n\n // Render state settings by blend mode\n render_states: {\n opaque: { depth_test: true, depth_write: true },\n translucent: { depth_test: true, depth_write: true },\n add: { depth_test: true, depth_write: false },\n multiply: { depth_test: true, depth_write: false },\n inlay: { depth_test: true, depth_write: false },\n overlay: { depth_test: false, depth_write: false }\n },\n\n // Default sort order for blend modes\n default_blend_orders: {\n opaque: 0,\n add: 1,\n multiply: 2,\n inlay: 3,\n translucent: 4,\n overlay: 5\n },\n\n // Comparison function for sorting styles by blend\n blendOrderSort (a, b) {\n // opaque always comes first\n if (a.blend === 'opaque' || b.blend === 'opaque') {\n if (a.blend === 'opaque' && b.blend === 'opaque') { // if both are opaque\n return a.name < b.name ? -1 : 1; // use name as tie breaker\n }\n else if (a.blend === 'opaque') {\n return -1; // only `a` was opaque\n }\n else {\n return 1; // only `b` was opaque\n }\n }\n\n // use explicit blend order if possible\n if (a.blend_order < b.blend_order) {\n return -1;\n }\n else if (a.blend_order > b.blend_order) {\n return 1;\n }\n\n // if blend orders are equal, use default order by blend mode\n if (Style.default_blend_orders[a.blend] < Style.default_blend_orders[b.blend]) {\n return -1;\n }\n else if (Style.default_blend_orders[a.blend] > Style.default_blend_orders[b.blend]) {\n return 1;\n }\n\n return a.name < b.name ? -1 : 1; // use name as tie breaker\n }\n\n};\n\n// add feature and geometry counts for a single layer\nexport function addLayerDebugEntry (target, layer, faeture_count, geom_count, styles, bases) {\n target[layer] = target[layer] || { features: 0, geoms: 0, styles: {}, base: {} };\n target[layer].features += faeture_count; // feature count\n target[layer].geoms += geom_count; // geometry count\n\n // geometry count by style\n for (let style in styles) {\n target[layer].styles[style] = target[layer].styles[style] || 0;\n target[layer].styles[style] += styles[style];\n }\n\n // geometry count by base style\n for (let style in bases) {\n target[layer].base[style] = target[layer].base[style] || 0;\n target[layer].base[style] += bases[style];\n }\n}\n", "// Manage rendering styles\nimport ShaderProgram from '../gl/shader_program';\nimport mergeObjects from '../utils/merge';\nimport Geo from '../geo';\nimport log from '../utils/log';\n\nimport {Polygons} from './polygons/polygons';\nimport {Lines} from './lines/lines';\nimport {Points} from './points/points';\nimport {TextStyle} from './text/text';\nimport {RasterStyle} from './raster/raster';\n\nlet fs = require('fs');\nconst shaderSrc_accessors = fs.readFileSync(__dirname + '/../gl/shaders/accessors.glsl', 'utf8');\nconst shaderSrc_layerOrder = fs.readFileSync(__dirname + '/../gl/shaders/layer_order.glsl', 'utf8');\nconst shaderSrc_selectionGlobals = fs.readFileSync(__dirname + '/../gl/shaders/selection_globals.glsl', 'utf8');\nconst shaderSrc_selectionVertex = fs.readFileSync(__dirname + '/../gl/shaders/selection_vertex.glsl', 'utf8');\n\nexport class StyleManager {\n\n constructor () {\n this.styles = {};\n this.base_styles = {};\n\n // Add built-in rendering styles\n this.register(Object.create(Polygons));\n this.register(Object.create(Lines));\n this.register(Object.create(Points));\n this.register(Object.create(TextStyle));\n this.register(Object.create(RasterStyle));\n }\n\n // Global configuration for all styles\n init () {\n ShaderProgram.removeBlock('global');\n ShaderProgram.removeBlock('setup');\n\n // Model and world position accessors\n ShaderProgram.addBlock('global', shaderSrc_accessors);\n\n // Layer re-ordering function\n ShaderProgram.addBlock('global', shaderSrc_layerOrder);\n\n // Feature selection global\n ShaderProgram.addBlock('global', shaderSrc_selectionGlobals);\n\n // Feature selection vertex shader support\n ShaderProgram.replaceBlock('setup', shaderSrc_selectionVertex);\n\n // Minimum value for float comparisons\n ShaderProgram.defines.TANGRAM_EPSILON = 0.00001;\n\n // Minimum depth buffer value separating each `order` unit\n // Assume min 16-bit depth buffer, in practice uses 14-bits, 1 extra bit to handle virtual half-layers\n // for outlines (inserted in between layers), another extra bit to prevent precision loss\n ShaderProgram.defines.TANGRAM_LAYER_DELTA = 1 / (1 << 14);\n\n // Internal tile scale\n ShaderProgram.defines.TANGRAM_TILE_SCALE =\n `vec3(${Geo.tile_scale}., ${Geo.tile_scale}., u_meters_per_pixel * ${Geo.tile_size}.)`;\n\n // Increases precision for height values\n ShaderProgram.defines.TANGRAM_HEIGHT_SCALE = Geo.height_scale;\n\n // Alpha discard threshold (substitute for alpha blending)\n ShaderProgram.defines.TANGRAM_ALPHA_TEST = 0.5;\n\n // Reset dash texture cache\n Lines.dash_textures = {};\n }\n\n // Destroy all styles for a given GL context\n destroy (gl) {\n Object.keys(this.styles).forEach((_name) => {\n let style = this.styles[_name];\n if (style.gl === gl) {\n log('trace', `StyleManager.destroy: destroying render style ${style.name}`);\n\n if (style.base) {\n this.remove(style.name);\n }\n style.destroy();\n }\n });\n }\n\n // Register a style\n register (style) {\n this.styles[style.name] = style;\n this.base_styles[style.name] = style;\n }\n\n // Remove a style\n remove (name) {\n delete this.styles[name];\n }\n\n mix (style, styles) {\n // Exit early if we have already applied mixins to this style\n if (style.mixed) {\n return style;\n }\n style.mixed = {};\n\n // Mixin sources, in order\n let sources = [];\n if (style.mix) {\n if (Array.isArray(style.mix)) {\n sources.push(...style.mix);\n }\n else {\n sources.push(style.mix);\n }\n sources = sources.map(x => styles[x]).filter(x => x && x !== style); // TODO: warning on trying to mix into self\n\n // Track which styles were mixed into this one\n sources.forEach(s => style.mixed[s.name] = true);\n }\n sources.push(style);\n\n // Flags - OR'd, true if any style has it set\n style.animated = sources.some(x => x && x.animated);\n style.texcoords = sources.some(x => x && x.texcoords);\n\n // Overwrites - last definition wins\n style.base = sources.map(x => x.base).filter(x => x).pop();\n style.lighting = sources.map(x => x.lighting).filter(x => x != null).pop();\n style.texture = sources.map(x => x.texture).filter(x => x).pop();\n style.raster = sources.map(x => x.raster).filter(x => x != null).pop();\n style.dash = sources.map(x => x.dash).filter(x => x != null).pop();\n style.dash_background_color = sources.map(x => x.dash_background_color).filter(x => x != null).pop();\n if (sources.some(x => x.hasOwnProperty('blend') && x.blend)) {\n // only mix blend if explicitly set, otherwise let base style choose blending mode\n // hasOwnProperty check gives preference to base style prototype\n style.blend = sources.map(x => x.hasOwnProperty('blend') && x.blend).filter(x => x).pop();\n }\n style.blend_order = sources.map(x => x.blend_order).filter(x => x != null).pop();\n\n // Merges - property-specific rules for merging values\n style.defines = Object.assign({}, ...sources.map(x => x.defines).filter(x => x)); // internal defines (not user-defined)\n style.material = Object.assign({}, ...sources.map(x => x.material).filter(x => x));\n\n let draws = sources.map(x => x.draw).filter(x => x); // draw defaults\n if (draws.length > 0) {\n style.draw = mergeObjects({}, ...draws);\n }\n\n // Mix shader properties\n this.mixShaders(style, styles, sources);\n return style;\n }\n\n // Mix the propertes in the \"shaders\" block\n mixShaders (style, styles, sources) {\n let shaders = {}; // newly mixed shaders properties\n let shader_merges = sources.map(x => x.shaders).filter(x => x); // just the source styles with shader properties\n\n // Defines\n shaders.defines = Object.assign({}, ...shader_merges.map(x => x.defines).filter(x => x));\n\n // Uniforms\n shaders.uniforms = {}; // uniforms for this style, both explicitly defined, and mixed from other styles\n shaders._uniforms = (style.shaders && style.shaders.uniforms) || {}; // uniforms explicitly defined by *this* style\n shaders._uniform_scopes = {}; // tracks which style each uniform originated from (this one, or ancestor)\n\n // Mix in uniforms from ancestors, providing means to access\n sources\n .filter(x => x.shaders && x.shaders.uniforms)\n .forEach(x => {\n for (let u in x.shaders.uniforms) {\n shaders._uniform_scopes[u] = x.name;\n\n // Define getter and setter for this uniform\n // Getter returns value for this style if present, otherwise asks appropriate ancestor for it\n // Setter sets the value for this style (whether previously present in this style or not)\n // Mimics JS prototype/hasOwnProperty behavior, but with multiple ancestors (via mixins)\n Object.defineProperty(shaders.uniforms, u, {\n enumerable: true,\n configurable: true,\n get: function () {\n // Uniform is explicitly defined on this style\n if (shaders._uniforms[u] !== undefined) {\n return shaders._uniforms[u];\n }\n // Uniform was mixed from another style, forward request there\n // Identify check is needed to prevent infinite recursion if a previously defined uniform\n // is set to undefined\n else if (styles[shaders._uniform_scopes[u]].shaders.uniforms !== shaders.uniforms) {\n return styles[shaders._uniform_scopes[u]].shaders.uniforms[u];\n }\n },\n set: function (v) {\n shaders._uniforms[u] = v;\n }\n });\n }\n });\n\n // Extensions: build a list of unique extensions\n shaders.extensions = Object.keys(shader_merges\n .map(x => x.extensions)\n .filter(x => x)\n .reduce((prev, cur) => {\n // single extension\n if (typeof cur === 'string') {\n prev[cur] = true;\n }\n // array of extensions\n else {\n cur.forEach(x => prev[x] = true);\n }\n return prev;\n }, {}) || {}\n );\n\n // Shader blocks\n // Mark all shader blocks for the target style as originating with its own name\n if (style.shaders && style.shaders.blocks) {\n style.shaders.block_scopes = style.shaders.block_scopes || {};\n for (let k in style.shaders.blocks) {\n let block = style.shaders.blocks[k];\n style.shaders.block_scopes[k] = style.shaders.block_scopes[k] || [];\n if (Array.isArray(block)) {\n style.shaders.block_scopes[k].push(...block.map(() => style.name));\n }\n else {\n style.shaders.block_scopes[k].push(style.name);\n }\n }\n }\n\n // Merge shader blocks, keeping track of which style each block originated from\n let mixed = {}; // all scopes mixed so far\n shader_merges.forEach(source => {\n if (!source.blocks) {\n return;\n }\n\n shaders.blocks = shaders.blocks || {};\n shaders.block_scopes = shaders.block_scopes || {};\n let mixed_source = {}; // scopes mixed for this source style\n\n for (let t in source.blocks) {\n let block = source.blocks[t];\n let block_scope = source.block_scopes[t];\n\n shaders.blocks[t] = shaders.blocks[t] || [];\n shaders.block_scopes[t] = shaders.block_scopes[t] || [];\n\n // standardize on arrays (block can be single or multi-value)\n block = Array.isArray(block) ? block : [block];\n block_scope = Array.isArray(block_scope) ? block_scope : [block_scope];\n\n for (let b=0; b < block.length; b++) {\n // Skip blocks we've already mixed in from the same scope\n // Repeating scope indicates a diamond pattern where a style is being mixed multiple times\n if (mixed[block_scope[b]]) {\n continue;\n }\n mixed_source[block_scope[b]] = true;\n\n shaders.blocks[t].push(block[b]);\n shaders.block_scopes[t].push(block_scope[b]);\n }\n }\n\n // Add styles mixed in from this source - they could be multi-level ancestors,\n // beyond the first-level \"parents\" defined in this style's `mix` list\n Object.assign(mixed, mixed_source);\n });\n\n Object.assign(style.mixed, mixed); // add all newly mixed styles\n\n style.shaders = shaders; // assign back to style\n return style;\n }\n\n // Create a new style\n // name: name of new style\n // config: properties of new style\n // styles: working set of styles being built (used for mixing in existing styles)\n create (name, config, styles = {}) {\n let style = mergeObjects({}, config); // deep copy\n style.name = name;\n\n // Style mixins\n style = this.mix(style, styles);\n\n // Has base style?\n // Only renderable (instantiated) styles should be included for run-time use\n // Others are intermediary/abstract, used during style composition but not execution\n if (style.base && this.base_styles[style.base]) {\n this.styles[name] = style = Object.assign(Object.create(this.base_styles[style.base]), style);\n }\n else {\n style.base = null; // null out invalid base style\n }\n\n return style;\n }\n\n // Called to create and initialize styles\n build (styles) {\n // Sort styles by dependency, then build them\n let style_deps = Object.keys(styles).sort(\n (a, b) => this.inheritanceDepth(a, styles) - this.inheritanceDepth(b, styles)\n );\n\n // Only keep built-in base styles\n for (let sname in this.styles) {\n if (!this.base_styles[sname]) {\n delete this.styles[sname];\n }\n else {\n this.styles[sname].reset();\n }\n }\n\n // Working set of styles being built\n let ws = {};\n style_deps.forEach(sname => {\n ws[sname] = this.create(sname, styles[sname], ws);\n });\n\n return this.styles;\n }\n\n // Initialize all styles\n initStyles (scene = {}) {\n // Initialize all\n for (let sname in this.styles) {\n this.styles[sname].init(scene);\n }\n }\n\n // Given a style key in a set of styles to add, count the length of the inheritance chain\n inheritanceDepth (key, styles) {\n let parents = 0;\n\n while(true) {\n let style = styles[key];\n if (!style) {\n // this is a scene def error, trying to extend a style that doesn't exist\n break;\n }\n\n // Dependency chain ends when this style isn't mixing in any others\n if (!style.mix) {\n break;\n }\n\n // Traverse next parent style\n parents++;\n\n if (Array.isArray(style.mix)) {\n // If multiple mixins, find the deepest one\n parents += Math.max(...style.mix.map(s => {\n // Trying to mix into itself!\n if (key === s) {\n return;\n }\n\n return this.inheritanceDepth(s, styles);\n }));\n break;\n }\n else {\n // Trying to mix into itself!\n if (key === style.mix) {\n break;\n }\n\n // If single mixin, continue loop up the tree\n key = style.mix;\n }\n }\n return parents;\n }\n\n}\n", - "import Utils from '../utils/utils';\nimport Geo from '../geo';\n\nimport parseCSSColor from 'csscolorparser';\n\nexport const StyleParser = {};\n\n// Helpers for string converstion / NaN handling\nconst clampPositive = v => Math.max(v, 0);\nconst noNaN = v => isNaN(v) ? 0 : v;\nconst parseNumber = v => Array.isArray(v) ? v.map(parseFloat).map(noNaN) : noNaN(parseFloat(v));\nconst parsePositiveNumber = v => Array.isArray(v) ? v.map(parseNumber).map(clampPositive) : clampPositive(parseNumber(v));\n\n// Wraps style functions and provides a scope of commonly accessible data:\n// - feature: the 'properties' of the feature, e.g. accessed as 'feature.name'\n// - global: user-defined properties on the `global` object in the scene file\n// - $zoom: the current map zoom level\n// - $geometry: the type of geometry, 'point', 'line', or 'polygon'\n// - $meters_per_pixel: conversion for meters/pixels at current map zoom\nStyleParser.wrapFunction = function (func) {\n var f = `\n var feature = context.feature.properties;\n var global = context.global;\n var $zoom = context.zoom;\n var $layer = context.layer;\n var $source = context.source;\n var $geometry = context.geometry;\n var $meters_per_pixel = context.meters_per_pixel;\n\n var val = (function(){ ${func} }());\n\n if (typeof val === 'number' && isNaN(val)) {\n val = null; // convert NaNs to nulls\n }\n\n return val;\n `;\n return f;\n};\n\n\n// Style parsing\n\nStyleParser.zeroPair = Object.freeze([0, 0]); // single allocation for zero values that won't be modified\n\n// Style defaults\nStyleParser.defaults = {\n color: [1, 1, 1, 1],\n width: 1,\n size: 1,\n extrude: false,\n height: 20,\n min_height: 0,\n order: 0,\n z: 0,\n outline: {\n color: [0, 0, 0, 0],\n width: 0\n },\n material: {\n ambient: 1,\n diffuse: 1\n }\n};\n\n// Style macros\nStyleParser.macros = {\n // pseudo-random color by geometry id\n 'Style.color.pseudoRandomColor': function() {\n return [\n 0.7 * (parseInt(feature.id, 16) / 100 % 1), // jshint ignore:line\n 0.7 * (parseInt(feature.id, 16) / 10000 % 1), // jshint ignore:line\n 0.7 * (parseInt(feature.id, 16) / 1000000 % 1), // jshint ignore:line\n 1\n ];\n },\n\n // random color\n 'Style.color.randomColor': function() {\n return [0.7 * Math.random(), 0.7 * Math.random(), 0.7 * Math.random(), 1];\n }\n};\n\n// A context object that is passed to style parsing functions to provide a scope of commonly used values\nStyleParser.getFeatureParseContext = function (feature, tile, global) {\n return {\n feature,\n tile,\n global,\n zoom: tile.style_zoom,\n geometry: Geo.geometryType(feature.geometry.type),\n meters_per_pixel: tile.meters_per_pixel,\n meters_per_pixel_sq: tile.meters_per_pixel_sq,\n units_per_meter_overzoom: tile.units_per_meter_overzoom\n };\n};\n\n// Build a style param cache object\n// `value` is raw value, cache methods will add other properties as needed\n// `transform` is optional transform function to run on values (except function values)\nconst CACHE_TYPE = {\n STATIC: 0,\n DYNAMIC: 1,\n ZOOM: 2\n};\nStyleParser.CACHE_TYPE = CACHE_TYPE;\n\nStyleParser.createPropertyCache = function (obj, transform = null) {\n if (obj == null) {\n return;\n }\n\n if (obj.value) {\n return { value: obj.value, zoom: (obj.zoom ? {} : null), type: obj.type }; // clone existing cache object\n }\n\n let c = { value: obj, type: CACHE_TYPE.STATIC };\n\n // does value contain zoom stops to be interpolated?\n if (Array.isArray(c.value) && Array.isArray(c.value[0])) {\n c.zoom = {}; // will hold values interpolated by zoom\n c.type = CACHE_TYPE.ZOOM;\n }\n else if (typeof c.value === 'function') {\n c.type = CACHE_TYPE.DYNAMIC;\n }\n\n // apply optional transform function\n if (typeof transform === 'function') {\n if (c.zoom) { // apply to each zoom stop value\n c.value = c.value.map((v, i) => [v[0], transform(v[1], i)]);\n }\n else if (typeof c.value !== 'function') { // don't transform functions\n c.value = transform(c.value, 0); // single value\n }\n }\n\n return c;\n};\n\n// Convert old-style color macro into a function\n// TODO: deprecate this macro syntax\nStyleParser.createColorPropertyCache = function (obj) {\n return StyleParser.createPropertyCache(obj, v => {\n if (v === 'Style.color.pseudoRandomColor') {\n return Utils.stringToFunction(StyleParser.wrapFunction(StyleParser.macros['Style.color.pseudoRandomColor']));\n }\n else if (v === 'Style.color.randomColor') {\n return StyleParser.macros['Style.color.randomColor'];\n }\n\n return v;\n });\n};\n\n// Caching for point sizes, which include optional %-based or aspect-ratio-constrained scaling from sprite size\n// Returns a cache object if successful, or throws error message\nconst isPercent = v => typeof v === 'string' && v[v.length-1] === '%'; // size computed by %\nconst isRatio = v => v === 'auto'; // size derived from aspect ratio of one dimension\nconst isComputed = v => isPercent(v) || isRatio(v);\nconst dualRatioError = `'size' can specify either width or height as derived from aspect ratio, but not both`;\nStyleParser.createPointSizePropertyCache = function (obj) {\n // mimics the structure of the size value (at each zoom stop if applicable),\n // stores flags indicating if each element is a %-based size or not, or derived from aspect\n let has_pct = null;\n let has_ratio = null;\n if (isPercent(obj)) { // 1D size\n has_pct = [true];\n }\n else if (Array.isArray(obj)) {\n // track which fields are % vals\n if (Array.isArray(obj[0])) { // zoom stops\n // could be a 1D value (that could be a %), or a 2D value (either width or height or both could be a %)\n if (obj.some(v => Array.isArray(v[1]) ? v[1].some(w => isComputed(w)) : isPercent(v[1]))) {\n has_pct = obj.map(v => Array.isArray(v[1]) ? v[1].map(w => isPercent(w)) : isPercent(v[1]));\n has_ratio = obj.map(v => Array.isArray(v[1]) && v[1].map(w => isRatio(w)));\n if (has_ratio.some(v => Array.isArray(v) && v.every(c => c))) {\n throw dualRatioError; // invalid case where both dims are ratios\n }\n }\n }\n else if (obj.some(isComputed)) { // 2D size\n has_pct = [obj.map(isPercent)];\n has_ratio = [obj.map(isRatio)];\n if (has_ratio[0].every(c => c)) {\n throw dualRatioError; // invalid case where both dims are ratios\n }\n }\n }\n\n if (!has_pct) { // no percentage-based calculation, one cache for all sprites\n obj = StyleParser.createPropertyCache(obj, parsePositiveNumber);\n }\n else { // per-sprite based evaluation\n obj = { value: obj };\n obj.has_pct = has_pct;\n obj.has_ratio = has_ratio;\n obj.sprites = {}; // cache by sprite\n }\n\n return obj;\n};\n\nStyleParser.evalCachedPointSizeProperty = function (val, sprite_info, context) {\n // no percentage-based calculation, one cache for all sprites\n if (!val.has_pct && !val.has_ratio) {\n return StyleParser.evalCachedProperty(val, context);\n }\n\n // per-sprite based evaluation\n if (!sprite_info) {\n return; // trying to apply percentage or ratio sizing to a sprite\n }\n\n // cache sizes per sprite\n if (!val.sprites[sprite_info.sprite]) {\n val.sprites[sprite_info.sprite] = StyleParser.createPropertyCache(val.value, (v, i) => {\n if (Array.isArray(v)) { // 2D size\n // either width or height or both could be a %\n v = v.\n map((c, j) => val.has_ratio[i][j] ? c : parsePositiveNumber(c)). // convert non-ratio values to px\n map((c, j) => val.has_pct[i][j] ? sprite_info.css_size[j] * c / 100 : c); // apply % scaling as needed\n\n // either width or height could be a ratio\n if (val.has_ratio[i][0]) {\n v[0] = v[1] * sprite_info.aspect;\n }\n else if (val.has_ratio[i][1]) {\n v[1] = v[0] / sprite_info.aspect;\n }\n }\n else { // 1D size\n v = parsePositiveNumber(v);\n if (val.has_pct[i]) {\n v = sprite_info.css_size.map(c => c * v / 100); // set size as % of sprite\n }\n else {\n v = [v, v]; // expand 1D size to 2D\n }\n }\n return v;\n });\n }\n return StyleParser.evalCachedProperty(val.sprites[sprite_info.sprite], context);\n};\n\n// Interpolation and caching for a generic property (not a color or distance)\n// { value: original, static: val, zoom: { 1: val1, 2: val2, ... }, dynamic: function(){...} }\nStyleParser.evalCachedProperty = function(val, context) {\n if (val == null) {\n return;\n }\n else if (val.dynamic) { // function, compute each time (no caching)\n let v = val.dynamic(context);\n return v;\n }\n else if (val.static) { // single static value\n return val.static;\n }\n else if (val.zoom && val.zoom[context.zoom]) { // interpolated, cached\n return val.zoom[context.zoom];\n }\n else { // not yet evaulated for cache\n // Dynamic function-based\n if (typeof val.value === 'function') {\n val.dynamic = val.value;\n let v = val.dynamic(context);\n return v;\n }\n // Array of zoom-interpolated stops, e.g. [zoom, value] pairs\n else if (Array.isArray(val.value) && Array.isArray(val.value[0])) {\n // Calculate value for current zoom\n val.zoom = val.zoom || {};\n val.zoom[context.zoom] = Utils.interpolate(context.zoom, val.value);\n return val.zoom[context.zoom];\n }\n // Single static value\n else {\n val.static = val.value;\n return val.static;\n }\n }\n};\n\nStyleParser.convertUnits = function(val, context) {\n // pre-parsed units\n if (val.val != null) {\n if (val.units === 'px') { // convert from pixels\n return val.val * Geo.metersPerPixel(context.zoom);\n }\n return val.val;\n }\n // un-parsed unit string\n else if (typeof val === 'string') {\n if (val.trim().slice(-2) === 'px') {\n val = parseFloat(val);\n val *= Geo.metersPerPixel(context.zoom); // convert from pixels\n }\n else {\n val = parseFloat(val);\n }\n }\n // multiple values or stops\n else if (Array.isArray(val)) {\n // Array of arrays, e.g. zoom-interpolated stops\n if (Array.isArray(val[0])) {\n return val.map(v => [v[0], StyleParser.convertUnits(v[1], context)]);\n }\n // Array of values\n else {\n return val.map(v => StyleParser.convertUnits(v, context));\n }\n }\n return val;\n};\n\n// Pre-parse units from string values\nStyleParser.parseUnits = function (val) {\n var obj = { val: parseFloat(val) };\n if (obj.val !== 0 && typeof val === 'string' && val.trim().slice(-2) === 'px') {\n obj.units = 'px';\n }\n return obj;\n};\n\n// Takes a distance cache object and returns a distance value for this zoom\n// (caching the result for future use)\n// { value: original, zoom: { z: meters }, dynamic: function(){...} }\nStyleParser.evalCachedDistanceProperty = function(val, context) {\n if (val.dynamic) {\n let v = val.dynamic(context);\n return v;\n }\n else if (val.zoom && val.zoom[context.zoom]) {\n return val.zoom[context.zoom];\n }\n else {\n // Dynamic function-based\n if (typeof val.value === 'function') {\n val.dynamic = val.value;\n let v = val.dynamic(context);\n return v;\n }\n // Array of zoom-interpolated stops, e.g. [zoom, value] pairs\n else if (val.zoom) {\n // Calculate value for current zoom\n // Do final unit conversion as late as possible, when interpolation values have been determined\n val.zoom[context.zoom] = Utils.interpolate(context.zoom, val.value,\n v => StyleParser.convertUnits(v, context));\n\n return val.zoom[context.zoom];\n }\n else {\n return StyleParser.convertUnits(val.value, context);\n }\n }\n};\n\n// Cache previously parsed color strings\nStyleParser.string_colors = {};\nStyleParser.colorForString = function(string) {\n // Cached\n if (StyleParser.string_colors[string]) {\n return StyleParser.string_colors[string];\n }\n\n // Calculate and cache\n let color = parseCSSColor.parseCSSColor(string);\n if (color && color.length === 4) {\n color[0] /= 255;\n color[1] /= 255;\n color[2] /= 255;\n }\n else {\n color = StyleParser.defaults.color;\n }\n StyleParser.string_colors[string] = color;\n return color;\n};\n\n// Takes a color cache object and returns a color value for this zoom\n// (caching the result for future use)\n// { value: original, static: [r,g,b,a], zoom: { z: [r,g,b,a] }, dynamic: function(){...} }\nStyleParser.evalCachedColorProperty = function(val, context = {}) {\n if (val.dynamic) {\n let v = val.dynamic(context);\n\n if (typeof v === 'string') {\n v = StyleParser.colorForString(v);\n }\n\n if (v && v[3] == null) {\n v[3] = 1; // default alpha\n }\n return v;\n }\n else if (val.static) {\n return val.static;\n }\n else if (val.zoom && val.zoom[context.zoom]) {\n return val.zoom[context.zoom];\n }\n else {\n // Dynamic function-based color\n if (typeof val.value === 'function') {\n val.dynamic = val.value;\n let v = val.dynamic(context);\n\n if (typeof v === 'string') {\n v = StyleParser.colorForString(v);\n }\n\n if (v && v[3] == null) {\n v[3] = 1; // default alpha\n }\n return v;\n }\n // Single string color\n else if (typeof val.value === 'string') {\n val.static = StyleParser.colorForString(val.value);\n return val.static;\n }\n // Array of zoom-interpolated stops, e.g. [zoom, color] pairs\n else if (val.zoom) {\n // Parse any string colors inside stops, the first time we encounter this property\n if (!val.zoom_preprocessed) {\n for (let i=0; i < val.value.length; i++) {\n let v = val.value[i];\n if (v && typeof v[1] === 'string') {\n v[1] = StyleParser.colorForString(v[1]);\n }\n }\n val.zoom_preprocessed = true;\n }\n\n // Calculate color for current zoom\n val.zoom[context.zoom] = Utils.interpolate(context.zoom, val.value);\n val.zoom[context.zoom][3] = val.zoom[context.zoom][3] || 1; // default alpha\n return val.zoom[context.zoom];\n }\n // Single array color\n else {\n val.static = val.value.map(x => x); // copy to avoid modifying\n if (val.static && val.static[3] == null) {\n val.static[3] = 1; // default alpha\n }\n return val.static;\n }\n }\n};\n\nStyleParser.parseColor = function(val, context = {}) {\n if (typeof val === 'function') {\n val = val(context);\n }\n\n // Parse CSS-style colors\n // TODO: change all colors to use 0-255 range internally to avoid dividing and then re-multiplying in geom builder\n if (typeof val === 'string') {\n val = StyleParser.colorForString(val);\n }\n else if (Array.isArray(val) && Array.isArray(val[0])) {\n // Array of zoom-interpolated stops, e.g. [zoom, color] pairs\n for (let i=0; i < val.length; i++) {\n let v = val[i];\n if (typeof v[1] === 'string') {\n v[1] = StyleParser.colorForString(v[1]);\n }\n }\n\n if (context.zoom) {\n val = Utils.interpolate(context.zoom, val);\n }\n }\n\n // Defaults\n if (Array.isArray(val)) {\n val = val.map(x => x); // copy to avoid modifying\n // alpha\n if (val[3] == null) {\n val[3] = 1;\n }\n }\n else {\n val = [0, 0, 0, 1];\n }\n\n return val;\n};\n\nStyleParser.calculateOrder = function(order, context) {\n // Computed order\n if (typeof order === 'function') {\n order = order(context);\n }\n else if (typeof order === 'string') {\n // Order tied to feature property\n if (context.feature.properties[order]) {\n order = context.feature.properties[order];\n }\n // Explicit order value\n else {\n order = parseFloat(order);\n }\n }\n\n return order;\n};\n\n// Evaluate a function-based property, or pass-through static value\nStyleParser.evalProperty = function(prop, context) {\n if (typeof prop === 'function') {\n return prop(context);\n }\n return prop;\n};\n", - "import log from '../../utils/log';\nimport Utils from '../../utils/utils';\nimport Texture from '../../gl/texture';\nimport FontManager from './font_manager';\nimport Task from '../../utils/task';\nimport debugSettings from '../../utils/debug_settings';\n\nexport default class CanvasText {\n\n constructor () {\n this.createCanvas(); // create initial canvas and context\n this.vertical_text_buffer = 8; // vertical pixel padding around text\n this.horizontal_text_buffer = 4; // text styling such as italic emphasis is not measured by the Canvas API, so padding is necessary\n }\n\n createCanvas () {\n this.canvas = document.createElement('canvas');\n this.canvas.style.backgroundColor = 'transparent'; // render text on transparent background\n this.context = this.canvas.getContext('2d');\n }\n\n resize (width, height) {\n this.canvas.width = width;\n this.canvas.height = height;\n this.context.clearRect(0, 0, width, height);\n }\n\n // Set font style params for canvas drawing\n setFont ({ font_css, fill, stroke, stroke_width, px_size, supersample }) {\n this.px_size = px_size;\n let ctx = this.context;\n let dpr = Utils.device_pixel_ratio * supersample;\n\n if (stroke && stroke_width > 0) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = stroke_width * dpr;\n }\n ctx.fillStyle = fill;\n\n ctx.font = font_css;\n ctx.miterLimit = 2;\n }\n\n textSizes (tile_id, texts) {\n return FontManager.loadFonts().then(() => {\n return Task.add({\n type: 'textSizes',\n target: this,\n method: 'processTextSizesTask',\n texts,\n tile_id,\n cursor: {\n styles: Object.keys(texts),\n texts: null,\n style_idx: null,\n text_idx: null\n }\n });\n });\n }\n\n processTextSizesTask (task) {\n let { cursor, texts } = task;\n cursor.style_idx = cursor.style_idx || 0;\n\n while (cursor.style_idx < cursor.styles.length) {\n let style = cursor.styles[cursor.style_idx];\n if (cursor.text_idx == null) {\n cursor.text_idx = 0;\n cursor.texts = Object.keys(texts[style]);\n }\n\n let text_infos = texts[style];\n let first = true;\n\n while (cursor.text_idx < cursor.texts.length) {\n let text = cursor.texts[cursor.text_idx];\n let text_info = text_infos[text];\n let text_settings = text_info.text_settings;\n\n if (first) {\n this.setFont(text_settings);\n first = false;\n }\n\n // add size of full text string\n text_info.size = this.textSize(style, text, text_settings).size;\n\n // if text may curve, calculate per-segment as well\n if (text_settings.can_articulate) {\n let rtl = false;\n let bidi = false;\n if (isTextRTL(text)) {\n if (!isTextNeutral(text)) {\n bidi = true;\n }\n else {\n rtl = true;\n }\n }\n\n text_info.isRTL = rtl;\n text_info.no_curving = bidi || isTextCurveBlacklisted(text); // used in LabelLine to prevent curved labels\n text_info.vertical_buffer = this.vertical_text_buffer;\n text_info.segment_sizes = [];\n\n if (!text_info.no_curving) {\n let segments = splitLabelText(text, rtl);\n text_info.segments = segments;\n for (let i = 0; i < segments.length; i++){\n text_info.segment_sizes.push(this.textSize(style, segments[i], text_settings).size);\n }\n }\n }\n\n cursor.text_idx++;\n\n if (!Task.shouldContinue(task)) {\n return false;\n }\n }\n cursor.text_idx = null;\n cursor.style_idx++;\n }\n\n Task.finish(task, { texts });\n return true;\n }\n\n // Computes width and height of text based on current font style\n // Includes word wrapping, returns size info for whole text block and individual lines\n textSize (style, text, {transform, text_wrap, max_lines, stroke_width = 0, supersample}) {\n // Check cache first\n CanvasText.cache.text[style] = CanvasText.cache.text[style] || {};\n if (CanvasText.cache.text[style][text]) {\n CanvasText.cache.stats.text_hits++;\n return CanvasText.cache.text[style][text];\n }\n CanvasText.cache.stats.text_misses++;\n CanvasText.cache.text_count++;\n\n // Calc and store in cache\n let dpr = Utils.device_pixel_ratio * supersample;\n let str = this.applyTextTransform(text, transform);\n let ctx = this.context;\n let vertical_buffer = this.vertical_text_buffer * dpr;\n let horizontal_buffer = dpr * (stroke_width + this.horizontal_text_buffer);\n let leading = 2 * dpr; // make configurable and/or use Canvas TextMetrics when available\n let line_height = this.px_size + leading; // px_size already in device pixels\n\n // Parse string into series of lines if it exceeds the text wrapping value or contains line breaks\n let multiline = MultiLine.parse(str, text_wrap, max_lines, line_height, ctx);\n\n // Final dimensions of text\n let height = multiline.height;\n let width = multiline.width;\n let lines = multiline.lines;\n\n let collision_size = [\n width / dpr,\n height / dpr\n ];\n\n let texture_size = [\n width + 2 * horizontal_buffer,\n height + 2 * vertical_buffer\n ];\n\n let logical_size = [\n texture_size[0] / dpr,\n texture_size[1] / dpr,\n ];\n\n // Returns lines (w/per-line info for drawing) and text's overall bounding box + canvas size\n CanvasText.cache.text[style][text] = {\n lines,\n size: { collision_size, texture_size, logical_size, line_height }\n };\n return CanvasText.cache.text[style][text];\n }\n\n // Draw multiple lines of text\n drawTextMultiLine (lines, [x, y], size, { stroke, stroke_width = 0, transform, align, supersample }, type) {\n let line_height = size.line_height;\n let height = y;\n for (let line_num=0; line_num < lines.length; line_num++) {\n let line = lines[line_num];\n this.drawTextLine(line, [x, height], size, { stroke, stroke_width, transform, align, supersample }, type);\n height += line_height;\n }\n\n // Draw bounding boxes for debugging\n if (debugSettings.draw_label_collision_boxes) {\n this.context.save();\n\n let dpr = Utils.device_pixel_ratio * supersample;\n let horizontal_buffer = dpr * (this.horizontal_text_buffer + stroke_width);\n let vertical_buffer = dpr * this.vertical_text_buffer;\n let collision_size = size.collision_size;\n let lineWidth = 2;\n\n this.context.strokeStyle = 'blue';\n this.context.lineWidth = lineWidth;\n this.context.strokeRect(x + horizontal_buffer, y + vertical_buffer, dpr * collision_size[0], dpr * collision_size[1]);\n if (type === 'curved'){\n this.context.strokeRect(x + size.texture_size[0] + horizontal_buffer, y + vertical_buffer, dpr * collision_size[0], dpr * collision_size[1]);\n }\n\n this.context.restore();\n }\n\n if (debugSettings.draw_label_texture_boxes) {\n this.context.save();\n\n let texture_size = size.texture_size;\n let lineWidth = 2;\n\n this.context.strokeStyle = 'green';\n this.context.lineWidth = lineWidth;\n // stroke is applied internally, so the outer border is the edge of the texture\n this.context.strokeRect(x + lineWidth, y + lineWidth, texture_size[0] - 2 * lineWidth, texture_size[1] - 2 * lineWidth);\n\n if (type === 'curved'){\n this.context.strokeRect(x + lineWidth + size.texture_size[0], y + lineWidth, texture_size[0] - 2 * lineWidth, texture_size[1] - 2 * lineWidth);\n }\n\n this.context.restore();\n }\n }\n\n // Draw single line of text at specified location, adjusting for buffer and baseline\n drawTextLine (line, [x, y], size, { stroke, stroke_width = 0, transform, align, supersample }, type) {\n let dpr = Utils.device_pixel_ratio * supersample;\n align = align || 'center';\n\n let vertical_buffer = this.vertical_text_buffer * dpr;\n let texture_size = size.texture_size;\n let line_height = size.line_height;\n let horizontal_buffer = dpr * (stroke_width + this.horizontal_text_buffer);\n\n let str = this.applyTextTransform(line.text, transform);\n\n // Text alignment\n let tx;\n if (align === 'left') {\n tx = x + horizontal_buffer;\n }\n else if (align === 'center') {\n tx = x + texture_size[0]/2 - line.width/2;\n }\n else if (align === 'right') {\n tx = x + texture_size[0] - line.width - horizontal_buffer;\n }\n\n // In the absence of better Canvas TextMetrics (not supported by browsers yet),\n // 0.75 buffer produces a better approximate vertical centering of text\n let ty = y + vertical_buffer * 0.75 + line_height;\n\n // Draw stroke and fill separately for curved text. Offset stroke in texture atlas by shift.\n if (stroke && stroke_width > 0) {\n let shift = (type === 'curved') ? texture_size[0] : 0;\n this.context.strokeText(str, tx + shift, ty);\n }\n this.context.fillText(str, tx, ty);\n }\n\n rasterize (texts, textures, tile_id, texture_prefix, gl) {\n return Task.add({\n type: 'rasterizeLabels',\n target: this,\n method: 'processRasterizeTask',\n cancel: 'cancelRasterizeTask',\n pause_factor: 2, // pause 2 frames when task run past allowed time\n user_moving_view: false, // don't run task when user is moving view\n texts,\n textures,\n texture_prefix,\n gl,\n tile_id,\n cursor: {\n styles: Object.keys(texts),\n texts: null,\n style_idx: 0,\n text_idx: null,\n texture_idx: 0,\n texture_resize: true,\n texture_names: []\n }\n });\n }\n\n processRasterizeTask (task) {\n let { cursor, texts, textures } = task;\n let texture;\n\n // Rasterize one texture at a time, so we only have to keep one canvas in memory (they can be large)\n while (cursor.texture_idx < task.textures.length) {\n texture = textures[cursor.texture_idx];\n\n if (cursor.texture_resize) {\n cursor.texture_resize = false;\n this.resize(...texture.texture_size);\n }\n\n while (cursor.style_idx < cursor.styles.length) {\n let style = cursor.styles[cursor.style_idx];\n if (cursor.text_idx == null) {\n cursor.text_idx = 0;\n cursor.texts = Object.keys(texts[style]);\n }\n\n let text_infos = texts[style];\n let first = true;\n\n while (cursor.text_idx < cursor.texts.length) {\n let text = cursor.texts[cursor.text_idx];\n let text_info = text_infos[text];\n let text_settings = text_info.text_settings;\n\n // set font on first occurence of new font style\n if (first) {\n this.setFont(text_settings);\n first = false;\n }\n\n if (text_settings.can_articulate){\n text_info.texcoords = text_info.texcoords || {};\n for (let t = 0; t < text_info.type.length; t++){\n\n let type = text_info.type[t];\n switch (type){\n case 'straight':\n // Only render for current texture\n if (text_info.textures[t] !== cursor.texture_idx) {\n continue;\n }\n\n let word = (text_info.isRTL) ? text.split().reverse().join() : text;\n let cache = texture.texcoord_cache[style][word];\n\n let texcoord;\n if (cache.texcoord){\n texcoord = cache.texcoord;\n }\n else {\n let texture_position = cache.texture_position;\n let { size, lines } = this.textSize(style, word, text_settings);\n\n this.drawTextMultiLine(lines, texture_position, size, text_settings, type);\n\n texcoord = Texture.getTexcoordsForSprite(\n texture_position,\n size.texture_size,\n texture.texture_size\n );\n\n cache.texcoord = texcoord;\n }\n\n text_info.texcoords[type] = {\n texcoord,\n texture_id: cache.texture_id\n };\n\n break;\n\n case 'curved':\n let words = text_info.segments;\n text_info.texcoords.curved = text_info.texcoords.curved || [];\n text_info.texcoords_stroke = text_info.texcoords_stroke || [];\n\n for (let w = 0; w < words.length; w++){\n // Only render for current texture\n if (text_info.textures[t][w] !== cursor.texture_idx) {\n continue;\n }\n\n let word = words[w];\n let cache = texture.texcoord_cache[style][word];\n\n let texcoord;\n let texcoord_stroke;\n if (cache.texcoord){\n texcoord = cache.texcoord;\n texcoord_stroke = cache.texcoord_stroke;\n text_info.texcoords_stroke.push(texcoord_stroke);\n }\n else {\n let texture_position = cache.texture_position;\n let { size, lines } = this.textSize(style, word, text_settings);\n\n this.drawTextMultiLine(lines, texture_position, size, text_settings, type);\n\n texcoord = Texture.getTexcoordsForSprite(\n texture_position,\n size.texture_size,\n texture.texture_size\n );\n\n let texture_position_stroke = [\n texture_position[0] + size.texture_size[0],\n texture_position[1]\n ];\n\n texcoord_stroke = Texture.getTexcoordsForSprite(\n texture_position_stroke,\n size.texture_size,\n texture.texture_size\n );\n\n cache.texcoord = texcoord;\n cache.texcoord_stroke = texcoord_stroke;\n\n // NB: texture_id is the same between stroke and fill, so it's not duplicated here\n text_info.texcoords_stroke.push(texcoord_stroke);\n }\n\n text_info.texcoords.curved.push({\n texcoord,\n texture_id: cache.texture_id\n });\n }\n break;\n }\n }\n }\n else {\n let lines = this.textSize(style, text, text_settings).lines;\n\n for (let align in text_info.align) {\n // Only render for current texture\n if (text_info.align[align].texture_id !== cursor.texture_idx) {\n continue;\n }\n\n this.drawTextMultiLine(lines, text_info.align[align].texture_position, text_info.size, {\n stroke: text_settings.stroke,\n stroke_width: text_settings.stroke_width,\n transform: text_settings.transform,\n supersample: text_settings.supersample,\n align: align\n });\n\n text_info.align[align].texcoords = Texture.getTexcoordsForSprite(\n text_info.align[align].texture_position,\n text_info.size.texture_size,\n texture.texture_size\n );\n }\n }\n\n cursor.text_idx++;\n\n if (!Task.shouldContinue(task)) {\n return false;\n }\n }\n cursor.text_idx = null;\n cursor.style_idx++;\n }\n\n // Create GL texture (canvas element will be reused for next texture)\n let tname = task.texture_prefix + cursor.texture_idx;\n Texture.create(task.gl, tname, {\n element: this.canvas,\n filtering: 'linear',\n UNPACK_PREMULTIPLY_ALPHA_WEBGL: true\n });\n Texture.retain(tname);\n cursor.texture_names.push(tname);\n\n cursor.texture_idx++;\n cursor.texture_resize = true;\n cursor.style_idx = 0;\n }\n\n Task.finish(task, { textures: cursor.texture_names });\n return true;\n }\n\n // Free any textures that have been allocated part-way through label rasterization for a tile\n cancelRasterizeTask (task) {\n log('trace', `RasterizeTask: release textures [${task.cursor.texture_names.join(', ')}]`);\n task.cursor.texture_names.forEach(t => Texture.release(t));\n }\n\n // Place text labels within an atlas of the given max size\n setTextureTextPositions (texts, max_texture_size) {\n let texture = {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0,\n column_width: 0,\n texture_id: 0,\n texcoord_cache: {}\n },\n textures = [];\n\n for (let style in texts) {\n let text_infos = texts[style];\n\n for (let text in text_infos) {\n let text_info = text_infos[text];\n let texture_position;\n\n if (text_info.text_settings.can_articulate){\n text_info.textures = [];\n texture.texcoord_cache[style] = texture.texcoord_cache[style] || {};\n\n for (let t = 0; t < text_info.type.length; t++){\n let type = text_info.type[t];\n\n switch (type){\n case 'straight':\n let word = (text_info.isRTL) ? text.split().reverse().join() : text;\n\n if (!texture.texcoord_cache[style][word]) {\n let size = text_info.size.texture_size;\n texture_position = this.placeText(size[0], size[1], style, texture, textures, max_texture_size);\n texture.texcoord_cache[style][word] = {\n texture_id: texture.texture_id,\n texture_position\n };\n }\n\n text_info.textures[t] = texture.texture_id;\n\n break;\n\n case 'curved':\n text_info.textures[t] = [];\n\n for (let w = 0; w < text_info.segment_sizes.length; w++) {\n let word = text_info.segments[w];\n\n if (!texture.texcoord_cache[style][word]) {\n let size = text_info.segment_sizes[w].texture_size;\n let width = 2 * size[0]; // doubled to account for side-by-side rendering of fill and stroke\n texture_position = this.placeText(width, size[1], style, texture, textures, max_texture_size);\n texture.texcoord_cache[style][word] = {\n texture_id: texture.texture_id,\n texture_position\n };\n }\n\n text_info.textures[t].push(texture.texture_id);\n }\n\n break;\n }\n }\n }\n else {\n // rendered size is same for all alignments\n let size = text_info.size.texture_size;\n\n // but each alignment needs to be rendered separately\n for (let align in text_info.align) {\n texture_position = this.placeText (size[0], size[1], style, texture, textures, max_texture_size);\n text_info.align[align].texture_id = texture.texture_id;\n text_info.align[align].texture_position = texture_position;\n }\n }\n }\n }\n\n // save final texture\n if (texture.column_width > 0 && texture.height > 0) {\n textures[texture.texture_id] = {\n texture_size: [texture.width, texture.height],\n texcoord_cache: texture.texcoord_cache\n };\n }\n\n // return computed texture sizes and UV cache\n return Promise.resolve({ textures });\n }\n\n // Place text sprite in texture atlas, enlarging current texture, or starting new one if max texture size reached\n placeText (text_width, text_height, style, texture, textures, max_texture_size) {\n let texture_position;\n\n // TODO: what if first label is wider than entire max texture?\n\n if (texture.cy + text_height > max_texture_size) {\n // start new column\n texture.cx += texture.column_width;\n texture.cy = 0;\n texture.column_width = text_width;\n }\n else {\n // expand current column\n texture.column_width = Math.max(texture.column_width, text_width);\n }\n\n if (texture.cx + texture.column_width <= max_texture_size) {\n // add label to current texture\n texture_position = [texture.cx, texture.cy];\n\n texture.cy += text_height;\n\n // expand texture if needed\n texture.height = Math.max(texture.height, texture.cy);\n texture.width = Math.max(texture.width, texture.cx + texture.column_width);\n }\n else {\n // start new texture\n // save size and cache of last texture\n textures[texture.texture_id] = {\n texture_size: [texture.width, texture.height],\n texcoord_cache: texture.texcoord_cache\n };\n texture.texcoord_cache = {}; // reset cache\n texture.texcoord_cache[style] = {};\n\n texture.texture_id++;\n texture.cx = 0;\n texture.cy = text_height;\n texture.column_width = text_width;\n texture.width = text_width;\n texture.height = text_height;\n texture_position = [0, 0]; // TODO: allocate zero array once\n }\n\n return texture_position;\n }\n\n // Called before rasterization\n applyTextTransform (text, transform) {\n if (transform === 'capitalize') {\n return text.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1);\n });\n }\n else if (transform === 'uppercase') {\n return text.toUpperCase();\n }\n else if (transform === 'lowercase') {\n return text.toLowerCase();\n }\n return text;\n }\n\n // Convert font CSS-style size ('12px', '14pt', '1.5em', etc.) to pixel size (adjusted for device pixel ratio)\n // Defaults units to pixels if not specified\n static fontPixelSize (size) {\n if (size == null) {\n return;\n }\n size = (typeof size === 'string') ? size : String(size); // need a string for regex\n\n let [, px_size, units] = size.match(CanvasText.font_size_re) || [];\n units = units || 'px';\n\n if (units === \"em\") {\n px_size *= 16;\n } else if (units === \"pt\") {\n px_size /= 0.75;\n } else if (units === \"%\") {\n px_size /= 6.25;\n }\n\n px_size = parseFloat(px_size);\n px_size *= Utils.device_pixel_ratio;\n return px_size;\n }\n\n static pruneTextCache () {\n if (CanvasText.cache.text_count > CanvasText.cache.text_count_max) {\n CanvasText.cache.text = {};\n CanvasText.cache.text_count = 0;\n log('debug', 'CanvasText: pruning text cache');\n }\n\n if (Object.keys(CanvasText.cache.segment).length > CanvasText.cache.segment_count_max) {\n CanvasText.cache.segment = {};\n log('debug', 'CanvasText: pruning segment cache');\n }\n }\n\n}\n\n// Extract font size and units\nCanvasText.font_size_re = /((?:[0-9]*\\.)?[0-9]+)\\s*(px|pt|em|%)?/;\n\n// Cache sizes of rendered text\nCanvasText.cache = {\n text: {}, // size and line parsing, by text style, then text string\n text_count: 0, // current size of cache (measured as # of entries)\n text_count_max: 2000, // prune cache when it exceeds this size\n segment: {}, // segmentation of text (by run of characters or grapheme clusters), by text string\n segment_count_max: 2000, // prune cache when it exceeds this size\n stats: { text_hits: 0, text_misses: 0, segment_hits: 0, segment_misses: 0 }\n};\n\n// Right-to-left / bi-directional text handling\n// Taken from http://stackoverflow.com/questions/12006095/javascript-how-to-check-if-character-is-rtl\nconst rtlDirCheck = new RegExp('[\\u0591-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]');\nfunction isTextRTL(s){\n return rtlDirCheck.test(s);\n}\n\nconst neutral_chars = '\\u0000-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u02B9-\\u02FF\\u2000-\\u2BFF\\u2010-\\u2029\\u202C\\u202F-\\u2BFF';\nconst neutralDirCheck = new RegExp('['+neutral_chars+']+');\nfunction isTextNeutral(s){\n return neutralDirCheck.test(s);\n}\n\nconst markRTL = '\\u200F'; // explicit right-to-left marker\n\n// test http://localhost:8000/#16.72917/30.08541/31.28466\nconst arabic_range = new RegExp('^['+neutral_chars+'\\u0600-\\u06FF]+'); // all characters are Arabic or neutral\nconst arabic_splitters = new RegExp('['+neutral_chars+'\\u0622-\\u0625\\u0627\\u062F-\\u0632\\u0648\\u0671-\\u0677\\u0688-\\u0699\\u06C4-\\u06CB\\u06CF\\u06D2\\u06D3\\u06EE\\u06EF]');\nconst arabic_vowels = new RegExp('^[\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED]+');\nconst accents_and_vowels = \"[\\u0300-\\u036F\" + // Combining Diacritical Marks\n\"\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\" + // Hebrew\n\"\\u07A6-\\u07B0\" + // Thaana\n\"\\u0900-\\u0903\\u093A-\\u094C\\u094E\\u094F\\u0951-\\u0957\\u0962\\u0963\" + // Devanagari\n\"\\u0981-\\u0983\\u09BC\\u09BE-\\u09CC\\u09D7\\u09E2\\u09E3\" + // Bengali\n\"\\u0A01-\\u0A03\\u0A3C-\\u0A4C\\u0A51\" + // Gurmukhi\n\"\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0ACC\\u0AE2\\u0AE3\" + // Gujarati\n\"\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B4C\\u0B56\\u0B57\\u0B62\\u0B63\" + // Oriya\n\"\\u0B82\\u0BBE-\\u0BCD\\u0BD7\" + // Tamil\n\"\\u0C00-\\u0C03\\u0C3E-\\u0C4C\\u0C55\\u0C56\\u0C62\\u0C63\" + // Telugu\n\"\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CCC\\u0CD5\\u0CD6\\u0CE2\\u0CE3\" + // Kannada\n\"\\u0D01-\\u0D03\\u0D3E-\\u0D4C\\u0D4E\\u0D57\\u0D62\\u0D63\" + // Malayalam\n\"\\u0D82\\u0D83\\u0DCA-\\u0DDF\\u0DF2\\u0DF3\" + // Sinhala\n\"\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\" + // Thai\n\"\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\" + // Lao\n\"\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F83\\u0F86\\u0F87\\u0F8D-\\u0FBC\\u0FC6\" + // Tibetan\n\"\\u102B-\\u1038\\u103A-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\" + // Burmese\n\"\\u17B4-\\u17D1\\u17D3\" + // Khmer\n\"\\u1A55-\\u1A5E\\u1A61-\\u1A7C\" + // Tai Tham\n\"\\u1DC0-\\u1DFF\" + // Combining Diacritical Marks Supplement\n\"\\u20D0-\\u20FF\" + // Combining Diacritical Marks for Symbols\n\"]\";\nconst combo_characters = \"[\\u094D\\u09CD\\u0A4D\\u0ACD\\u0B4D\\u0C4D\\u0CCD\\u0D4D\\u0F84\\u1039\\u17D2\\u1A60\\u1A7F]\";\nconst graphemeRegex = new RegExp(\"^.(?:\" + accents_and_vowels + \"+)?\" + \"(\" + combo_characters + \"\\\\W(?:\" + accents_and_vowels + \"+)?)*\");\n\n// Scripts that cannot be curved due (due to contextual shaping and/or layout complexity)\nconst curve_blacklist = {\n Mongolian: \"\\u1800-\\u18AF\"\n};\nconst curve_blacklist_range = Object.keys(curve_blacklist).map(r => curve_blacklist[r]).join('');\nconst curve_blacklist_test = new RegExp('['+curve_blacklist_range+']');\nfunction isTextCurveBlacklisted(s){\n return curve_blacklist_test.test(s);\n}\n\n// Splitting strategy for chopping a label into segments\nconst default_segment_length = 2; // character length of each segment when dividing up label text\n\nfunction splitLabelText(text, rtl){\n // Use single-character segments for RTL, to avoid additional handling for neutral characters\n // (see https://github.com/tangrams/tangram/issues/541)\n const segment_length = rtl ? 1 : default_segment_length;\n\n if (text.length < segment_length) {\n return [text];\n }\n\n let key = text;\n if (CanvasText.cache.segment[key]) {\n CanvasText.cache.stats.segment_hits++;\n return CanvasText.cache.segment[key];\n }\n\n let segments = [];\n\n if (arabic_range.exec(text)) {\n segments = text.split(arabic_splitters);\n let offset = -1;\n for (var s = 0; s < segments.length - 1; s++) {\n if (s > 0) {\n let carryoverVowels = arabic_vowels.exec(segments[s]);\n if (carryoverVowels) {\n segments[s] = segments[s].substring(carryoverVowels[0].length);\n segments[s - 1] += carryoverVowels[0];\n offset += carryoverVowels[0].length;\n }\n }\n offset += 1 + segments[s].length;\n segments[s] += text.slice(offset, offset + 1);\n }\n text = \"\";\n }\n\n while (text.length){\n let segment = '';\n let testText = text;\n let graphemeCount = 0;\n\n for (graphemeCount; graphemeCount < segment_length && testText.length; graphemeCount++) {\n let graphemeCluster = (graphemeRegex.exec(testText) || testText)[0];\n segment += graphemeCluster;\n testText = testText.substring(graphemeCluster.length);\n }\n\n segments.push(segment);\n text = text.substring(segment.length);\n }\n\n if (rtl) {\n segments.reverse();\n }\n\n CanvasText.cache.stats.segment_misses++;\n CanvasText.cache.segment[key] = segments;\n return segments;\n}\n\n// Private class to arrange text labels into multiple lines based on\n// \"text wrap\" and \"max line\" values\nclass MultiLine {\n constructor (context, max_lines = Infinity, text_wrap = Infinity) {\n this.width = 0;\n this.height = 0;\n this.lines = [];\n\n this.max_lines = max_lines;\n this.text_wrap = text_wrap;\n this.context = context;\n }\n\n createLine (line_height){\n if (this.lines.length < this.max_lines){\n return new Line(line_height, this.text_wrap);\n }\n else {\n return false;\n }\n }\n\n push (line){\n if (this.lines.length < this.max_lines){\n // measure line width\n let line_width = this.context.measureText(line.text).width;\n line.width = line_width;\n\n if (line_width > this.width){\n this.width = Math.ceil(line_width);\n }\n\n // add to lines and increment height\n this.lines.push(line);\n this.height += line.height;\n return true;\n }\n else {\n this.addEllipsis();\n return false;\n }\n }\n\n // pushes to the lines array and returns a new line if possible (false otherwise)\n advance (line, line_height) {\n let can_push = this.push(line);\n if (can_push){\n return this.createLine(line_height);\n }\n else {\n return false;\n }\n }\n\n addEllipsis (){\n let last_line = this.lines[this.lines.length - 1];\n let ellipsis_width = Math.ceil(this.context.measureText(MultiLine.ellipsis).width);\n\n last_line.append(MultiLine.ellipsis);\n last_line.width += ellipsis_width;\n\n if (last_line.width > this.width) {\n this.width = last_line.width;\n }\n }\n\n finish (line){\n if (line){\n this.push(line);\n }\n else {\n this.addEllipsis();\n }\n }\n\n static parse (str, text_wrap, max_lines, line_height, ctx) {\n // Word wrapping\n // Line breaks can be caused by:\n // - implicit line break when a maximum character threshold is exceeded per line (text_wrap)\n // - explicit line break in the label text (\\n)\n let words;\n if (typeof text_wrap === 'number') {\n words = str.split(' '); // split words on spaces\n }\n else {\n words = [str]; // no max line word wrapping (but new lines will still be in effect)\n }\n\n let multiline = new MultiLine(ctx, max_lines, text_wrap);\n let line = multiline.createLine(line_height);\n\n // First iterate on space-break groups (will be one if max line length off), then iterate on line-break groups\n for (let i = 0; i < words.length; i++) {\n let breaks = words[i].split('\\n'); // split on line breaks\n let new_line = (i === 0) ? true : false;\n\n for (let n=0; n < breaks.length; n++) {\n if (!line){\n break;\n }\n\n let word = breaks[n];\n\n // force punctuation (neutral chars) at the end of a RTL line, so they stay attached to original word\n if (isTextRTL(word) && isTextNeutral(word[word.length - 1])) {\n word += markRTL;\n }\n\n let spaced_word = (new_line) ? word : ' ' + word;\n\n // if adding current word would overflow, add a new line instead\n // first word (i === 0) always appends\n if (text_wrap && i > 0 && line.exceedsTextwrap(spaced_word)) {\n line = multiline.advance(line, line_height);\n if (!line){\n break;\n }\n line.append(word);\n new_line = true;\n }\n else {\n line.append(spaced_word);\n }\n\n // if line breaks present, add new line (unless on last line)\n if (n < breaks.length - 1) {\n line = multiline.advance(line, line_height);\n new_line = true;\n }\n }\n\n if (i === words.length - 1){\n multiline.finish(line);\n }\n }\n return multiline;\n }\n}\n\nMultiLine.ellipsis = '...';\n\n// A Private class used by MultiLine to contain the logic for a single line\n// including character count, width, height and text\nclass Line {\n constructor (height = 0, text_wrap = 0){\n this.chars = 0;\n this.text = '';\n\n this.height = Math.ceil(height);\n this.text_wrap = text_wrap;\n }\n\n append (text){\n this.chars += text.length;\n this.text += text;\n }\n\n exceedsTextwrap (text){\n return text.length + this.chars > this.text_wrap;\n }\n}\n", + "import Utils from '../utils/utils';\nimport Geo from '../geo';\n\nimport parseCSSColor from 'csscolorparser';\n\nconst StyleParser = {};\nexport default StyleParser;\n\n// Helpers for string converstion / NaN handling\nconst clampPositive = v => Math.max(v, 0);\nconst noNaN = v => isNaN(v) ? 0 : v;\nconst parseNumber = v => Array.isArray(v) ? v.map(parseFloat).map(noNaN) : noNaN(parseFloat(v));\nconst parsePositiveNumber = v => Array.isArray(v) ? v.map(parseNumber).map(clampPositive) : clampPositive(parseNumber(v));\n\nObject.assign(StyleParser, {clampPositive, noNaN, parseNumber, parsePositiveNumber});\n\n// Wraps style functions and provides a scope of commonly accessible data:\n// - feature: the 'properties' of the feature, e.g. accessed as 'feature.name'\n// - global: user-defined properties on the `global` object in the scene file\n// - $zoom: the current map zoom level\n// - $geometry: the type of geometry, 'point', 'line', or 'polygon'\n// - $meters_per_pixel: conversion for meters/pixels at current map zoom\nStyleParser.wrapFunction = function (func) {\n var f = `\n var feature = context.feature.properties;\n var global = context.global;\n var $zoom = context.zoom;\n var $layer = context.layer;\n var $source = context.source;\n var $geometry = context.geometry;\n var $meters_per_pixel = context.meters_per_pixel;\n\n var val = (function(){ ${func} }());\n\n if (typeof val === 'number' && isNaN(val)) {\n val = null; // convert NaNs to nulls\n }\n\n return val;\n `;\n return f;\n};\n\n\n// Style parsing\n\nStyleParser.zeroPair = Object.freeze([0, 0]); // single allocation for zero values that won't be modified\n\n// Style defaults\nStyleParser.defaults = {\n color: [1, 1, 1, 1],\n width: 1,\n size: 1,\n extrude: false,\n height: 20,\n min_height: 0,\n order: 0,\n z: 0,\n outline: {\n color: [0, 0, 0, 0],\n width: 0\n },\n material: {\n ambient: 1,\n diffuse: 1\n }\n};\n\n// Style macros\nStyleParser.macros = {\n // pseudo-random color by geometry id\n 'Style.color.pseudoRandomColor': function() {\n return [\n 0.7 * (parseInt(feature.id, 16) / 100 % 1), // jshint ignore:line\n 0.7 * (parseInt(feature.id, 16) / 10000 % 1), // jshint ignore:line\n 0.7 * (parseInt(feature.id, 16) / 1000000 % 1), // jshint ignore:line\n 1\n ];\n },\n\n // random color\n 'Style.color.randomColor': function() {\n return [0.7 * Math.random(), 0.7 * Math.random(), 0.7 * Math.random(), 1];\n }\n};\n\n// A context object that is passed to style parsing functions to provide a scope of commonly used values\nStyleParser.getFeatureParseContext = function (feature, tile, global) {\n return {\n feature,\n tile,\n global,\n zoom: tile.style_zoom,\n geometry: Geo.geometryType(feature.geometry.type),\n meters_per_pixel: tile.meters_per_pixel,\n meters_per_pixel_sq: tile.meters_per_pixel_sq,\n units_per_meter_overzoom: tile.units_per_meter_overzoom\n };\n};\n\n// Build a style param cache object\n// `value` is raw value, cache methods will add other properties as needed\n// `transform` is optional transform function to run on values (except function values)\nconst CACHE_TYPE = {\n STATIC: 0,\n DYNAMIC: 1,\n ZOOM: 2\n};\nStyleParser.CACHE_TYPE = CACHE_TYPE;\n\nStyleParser.createPropertyCache = function (obj, transform = null) {\n if (obj == null) {\n return;\n }\n\n if (obj.value) {\n return { value: obj.value, zoom: (obj.zoom ? {} : null), type: obj.type }; // clone existing cache object\n }\n\n let c = { value: obj, type: CACHE_TYPE.STATIC };\n\n // does value contain zoom stops to be interpolated?\n if (Array.isArray(c.value) && Array.isArray(c.value[0])) {\n c.zoom = {}; // will hold values interpolated by zoom\n c.type = CACHE_TYPE.ZOOM;\n }\n else if (typeof c.value === 'function') {\n c.type = CACHE_TYPE.DYNAMIC;\n }\n\n // apply optional transform function\n if (typeof transform === 'function') {\n if (c.zoom) { // apply to each zoom stop value\n c.value = c.value.map((v, i) => [v[0], transform(v[1], i)]);\n }\n else if (typeof c.value !== 'function') { // don't transform functions\n c.value = transform(c.value, 0); // single value\n }\n }\n\n return c;\n};\n\n// Convert old-style color macro into a function\n// TODO: deprecate this macro syntax\nStyleParser.createColorPropertyCache = function (obj) {\n return StyleParser.createPropertyCache(obj, v => {\n if (v === 'Style.color.pseudoRandomColor') {\n return Utils.stringToFunction(StyleParser.wrapFunction(StyleParser.macros['Style.color.pseudoRandomColor']));\n }\n else if (v === 'Style.color.randomColor') {\n return StyleParser.macros['Style.color.randomColor'];\n }\n\n return v;\n });\n};\n\n// Caching for point sizes, which include optional %-based or aspect-ratio-constrained scaling from sprite size\n// Returns a cache object if successful, or throws error message\nconst isPercent = v => typeof v === 'string' && v[v.length-1] === '%'; // size computed by %\nconst isRatio = v => v === 'auto'; // size derived from aspect ratio of one dimension\nconst isComputed = v => isPercent(v) || isRatio(v);\nconst dualRatioError = `'size' can specify either width or height as derived from aspect ratio, but not both`;\nStyleParser.createPointSizePropertyCache = function (obj) {\n // mimics the structure of the size value (at each zoom stop if applicable),\n // stores flags indicating if each element is a %-based size or not, or derived from aspect\n let has_pct = null;\n let has_ratio = null;\n if (isPercent(obj)) { // 1D size\n has_pct = [true];\n }\n else if (Array.isArray(obj)) {\n // track which fields are % vals\n if (Array.isArray(obj[0])) { // zoom stops\n // could be a 1D value (that could be a %), or a 2D value (either width or height or both could be a %)\n if (obj.some(v => Array.isArray(v[1]) ? v[1].some(w => isComputed(w)) : isPercent(v[1]))) {\n has_pct = obj.map(v => Array.isArray(v[1]) ? v[1].map(w => isPercent(w)) : isPercent(v[1]));\n has_ratio = obj.map(v => Array.isArray(v[1]) && v[1].map(w => isRatio(w)));\n if (has_ratio.some(v => Array.isArray(v) && v.every(c => c))) {\n throw dualRatioError; // invalid case where both dims are ratios\n }\n }\n }\n else if (obj.some(isComputed)) { // 2D size\n has_pct = [obj.map(isPercent)];\n has_ratio = [obj.map(isRatio)];\n if (has_ratio[0].every(c => c)) {\n throw dualRatioError; // invalid case where both dims are ratios\n }\n }\n }\n\n if (!has_pct) { // no percentage-based calculation, one cache for all sprites\n obj = StyleParser.createPropertyCache(obj, parsePositiveNumber);\n }\n else { // per-sprite based evaluation\n obj = { value: obj };\n obj.has_pct = has_pct;\n obj.has_ratio = has_ratio;\n obj.sprites = {}; // cache by sprite\n }\n\n return obj;\n};\n\nStyleParser.evalCachedPointSizeProperty = function (val, sprite_info, context) {\n // no percentage-based calculation, one cache for all sprites\n if (!val.has_pct && !val.has_ratio) {\n return StyleParser.evalCachedProperty(val, context);\n }\n\n // per-sprite based evaluation\n if (!sprite_info) {\n return; // trying to apply percentage or ratio sizing to a sprite\n }\n\n // cache sizes per sprite\n if (!val.sprites[sprite_info.sprite]) {\n val.sprites[sprite_info.sprite] = StyleParser.createPropertyCache(val.value, (v, i) => {\n if (Array.isArray(v)) { // 2D size\n // either width or height or both could be a %\n v = v.\n map((c, j) => val.has_ratio[i][j] ? c : parsePositiveNumber(c)). // convert non-ratio values to px\n map((c, j) => val.has_pct[i][j] ? sprite_info.css_size[j] * c / 100 : c); // apply % scaling as needed\n\n // either width or height could be a ratio\n if (val.has_ratio[i][0]) {\n v[0] = v[1] * sprite_info.aspect;\n }\n else if (val.has_ratio[i][1]) {\n v[1] = v[0] / sprite_info.aspect;\n }\n }\n else { // 1D size\n v = parsePositiveNumber(v);\n if (val.has_pct[i]) {\n v = sprite_info.css_size.map(c => c * v / 100); // set size as % of sprite\n }\n else {\n v = [v, v]; // expand 1D size to 2D\n }\n }\n return v;\n });\n }\n return StyleParser.evalCachedProperty(val.sprites[sprite_info.sprite], context);\n};\n\n// Interpolation and caching for a generic property (not a color or distance)\n// { value: original, static: val, zoom: { 1: val1, 2: val2, ... }, dynamic: function(){...} }\nStyleParser.evalCachedProperty = function(val, context) {\n if (val == null) {\n return;\n }\n else if (val.dynamic) { // function, compute each time (no caching)\n let v = val.dynamic(context);\n return v;\n }\n else if (val.static) { // single static value\n return val.static;\n }\n else if (val.zoom && val.zoom[context.zoom]) { // interpolated, cached\n return val.zoom[context.zoom];\n }\n else { // not yet evaulated for cache\n // Dynamic function-based\n if (typeof val.value === 'function') {\n val.dynamic = val.value;\n let v = val.dynamic(context);\n return v;\n }\n // Array of zoom-interpolated stops, e.g. [zoom, value] pairs\n else if (Array.isArray(val.value) && Array.isArray(val.value[0])) {\n // Calculate value for current zoom\n val.zoom = val.zoom || {};\n val.zoom[context.zoom] = Utils.interpolate(context.zoom, val.value);\n return val.zoom[context.zoom];\n }\n // Single static value\n else {\n val.static = val.value;\n return val.static;\n }\n }\n};\n\nStyleParser.convertUnits = function(val, context) {\n // pre-parsed units\n if (val.val != null) {\n if (val.units === 'px') { // convert from pixels\n return val.val * Geo.metersPerPixel(context.zoom);\n }\n return val.val;\n }\n // un-parsed unit string\n else if (typeof val === 'string') {\n if (val.trim().slice(-2) === 'px') {\n val = parseNumber(val);\n val *= Geo.metersPerPixel(context.zoom); // convert from pixels\n }\n else {\n val = parseNumber(val);\n }\n }\n // multiple values or stops\n else if (Array.isArray(val)) {\n // Array of arrays, e.g. zoom-interpolated stops\n if (Array.isArray(val[0])) {\n return val.map(v => [v[0], StyleParser.convertUnits(v[1], context)]);\n }\n // Array of values\n else {\n return val.map(v => StyleParser.convertUnits(v, context));\n }\n }\n return val;\n};\n\n// Pre-parse units from string values\nStyleParser.parseUnits = function (val) {\n var obj = { val: parseNumber(val) };\n if (obj.val !== 0 && typeof val === 'string' && val.trim().slice(-2) === 'px') {\n obj.units = 'px';\n }\n return obj;\n};\n\n// Takes a distance cache object and returns a distance value for this zoom\n// (caching the result for future use)\n// { value: original, zoom: { z: meters }, dynamic: function(){...} }\nStyleParser.evalCachedDistanceProperty = function(val, context) {\n if (val.dynamic) {\n let v = val.dynamic(context);\n return v;\n }\n else if (val.zoom && val.zoom[context.zoom]) {\n return val.zoom[context.zoom];\n }\n else {\n // Dynamic function-based\n if (typeof val.value === 'function') {\n val.dynamic = val.value;\n let v = val.dynamic(context);\n return v;\n }\n // Array of zoom-interpolated stops, e.g. [zoom, value] pairs\n else if (val.zoom) {\n // Calculate value for current zoom\n // Do final unit conversion as late as possible, when interpolation values have been determined\n val.zoom[context.zoom] = Utils.interpolate(context.zoom, val.value,\n v => StyleParser.convertUnits(v, context));\n\n return val.zoom[context.zoom];\n }\n else {\n return StyleParser.convertUnits(val.value, context);\n }\n }\n};\n\n// Cache previously parsed color strings\nStyleParser.string_colors = {};\nStyleParser.colorForString = function(string) {\n // Cached\n if (StyleParser.string_colors[string]) {\n return StyleParser.string_colors[string];\n }\n\n // Calculate and cache\n let color = parseCSSColor.parseCSSColor(string);\n if (color && color.length === 4) {\n color[0] /= 255;\n color[1] /= 255;\n color[2] /= 255;\n }\n else {\n color = StyleParser.defaults.color;\n }\n StyleParser.string_colors[string] = color;\n return color;\n};\n\n// Takes a color cache object and returns a color value for this zoom\n// (caching the result for future use)\n// { value: original, static: [r,g,b,a], zoom: { z: [r,g,b,a] }, dynamic: function(){...} }\nStyleParser.evalCachedColorProperty = function(val, context = {}) {\n if (val.dynamic) {\n let v = val.dynamic(context);\n\n if (typeof v === 'string') {\n v = StyleParser.colorForString(v);\n }\n\n if (v && v[3] == null) {\n v[3] = 1; // default alpha\n }\n return v;\n }\n else if (val.static) {\n return val.static;\n }\n else if (val.zoom && val.zoom[context.zoom]) {\n return val.zoom[context.zoom];\n }\n else {\n // Dynamic function-based color\n if (typeof val.value === 'function') {\n val.dynamic = val.value;\n let v = val.dynamic(context);\n\n if (typeof v === 'string') {\n v = StyleParser.colorForString(v);\n }\n\n if (v && v[3] == null) {\n v[3] = 1; // default alpha\n }\n return v;\n }\n // Single string color\n else if (typeof val.value === 'string') {\n val.static = StyleParser.colorForString(val.value);\n return val.static;\n }\n // Array of zoom-interpolated stops, e.g. [zoom, color] pairs\n else if (val.zoom) {\n // Parse any string colors inside stops, the first time we encounter this property\n if (!val.zoom_preprocessed) {\n for (let i=0; i < val.value.length; i++) {\n let v = val.value[i];\n if (v && typeof v[1] === 'string') {\n v[1] = StyleParser.colorForString(v[1]);\n }\n }\n val.zoom_preprocessed = true;\n }\n\n // Calculate color for current zoom\n val.zoom[context.zoom] = Utils.interpolate(context.zoom, val.value);\n val.zoom[context.zoom][3] = val.zoom[context.zoom][3] || 1; // default alpha\n return val.zoom[context.zoom];\n }\n // Single array color\n else {\n val.static = val.value.map(x => x); // copy to avoid modifying\n if (val.static && val.static[3] == null) {\n val.static[3] = 1; // default alpha\n }\n return val.static;\n }\n }\n};\n\nStyleParser.parseColor = function(val, context = {}) {\n if (typeof val === 'function') {\n val = val(context);\n }\n\n // Parse CSS-style colors\n // TODO: change all colors to use 0-255 range internally to avoid dividing and then re-multiplying in geom builder\n if (typeof val === 'string') {\n val = StyleParser.colorForString(val);\n }\n else if (Array.isArray(val) && Array.isArray(val[0])) {\n // Array of zoom-interpolated stops, e.g. [zoom, color] pairs\n for (let i=0; i < val.length; i++) {\n let v = val[i];\n if (typeof v[1] === 'string') {\n v[1] = StyleParser.colorForString(v[1]);\n }\n }\n\n if (context.zoom) {\n val = Utils.interpolate(context.zoom, val);\n }\n }\n\n // Defaults\n if (Array.isArray(val)) {\n val = val.map(x => x); // copy to avoid modifying\n // alpha\n if (val[3] == null) {\n val[3] = 1;\n }\n }\n else {\n val = [0, 0, 0, 1];\n }\n\n return val;\n};\n\nStyleParser.calculateOrder = function(order, context) {\n // Computed order\n if (typeof order === 'function') {\n order = order(context);\n }\n else if (typeof order === 'string') {\n // Order tied to feature property\n if (context.feature.properties[order]) {\n order = context.feature.properties[order];\n }\n // Explicit order value\n else {\n order = parsePositiveNumber(order);\n }\n }\n\n return order;\n};\n\n// Evaluate a function-based property, or pass-through static value\nStyleParser.evalProperty = function(prop, context) {\n if (typeof prop === 'function') {\n return prop(context);\n }\n return prop;\n};\n", + "import log from '../../utils/log';\nimport Utils from '../../utils/utils';\nimport Texture from '../../gl/texture';\nimport FontManager from './font_manager';\nimport Task from '../../utils/task';\nimport StyleParser from '../style_parser';\nimport debugSettings from '../../utils/debug_settings';\n\nexport default class CanvasText {\n\n constructor () {\n this.createCanvas(); // create initial canvas and context\n this.vertical_text_buffer = 8; // vertical pixel padding around text\n this.horizontal_text_buffer = 4; // text styling such as italic emphasis is not measured by the Canvas API, so padding is necessary\n }\n\n createCanvas () {\n this.canvas = document.createElement('canvas');\n this.canvas.style.backgroundColor = 'transparent'; // render text on transparent background\n this.context = this.canvas.getContext('2d');\n }\n\n resize (width, height) {\n this.canvas.width = width;\n this.canvas.height = height;\n this.context.clearRect(0, 0, width, height);\n }\n\n // Set font style params for canvas drawing\n setFont ({ font_css, fill, stroke, stroke_width, px_size, supersample }) {\n this.px_size = px_size;\n let ctx = this.context;\n let dpr = Utils.device_pixel_ratio * supersample;\n\n if (stroke && stroke_width > 0) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = stroke_width * dpr;\n }\n ctx.fillStyle = fill;\n\n ctx.font = font_css;\n ctx.miterLimit = 2;\n }\n\n textSizes (tile_id, texts) {\n return FontManager.loadFonts().then(() => {\n return Task.add({\n type: 'textSizes',\n target: this,\n method: 'processTextSizesTask',\n texts,\n tile_id,\n cursor: {\n styles: Object.keys(texts),\n texts: null,\n style_idx: null,\n text_idx: null\n }\n });\n });\n }\n\n processTextSizesTask (task) {\n let { cursor, texts } = task;\n cursor.style_idx = cursor.style_idx || 0;\n\n while (cursor.style_idx < cursor.styles.length) {\n let style = cursor.styles[cursor.style_idx];\n if (cursor.text_idx == null) {\n cursor.text_idx = 0;\n cursor.texts = Object.keys(texts[style]);\n }\n\n let text_infos = texts[style];\n let first = true;\n\n while (cursor.text_idx < cursor.texts.length) {\n let text = cursor.texts[cursor.text_idx];\n let text_info = text_infos[text];\n let text_settings = text_info.text_settings;\n\n if (first) {\n this.setFont(text_settings);\n first = false;\n }\n\n // add size of full text string\n text_info.size = this.textSize(style, text, text_settings).size;\n\n // if text may curve, calculate per-segment as well\n if (text_settings.can_articulate) {\n let rtl = false;\n let bidi = false;\n if (isTextRTL(text)) {\n if (!isTextNeutral(text)) {\n bidi = true;\n }\n else {\n rtl = true;\n }\n }\n\n text_info.isRTL = rtl;\n text_info.no_curving = bidi || isTextCurveBlacklisted(text); // used in LabelLine to prevent curved labels\n text_info.vertical_buffer = this.vertical_text_buffer;\n text_info.segment_sizes = [];\n\n if (!text_info.no_curving) {\n let segments = splitLabelText(text, rtl);\n text_info.segments = segments;\n for (let i = 0; i < segments.length; i++){\n text_info.segment_sizes.push(this.textSize(style, segments[i], text_settings).size);\n }\n }\n }\n\n cursor.text_idx++;\n\n if (!Task.shouldContinue(task)) {\n return false;\n }\n }\n cursor.text_idx = null;\n cursor.style_idx++;\n }\n\n Task.finish(task, { texts });\n return true;\n }\n\n // Computes width and height of text based on current font style\n // Includes word wrapping, returns size info for whole text block and individual lines\n textSize (style, text, {transform, text_wrap, max_lines, stroke_width = 0, supersample}) {\n // Check cache first\n CanvasText.cache.text[style] = CanvasText.cache.text[style] || {};\n if (CanvasText.cache.text[style][text]) {\n CanvasText.cache.stats.text_hits++;\n return CanvasText.cache.text[style][text];\n }\n CanvasText.cache.stats.text_misses++;\n CanvasText.cache.text_count++;\n\n // Calc and store in cache\n let dpr = Utils.device_pixel_ratio * supersample;\n let str = this.applyTextTransform(text, transform);\n let ctx = this.context;\n let vertical_buffer = this.vertical_text_buffer * dpr;\n let horizontal_buffer = dpr * (stroke_width + this.horizontal_text_buffer);\n let leading = 2 * dpr; // make configurable and/or use Canvas TextMetrics when available\n let line_height = this.px_size + leading; // px_size already in device pixels\n\n // Parse string into series of lines if it exceeds the text wrapping value or contains line breaks\n let multiline = MultiLine.parse(str, text_wrap, max_lines, line_height, ctx);\n\n // Final dimensions of text\n let height = multiline.height;\n let width = multiline.width;\n let lines = multiline.lines;\n\n let collision_size = [\n width / dpr,\n height / dpr\n ];\n\n let texture_size = [\n width + 2 * horizontal_buffer,\n height + 2 * vertical_buffer\n ];\n\n let logical_size = [\n texture_size[0] / dpr,\n texture_size[1] / dpr,\n ];\n\n // Returns lines (w/per-line info for drawing) and text's overall bounding box + canvas size\n CanvasText.cache.text[style][text] = {\n lines,\n size: { collision_size, texture_size, logical_size, line_height }\n };\n return CanvasText.cache.text[style][text];\n }\n\n // Draw multiple lines of text\n drawTextMultiLine (lines, [x, y], size, { stroke, stroke_width = 0, transform, align, supersample }, type) {\n let line_height = size.line_height;\n let height = y;\n for (let line_num=0; line_num < lines.length; line_num++) {\n let line = lines[line_num];\n this.drawTextLine(line, [x, height], size, { stroke, stroke_width, transform, align, supersample }, type);\n height += line_height;\n }\n\n // Draw bounding boxes for debugging\n if (debugSettings.draw_label_collision_boxes) {\n this.context.save();\n\n let dpr = Utils.device_pixel_ratio * supersample;\n let horizontal_buffer = dpr * (this.horizontal_text_buffer + stroke_width);\n let vertical_buffer = dpr * this.vertical_text_buffer;\n let collision_size = size.collision_size;\n let lineWidth = 2;\n\n this.context.strokeStyle = 'blue';\n this.context.lineWidth = lineWidth;\n this.context.strokeRect(x + horizontal_buffer, y + vertical_buffer, dpr * collision_size[0], dpr * collision_size[1]);\n if (type === 'curved'){\n this.context.strokeRect(x + size.texture_size[0] + horizontal_buffer, y + vertical_buffer, dpr * collision_size[0], dpr * collision_size[1]);\n }\n\n this.context.restore();\n }\n\n if (debugSettings.draw_label_texture_boxes) {\n this.context.save();\n\n let texture_size = size.texture_size;\n let lineWidth = 2;\n\n this.context.strokeStyle = 'green';\n this.context.lineWidth = lineWidth;\n // stroke is applied internally, so the outer border is the edge of the texture\n this.context.strokeRect(x + lineWidth, y + lineWidth, texture_size[0] - 2 * lineWidth, texture_size[1] - 2 * lineWidth);\n\n if (type === 'curved'){\n this.context.strokeRect(x + lineWidth + size.texture_size[0], y + lineWidth, texture_size[0] - 2 * lineWidth, texture_size[1] - 2 * lineWidth);\n }\n\n this.context.restore();\n }\n }\n\n // Draw single line of text at specified location, adjusting for buffer and baseline\n drawTextLine (line, [x, y], size, { stroke, stroke_width = 0, transform, align, supersample }, type) {\n let dpr = Utils.device_pixel_ratio * supersample;\n align = align || 'center';\n\n let vertical_buffer = this.vertical_text_buffer * dpr;\n let texture_size = size.texture_size;\n let line_height = size.line_height;\n let horizontal_buffer = dpr * (stroke_width + this.horizontal_text_buffer);\n\n let str = this.applyTextTransform(line.text, transform);\n\n // Text alignment\n let tx;\n if (align === 'left') {\n tx = x + horizontal_buffer;\n }\n else if (align === 'center') {\n tx = x + texture_size[0]/2 - line.width/2;\n }\n else if (align === 'right') {\n tx = x + texture_size[0] - line.width - horizontal_buffer;\n }\n\n // In the absence of better Canvas TextMetrics (not supported by browsers yet),\n // 0.75 buffer produces a better approximate vertical centering of text\n let ty = y + vertical_buffer * 0.75 + line_height;\n\n // Draw stroke and fill separately for curved text. Offset stroke in texture atlas by shift.\n if (stroke && stroke_width > 0) {\n let shift = (type === 'curved') ? texture_size[0] : 0;\n this.context.strokeText(str, tx + shift, ty);\n }\n this.context.fillText(str, tx, ty);\n }\n\n rasterize (texts, textures, tile_id, texture_prefix, gl) {\n return Task.add({\n type: 'rasterizeLabels',\n target: this,\n method: 'processRasterizeTask',\n cancel: 'cancelRasterizeTask',\n pause_factor: 2, // pause 2 frames when task run past allowed time\n user_moving_view: false, // don't run task when user is moving view\n texts,\n textures,\n texture_prefix,\n gl,\n tile_id,\n cursor: {\n styles: Object.keys(texts),\n texts: null,\n style_idx: 0,\n text_idx: null,\n texture_idx: 0,\n texture_resize: true,\n texture_names: []\n }\n });\n }\n\n processRasterizeTask (task) {\n let { cursor, texts, textures } = task;\n let texture;\n\n // Rasterize one texture at a time, so we only have to keep one canvas in memory (they can be large)\n while (cursor.texture_idx < task.textures.length) {\n texture = textures[cursor.texture_idx];\n\n if (cursor.texture_resize) {\n cursor.texture_resize = false;\n this.resize(...texture.texture_size);\n }\n\n while (cursor.style_idx < cursor.styles.length) {\n let style = cursor.styles[cursor.style_idx];\n if (cursor.text_idx == null) {\n cursor.text_idx = 0;\n cursor.texts = Object.keys(texts[style]);\n }\n\n let text_infos = texts[style];\n let first = true;\n\n while (cursor.text_idx < cursor.texts.length) {\n let text = cursor.texts[cursor.text_idx];\n let text_info = text_infos[text];\n let text_settings = text_info.text_settings;\n\n // set font on first occurence of new font style\n if (first) {\n this.setFont(text_settings);\n first = false;\n }\n\n if (text_settings.can_articulate){\n text_info.texcoords = text_info.texcoords || {};\n for (let t = 0; t < text_info.type.length; t++){\n\n let type = text_info.type[t];\n switch (type){\n case 'straight':\n // Only render for current texture\n if (text_info.textures[t] !== cursor.texture_idx) {\n continue;\n }\n\n let word = (text_info.isRTL) ? text.split().reverse().join() : text;\n let cache = texture.texcoord_cache[style][word];\n\n let texcoord;\n if (cache.texcoord){\n texcoord = cache.texcoord;\n }\n else {\n let texture_position = cache.texture_position;\n let { size, lines } = this.textSize(style, word, text_settings);\n\n this.drawTextMultiLine(lines, texture_position, size, text_settings, type);\n\n texcoord = Texture.getTexcoordsForSprite(\n texture_position,\n size.texture_size,\n texture.texture_size\n );\n\n cache.texcoord = texcoord;\n }\n\n text_info.texcoords[type] = {\n texcoord,\n texture_id: cache.texture_id\n };\n\n break;\n\n case 'curved':\n let words = text_info.segments;\n text_info.texcoords.curved = text_info.texcoords.curved || [];\n text_info.texcoords_stroke = text_info.texcoords_stroke || [];\n\n for (let w = 0; w < words.length; w++){\n // Only render for current texture\n if (text_info.textures[t][w] !== cursor.texture_idx) {\n continue;\n }\n\n let word = words[w];\n let cache = texture.texcoord_cache[style][word];\n\n let texcoord;\n let texcoord_stroke;\n if (cache.texcoord){\n texcoord = cache.texcoord;\n texcoord_stroke = cache.texcoord_stroke;\n text_info.texcoords_stroke.push(texcoord_stroke);\n }\n else {\n let texture_position = cache.texture_position;\n let { size, lines } = this.textSize(style, word, text_settings);\n\n this.drawTextMultiLine(lines, texture_position, size, text_settings, type);\n\n texcoord = Texture.getTexcoordsForSprite(\n texture_position,\n size.texture_size,\n texture.texture_size\n );\n\n let texture_position_stroke = [\n texture_position[0] + size.texture_size[0],\n texture_position[1]\n ];\n\n texcoord_stroke = Texture.getTexcoordsForSprite(\n texture_position_stroke,\n size.texture_size,\n texture.texture_size\n );\n\n cache.texcoord = texcoord;\n cache.texcoord_stroke = texcoord_stroke;\n\n // NB: texture_id is the same between stroke and fill, so it's not duplicated here\n text_info.texcoords_stroke.push(texcoord_stroke);\n }\n\n text_info.texcoords.curved.push({\n texcoord,\n texture_id: cache.texture_id\n });\n }\n break;\n }\n }\n }\n else {\n let lines = this.textSize(style, text, text_settings).lines;\n\n for (let align in text_info.align) {\n // Only render for current texture\n if (text_info.align[align].texture_id !== cursor.texture_idx) {\n continue;\n }\n\n this.drawTextMultiLine(lines, text_info.align[align].texture_position, text_info.size, {\n stroke: text_settings.stroke,\n stroke_width: text_settings.stroke_width,\n transform: text_settings.transform,\n supersample: text_settings.supersample,\n align: align\n });\n\n text_info.align[align].texcoords = Texture.getTexcoordsForSprite(\n text_info.align[align].texture_position,\n text_info.size.texture_size,\n texture.texture_size\n );\n }\n }\n\n cursor.text_idx++;\n\n if (!Task.shouldContinue(task)) {\n return false;\n }\n }\n cursor.text_idx = null;\n cursor.style_idx++;\n }\n\n // Create GL texture (canvas element will be reused for next texture)\n let tname = task.texture_prefix + cursor.texture_idx;\n Texture.create(task.gl, tname, {\n element: this.canvas,\n filtering: 'linear',\n UNPACK_PREMULTIPLY_ALPHA_WEBGL: true\n });\n Texture.retain(tname);\n cursor.texture_names.push(tname);\n\n cursor.texture_idx++;\n cursor.texture_resize = true;\n cursor.style_idx = 0;\n }\n\n Task.finish(task, { textures: cursor.texture_names });\n return true;\n }\n\n // Free any textures that have been allocated part-way through label rasterization for a tile\n cancelRasterizeTask (task) {\n log('trace', `RasterizeTask: release textures [${task.cursor.texture_names.join(', ')}]`);\n task.cursor.texture_names.forEach(t => Texture.release(t));\n }\n\n // Place text labels within an atlas of the given max size\n setTextureTextPositions (texts, max_texture_size) {\n let texture = {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0,\n column_width: 0,\n texture_id: 0,\n texcoord_cache: {}\n },\n textures = [];\n\n for (let style in texts) {\n let text_infos = texts[style];\n\n for (let text in text_infos) {\n let text_info = text_infos[text];\n let texture_position;\n\n if (text_info.text_settings.can_articulate){\n text_info.textures = [];\n texture.texcoord_cache[style] = texture.texcoord_cache[style] || {};\n\n for (let t = 0; t < text_info.type.length; t++){\n let type = text_info.type[t];\n\n switch (type){\n case 'straight':\n let word = (text_info.isRTL) ? text.split().reverse().join() : text;\n\n if (!texture.texcoord_cache[style][word]) {\n let size = text_info.size.texture_size;\n texture_position = this.placeText(size[0], size[1], style, texture, textures, max_texture_size);\n texture.texcoord_cache[style][word] = {\n texture_id: texture.texture_id,\n texture_position\n };\n }\n\n text_info.textures[t] = texture.texture_id;\n\n break;\n\n case 'curved':\n text_info.textures[t] = [];\n\n for (let w = 0; w < text_info.segment_sizes.length; w++) {\n let word = text_info.segments[w];\n\n if (!texture.texcoord_cache[style][word]) {\n let size = text_info.segment_sizes[w].texture_size;\n let width = 2 * size[0]; // doubled to account for side-by-side rendering of fill and stroke\n texture_position = this.placeText(width, size[1], style, texture, textures, max_texture_size);\n texture.texcoord_cache[style][word] = {\n texture_id: texture.texture_id,\n texture_position\n };\n }\n\n text_info.textures[t].push(texture.texture_id);\n }\n\n break;\n }\n }\n }\n else {\n // rendered size is same for all alignments\n let size = text_info.size.texture_size;\n\n // but each alignment needs to be rendered separately\n for (let align in text_info.align) {\n texture_position = this.placeText (size[0], size[1], style, texture, textures, max_texture_size);\n text_info.align[align].texture_id = texture.texture_id;\n text_info.align[align].texture_position = texture_position;\n }\n }\n }\n }\n\n // save final texture\n if (texture.column_width > 0 && texture.height > 0) {\n textures[texture.texture_id] = {\n texture_size: [texture.width, texture.height],\n texcoord_cache: texture.texcoord_cache\n };\n }\n\n // return computed texture sizes and UV cache\n return Promise.resolve({ textures });\n }\n\n // Place text sprite in texture atlas, enlarging current texture, or starting new one if max texture size reached\n placeText (text_width, text_height, style, texture, textures, max_texture_size) {\n let texture_position;\n\n // TODO: what if first label is wider than entire max texture?\n\n if (texture.cy + text_height > max_texture_size) {\n // start new column\n texture.cx += texture.column_width;\n texture.cy = 0;\n texture.column_width = text_width;\n }\n else {\n // expand current column\n texture.column_width = Math.max(texture.column_width, text_width);\n }\n\n if (texture.cx + texture.column_width <= max_texture_size) {\n // add label to current texture\n texture_position = [texture.cx, texture.cy];\n\n texture.cy += text_height;\n\n // expand texture if needed\n texture.height = Math.max(texture.height, texture.cy);\n texture.width = Math.max(texture.width, texture.cx + texture.column_width);\n }\n else {\n // start new texture\n // save size and cache of last texture\n textures[texture.texture_id] = {\n texture_size: [texture.width, texture.height],\n texcoord_cache: texture.texcoord_cache\n };\n texture.texcoord_cache = {}; // reset cache\n texture.texcoord_cache[style] = {};\n\n texture.texture_id++;\n texture.cx = 0;\n texture.cy = text_height;\n texture.column_width = text_width;\n texture.width = text_width;\n texture.height = text_height;\n texture_position = [0, 0]; // TODO: allocate zero array once\n }\n\n return texture_position;\n }\n\n // Called before rasterization\n applyTextTransform (text, transform) {\n if (transform === 'capitalize') {\n return text.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1);\n });\n }\n else if (transform === 'uppercase') {\n return text.toUpperCase();\n }\n else if (transform === 'lowercase') {\n return text.toLowerCase();\n }\n return text;\n }\n\n // Convert font CSS-style size ('12px', '14pt', '1.5em', etc.) to pixel size (adjusted for device pixel ratio)\n // Defaults units to pixels if not specified\n static fontPixelSize (size) {\n if (size == null) {\n return;\n }\n size = (typeof size === 'string') ? size : String(size); // need a string for regex\n\n let [, px_size, units] = size.match(CanvasText.font_size_re) || [];\n units = units || 'px';\n\n if (units === \"em\") {\n px_size *= 16;\n } else if (units === \"pt\") {\n px_size /= 0.75;\n } else if (units === \"%\") {\n px_size /= 6.25;\n }\n\n px_size = StyleParser.parsePositiveNumber(px_size);\n px_size *= Utils.device_pixel_ratio;\n return px_size;\n }\n\n static pruneTextCache () {\n if (CanvasText.cache.text_count > CanvasText.cache.text_count_max) {\n CanvasText.cache.text = {};\n CanvasText.cache.text_count = 0;\n log('debug', 'CanvasText: pruning text cache');\n }\n\n if (Object.keys(CanvasText.cache.segment).length > CanvasText.cache.segment_count_max) {\n CanvasText.cache.segment = {};\n log('debug', 'CanvasText: pruning segment cache');\n }\n }\n\n}\n\n// Extract font size and units\nCanvasText.font_size_re = /((?:[0-9]*\\.)?[0-9]+)\\s*(px|pt|em|%)?/;\n\n// Cache sizes of rendered text\nCanvasText.cache = {\n text: {}, // size and line parsing, by text style, then text string\n text_count: 0, // current size of cache (measured as # of entries)\n text_count_max: 2000, // prune cache when it exceeds this size\n segment: {}, // segmentation of text (by run of characters or grapheme clusters), by text string\n segment_count_max: 2000, // prune cache when it exceeds this size\n stats: { text_hits: 0, text_misses: 0, segment_hits: 0, segment_misses: 0 }\n};\n\n// Right-to-left / bi-directional text handling\n// Taken from http://stackoverflow.com/questions/12006095/javascript-how-to-check-if-character-is-rtl\nconst rtlDirCheck = new RegExp('[\\u0591-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]');\nfunction isTextRTL(s){\n return rtlDirCheck.test(s);\n}\n\nconst neutral_chars = '\\u0000-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u02B9-\\u02FF\\u2000-\\u2BFF\\u2010-\\u2029\\u202C\\u202F-\\u2BFF';\nconst neutralDirCheck = new RegExp('['+neutral_chars+']+');\nfunction isTextNeutral(s){\n return neutralDirCheck.test(s);\n}\n\nconst markRTL = '\\u200F'; // explicit right-to-left marker\n\n// test http://localhost:8000/#16.72917/30.08541/31.28466\nconst arabic_range = new RegExp('^['+neutral_chars+'\\u0600-\\u06FF]+'); // all characters are Arabic or neutral\nconst arabic_splitters = new RegExp('['+neutral_chars+'\\u0622-\\u0625\\u0627\\u062F-\\u0632\\u0648\\u0671-\\u0677\\u0688-\\u0699\\u06C4-\\u06CB\\u06CF\\u06D2\\u06D3\\u06EE\\u06EF]');\nconst arabic_vowels = new RegExp('^[\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED]+');\nconst accents_and_vowels = \"[\\u0300-\\u036F\" + // Combining Diacritical Marks\n\"\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\" + // Hebrew\n\"\\u07A6-\\u07B0\" + // Thaana\n\"\\u0900-\\u0903\\u093A-\\u094C\\u094E\\u094F\\u0951-\\u0957\\u0962\\u0963\" + // Devanagari\n\"\\u0981-\\u0983\\u09BC\\u09BE-\\u09CC\\u09D7\\u09E2\\u09E3\" + // Bengali\n\"\\u0A01-\\u0A03\\u0A3C-\\u0A4C\\u0A51\" + // Gurmukhi\n\"\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0ACC\\u0AE2\\u0AE3\" + // Gujarati\n\"\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B4C\\u0B56\\u0B57\\u0B62\\u0B63\" + // Oriya\n\"\\u0B82\\u0BBE-\\u0BCD\\u0BD7\" + // Tamil\n\"\\u0C00-\\u0C03\\u0C3E-\\u0C4C\\u0C55\\u0C56\\u0C62\\u0C63\" + // Telugu\n\"\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CCC\\u0CD5\\u0CD6\\u0CE2\\u0CE3\" + // Kannada\n\"\\u0D01-\\u0D03\\u0D3E-\\u0D4C\\u0D4E\\u0D57\\u0D62\\u0D63\" + // Malayalam\n\"\\u0D82\\u0D83\\u0DCA-\\u0DDF\\u0DF2\\u0DF3\" + // Sinhala\n\"\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\" + // Thai\n\"\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\" + // Lao\n\"\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F83\\u0F86\\u0F87\\u0F8D-\\u0FBC\\u0FC6\" + // Tibetan\n\"\\u102B-\\u1038\\u103A-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\" + // Burmese\n\"\\u17B4-\\u17D1\\u17D3\" + // Khmer\n\"\\u1A55-\\u1A5E\\u1A61-\\u1A7C\" + // Tai Tham\n\"\\u1DC0-\\u1DFF\" + // Combining Diacritical Marks Supplement\n\"\\u20D0-\\u20FF\" + // Combining Diacritical Marks for Symbols\n\"]\";\nconst combo_characters = \"[\\u094D\\u09CD\\u0A4D\\u0ACD\\u0B4D\\u0C4D\\u0CCD\\u0D4D\\u0F84\\u1039\\u17D2\\u1A60\\u1A7F]\";\nconst graphemeRegex = new RegExp(\"^.(?:\" + accents_and_vowels + \"+)?\" + \"(\" + combo_characters + \"\\\\W(?:\" + accents_and_vowels + \"+)?)*\");\n\n// Scripts that cannot be curved due (due to contextual shaping and/or layout complexity)\nconst curve_blacklist = {\n Mongolian: \"\\u1800-\\u18AF\"\n};\nconst curve_blacklist_range = Object.keys(curve_blacklist).map(r => curve_blacklist[r]).join('');\nconst curve_blacklist_test = new RegExp('['+curve_blacklist_range+']');\nfunction isTextCurveBlacklisted(s){\n return curve_blacklist_test.test(s);\n}\n\n// Splitting strategy for chopping a label into segments\nconst default_segment_length = 2; // character length of each segment when dividing up label text\n\nfunction splitLabelText(text, rtl){\n // Use single-character segments for RTL, to avoid additional handling for neutral characters\n // (see https://github.com/tangrams/tangram/issues/541)\n const segment_length = rtl ? 1 : default_segment_length;\n\n if (text.length < segment_length) {\n return [text];\n }\n\n let key = text;\n if (CanvasText.cache.segment[key]) {\n CanvasText.cache.stats.segment_hits++;\n return CanvasText.cache.segment[key];\n }\n\n let segments = [];\n\n if (arabic_range.exec(text)) {\n segments = text.split(arabic_splitters);\n let offset = -1;\n for (var s = 0; s < segments.length - 1; s++) {\n if (s > 0) {\n let carryoverVowels = arabic_vowels.exec(segments[s]);\n if (carryoverVowels) {\n segments[s] = segments[s].substring(carryoverVowels[0].length);\n segments[s - 1] += carryoverVowels[0];\n offset += carryoverVowels[0].length;\n }\n }\n offset += 1 + segments[s].length;\n segments[s] += text.slice(offset, offset + 1);\n }\n text = \"\";\n }\n\n while (text.length){\n let segment = '';\n let testText = text;\n let graphemeCount = 0;\n\n for (graphemeCount; graphemeCount < segment_length && testText.length; graphemeCount++) {\n let graphemeCluster = (graphemeRegex.exec(testText) || testText)[0];\n segment += graphemeCluster;\n testText = testText.substring(graphemeCluster.length);\n }\n\n segments.push(segment);\n text = text.substring(segment.length);\n }\n\n if (rtl) {\n segments.reverse();\n }\n\n CanvasText.cache.stats.segment_misses++;\n CanvasText.cache.segment[key] = segments;\n return segments;\n}\n\n// Private class to arrange text labels into multiple lines based on\n// \"text wrap\" and \"max line\" values\nclass MultiLine {\n constructor (context, max_lines = Infinity, text_wrap = Infinity) {\n this.width = 0;\n this.height = 0;\n this.lines = [];\n\n this.max_lines = max_lines;\n this.text_wrap = text_wrap;\n this.context = context;\n }\n\n createLine (line_height){\n if (this.lines.length < this.max_lines){\n return new Line(line_height, this.text_wrap);\n }\n else {\n return false;\n }\n }\n\n push (line){\n if (this.lines.length < this.max_lines){\n // measure line width\n let line_width = this.context.measureText(line.text).width;\n line.width = line_width;\n\n if (line_width > this.width){\n this.width = Math.ceil(line_width);\n }\n\n // add to lines and increment height\n this.lines.push(line);\n this.height += line.height;\n return true;\n }\n else {\n this.addEllipsis();\n return false;\n }\n }\n\n // pushes to the lines array and returns a new line if possible (false otherwise)\n advance (line, line_height) {\n let can_push = this.push(line);\n if (can_push){\n return this.createLine(line_height);\n }\n else {\n return false;\n }\n }\n\n addEllipsis (){\n let last_line = this.lines[this.lines.length - 1];\n let ellipsis_width = Math.ceil(this.context.measureText(MultiLine.ellipsis).width);\n\n last_line.append(MultiLine.ellipsis);\n last_line.width += ellipsis_width;\n\n if (last_line.width > this.width) {\n this.width = last_line.width;\n }\n }\n\n finish (line){\n if (line){\n this.push(line);\n }\n else {\n this.addEllipsis();\n }\n }\n\n static parse (str, text_wrap, max_lines, line_height, ctx) {\n // Word wrapping\n // Line breaks can be caused by:\n // - implicit line break when a maximum character threshold is exceeded per line (text_wrap)\n // - explicit line break in the label text (\\n)\n let words;\n if (typeof text_wrap === 'number') {\n words = str.split(' '); // split words on spaces\n }\n else {\n words = [str]; // no max line word wrapping (but new lines will still be in effect)\n }\n\n let multiline = new MultiLine(ctx, max_lines, text_wrap);\n let line = multiline.createLine(line_height);\n\n // First iterate on space-break groups (will be one if max line length off), then iterate on line-break groups\n for (let i = 0; i < words.length; i++) {\n let breaks = words[i].split('\\n'); // split on line breaks\n let new_line = (i === 0) ? true : false;\n\n for (let n=0; n < breaks.length; n++) {\n if (!line){\n break;\n }\n\n let word = breaks[n];\n\n // force punctuation (neutral chars) at the end of a RTL line, so they stay attached to original word\n if (isTextRTL(word) && isTextNeutral(word[word.length - 1])) {\n word += markRTL;\n }\n\n let spaced_word = (new_line) ? word : ' ' + word;\n\n // if adding current word would overflow, add a new line instead\n // first word (i === 0) always appends\n if (text_wrap && i > 0 && line.exceedsTextwrap(spaced_word)) {\n line = multiline.advance(line, line_height);\n if (!line){\n break;\n }\n line.append(word);\n new_line = true;\n }\n else {\n line.append(spaced_word);\n }\n\n // if line breaks present, add new line (unless on last line)\n if (n < breaks.length - 1) {\n line = multiline.advance(line, line_height);\n new_line = true;\n }\n }\n\n if (i === words.length - 1){\n multiline.finish(line);\n }\n }\n return multiline;\n }\n}\n\nMultiLine.ellipsis = '...';\n\n// A Private class used by MultiLine to contain the logic for a single line\n// including character count, width, height and text\nclass Line {\n constructor (height = 0, text_wrap = 0){\n this.chars = 0;\n this.text = '';\n\n this.height = Math.ceil(height);\n this.text_wrap = text_wrap;\n }\n\n append (text){\n this.chars += text.length;\n this.text += text;\n }\n\n exceedsTextwrap (text){\n return text.length + this.chars > this.text_wrap;\n }\n}\n", "/* global FontFace */\nimport log from '../../utils/log';\nimport Utils from '../../utils/utils';\nimport FontFaceObserver from 'fontfaceobserver';\n\nconst FontManager = {\n\n // Font detection\n fonts_loaded: Promise.resolve(), // resolves when all requested fonts have been detected\n last_loaded: null, // tracks last set of fonts loaded\n\n // Load set of custom font faces\n // `fonts` is an object where the key is a font family name, and the value is one or more font face\n // definitions. The value can be either a single object, or an array of such objects.\n // If the special string value 'external' is used, it indicates the the font will be loaded via external CSS.\n loadFonts (fonts) {\n let same = (JSON.stringify(fonts) === this.last_loaded);\n if (fonts && !same) {\n let queue = [];\n for (let family in fonts) {\n if (Array.isArray(fonts[family])) {\n fonts[family].forEach(face => queue.push(this.loadFontFace(family, face)));\n }\n else {\n queue.push(this.loadFontFace(family, fonts[family]));\n }\n }\n\n this.last_loaded = JSON.stringify(fonts);\n this.fonts_loaded = Promise.all(queue.filter(x => x));\n }\n return this.fonts_loaded;\n },\n\n // Load a single font face\n // `face` contains the font face definition, with optional parameters for `weight`, `style`, and `url`.\n // If the `url` is defined, the font is injected into the document as a CSS font-face.\n // If the object's value is the special string 'external', or if no `url` is defined, then the font face\n // is assumed is assumed to been loaded via external CSS. In either case, the function returns a promise\n // that resolves when the font face has loaded, or times out.\n loadFontFace (family, face) {\n if (face == null || (typeof face !== 'object' && face !== 'external')) {\n return;\n }\n\n let options = { family };\n let inject = Promise.resolve();\n\n if (typeof face === 'object') {\n Object.assign(options, face);\n\n // If URL is defined, inject font into document\n if (typeof face.url === 'string') {\n inject = this.injectFontFace(options);\n }\n }\n\n // Wait for font to load\n let observer = new FontFaceObserver(family, options);\n return inject.then(() => observer.load()).then(\n () => {\n // Promise resolves, font is available\n log('debug', `Font face '${family}' is available`, options);\n },\n () => {\n // Promise rejects, font is not available\n log('debug', `Font face '${family}' is NOT available`, options);\n }\n );\n },\n\n // Loads a font face via either the native FontFace API, or CSS injection\n // TODO: consider support for multiple format URLs per face, unicode ranges\n injectFontFace ({ family, url, weight, style }) {\n if (this.supports_native_font_loading === undefined) {\n this.supports_native_font_loading = (window.FontFace !== undefined);\n }\n\n // Convert blob URLs, depending on whether the native FontFace API will be used or not.\n //\n // When the FontFace API *is* supported, the blob URL is read into a raw data array.\n // NB: it's inefficient to be converting blob URLs into typed arrays here, since they originated\n // as raw data *before* they were converted into blob URLs. However, this process should be fast since\n // these are native browser functions and all data is local (no network request), and it keeps the\n // logic streamlined by allowing us to continue to use a URL-based interface for all scene resources.\n //\n // When the FontFace API is *not* supported, the blob URL data is converted to a base64 data URL.\n // This avoids security restricions in some browsers.\n // Also see https://github.com/bramstein/fontloader/blob/598e9399117bdc946ff786fa2c5007a6bd7d3b9e/src/fontface.js#L145-L153\n let preprocess = Promise.resolve(url);\n if (url.slice(0, 5) === 'blob:') {\n preprocess = Utils.io(url, 60000, 'arraybuffer').then(data => {\n let bytes = new Uint8Array(data);\n if (this.supports_native_font_loading) {\n return bytes; // use raw binary data\n }\n else {\n let str = '';\n for (let i = 0; i < bytes.length; i++) {\n str += String.fromCharCode(bytes[i]);\n }\n return 'data:font/opentype;base64,' + btoa(str); // base64 encode as data URL\n }\n });\n }\n\n return preprocess.then(data => {\n if (this.supports_native_font_loading) {\n // Use native FontFace API\n let face;\n if (typeof data === 'string') { // add as URL\n face = new FontFace(family, `url(${encodeURI(data)})`, { weight, style });\n }\n else if (data instanceof Uint8Array) { // add as binary data\n face = new FontFace(family, data, { weight, style });\n }\n document.fonts.add(face);\n log('trace', 'Adding FontFace to document.fonts:', face);\n }\n else {\n // Use CSS injection\n let css = `\n @font-face {\n font-family: '${family}';\n font-weight: ${weight || 'normal'};\n font-style: ${style || 'normal'};\n src: url(${encodeURI(data)});\n }\n `;\n\n let style_el = document.createElement('style');\n style_el.appendChild(document.createTextNode(\"\"));\n document.head.appendChild(style_el);\n style_el.sheet.insertRule(css, 0);\n log('trace', 'Injecting CSS font face:', css);\n }\n });\n }\n\n};\n\nexport default FontManager;\n", "// Text rendering style\n\nimport Geo from '../../geo';\nimport {Style} from '../style';\nimport {Points} from '../points/points';\nimport Collision from '../../labels/collision';\nimport LabelPoint from '../../labels/label_point';\nimport LabelLine from '../../labels/label_line';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\nimport VertexLayout from '../../gl/vertex_layout';\n\nexport let TextStyle = Object.create(Points);\n\nObject.assign(TextStyle, {\n name: 'text',\n super: Points,\n built_in: true,\n\n init(options = {}) {\n Style.init.call(this, options);\n\n var attribs = [\n { name: 'a_position', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_shape', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_texcoord', size: 2, type: gl.UNSIGNED_SHORT, normalized: true },\n { name: 'a_offset', size: 2, type: gl.SHORT, normalized: false },\n { name: 'a_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true },\n { name: 'a_angles', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_offsets', size: 4, type: gl.UNSIGNED_SHORT, normalized: false },\n { name: 'a_pre_angles', size: 4, type: gl.BYTE, normalized: false },\n { name: 'a_selection_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true }\n ];\n\n this.vertex_layout = new VertexLayout(attribs);\n\n // Shader defines\n this.setupDefines();\n\n // Omit some code for SDF-drawn shader points\n this.defines.TANGRAM_HAS_SHADER_POINTS = false;\n\n // Indicate vertex shader should apply zoom-interpolated offsets and angles for curved labels\n this.defines.TANGRAM_CURVED_LABEL = true;\n\n this.reset();\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style, mesh) {\n this.super.makeVertexTemplate.apply(this, arguments);\n let vertex_layout = mesh.vertex_data.vertex_layout;\n\n this.fillVertexTemplate(vertex_layout, 'a_pre_angles', 0, { size: 4 });\n this.fillVertexTemplate(vertex_layout, 'a_offsets', 0, { size: 4 });\n this.fillVertexTemplate(vertex_layout, 'a_angles', 0, { size: 4 });\n\n return this.vertex_template;\n },\n\n reset() {\n this.queues = {};\n this.resetText();\n },\n\n // Override to queue features instead of processing immediately\n addFeature (feature, draw, context) {\n let tile = context.tile;\n if (tile.generation !== this.generation) {\n return;\n }\n\n let type = feature.geometry.type;\n draw.can_articulate = (type === \"LineString\" || type === \"MultiLineString\");\n\n // supersample text rendering for angled labels, to improve clarity\n draw.supersample_text = (type === \"LineString\" || type === \"MultiLineString\");\n\n let q = this.parseTextFeature(feature, draw, context, tile);\n if (!q) {\n return;\n }\n\n // text can be an array if a `left` or `right` orientation key is defined for the text source\n // in which case, push both text sources to the queue\n if (q instanceof Array){\n q.forEach(q => {\n q.feature = feature;\n q.context = context;\n q.layout.vertex = false; // vertex placement option not applicable to standalone labels\n this.queueFeature(q, tile); // queue the feature for later processing\n });\n }\n else {\n q.feature = feature;\n q.context = context;\n q.layout.vertex = false; // vertex placement option not applicable to standalone labels\n this.queueFeature(q, tile); // queue the feature for later processing\n }\n\n // Register with collision manager\n Collision.addStyle(this.name, tile.id);\n },\n\n // Override\n endData (tile) {\n let queue = this.queues[tile.id];\n delete this.queues[tile.id];\n\n return this.collideAndRenderTextLabels(tile, this.name, queue).\n then(({ labels, texts, textures }) => {\n if (labels && texts) {\n this.texts[tile.id] = texts;\n\n // Build queued features\n labels.forEach(q => {\n let text_settings_key = q.text_settings_key;\n let text_info =\n this.texts[tile.id][text_settings_key] &&\n this.texts[tile.id][text_settings_key][q.text];\n\n // setup styling object expected by Style class\n let style = this.feature_style;\n style.label = q.label;\n\n if (text_info.text_settings.can_articulate){\n // unpack logical sizes of each segment into an array for the style\n style.size = {};\n style.texcoords = {};\n\n if (q.label.type === 'straight'){\n style.size.straight = text_info.size.logical_size;\n style.texcoords.straight = text_info.texcoords.straight;\n style.label_texture = textures[text_info.texcoords.straight.texture_id];\n }\n else{\n style.size.curved = text_info.segment_sizes.map(function(size){ return size.logical_size; });\n style.texcoords_stroke = text_info.texcoords_stroke;\n style.texcoords.curved = text_info.texcoords.curved;\n style.label_textures = text_info.texcoords.curved.map(t => textures[t.texture_id]);\n }\n }\n else {\n style.size = text_info.size.logical_size;\n style.texcoords = text_info.align[q.label.align].texcoords;\n style.label_texture = textures[text_info.align[q.label.align].texture_id];\n }\n\n Style.addFeature.call(this, q.feature, q.draw, q.context);\n });\n }\n this.freeText(tile);\n\n // Finish tile mesh\n return Style.endData.call(this, tile).then(tile_data => {\n if (tile_data) {\n // Attach tile-specific label atlas to mesh as a texture uniform\n if (textures && textures.length) {\n tile_data.textures.push(...textures); // assign texture ownership to tile\n }\n\n // Always apply shader blocks to standalone text\n for (let m in tile_data.meshes) {\n tile_data.meshes[m].uniforms.u_apply_color_blocks = true;\n }\n }\n\n return tile_data;\n });\n });\n },\n\n // Sets up caching for draw properties\n _preprocess (draw) {\n return this.preprocessText(draw);\n },\n\n // Implements label building for TextLabels mixin\n buildTextLabels (tile, feature_queue) {\n let labels = [];\n for (let f=0; f < feature_queue.length; f++) {\n let fq = feature_queue[f];\n let text_info = this.texts[tile.id][fq.text_settings_key][fq.text];\n let feature_labels;\n\n fq.layout.vertical_buffer = text_info.vertical_buffer;\n\n if (text_info.text_settings.can_articulate){\n var sizes = text_info.segment_sizes.map(size => size.collision_size);\n fq.layout.no_curving = text_info.no_curving;\n feature_labels = this.buildLabels(sizes, fq.feature.geometry, fq.layout, text_info.size.collision_size);\n }\n else {\n feature_labels = this.buildLabels(text_info.size.collision_size, fq.feature.geometry, fq.layout);\n }\n for (let i = 0; i < feature_labels.length; i++) {\n let fql = Object.create(fq);\n fql.label = feature_labels[i];\n labels.push(fql);\n }\n }\n return labels;\n },\n\n // Builds one or more labels for a geometry\n buildLabels (size, geometry, layout, total_size) {\n let labels = [];\n\n if (geometry.type === \"LineString\") {\n Array.prototype.push.apply(labels, this.buildLineLabels(geometry.coordinates, size, layout, total_size));\n } else if (geometry.type === \"MultiLineString\") {\n let lines = geometry.coordinates;\n for (let i = 0; i < lines.length; ++i) {\n Array.prototype.push.apply(labels, this.buildLineLabels(lines[i], size, layout, total_size));\n }\n } else if (geometry.type === \"Point\") {\n labels.push(new LabelPoint(geometry.coordinates, size, layout));\n } else if (geometry.type === \"MultiPoint\") {\n let points = geometry.coordinates;\n for (let i = 0; i < points.length; ++i) {\n labels.push(new LabelPoint(points[i], size, layout));\n }\n } else if (geometry.type === \"Polygon\") {\n let centroid = Geo.centroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, layout));\n } else if (geometry.type === \"MultiPolygon\") {\n let centroid = Geo.multiCentroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, layout));\n }\n\n return labels;\n },\n\n // Build one or more labels for a line geometry\n buildLineLabels (line, size, layout, total_size) {\n let labels = [];\n let subdiv = Math.min(layout.subdiv, line.length - 1);\n if (subdiv > 1) {\n // Create multiple labels for line, with each allotted a range of segments\n // in which it will attempt to place\n let seg_per_div = (line.length - 1) / subdiv;\n for (let i = 0; i < subdiv; i++) {\n let start = Math.floor(i * seg_per_div);\n let end = Math.floor((i + 1) * seg_per_div) + 1;\n let line_segment = line.slice(start, end);\n\n let label = LabelLine.create(size, total_size, line_segment, layout);\n if (label){\n labels.push(label);\n }\n }\n }\n\n // Consider full line for label placement if no subdivisions requested, or as last resort if not enough\n // labels placed (e.g. fewer than requested subdivisions)\n // TODO: refactor multiple label placements per line / move into label placement class for better effectiveness\n if (labels.length < subdiv) {\n let label = LabelLine.create(size, total_size, line, layout);\n if (label){\n labels.push(label);\n }\n }\n return labels;\n },\n\n // Override to restore base class default implementations\n vertexLayoutForMeshVariant: Style.vertexLayoutForMeshVariant,\n meshVariantTypeForDraw: Style.meshVariantTypeForDraw\n\n});\n\nTextStyle.texture_id = 0; // namespaces per-tile label textures\n", - "// Text label rendering methods, can be mixed into a rendering style\n\nimport {StyleParser} from '../style_parser';\nimport Geo from '../../geo';\nimport log from '../../utils/log';\nimport Thread from '../../utils/thread';\nimport WorkerBroker from '../../utils/worker_broker';\nimport Collision from '../../labels/collision';\nimport TextSettings from '../text/text_settings';\nimport CanvasText from '../text/canvas_text';\n\n// namespaces label textures (ensures new texture name when a tile is built multiple times)\nlet text_texture_id = 0;\n\nexport const TextLabels = {\n\n resetText () {\n if (Thread.is_main) {\n this.canvas = new CanvasText();\n }\n else if (Thread.is_worker) {\n this.texts = {}; // unique texts, grouped by tile, by style\n }\n },\n\n freeText (tile) {\n delete this.texts[tile.id];\n },\n\n parseTextFeature (feature, draw, context, tile) {\n // Compute label text\n let text = this.parseTextSource(feature, draw, context);\n\n if (text == null || text === '') {\n return; // no text for this feature\n }\n\n // Compute text style and layout settings for this feature label\n let text_settings = TextSettings.compute(feature, draw, context);\n let text_settings_key = TextSettings.key(text_settings);\n\n // first label in tile, or with this style?\n this.texts[tile.id] = this.texts[tile.id] || {};\n let sizes = this.texts[tile.id][text_settings_key] = this.texts[tile.id][text_settings_key] || {};\n\n if (text instanceof Object){\n let results = [];\n\n // add both left/right text elements to repeat group to improve repeat culling\n // avoids one component of a boundary label (e.g. Colorado) being culled too aggressively when it also\n // appears in nearby boundary labels (e.g. Colorado/Utah & Colorado/New Mexico repeat as separate groups)\n let repeat_group_prefix = text.left + '-' + text.right; // NB: should be all text keys, not just left/right\n\n for (let key in text){\n let current_text = text[key];\n if (!current_text) {\n continue;\n }\n\n let layout = this.computeTextLayout({}, feature, draw, context, tile, current_text, text_settings, repeat_group_prefix, key);\n if (!sizes[current_text]) {\n // first label with this text/style/tile combination, make a new label entry\n sizes[current_text] = {\n text_settings,\n ref: 0 // # of times this text/style combo appears in tile\n };\n }\n\n results.push({\n draw, text : current_text, text_settings_key, layout\n });\n }\n\n return (results.length > 0 && results); // return null if no boundary labels found\n }\n else {\n // unique text strings, grouped by text drawing style\n let layout = this.computeTextLayout({}, feature, draw, context, tile, text, text_settings);\n if (!sizes[text]) {\n // first label with this text/style/tile combination, make a new label entry\n sizes[text] = {\n text_settings,\n ref: 0 // # of times this text/style combo appears in tile\n };\n }\n\n return {\n draw, text, text_settings_key, layout\n };\n }\n },\n\n // Compute the label text, default is value of feature.properties.name\n // - String value indicates a feature property look-up, e.g. `short_name` means use feature.properties.short_name\n // - Function will use the return value as the label text (for custom labels)\n // - Array (of strings and/or functions) defines a list of fallbacks, evaluated according to the above rules,\n // with the first non-null value used as the label text\n // e.g. `[name:es, name:en, name]` prefers Spanish names, followed by English, and last the default local name\n parseTextSource (feature, draw, context) {\n let text;\n let source = draw.text_source || 'name';\n\n if (source != null && typeof source === 'object') {\n // left/right boundary labels\n text = {};\n for (let key in source) {\n text[key] = this.parseTextSourceValue(source[key], feature, context);\n }\n }\n else {\n // single label\n text = this.parseTextSourceValue(source, feature, context);\n }\n\n return text;\n },\n\n parseTextSourceValue (source, feature, context) {\n let text;\n if (Array.isArray(source)) {\n for (let s=0; s < source.length; s++) {\n if (typeof source[s] === 'string') {\n text = feature.properties[source[s]];\n } else if (typeof source[s] === 'function') {\n text = source[s](context);\n }\n\n if (text) {\n return text; // stop if we found a text property\n }\n }\n }\n else if (typeof source === 'string') {\n text = feature.properties[source];\n }\n else if (source instanceof Function) {\n text = source(context);\n }\n\n return text;\n },\n\n prepareTextLabels (tile, collision_group, queue) {\n if (Object.keys(this.texts[tile.id]||{}).length === 0) {\n return Promise.resolve([]);\n }\n\n // first call to main thread, ask for text pixel sizes\n return WorkerBroker.postMessage(this.main_thread_target+'.calcTextSizes', tile.id, this.texts[tile.id]).then(({ texts }) => {\n if (tile.canceled) {\n log('trace', `Style ${this.name}: stop tile build because tile was canceled: ${tile.key}, post-calcTextSizes()`);\n return [];\n }\n\n this.texts[tile.id] = texts || [];\n if (!texts) {\n Collision.abortTile(tile.id);\n return [];\n }\n\n return this.buildTextLabels(tile, queue);\n });\n },\n\n collideAndRenderTextLabels (tile, collision_group, queue) {\n return this.prepareTextLabels(tile, collision_group, queue).then(labels => {\n if (labels.length === 0) {\n Collision.collide([], collision_group, tile.id);\n return Promise.resolve({});\n }\n\n return Collision.collide(labels, collision_group, tile.id).then(labels => {\n if (tile.canceled) {\n log('trace', `stop tile build because tile was canceled: ${tile.key}, post-collide()`);\n return {};\n }\n\n let texts = this.texts[tile.id];\n if (texts == null || labels.length === 0) {\n return {};\n }\n\n this.cullTextStyles(texts, labels);\n\n // set alignments\n labels.forEach(q => {\n let text_settings_key = q.text_settings_key;\n let text_info = texts[text_settings_key] && texts[text_settings_key][q.text];\n if (!text_info.text_settings.can_articulate){\n text_info.align = text_info.align || {};\n text_info.align[q.label.align] = {};\n }\n else {\n // consider making it a set\n if (!text_info.type) {\n text_info.type = [];\n }\n\n if (text_info.type.indexOf(q.label.type) === -1){\n text_info.type.push(q.label.type);\n }\n }\n });\n\n // second call to main thread, for rasterizing the set of texts\n return WorkerBroker.postMessage(this.main_thread_target+'.rasterizeTexts', tile.id, tile.key, texts).then(({ texts, textures }) => {\n if (tile.canceled) {\n log('trace', `stop tile build because tile was canceled: ${tile.key}, post-rasterizeTexts()`);\n return {};\n }\n\n return { labels, texts, textures };\n });\n });\n });\n },\n\n // Remove unused text/style combinations to avoid unnecessary rasterization\n cullTextStyles(texts, labels) {\n // Count how many times each text/style combination is used\n for (let i=0; i < labels.length; i++) {\n let label = labels[i];\n texts[label.text_settings_key][label.text].ref++;\n }\n\n // Remove text/style combinations that have no visible labels\n for (let style in texts) {\n for (let text in texts[style]) {\n // no labels for this text\n if (texts[style][text].ref < 1) {\n delete texts[style][text];\n }\n }\n }\n\n for (let style in texts) {\n // no labels for this style\n if (Object.keys(texts[style]).length === 0) {\n delete texts[style];\n }\n }\n },\n\n // Called on main thread from worker, to compute the size of each text string,\n // were it to be rendered. This info is then used to perform initial label culling, *before*\n // labels are actually rendered.\n calcTextSizes (tile_id, texts) {\n return this.canvas.textSizes(tile_id, texts);\n },\n\n // Called on main thread from worker, to create atlas of labels for a tile\n rasterizeTexts (tile_id, tile_key, texts) {\n let canvas = new CanvasText(); // one per style per tile (style may be rendering multiple tiles at once)\n let max_texture_size = Math.min(this.max_texture_size, 2048); // cap each label texture at 2048x2048\n\n return canvas.setTextureTextPositions(texts, max_texture_size).then(({ textures }) => {\n if (!textures) {\n return {};\n }\n\n let texture_prefix = ['labels', this.name, tile_key, tile_id, text_texture_id, ''].join('-');\n text_texture_id++;\n\n return canvas.rasterize(texts, textures, tile_id, texture_prefix, this.gl).then(({ textures }) => {\n if (!textures) {\n return {};\n }\n return { texts, textures };\n });\n });\n },\n\n preprocessText (draw) {\n // Font settings are required\n if (!draw || !draw.font || typeof draw.font !== 'object') {\n return;\n }\n\n // Colors\n draw.font.fill = StyleParser.createPropertyCache(draw.font.fill);\n if (draw.font.stroke) {\n draw.font.stroke.color = StyleParser.createPropertyCache(draw.font.stroke.color);\n }\n\n // Convert font and text stroke sizes\n draw.font.px_size = StyleParser.createPropertyCache(draw.font.size || TextSettings.defaults.size, CanvasText.fontPixelSize);\n if (draw.font.stroke && draw.font.stroke.width != null) {\n draw.font.stroke.width = StyleParser.createPropertyCache(draw.font.stroke.width, parseFloat);\n }\n\n // Offset (2d array)\n draw.offset = StyleParser.createPropertyCache(draw.offset,\n v => (Array.isArray(v) && v.map(parseFloat).map(v => isNaN(v) ? 0 : v)) || [0, 0]\n );\n\n // Buffer (1d value or or 2d array) - must be >= 0\n draw.buffer = StyleParser.createPropertyCache(draw.buffer,\n v => (Array.isArray(v) ? v : [v, v]).map(v => Math.max(parseFloat(v), 0)).map(v => isNaN(v) ? 0 : v) || [0, 0]\n );\n\n // Repeat rules - for text labels, defaults to tile size\n draw.repeat_distance = StyleParser.createPropertyCache(draw.repeat_distance || Geo.tile_size, parseFloat);\n\n return draw;\n },\n\n // Additional text-specific layout settings\n computeTextLayout (target, feature, draw, context, tile, text, text_settings, repeat_group_prefix, orientation) {\n let layout = target || {};\n\n // common settings w/points\n layout = this.computeLayout(layout, feature, draw, context, tile);\n\n // tile boundary handling\n layout.cull_from_tile = (draw.cull_from_tile != null) ? draw.cull_from_tile : true;\n\n // standalone text can move into tile if specified\n layout.move_into_tile = (draw.move_into_tile != null) ? draw.move_into_tile : true;\n\n // repeat rules include the text\n if (layout.repeat_distance) {\n if (repeat_group_prefix) {\n layout.repeat_group += '/' + repeat_group_prefix;\n }\n layout.repeat_group += '/' + text;\n }\n\n // Max number of subdivisions to try\n layout.subdiv = tile.overzoom2;\n\n layout.align = draw.align;\n\n // used to fudge width value as text may overflow bounding box if it has italic, bold, etc style\n layout.italic = (text_settings.style !== 'normal');\n\n // used to determine orientation of text if the text_source has a `left` or `right` key\n if (orientation === 'right') {\n layout.orientation = 1;\n }\n else if (orientation === 'left'){\n layout.orientation = -1;\n }\n\n return layout;\n }\n\n};\n", - "import Utils from '../../utils/utils';\nimport Geo from '../../geo';\nimport {StyleParser} from '../style_parser';\n\nvar TextSettings;\n\nexport default TextSettings = {\n\n // A key for grouping all labels of the same text style (e.g. same Canvas state, to minimize state changes)\n key (settings) {\n return [\n settings.style,\n settings.weight,\n settings.family,\n settings.px_size,\n settings.fill,\n settings.stroke,\n settings.stroke_width,\n settings.transform,\n settings.text_wrap,\n settings.max_lines,\n settings.supersample,\n Utils.device_pixel_ratio\n ].join('/');\n },\n\n defaults: {\n style: 'normal',\n weight: null,\n size: '12px',\n px_size: 12,\n family: 'Helvetica',\n fill: 'white',\n text_wrap: 15,\n max_lines: 5,\n align: 'center',\n stroke: null,\n stroke_width: 0\n },\n\n compute (feature, draw, context) {\n let style = {};\n\n draw.font = draw.font || this.defaults;\n\n // LineString labels can articulate while point labels cannot. Needed for future texture coordinate calculations.\n style.can_articulate = draw.can_articulate;\n\n // Use fill if specified, or default\n style.fill = (draw.font.fill && Utils.toCSSColor(StyleParser.evalCachedColorProperty(draw.font.fill, context))) || this.defaults.fill;\n\n // Font properties are modeled after CSS names:\n // - family: Helvetica, Futura, etc.\n // - size: in pt, px, or em\n // - style: normal, italic, oblique\n // - weight: normal, bold, etc.\n // - transform: capitalize, uppercase, lowercase\n style.style = draw.font.style || this.defaults.style;\n style.weight = draw.font.weight || this.defaults.weight;\n if (draw.font.family) {\n style.family = draw.font.family;\n if (style.family !== this.defaults.family) {\n style.family += ', ' + this.defaults.family;\n }\n }\n else {\n style.family = this.defaults.family;\n }\n\n style.transform = draw.font.transform;\n\n // original size (not currently used, but useful for debugging)\n style.size = draw.font.size || this.defaults.size;\n\n // calculated pixel size\n style.supersample = draw.supersample_text ? 1.5 : 1; // optionally render text at 150% to improve clarity\n style.px_size = StyleParser.evalCachedProperty(draw.font.px_size, context) * style.supersample;\n\n // Use stroke if specified\n if (draw.font.stroke && draw.font.stroke.color) {\n style.stroke = Utils.toCSSColor(StyleParser.evalCachedColorProperty(draw.font.stroke.color, context) || this.defaults.stroke);\n style.stroke_width = StyleParser.evalCachedProperty(draw.font.stroke.width, context) || this.defaults.stroke_width;\n }\n\n style.font_css = this.fontCSS(style);\n\n // Word wrap and text alignment\n // Not a font properties, but affect atlas of unique text textures\n let text_wrap = draw.text_wrap; // use explicitly set value\n\n if (text_wrap == null && Geo.geometryType(feature.geometry.type) !== 'line') {\n // point labels (for point and polygon features) have word wrap on w/default max length,\n // line labels default off\n text_wrap = true;\n }\n\n // setting to 'true' causes default wrap value to be used\n if (text_wrap === true) {\n text_wrap = this.defaults.text_wrap;\n }\n style.text_wrap = text_wrap;\n\n // max_lines setting to truncate very long labels with an ellipsis\n style.max_lines = draw.max_lines || this.defaults.max_lines;\n\n return style;\n },\n\n // Build CSS-style font string (to set Canvas draw state)\n fontCSS ({ style, weight, px_size, family }) {\n return [style, weight, px_size + 'px', family]\n .filter(x => x) // remove null props\n .join(' ');\n }\n\n};\n", - "import log from './utils/log';\nimport Utils from './utils/utils';\nimport mergeObjects from './utils/merge';\nimport Geo from './geo';\nimport {addLayerDebugEntry} from './styles/style';\nimport {StyleParser} from './styles/style_parser';\nimport Collision from './labels/collision';\nimport WorkerBroker from './utils/worker_broker';\nimport Task from './utils/task';\nimport Texture from './gl/texture';\n\nimport {mat4, vec3} from './utils/gl-matrix';\n\nlet id = 0; // unique tile id\n\nexport default class Tile {\n\n /**\n Tile\n @constructor\n Required properties:\n coords: object with {x, y, z} properties identifying tile coordinate location\n worker: web worker to handle tile construction\n */\n constructor({ coords, style_zoom, source, worker, view }) {\n this.id = id++;\n this.worker = worker;\n this.view = view;\n this.source = source;\n this.generation = null;\n\n this.visible = false;\n this.proxy_for = null;\n this.proxy_depth = 0;\n this.proxied_as = null;\n this.fade_in = true;\n this.loading = false;\n this.loaded = false;\n this.built = false;\n this.error = null;\n this.debug = {};\n\n this.style_zoom = style_zoom; // zoom level to be used for styling\n this.coords = Tile.normalizedCoordinate(coords, this.source, this.style_zoom);\n this.key = Tile.key(this.coords, this.source, this.style_zoom);\n this.overzoom = Math.max(this.style_zoom - this.coords.z, 0); // number of levels of overzooming\n this.overzoom2 = Math.pow(2, this.overzoom);\n this.min = Geo.metersForTile(this.coords);\n this.max = Geo.metersForTile({x: this.coords.x + 1, y: this.coords.y + 1, z: this.coords.z }),\n this.span = { x: (this.max.x - this.min.x), y: (this.max.y - this.min.y) };\n this.bounds = { sw: { x: this.min.x, y: this.max.y }, ne: { x: this.max.x, y: this.min.y } };\n this.center_dist = 0;\n\n this.meters_per_pixel = Geo.metersPerPixel(this.style_zoom);\n this.meters_per_pixel_sq = this.meters_per_pixel * this.meters_per_pixel;\n this.units_per_pixel = Geo.units_per_pixel / this.overzoom2; // adjusted for overzoom\n this.units_per_meter_overzoom = Geo.unitsPerMeter(this.coords.z) * this.overzoom2; // adjusted for overzoom\n\n this.meshes = {}; // renderable VBO meshes keyed by style\n this.textures = []; // textures that the tile owns (labels, etc.)\n this.previous_textures = []; // textures retained by the tile in the previous build generation\n this.new_mesh_styles = []; // meshes that have been built so far in current build generation\n }\n\n static coord(c) {\n return {x: c.x, y: c.y, z: c.z, key: Tile.coordKey(c)};\n }\n\n static coordKey({x, y, z}) {\n return x + '/' + y + '/' + z;\n }\n\n static key (coords, source, style_zoom) {\n if (coords.y < 0 || coords.y >= (1 << coords.z) || coords.z < 0) {\n return; // cull tiles out of range (x will wrap)\n }\n return [source.name, style_zoom, coords.x, coords.y, coords.z].join('/');\n }\n\n static normalizedKey (coords, source, style_zoom) {\n return Tile.key(Tile.normalizedCoordinate(coords, source, style_zoom), source, style_zoom);\n }\n\n static normalizedCoordinate (coords, source, style_zoom) {\n if (source.zoom_bias) {\n coords = Tile.coordinateAtZoom(coords, Math.max(0, coords.z - source.zoom_bias)); // zoom can't go below zero\n }\n return Tile.coordinateWithMaxZoom(coords, source.max_zoom);\n }\n\n static coordinateAtZoom({x, y, z}, zoom) {\n if (z !== zoom) {\n let zscale = Math.pow(2, z - zoom);\n x = Math.floor(x / zscale);\n y = Math.floor(y / zscale);\n z = zoom;\n }\n return Tile.coord({x, y, z});\n }\n\n static coordinateWithMaxZoom({x, y, z}, max_zoom) {\n if (max_zoom !== undefined && z > max_zoom) {\n return Tile.coordinateAtZoom({x, y, z}, max_zoom);\n }\n return Tile.coord({x, y, z});\n }\n\n static childrenForCoordinate({x, y, z, key}) {\n if (!Tile.coord_children[key]) {\n z++;\n x *= 2;\n y *= 2;\n Tile.coord_children[key] = [\n Tile.coord({x, y, z}), Tile.coord({x: x+1, y, z}),\n Tile.coord({x, y: y+1, z}), Tile.coord({x: x+1, y: y+1, z})\n ];\n }\n return Tile.coord_children[key];\n }\n\n static isDescendant(parent, descendant) {\n if (descendant.z > parent.z) {\n let {x, y} = Tile.coordinateAtZoom(descendant, parent.z);\n return (parent.x === x && parent.y === y);\n }\n return false;\n }\n\n // Free resources owned by tile\n freeResources () {\n for (let m in this.meshes) {\n this.meshes[m].forEach(m => m.destroy());\n }\n this.meshes = {};\n\n this.textures.forEach(t => Texture.release(t));\n this.textures = [];\n\n this.previous_textures.forEach(t => Texture.release(t));\n this.previous_textures = [];\n }\n\n destroy() {\n Task.removeForTile(this.id);\n this.workerMessage('self.removeTile', this.key);\n this.freeResources();\n this.worker = null;\n }\n\n buildAsMessage() {\n return {\n id: this.id,\n key: this.key,\n source: this.source.name,\n coords: this.coords,\n min: this.min,\n max: this.max,\n units_per_pixel: this.units_per_pixel,\n meters_per_pixel: this.meters_per_pixel,\n meters_per_pixel_sq: this.meters_per_pixel_sq,\n units_per_meter_overzoom: this.units_per_meter_overzoom,\n style_zoom: this.style_zoom,\n overzoom: this.overzoom,\n overzoom2: this.overzoom2,\n generation: this.generation,\n debug: this.debug\n };\n }\n\n workerMessage (...message) {\n return WorkerBroker.postMessage(this.worker, ...message);\n }\n\n build(generation, { fade_in = true } = {}) {\n this.generation = generation;\n this.fade_in = fade_in;\n if (!this.loaded) {\n this.loading = true;\n this.built = false;\n }\n return this.workerMessage('self.buildTile', { tile: this.buildAsMessage() }).catch(e => { throw e; });\n }\n\n /**\n Called on worker to cancel loading\n Static method because the worker only has object representations of tile data, there is no\n tile instance created yet.\n */\n static cancel(tile) {\n if (tile) {\n tile.canceled = true;\n if (tile.source_data && tile.source_data.request_id) {\n Utils.cancelRequest(tile.source_data.request_id); // cancel pending tile network request\n tile.source_data.request_id = null;\n }\n\n Tile.abortBuild(tile);\n }\n }\n\n // Process geometry for tile - called by web worker\n // Returns a set of tile keys that should be sent to the main thread (so that we can minimize data exchange between worker and main thread)\n static buildGeometry (tile, { scene_id, layers, styles, global }) {\n let data = tile.source_data;\n\n tile.debug.rendering = +new Date();\n tile.debug.feature_count = 0;\n tile.debug.layers = null;\n\n Collision.startTile(tile.id);\n\n // Process each top-level layer\n for (let layer_name in layers) {\n let layer = layers[layer_name];\n // Skip layers with no data source defined\n if (!layer || !layer.config_data) {\n log('warn', `Layer ${layer_name} was defined without a geometry data source and will not be rendered.`);\n continue;\n }\n\n // Source names don't match\n if (layer.config_data.source !== tile.source) {\n continue;\n }\n\n // Get data for one or more layers from source\n let source_layers = Tile.getDataForSource(data, layer.config_data, layer_name);\n\n // Render features in layer\n for (let s=0; s < source_layers.length; s++) {\n let source_layer = source_layers[s];\n let geom = source_layer.geom;\n if (!geom) {\n continue;\n }\n\n for (let f = 0; f < geom.features.length; f++) {\n let feature = geom.features[f];\n if (feature.geometry == null) {\n continue; // skip features w/o geometry (valid GeoJSON)\n }\n\n let context = StyleParser.getFeatureParseContext(feature, tile, global);\n context.winding = tile.default_winding;\n context.source = tile.source; // add data source name\n context.layer = source_layer.layer; // add data source layer name\n\n // Get draw groups for this feature\n let draw_groups = layer.buildDrawGroups(context, true);\n if (!draw_groups) {\n continue;\n }\n\n // Render draw groups\n for (let group_name in draw_groups) {\n let group = draw_groups[group_name];\n\n // Add to style\n let style_name = group.style || group_name;\n let style = styles[style_name];\n\n if (!style) {\n log('warn', `Style '${style_name}' not found, skipping layer '${layer_name}':`, group, feature);\n continue;\n }\n\n group = style.preprocess(group);\n if (group == null || group.visible === false) {\n continue;\n }\n\n context.layers = group.layers; // add matching draw layers\n\n style.addFeature(feature, group, context);\n }\n\n tile.debug.feature_count++;\n }\n }\n }\n tile.debug.rendering = +new Date() - tile.debug.rendering;\n\n // Send styles back to main thread as they finish building, in two groups: collision vs. non-collision\n let tile_styles = this.stylesForTile(tile, styles).map(s => styles[s]);\n Tile.sendStyleGroups(tile, tile_styles, { scene_id }, style => style.collision ? 'collision' : 'non-collision');\n // Tile.sendStyleGroups(tile, tile_styles, { scene_id }, style => style.name); // call for each style\n // Tile.sendStyleGroups(tile, tile_styles, { scene_id }, style => 'styles'); // all styles in single call (previous behavior)\n }\n\n static stylesForTile (tile, styles) {\n let tile_styles = [];\n for (let s in styles) {\n if (styles[s].hasDataForTile(tile)) {\n tile_styles.push(s);\n }\n }\n return tile_styles;\n }\n\n // Send groups of styles back to main thread, asynchronously (as they finish building),\n // grouped by the provided function\n static sendStyleGroups(tile, styles, { scene_id }, group_by) {\n // Group styles\n let groups = {};\n styles.forEach(s => {\n let group_name = group_by(s);\n groups[group_name] = groups[group_name] || [];\n groups[group_name].push(s);\n });\n\n if (Object.keys(groups).length > 0) {\n let progress = { start: true };\n tile.mesh_data = {};\n\n for (let group_name in groups) {\n let group = groups[group_name];\n\n Promise.all(group.map(style => {\n return style.endData(tile).then(style_data => {\n if (style_data) {\n tile.mesh_data[style.name] = style_data;\n }\n });\n }))\n .then(() => {\n log('trace', `Finished style group '${group_name}' for tile ${tile.key}`);\n\n // Clear group and check if all groups finished\n groups[group_name] = [];\n if (Object.keys(groups).every(g => groups[g].length === 0)) {\n progress.done = true;\n }\n\n // Send meshes to main thread\n WorkerBroker.postMessage(\n `TileManager_${scene_id}.buildTileStylesCompleted`,\n WorkerBroker.withTransferables({ tile: Tile.slice(tile, ['mesh_data']), progress })\n );\n progress.start = null;\n tile.mesh_data = {}; // reset so each group sends separate set of style meshes\n\n if (progress.done) {\n Collision.resetTile(tile.id); // clear collision if we're done with the tile\n }\n })\n .catch((e) => {\n log('error', `Error for style group '${group_name}' for tile ${tile.key}`, e.stack);\n });\n }\n }\n else {\n // Nothing to build, return empty tile to main thread\n WorkerBroker.postMessage(\n `TileManager_${scene_id}.buildTileStylesCompleted`,\n WorkerBroker.withTransferables({ tile: Tile.slice(tile), progress: { start: true, done: true } })\n );\n Collision.resetTile(tile.id); // clear collision if we're done with the tile\n }\n }\n\n /**\n Retrieves geometry from a tile according to a data source definition\n Returns an array of objects with:\n layer: source layer name\n geom: GeoJSON FeatureCollection\n */\n static getDataForSource (source_data, source_config, default_layer = null) {\n var layers = [];\n\n if (source_config != null && source_data != null && source_data.layers != null) {\n // If no layer specified, and a default source layer exists\n if (!source_config.layer && source_data.layers._default) {\n layers.push({\n geom: source_data.layers._default\n });\n }\n // If no layer specified, and a default requested layer exists\n else if (!source_config.layer && default_layer) {\n layers.push({\n layer: default_layer,\n geom: source_data.layers[default_layer]\n });\n }\n // If a layer is specified by name, use it\n else if (typeof source_config.layer === 'string') {\n layers.push({\n layer: source_config.layer,\n geom: source_data.layers[source_config.layer]\n });\n }\n // If multiple layers are specified by name, combine them\n else if (Array.isArray(source_config.layer)) {\n source_config.layer.forEach(layer => {\n if (source_data.layers[layer] && source_data.layers[layer].features) {\n layers.push({\n layer,\n geom: source_data.layers[layer]\n });\n }\n });\n }\n }\n\n return layers;\n }\n\n /**\n Called on main thread when a web worker completes processing\n for a single tile.\n */\n buildMeshes(styles, progress) {\n if (this.error) {\n return;\n }\n\n // Debug\n if (progress.start) {\n this.debug.geometry_count = 0;\n this.debug.buffer_size = 0;\n }\n\n // Create VBOs\n let meshes = {}, textures = []; // new data to be added to tile\n let mesh_data = this.mesh_data;\n if (mesh_data) {\n for (let s in mesh_data) {\n for (let variant in mesh_data[s].meshes) {\n let mesh_variant = mesh_data[s].meshes[variant];\n if (mesh_variant.vertex_data) {\n if (!styles[s]) {\n log('warn', `Could not create mesh because style '${s}' not found, for tile ${this.key}, aborting tile`);\n break;\n }\n\n // first add style-level uniforms, then add any mesh-specific ones\n let mesh_options = Object.assign({}, mesh_data[s]);\n mesh_options.uniforms = Object.assign({}, mesh_options.uniforms, mesh_variant.uniforms);\n mesh_options.variant = mesh_variant.variant;\n\n let mesh = styles[s].makeMesh(mesh_variant.vertex_data, mesh_variant.vertex_elements, mesh_options);\n mesh.variant = mesh_options.variant;\n meshes[s] = meshes[s] || [];\n meshes[s].push(mesh);\n this.debug.buffer_size += mesh.buffer_size;\n this.debug.geometry_count += mesh.geometry_count;\n }\n }\n\n // Sort mesh variants by explicit render order (if present)\n if (meshes[s]) {\n meshes[s].sort((a, b) => {\n // Sort variant order ascending if present, then all null values (where order is unspecified)\n let ao = a.variant.order, bo = b.variant.order;\n return (ao == null ? 1 : (bo == null ? -1 : (ao < bo ? -1 : 1)));\n });\n }\n\n // Assign texture ownership to tiles\n // Note that it's valid for a single texture to be referenced from multiple styles\n // (e.g. same raster texture attached to multiple sources). This means the same\n // texture may be added to the tile's texture list more than once, which ensures\n // that it is properly released (to match its retain count).\n if (mesh_data[s].textures) {\n textures.push(...mesh_data[s].textures);\n }\n }\n }\n delete this.mesh_data;\n\n // Initialize tracking for this tile generation\n if (progress.start) {\n this.previous_textures = [...this.textures]; // copy old list of textures\n this.textures = [];\n }\n\n // New meshes\n for (let m in meshes) {\n if (this.meshes[m]) {\n this.meshes[m].forEach(m => m.destroy()); // free old meshes\n }\n this.meshes[m] = meshes[m]; // set new mesh\n this.new_mesh_styles.push(m);\n }\n\n // New textures\n this.textures.push(...textures);\n\n if (progress.done) {\n // Release un-replaced meshes (existing in previous generation, but weren't built for this one)\n for (let m in this.meshes) {\n if (this.new_mesh_styles.indexOf(m) === -1) {\n this.meshes[m].forEach(m => m.destroy());\n delete this.meshes[m];\n }\n }\n this.new_mesh_styles = [];\n\n // Release old textures\n this.previous_textures.forEach(t => Texture.release(t));\n this.previous_textures = [];\n\n this.debug.geometry_ratio = (this.debug.geometry_count / this.debug.feature_count).toFixed(1);\n this.printDebug();\n }\n }\n\n /**\n Called on main thread when web worker completes processing, but tile has since been discarded\n Frees resources that would have been transferred to the tile object.\n Static method because the tile object no longer exists (the tile data returned by the worker is passed instead).\n */\n static abortBuild (tile) {\n Task.removeForTile(tile.id);\n Collision.abortTile(tile.id);\n\n // Releases meshes\n if (tile.mesh_data) {\n for (let s in tile.mesh_data) {\n let textures = tile.mesh_data[s].textures;\n if (textures) {\n textures.forEach(t => {\n let texture = Texture.textures[t];\n if (texture) {\n log('trace', `releasing texture ${t} for tile ${tile.key}`);\n texture.release();\n }\n });\n }\n }\n }\n }\n\n // Set as a proxy tile for another tile\n setProxyFor (tile) {\n if (tile) {\n this.visible = true;\n this.proxy_for = this.proxy_for || [];\n this.proxy_for.push(tile);\n this.proxy_depth = 1; // draw proxies a half-layer back (order is scaled 2x to avoid integer truncation)\n tile.proxied_as = (tile.style_zoom > this.style_zoom ? 'child' : 'parent');\n }\n else {\n this.proxy_for = null;\n this.proxy_depth = 0;\n }\n }\n\n // Proxy tiles only need to render a specific style if any of the tiles they are proxying *for*\n // haven't finished loading that style yet. If all proxied tiles *have* data for that style, then it's\n // safe to hide the proxy tile's version.\n shouldProxyForStyle (style) {\n return !this.proxy_for || this.proxy_for.some(t => t.meshes[style] == null);\n }\n\n // Update model matrix and tile uniforms\n setupProgram ({ model, model32 }, program) {\n // Tile origin\n program.uniform('4fv', 'u_tile_origin', [this.min.x, this.min.y, this.style_zoom, this.coords.z]);\n program.uniform('1f', 'u_tile_proxy_depth', this.proxy_depth);\n\n // Model - transform tile space into world space (meters, absolute mercator position)\n mat4.identity(model);\n mat4.translate(model, model, vec3.fromValues(this.min.x, this.min.y, 0));\n mat4.scale(model, model, vec3.fromValues(this.span.x / Geo.tile_scale, -1 * this.span.y / Geo.tile_scale, 1)); // scale tile local coords to meters\n mat4.copy(model32, model);\n program.uniform('Matrix4fv', 'u_model', model32);\n\n // Fade in labels according to proxy status, avoiding \"flickering\" where\n // labels quickly go from invisible back to visible\n program.uniform('1i', 'u_tile_fade_in', this.fade_in && this.proxied_as !== 'child');\n }\n\n // Slice a subset of keys out of a tile\n // Includes a minimum set of pre-defined keys for load state, debug. etc.\n // We use this to send a subset of the tile back to the main thread, to minimize unnecessary data transfer\n // (e.g. very large items like feature geometry are not needed on the main thread)\n static slice (tile, keys) {\n let keep = [\n 'id',\n 'key',\n 'loading',\n 'loaded',\n 'generation',\n 'error',\n 'debug'\n ];\n if (Array.isArray(keys)) {\n keep.push(...keys);\n }\n\n // Build the tile subset\n var tile_subset = {};\n for (let k=0; k < keep.length; k++) {\n const key = keep[k];\n tile_subset[key] = tile[key];\n }\n\n return tile_subset;\n }\n\n merge (other) {\n this.loading = other.loading;\n this.loaded = other.loaded;\n this.generation = other.loaded;\n this.error = other.error;\n this.mesh_data = other.mesh_data;\n this.debug = mergeObjects(this.debug, other.debug);\n return this;\n }\n\n printDebug (exclude = ['layers']) {\n let copy = {};\n for (let key in this.debug) {\n if (exclude.indexOf(key) === -1) {\n copy[key] = this.debug[key];\n }\n }\n\n log('debug', `Tile: debug for ${this.key}: [ ${JSON.stringify(copy)} ]`);\n }\n\n // Sum up layer feature/geometry stats from a set of tiles\n static debugSumLayerStats (tiles) {\n let list = {}, tree = {};\n\n tiles.filter(tile => tile.debug.layers).forEach(tile => {\n // layer list\n Object.keys(tile.debug.layers.list).forEach(layer => {\n let counts = tile.debug.layers.list[layer];\n addLayerDebugEntry(list, layer, counts.features, counts.geoms, counts.styles, counts.base);\n });\n\n // layer tree\n addDebugLayers(tile.debug.layers.tree, tree);\n });\n\n return { list, tree };\n }\n\n}\n\nTile.coord_children = {}; // only allocate children coordinates once per coordinate\n\n// build debug stats layer tree\nfunction addDebugLayers (node, tree) {\n for (let layer in node) {\n let counts = node[layer];\n addLayerDebugEntry(tree, layer, counts.features, counts.geoms, counts.styles, counts.base);\n if (counts.layers) {\n tree[layer].layers = tree[layer].layers || {};\n addDebugLayers(counts.layers, tree[layer].layers); // process child layers\n }\n }\n}\n", + "// Text label rendering methods, can be mixed into a rendering style\n\nimport StyleParser from '../style_parser';\nimport Geo from '../../geo';\nimport log from '../../utils/log';\nimport Thread from '../../utils/thread';\nimport WorkerBroker from '../../utils/worker_broker';\nimport Collision from '../../labels/collision';\nimport TextSettings from '../text/text_settings';\nimport CanvasText from '../text/canvas_text';\n\n// namespaces label textures (ensures new texture name when a tile is built multiple times)\nlet text_texture_id = 0;\n\nexport const TextLabels = {\n\n resetText () {\n if (Thread.is_main) {\n this.canvas = new CanvasText();\n }\n else if (Thread.is_worker) {\n this.texts = {}; // unique texts, grouped by tile, by style\n }\n },\n\n freeText (tile) {\n delete this.texts[tile.id];\n },\n\n parseTextFeature (feature, draw, context, tile) {\n // Compute label text\n let text = this.parseTextSource(feature, draw, context);\n\n if (text == null || text === '') {\n return; // no text for this feature\n }\n\n // Compute text style and layout settings for this feature label\n let text_settings = TextSettings.compute(feature, draw, context);\n let text_settings_key = TextSettings.key(text_settings);\n\n // first label in tile, or with this style?\n this.texts[tile.id] = this.texts[tile.id] || {};\n let sizes = this.texts[tile.id][text_settings_key] = this.texts[tile.id][text_settings_key] || {};\n\n if (text instanceof Object){\n let results = [];\n\n // add both left/right text elements to repeat group to improve repeat culling\n // avoids one component of a boundary label (e.g. Colorado) being culled too aggressively when it also\n // appears in nearby boundary labels (e.g. Colorado/Utah & Colorado/New Mexico repeat as separate groups)\n let repeat_group_prefix = text.left + '-' + text.right; // NB: should be all text keys, not just left/right\n\n for (let key in text){\n let current_text = text[key];\n if (!current_text) {\n continue;\n }\n\n let layout = this.computeTextLayout({}, feature, draw, context, tile, current_text, text_settings, repeat_group_prefix, key);\n if (!sizes[current_text]) {\n // first label with this text/style/tile combination, make a new label entry\n sizes[current_text] = {\n text_settings,\n ref: 0 // # of times this text/style combo appears in tile\n };\n }\n\n results.push({\n draw, text : current_text, text_settings_key, layout\n });\n }\n\n return (results.length > 0 && results); // return null if no boundary labels found\n }\n else {\n // unique text strings, grouped by text drawing style\n let layout = this.computeTextLayout({}, feature, draw, context, tile, text, text_settings);\n if (!sizes[text]) {\n // first label with this text/style/tile combination, make a new label entry\n sizes[text] = {\n text_settings,\n ref: 0 // # of times this text/style combo appears in tile\n };\n }\n\n return {\n draw, text, text_settings_key, layout\n };\n }\n },\n\n // Compute the label text, default is value of feature.properties.name\n // - String value indicates a feature property look-up, e.g. `short_name` means use feature.properties.short_name\n // - Function will use the return value as the label text (for custom labels)\n // - Array (of strings and/or functions) defines a list of fallbacks, evaluated according to the above rules,\n // with the first non-null value used as the label text\n // e.g. `[name:es, name:en, name]` prefers Spanish names, followed by English, and last the default local name\n parseTextSource (feature, draw, context) {\n let text;\n let source = draw.text_source || 'name';\n\n if (source != null && typeof source === 'object') {\n // left/right boundary labels\n text = {};\n for (let key in source) {\n text[key] = this.parseTextSourceValue(source[key], feature, context);\n }\n }\n else {\n // single label\n text = this.parseTextSourceValue(source, feature, context);\n }\n\n return text;\n },\n\n parseTextSourceValue (source, feature, context) {\n let text;\n if (Array.isArray(source)) {\n for (let s=0; s < source.length; s++) {\n if (typeof source[s] === 'string') {\n text = feature.properties[source[s]];\n } else if (typeof source[s] === 'function') {\n text = source[s](context);\n }\n\n if (text) {\n return text; // stop if we found a text property\n }\n }\n }\n else if (typeof source === 'string') {\n text = feature.properties[source];\n }\n else if (source instanceof Function) {\n text = source(context);\n }\n\n return text;\n },\n\n prepareTextLabels (tile, collision_group, queue) {\n if (Object.keys(this.texts[tile.id]||{}).length === 0) {\n return Promise.resolve([]);\n }\n\n // first call to main thread, ask for text pixel sizes\n return WorkerBroker.postMessage(this.main_thread_target+'.calcTextSizes', tile.id, this.texts[tile.id]).then(({ texts }) => {\n if (tile.canceled) {\n log('trace', `Style ${this.name}: stop tile build because tile was canceled: ${tile.key}, post-calcTextSizes()`);\n return [];\n }\n\n this.texts[tile.id] = texts || [];\n if (!texts) {\n Collision.abortTile(tile.id);\n return [];\n }\n\n return this.buildTextLabels(tile, queue);\n });\n },\n\n collideAndRenderTextLabels (tile, collision_group, queue) {\n return this.prepareTextLabels(tile, collision_group, queue).then(labels => {\n if (labels.length === 0) {\n Collision.collide([], collision_group, tile.id);\n return Promise.resolve({});\n }\n\n return Collision.collide(labels, collision_group, tile.id).then(labels => {\n if (tile.canceled) {\n log('trace', `stop tile build because tile was canceled: ${tile.key}, post-collide()`);\n return {};\n }\n\n let texts = this.texts[tile.id];\n if (texts == null || labels.length === 0) {\n return {};\n }\n\n this.cullTextStyles(texts, labels);\n\n // set alignments\n labels.forEach(q => {\n let text_settings_key = q.text_settings_key;\n let text_info = texts[text_settings_key] && texts[text_settings_key][q.text];\n if (!text_info.text_settings.can_articulate){\n text_info.align = text_info.align || {};\n text_info.align[q.label.align] = {};\n }\n else {\n // consider making it a set\n if (!text_info.type) {\n text_info.type = [];\n }\n\n if (text_info.type.indexOf(q.label.type) === -1){\n text_info.type.push(q.label.type);\n }\n }\n });\n\n // second call to main thread, for rasterizing the set of texts\n return WorkerBroker.postMessage(this.main_thread_target+'.rasterizeTexts', tile.id, tile.key, texts).then(({ texts, textures }) => {\n if (tile.canceled) {\n log('trace', `stop tile build because tile was canceled: ${tile.key}, post-rasterizeTexts()`);\n return {};\n }\n\n return { labels, texts, textures };\n });\n });\n });\n },\n\n // Remove unused text/style combinations to avoid unnecessary rasterization\n cullTextStyles(texts, labels) {\n // Count how many times each text/style combination is used\n for (let i=0; i < labels.length; i++) {\n let label = labels[i];\n texts[label.text_settings_key][label.text].ref++;\n }\n\n // Remove text/style combinations that have no visible labels\n for (let style in texts) {\n for (let text in texts[style]) {\n // no labels for this text\n if (texts[style][text].ref < 1) {\n delete texts[style][text];\n }\n }\n }\n\n for (let style in texts) {\n // no labels for this style\n if (Object.keys(texts[style]).length === 0) {\n delete texts[style];\n }\n }\n },\n\n // Called on main thread from worker, to compute the size of each text string,\n // were it to be rendered. This info is then used to perform initial label culling, *before*\n // labels are actually rendered.\n calcTextSizes (tile_id, texts) {\n return this.canvas.textSizes(tile_id, texts);\n },\n\n // Called on main thread from worker, to create atlas of labels for a tile\n rasterizeTexts (tile_id, tile_key, texts) {\n let canvas = new CanvasText(); // one per style per tile (style may be rendering multiple tiles at once)\n let max_texture_size = Math.min(this.max_texture_size, 2048); // cap each label texture at 2048x2048\n\n return canvas.setTextureTextPositions(texts, max_texture_size).then(({ textures }) => {\n if (!textures) {\n return {};\n }\n\n let texture_prefix = ['labels', this.name, tile_key, tile_id, text_texture_id, ''].join('-');\n text_texture_id++;\n\n return canvas.rasterize(texts, textures, tile_id, texture_prefix, this.gl).then(({ textures }) => {\n if (!textures) {\n return {};\n }\n return { texts, textures };\n });\n });\n },\n\n preprocessText (draw) {\n // Font settings are required\n if (!draw || !draw.font || typeof draw.font !== 'object') {\n return;\n }\n\n // Colors\n draw.font.fill = StyleParser.createPropertyCache(draw.font.fill);\n if (draw.font.stroke) {\n draw.font.stroke.color = StyleParser.createPropertyCache(draw.font.stroke.color);\n }\n\n // Convert font and text stroke sizes\n draw.font.px_size = StyleParser.createPropertyCache(draw.font.size || TextSettings.defaults.size, CanvasText.fontPixelSize);\n if (draw.font.stroke && draw.font.stroke.width != null) {\n draw.font.stroke.width = StyleParser.createPropertyCache(draw.font.stroke.width, StyleParser.parsePositiveNumber);\n }\n\n // Offset (2d array)\n draw.offset = StyleParser.createPropertyCache(draw.offset,\n v => Array.isArray(v) && v.map(StyleParser.parseNumber)\n );\n\n // Buffer (1d value or or 2d array) - must be >= 0\n draw.buffer = StyleParser.createPropertyCache(draw.buffer,\n v => (Array.isArray(v) ? v : [v, v]).map(StyleParser.parsePositiveNumber)\n );\n\n // Repeat rules - for text labels, defaults to tile size\n draw.repeat_distance = StyleParser.createPropertyCache(draw.repeat_distance || Geo.tile_size, StyleParser.parsePositiveNumber);\n\n return draw;\n },\n\n // Additional text-specific layout settings\n computeTextLayout (target, feature, draw, context, tile, text, text_settings, repeat_group_prefix, orientation) {\n let layout = target || {};\n\n // common settings w/points\n layout = this.computeLayout(layout, feature, draw, context, tile);\n\n // tile boundary handling\n layout.cull_from_tile = (draw.cull_from_tile != null) ? draw.cull_from_tile : true;\n\n // standalone text can move into tile if specified\n layout.move_into_tile = (draw.move_into_tile != null) ? draw.move_into_tile : true;\n\n // repeat rules include the text\n if (layout.repeat_distance) {\n if (repeat_group_prefix) {\n layout.repeat_group += '/' + repeat_group_prefix;\n }\n layout.repeat_group += '/' + text;\n }\n\n // Max number of subdivisions to try\n layout.subdiv = tile.overzoom2;\n\n layout.align = draw.align;\n\n // used to fudge width value as text may overflow bounding box if it has italic, bold, etc style\n layout.italic = (text_settings.style !== 'normal');\n\n // used to determine orientation of text if the text_source has a `left` or `right` key\n if (orientation === 'right') {\n layout.orientation = 1;\n }\n else if (orientation === 'left'){\n layout.orientation = -1;\n }\n\n return layout;\n }\n\n};\n", + "import Utils from '../../utils/utils';\nimport Geo from '../../geo';\nimport StyleParser from '../style_parser';\n\nvar TextSettings;\n\nexport default TextSettings = {\n\n // A key for grouping all labels of the same text style (e.g. same Canvas state, to minimize state changes)\n key (settings) {\n return [\n settings.style,\n settings.weight,\n settings.family,\n settings.px_size,\n settings.fill,\n settings.stroke,\n settings.stroke_width,\n settings.transform,\n settings.text_wrap,\n settings.max_lines,\n settings.supersample,\n Utils.device_pixel_ratio\n ].join('/');\n },\n\n defaults: {\n style: 'normal',\n weight: null,\n size: '12px',\n px_size: 12,\n family: 'Helvetica',\n fill: 'white',\n text_wrap: 15,\n max_lines: 5,\n align: 'center',\n stroke: null,\n stroke_width: 0\n },\n\n compute (feature, draw, context) {\n let style = {};\n\n draw.font = draw.font || this.defaults;\n\n // LineString labels can articulate while point labels cannot. Needed for future texture coordinate calculations.\n style.can_articulate = draw.can_articulate;\n\n // Use fill if specified, or default\n style.fill = (draw.font.fill && Utils.toCSSColor(StyleParser.evalCachedColorProperty(draw.font.fill, context))) || this.defaults.fill;\n\n // Font properties are modeled after CSS names:\n // - family: Helvetica, Futura, etc.\n // - size: in pt, px, or em\n // - style: normal, italic, oblique\n // - weight: normal, bold, etc.\n // - transform: capitalize, uppercase, lowercase\n style.style = draw.font.style || this.defaults.style;\n style.weight = draw.font.weight || this.defaults.weight;\n if (draw.font.family) {\n style.family = draw.font.family;\n if (style.family !== this.defaults.family) {\n style.family += ', ' + this.defaults.family;\n }\n }\n else {\n style.family = this.defaults.family;\n }\n\n style.transform = draw.font.transform;\n\n // original size (not currently used, but useful for debugging)\n style.size = draw.font.size || this.defaults.size;\n\n // calculated pixel size\n style.supersample = draw.supersample_text ? 1.5 : 1; // optionally render text at 150% to improve clarity\n style.px_size = StyleParser.evalCachedProperty(draw.font.px_size, context) * style.supersample;\n\n // Use stroke if specified\n if (draw.font.stroke && draw.font.stroke.color) {\n style.stroke = Utils.toCSSColor(StyleParser.evalCachedColorProperty(draw.font.stroke.color, context) || this.defaults.stroke);\n style.stroke_width = StyleParser.evalCachedProperty(draw.font.stroke.width, context) || this.defaults.stroke_width;\n }\n\n style.font_css = this.fontCSS(style);\n\n // Word wrap and text alignment\n // Not a font properties, but affect atlas of unique text textures\n let text_wrap = draw.text_wrap; // use explicitly set value\n\n if (text_wrap == null && Geo.geometryType(feature.geometry.type) !== 'line') {\n // point labels (for point and polygon features) have word wrap on w/default max length,\n // line labels default off\n text_wrap = true;\n }\n\n // setting to 'true' causes default wrap value to be used\n if (text_wrap === true) {\n text_wrap = this.defaults.text_wrap;\n }\n style.text_wrap = text_wrap;\n\n // max_lines setting to truncate very long labels with an ellipsis\n style.max_lines = draw.max_lines || this.defaults.max_lines;\n\n return style;\n },\n\n // Build CSS-style font string (to set Canvas draw state)\n fontCSS ({ style, weight, px_size, family }) {\n return [style, weight, px_size + 'px', family]\n .filter(x => x) // remove null props\n .join(' ');\n }\n\n};\n", + "import log from './utils/log';\nimport Utils from './utils/utils';\nimport mergeObjects from './utils/merge';\nimport Geo from './geo';\nimport {addLayerDebugEntry} from './styles/style';\nimport StyleParser from './styles/style_parser';\nimport Collision from './labels/collision';\nimport WorkerBroker from './utils/worker_broker';\nimport Task from './utils/task';\nimport Texture from './gl/texture';\n\nimport {mat4, vec3} from './utils/gl-matrix';\n\nlet id = 0; // unique tile id\n\nexport default class Tile {\n\n /**\n Tile\n @constructor\n Required properties:\n coords: object with {x, y, z} properties identifying tile coordinate location\n worker: web worker to handle tile construction\n */\n constructor({ coords, style_zoom, source, worker, view }) {\n this.id = id++;\n this.worker = worker;\n this.view = view;\n this.source = source;\n this.generation = null;\n\n this.visible = false;\n this.proxy_for = null;\n this.proxy_depth = 0;\n this.proxied_as = null;\n this.fade_in = true;\n this.loading = false;\n this.loaded = false;\n this.built = false;\n this.error = null;\n this.debug = {};\n\n this.style_zoom = style_zoom; // zoom level to be used for styling\n this.coords = Tile.normalizedCoordinate(coords, this.source, this.style_zoom);\n this.key = Tile.key(this.coords, this.source, this.style_zoom);\n this.overzoom = Math.max(this.style_zoom - this.coords.z, 0); // number of levels of overzooming\n this.overzoom2 = Math.pow(2, this.overzoom);\n this.min = Geo.metersForTile(this.coords);\n this.max = Geo.metersForTile({x: this.coords.x + 1, y: this.coords.y + 1, z: this.coords.z }),\n this.span = { x: (this.max.x - this.min.x), y: (this.max.y - this.min.y) };\n this.bounds = { sw: { x: this.min.x, y: this.max.y }, ne: { x: this.max.x, y: this.min.y } };\n this.center_dist = 0;\n\n this.meters_per_pixel = Geo.metersPerPixel(this.style_zoom);\n this.meters_per_pixel_sq = this.meters_per_pixel * this.meters_per_pixel;\n this.units_per_pixel = Geo.units_per_pixel / this.overzoom2; // adjusted for overzoom\n this.units_per_meter_overzoom = Geo.unitsPerMeter(this.coords.z) * this.overzoom2; // adjusted for overzoom\n\n this.meshes = {}; // renderable VBO meshes keyed by style\n this.textures = []; // textures that the tile owns (labels, etc.)\n this.previous_textures = []; // textures retained by the tile in the previous build generation\n this.new_mesh_styles = []; // meshes that have been built so far in current build generation\n }\n\n static coord(c) {\n return {x: c.x, y: c.y, z: c.z, key: Tile.coordKey(c)};\n }\n\n static coordKey({x, y, z}) {\n return x + '/' + y + '/' + z;\n }\n\n static key (coords, source, style_zoom) {\n if (coords.y < 0 || coords.y >= (1 << coords.z) || coords.z < 0) {\n return; // cull tiles out of range (x will wrap)\n }\n return [source.name, style_zoom, coords.x, coords.y, coords.z].join('/');\n }\n\n static normalizedKey (coords, source, style_zoom) {\n return Tile.key(Tile.normalizedCoordinate(coords, source, style_zoom), source, style_zoom);\n }\n\n static normalizedCoordinate (coords, source, style_zoom) {\n if (source.zoom_bias) {\n coords = Tile.coordinateAtZoom(coords, Math.max(0, coords.z - source.zoom_bias)); // zoom can't go below zero\n }\n return Tile.coordinateWithMaxZoom(coords, source.max_zoom);\n }\n\n static coordinateAtZoom({x, y, z}, zoom) {\n if (z !== zoom) {\n let zscale = Math.pow(2, z - zoom);\n x = Math.floor(x / zscale);\n y = Math.floor(y / zscale);\n z = zoom;\n }\n return Tile.coord({x, y, z});\n }\n\n static coordinateWithMaxZoom({x, y, z}, max_zoom) {\n if (max_zoom !== undefined && z > max_zoom) {\n return Tile.coordinateAtZoom({x, y, z}, max_zoom);\n }\n return Tile.coord({x, y, z});\n }\n\n static childrenForCoordinate({x, y, z, key}) {\n if (!Tile.coord_children[key]) {\n z++;\n x *= 2;\n y *= 2;\n Tile.coord_children[key] = [\n Tile.coord({x, y, z}), Tile.coord({x: x+1, y, z}),\n Tile.coord({x, y: y+1, z}), Tile.coord({x: x+1, y: y+1, z})\n ];\n }\n return Tile.coord_children[key];\n }\n\n static isDescendant(parent, descendant) {\n if (descendant.z > parent.z) {\n let {x, y} = Tile.coordinateAtZoom(descendant, parent.z);\n return (parent.x === x && parent.y === y);\n }\n return false;\n }\n\n // Free resources owned by tile\n freeResources () {\n for (let m in this.meshes) {\n this.meshes[m].forEach(m => m.destroy());\n }\n this.meshes = {};\n\n this.textures.forEach(t => Texture.release(t));\n this.textures = [];\n\n this.previous_textures.forEach(t => Texture.release(t));\n this.previous_textures = [];\n }\n\n destroy() {\n Task.removeForTile(this.id);\n this.workerMessage('self.removeTile', this.key);\n this.freeResources();\n this.worker = null;\n }\n\n buildAsMessage() {\n return {\n id: this.id,\n key: this.key,\n source: this.source.name,\n coords: this.coords,\n min: this.min,\n max: this.max,\n units_per_pixel: this.units_per_pixel,\n meters_per_pixel: this.meters_per_pixel,\n meters_per_pixel_sq: this.meters_per_pixel_sq,\n units_per_meter_overzoom: this.units_per_meter_overzoom,\n style_zoom: this.style_zoom,\n overzoom: this.overzoom,\n overzoom2: this.overzoom2,\n generation: this.generation,\n debug: this.debug\n };\n }\n\n workerMessage (...message) {\n return WorkerBroker.postMessage(this.worker, ...message);\n }\n\n build(generation, { fade_in = true } = {}) {\n this.generation = generation;\n this.fade_in = fade_in;\n if (!this.loaded) {\n this.loading = true;\n this.built = false;\n }\n return this.workerMessage('self.buildTile', { tile: this.buildAsMessage() }).catch(e => { throw e; });\n }\n\n /**\n Called on worker to cancel loading\n Static method because the worker only has object representations of tile data, there is no\n tile instance created yet.\n */\n static cancel(tile) {\n if (tile) {\n tile.canceled = true;\n if (tile.source_data && tile.source_data.request_id) {\n Utils.cancelRequest(tile.source_data.request_id); // cancel pending tile network request\n tile.source_data.request_id = null;\n }\n\n Tile.abortBuild(tile);\n }\n }\n\n // Process geometry for tile - called by web worker\n // Returns a set of tile keys that should be sent to the main thread (so that we can minimize data exchange between worker and main thread)\n static buildGeometry (tile, { scene_id, layers, styles, global }) {\n let data = tile.source_data;\n\n tile.debug.rendering = +new Date();\n tile.debug.feature_count = 0;\n tile.debug.layers = null;\n\n Collision.startTile(tile.id);\n\n // Process each top-level layer\n for (let layer_name in layers) {\n let layer = layers[layer_name];\n // Skip layers with no data source defined\n if (!layer || !layer.config_data) {\n log('warn', `Layer ${layer_name} was defined without a geometry data source and will not be rendered.`);\n continue;\n }\n\n // Source names don't match\n if (layer.config_data.source !== tile.source) {\n continue;\n }\n\n // Get data for one or more layers from source\n let source_layers = Tile.getDataForSource(data, layer.config_data, layer_name);\n\n // Render features in layer\n for (let s=0; s < source_layers.length; s++) {\n let source_layer = source_layers[s];\n let geom = source_layer.geom;\n if (!geom) {\n continue;\n }\n\n for (let f = 0; f < geom.features.length; f++) {\n let feature = geom.features[f];\n if (feature.geometry == null) {\n continue; // skip features w/o geometry (valid GeoJSON)\n }\n\n let context = StyleParser.getFeatureParseContext(feature, tile, global);\n context.winding = tile.default_winding;\n context.source = tile.source; // add data source name\n context.layer = source_layer.layer; // add data source layer name\n\n // Get draw groups for this feature\n let draw_groups = layer.buildDrawGroups(context, true);\n if (!draw_groups) {\n continue;\n }\n\n // Render draw groups\n for (let group_name in draw_groups) {\n let group = draw_groups[group_name];\n\n // Add to style\n let style_name = group.style || group_name;\n let style = styles[style_name];\n\n if (!style) {\n log('warn', `Style '${style_name}' not found, skipping layer '${layer_name}':`, group, feature);\n continue;\n }\n\n group = style.preprocess(group);\n if (group == null || group.visible === false) {\n continue;\n }\n\n context.layers = group.layers; // add matching draw layers\n\n style.addFeature(feature, group, context);\n }\n\n tile.debug.feature_count++;\n }\n }\n }\n tile.debug.rendering = +new Date() - tile.debug.rendering;\n\n // Send styles back to main thread as they finish building, in two groups: collision vs. non-collision\n let tile_styles = this.stylesForTile(tile, styles).map(s => styles[s]);\n Tile.sendStyleGroups(tile, tile_styles, { scene_id }, style => style.collision ? 'collision' : 'non-collision');\n // Tile.sendStyleGroups(tile, tile_styles, { scene_id }, style => style.name); // call for each style\n // Tile.sendStyleGroups(tile, tile_styles, { scene_id }, style => 'styles'); // all styles in single call (previous behavior)\n }\n\n static stylesForTile (tile, styles) {\n let tile_styles = [];\n for (let s in styles) {\n if (styles[s].hasDataForTile(tile)) {\n tile_styles.push(s);\n }\n }\n return tile_styles;\n }\n\n // Send groups of styles back to main thread, asynchronously (as they finish building),\n // grouped by the provided function\n static sendStyleGroups(tile, styles, { scene_id }, group_by) {\n // Group styles\n let groups = {};\n styles.forEach(s => {\n let group_name = group_by(s);\n groups[group_name] = groups[group_name] || [];\n groups[group_name].push(s);\n });\n\n if (Object.keys(groups).length > 0) {\n let progress = { start: true };\n tile.mesh_data = {};\n\n for (let group_name in groups) {\n let group = groups[group_name];\n\n Promise.all(group.map(style => {\n return style.endData(tile).then(style_data => {\n if (style_data) {\n tile.mesh_data[style.name] = style_data;\n }\n });\n }))\n .then(() => {\n log('trace', `Finished style group '${group_name}' for tile ${tile.key}`);\n\n // Clear group and check if all groups finished\n groups[group_name] = [];\n if (Object.keys(groups).every(g => groups[g].length === 0)) {\n progress.done = true;\n }\n\n // Send meshes to main thread\n WorkerBroker.postMessage(\n `TileManager_${scene_id}.buildTileStylesCompleted`,\n WorkerBroker.withTransferables({ tile: Tile.slice(tile, ['mesh_data']), progress })\n );\n progress.start = null;\n tile.mesh_data = {}; // reset so each group sends separate set of style meshes\n\n if (progress.done) {\n Collision.resetTile(tile.id); // clear collision if we're done with the tile\n }\n })\n .catch((e) => {\n log('error', `Error for style group '${group_name}' for tile ${tile.key}`, e.stack);\n });\n }\n }\n else {\n // Nothing to build, return empty tile to main thread\n WorkerBroker.postMessage(\n `TileManager_${scene_id}.buildTileStylesCompleted`,\n WorkerBroker.withTransferables({ tile: Tile.slice(tile), progress: { start: true, done: true } })\n );\n Collision.resetTile(tile.id); // clear collision if we're done with the tile\n }\n }\n\n /**\n Retrieves geometry from a tile according to a data source definition\n Returns an array of objects with:\n layer: source layer name\n geom: GeoJSON FeatureCollection\n */\n static getDataForSource (source_data, source_config, default_layer = null) {\n var layers = [];\n\n if (source_config != null && source_data != null && source_data.layers != null) {\n // If no layer specified, and a default source layer exists\n if (!source_config.layer && source_data.layers._default) {\n layers.push({\n geom: source_data.layers._default\n });\n }\n // If no layer specified, and a default requested layer exists\n else if (!source_config.layer && default_layer) {\n layers.push({\n layer: default_layer,\n geom: source_data.layers[default_layer]\n });\n }\n // If a layer is specified by name, use it\n else if (typeof source_config.layer === 'string') {\n layers.push({\n layer: source_config.layer,\n geom: source_data.layers[source_config.layer]\n });\n }\n // If multiple layers are specified by name, combine them\n else if (Array.isArray(source_config.layer)) {\n source_config.layer.forEach(layer => {\n if (source_data.layers[layer] && source_data.layers[layer].features) {\n layers.push({\n layer,\n geom: source_data.layers[layer]\n });\n }\n });\n }\n }\n\n return layers;\n }\n\n /**\n Called on main thread when a web worker completes processing\n for a single tile.\n */\n buildMeshes(styles, progress) {\n if (this.error) {\n return;\n }\n\n // Debug\n if (progress.start) {\n this.debug.geometry_count = 0;\n this.debug.buffer_size = 0;\n }\n\n // Create VBOs\n let meshes = {}, textures = []; // new data to be added to tile\n let mesh_data = this.mesh_data;\n if (mesh_data) {\n for (let s in mesh_data) {\n for (let variant in mesh_data[s].meshes) {\n let mesh_variant = mesh_data[s].meshes[variant];\n if (mesh_variant.vertex_data) {\n if (!styles[s]) {\n log('warn', `Could not create mesh because style '${s}' not found, for tile ${this.key}, aborting tile`);\n break;\n }\n\n // first add style-level uniforms, then add any mesh-specific ones\n let mesh_options = Object.assign({}, mesh_data[s]);\n mesh_options.uniforms = Object.assign({}, mesh_options.uniforms, mesh_variant.uniforms);\n mesh_options.variant = mesh_variant.variant;\n\n let mesh = styles[s].makeMesh(mesh_variant.vertex_data, mesh_variant.vertex_elements, mesh_options);\n mesh.variant = mesh_options.variant;\n meshes[s] = meshes[s] || [];\n meshes[s].push(mesh);\n this.debug.buffer_size += mesh.buffer_size;\n this.debug.geometry_count += mesh.geometry_count;\n }\n }\n\n // Sort mesh variants by explicit render order (if present)\n if (meshes[s]) {\n meshes[s].sort((a, b) => {\n // Sort variant order ascending if present, then all null values (where order is unspecified)\n let ao = a.variant.order, bo = b.variant.order;\n return (ao == null ? 1 : (bo == null ? -1 : (ao < bo ? -1 : 1)));\n });\n }\n\n // Assign texture ownership to tiles\n // Note that it's valid for a single texture to be referenced from multiple styles\n // (e.g. same raster texture attached to multiple sources). This means the same\n // texture may be added to the tile's texture list more than once, which ensures\n // that it is properly released (to match its retain count).\n if (mesh_data[s].textures) {\n textures.push(...mesh_data[s].textures);\n }\n }\n }\n delete this.mesh_data;\n\n // Initialize tracking for this tile generation\n if (progress.start) {\n this.previous_textures = [...this.textures]; // copy old list of textures\n this.textures = [];\n }\n\n // New meshes\n for (let m in meshes) {\n if (this.meshes[m]) {\n this.meshes[m].forEach(m => m.destroy()); // free old meshes\n }\n this.meshes[m] = meshes[m]; // set new mesh\n this.new_mesh_styles.push(m);\n }\n\n // New textures\n this.textures.push(...textures);\n\n if (progress.done) {\n // Release un-replaced meshes (existing in previous generation, but weren't built for this one)\n for (let m in this.meshes) {\n if (this.new_mesh_styles.indexOf(m) === -1) {\n this.meshes[m].forEach(m => m.destroy());\n delete this.meshes[m];\n }\n }\n this.new_mesh_styles = [];\n\n // Release old textures\n this.previous_textures.forEach(t => Texture.release(t));\n this.previous_textures = [];\n\n this.debug.geometry_ratio = (this.debug.geometry_count / this.debug.feature_count).toFixed(1);\n this.printDebug();\n }\n }\n\n /**\n Called on main thread when web worker completes processing, but tile has since been discarded\n Frees resources that would have been transferred to the tile object.\n Static method because the tile object no longer exists (the tile data returned by the worker is passed instead).\n */\n static abortBuild (tile) {\n Task.removeForTile(tile.id);\n Collision.abortTile(tile.id);\n\n // Releases meshes\n if (tile.mesh_data) {\n for (let s in tile.mesh_data) {\n let textures = tile.mesh_data[s].textures;\n if (textures) {\n textures.forEach(t => {\n let texture = Texture.textures[t];\n if (texture) {\n log('trace', `releasing texture ${t} for tile ${tile.key}`);\n texture.release();\n }\n });\n }\n }\n }\n }\n\n // Set as a proxy tile for another tile\n setProxyFor (tile) {\n if (tile) {\n this.visible = true;\n this.proxy_for = this.proxy_for || [];\n this.proxy_for.push(tile);\n this.proxy_depth = 1; // draw proxies a half-layer back (order is scaled 2x to avoid integer truncation)\n tile.proxied_as = (tile.style_zoom > this.style_zoom ? 'child' : 'parent');\n }\n else {\n this.proxy_for = null;\n this.proxy_depth = 0;\n }\n }\n\n // Proxy tiles only need to render a specific style if any of the tiles they are proxying *for*\n // haven't finished loading that style yet. If all proxied tiles *have* data for that style, then it's\n // safe to hide the proxy tile's version.\n shouldProxyForStyle (style) {\n return !this.proxy_for || this.proxy_for.some(t => t.meshes[style] == null);\n }\n\n // Update model matrix and tile uniforms\n setupProgram ({ model, model32 }, program) {\n // Tile origin\n program.uniform('4fv', 'u_tile_origin', [this.min.x, this.min.y, this.style_zoom, this.coords.z]);\n program.uniform('1f', 'u_tile_proxy_depth', this.proxy_depth);\n\n // Model - transform tile space into world space (meters, absolute mercator position)\n mat4.identity(model);\n mat4.translate(model, model, vec3.fromValues(this.min.x, this.min.y, 0));\n mat4.scale(model, model, vec3.fromValues(this.span.x / Geo.tile_scale, -1 * this.span.y / Geo.tile_scale, 1)); // scale tile local coords to meters\n mat4.copy(model32, model);\n program.uniform('Matrix4fv', 'u_model', model32);\n\n // Fade in labels according to proxy status, avoiding \"flickering\" where\n // labels quickly go from invisible back to visible\n program.uniform('1i', 'u_tile_fade_in', this.fade_in && this.proxied_as !== 'child');\n }\n\n // Slice a subset of keys out of a tile\n // Includes a minimum set of pre-defined keys for load state, debug. etc.\n // We use this to send a subset of the tile back to the main thread, to minimize unnecessary data transfer\n // (e.g. very large items like feature geometry are not needed on the main thread)\n static slice (tile, keys) {\n let keep = [\n 'id',\n 'key',\n 'loading',\n 'loaded',\n 'generation',\n 'error',\n 'debug'\n ];\n if (Array.isArray(keys)) {\n keep.push(...keys);\n }\n\n // Build the tile subset\n var tile_subset = {};\n for (let k=0; k < keep.length; k++) {\n const key = keep[k];\n tile_subset[key] = tile[key];\n }\n\n return tile_subset;\n }\n\n merge (other) {\n this.loading = other.loading;\n this.loaded = other.loaded;\n this.generation = other.loaded;\n this.error = other.error;\n this.mesh_data = other.mesh_data;\n this.debug = mergeObjects(this.debug, other.debug);\n return this;\n }\n\n printDebug (exclude = ['layers']) {\n let copy = {};\n for (let key in this.debug) {\n if (exclude.indexOf(key) === -1) {\n copy[key] = this.debug[key];\n }\n }\n\n log('debug', `Tile: debug for ${this.key}: [ ${JSON.stringify(copy)} ]`);\n }\n\n // Sum up layer feature/geometry stats from a set of tiles\n static debugSumLayerStats (tiles) {\n let list = {}, tree = {};\n\n tiles.filter(tile => tile.debug.layers).forEach(tile => {\n // layer list\n Object.keys(tile.debug.layers.list).forEach(layer => {\n let counts = tile.debug.layers.list[layer];\n addLayerDebugEntry(list, layer, counts.features, counts.geoms, counts.styles, counts.base);\n });\n\n // layer tree\n addDebugLayers(tile.debug.layers.tree, tree);\n });\n\n return { list, tree };\n }\n\n}\n\nTile.coord_children = {}; // only allocate children coordinates once per coordinate\n\n// build debug stats layer tree\nfunction addDebugLayers (node, tree) {\n for (let layer in node) {\n let counts = node[layer];\n addLayerDebugEntry(tree, layer, counts.features, counts.geoms, counts.styles, counts.base);\n if (counts.layers) {\n tree[layer].layers = tree[layer].layers || {};\n addDebugLayers(counts.layers, tree[layer].layers); // process child layers\n }\n }\n}\n", "import Tile from './tile';\nimport TilePyramid from './tile_pyramid';\nimport Geo from './geo';\nimport log from './utils/log';\nimport WorkerBroker from './utils/worker_broker';\n\nexport default class TileManager {\n\n constructor({ scene, view }) {\n this.scene = scene;\n this.view = view;\n this.tiles = {};\n this.pyramid = new TilePyramid();\n this.visible_coords = {};\n this.queued_coords = [];\n this.building_tiles = null;\n this.renderable_tiles = [];\n this.active_styles = [];\n\n // Provide a hook for this object to be called from worker threads\n this.main_thread_target = ['TileManager', this.scene.id].join('_');\n WorkerBroker.addTarget(this.main_thread_target, this);\n }\n\n destroy() {\n this.forEachTile(tile => tile.destroy());\n this.tiles = {};\n this.pyramid = null;\n this.visible_coords = {};\n this.queued_coords = [];\n this.scene = null;\n this.view = null;\n }\n\n keepTile(tile) {\n this.tiles[tile.key] = tile;\n this.pyramid.addTile(tile);\n }\n\n hasTile(key) {\n return this.tiles[key] !== undefined;\n }\n\n forgetTile(key) {\n if (this.hasTile(key)) {\n let tile = this.tiles[key];\n this.pyramid.removeTile(tile);\n }\n\n delete this.tiles[key];\n this.tileBuildStop(key);\n }\n\n // Remove a single tile\n removeTile(key) {\n log('trace', `tile unload for ${key}`);\n\n var tile = this.tiles[key];\n\n if (tile != null) {\n tile.destroy();\n }\n\n this.forgetTile(tile.key);\n this.scene.requestRedraw();\n }\n\n // Run a function on each tile\n forEachTile(func) {\n for (let t in this.tiles) {\n func(this.tiles[t]);\n }\n }\n\n // Remove tiles that pass a filter condition\n removeTiles(filter) {\n let remove_tiles = [];\n for (let t in this.tiles) {\n let tile = this.tiles[t];\n if (filter(tile)) {\n remove_tiles.push(t);\n }\n }\n for (let r=0; r < remove_tiles.length; r++) {\n let key = remove_tiles[r];\n this.removeTile(key);\n }\n }\n\n updateTilesForView() {\n // Find visible tiles and load new ones\n this.visible_coords = {};\n let tile_coords = this.view.findVisibleTileCoordinates();\n for (let c=0; c < tile_coords.length; c++) {\n const coords = tile_coords[c];\n this.queueCoordinate(coords);\n this.visible_coords[coords.key] = coords;\n }\n\n this.updateTileStates();\n }\n\n updateTileStates () {\n this.forEachTile(tile => {\n this.updateVisibility(tile);\n });\n\n this.loadQueuedCoordinates();\n this.updateProxyTiles();\n this.view.pruneTilesForView();\n this.updateRenderableTiles();\n this.updateActiveStyles();\n }\n\n updateProxyTiles () {\n if (this.view.zoom_direction === 0) {\n return;\n }\n\n // Clear previous proxies\n this.forEachTile(tile => tile.setProxyFor(null));\n\n let proxy = false;\n this.forEachTile(tile => {\n if (this.view.zoom_direction === 1) {\n if (tile.visible && !tile.built) {\n const parent = this.pyramid.getAncestor(tile);\n if (parent) {\n parent.setProxyFor(tile);\n proxy = true;\n }\n }\n }\n else if (this.view.zoom_direction === -1) {\n if (tile.visible && !tile.built) {\n const descendants = this.pyramid.getDescendants(tile);\n for (let i=0; i < descendants.length; i++) {\n descendants[i].setProxyFor(tile);\n proxy = true;\n }\n }\n }\n });\n\n if (!proxy) {\n this.view.zoom_direction = 0;\n }\n }\n\n updateVisibility(tile) {\n tile.visible = false;\n if (tile.style_zoom === this.view.tile_zoom) {\n if (this.visible_coords[tile.coords.key]) {\n tile.visible = true;\n }\n else {\n // brute force\n for (let key in this.visible_coords) {\n if (Tile.isDescendant(tile.coords, this.visible_coords[key])) {\n tile.visible = true;\n break;\n }\n }\n }\n }\n }\n\n // Remove tiles that aren't visible, and flag remaining visible ones to be updated (for loading, proxy, etc.)\n pruneToVisibleTiles () {\n this.removeTiles(tile => !tile.visible);\n }\n\n getRenderableTiles () {\n return this.renderable_tiles;\n }\n\n updateRenderableTiles() {\n this.renderable_tiles = [];\n for (let t in this.tiles) {\n let tile = this.tiles[t];\n if (tile.visible && tile.loaded) {\n this.renderable_tiles.push(tile);\n }\n }\n return this.renderable_tiles;\n }\n\n // Assign tile to worker thread based on coordinates and data source\n getWorkerForTile(coords, source) {\n let worker;\n\n if (source.tiled) {\n // Pin tile to a worker thread based on its coordinates\n worker = this.scene.workers[Math.abs(coords.x + coords.y + coords.z) % this.scene.workers.length];\n }\n else {\n // Pin all tiles from each non-tiled source to a single worker\n // Prevents data for these sources from being loaded more than once\n worker = this.scene.workers[source.id % this.scene.workers.length];\n }\n\n return worker;\n }\n\n getActiveStyles () {\n return this.active_styles;\n }\n\n updateActiveStyles () {\n let tiles = this.renderable_tiles;\n let active = {};\n for (let t=0; t < tiles.length; t++) {\n let tile = tiles[t];\n Object.keys(tile.meshes).forEach(s => active[s] = true);\n }\n this.active_styles = Object.keys(active);\n return this.active_styles;\n }\n\n isLoadingVisibleTiles() {\n return Object.keys(this.tiles).some(k => this.tiles[k].visible && !this.tiles[k].built);\n }\n\n // Queue a tile for load\n queueCoordinate(coords) {\n this.queued_coords[this.queued_coords.length] = coords;\n }\n\n // Load all queued tiles\n loadQueuedCoordinates() {\n if (this.queued_coords.length === 0) {\n return;\n }\n\n // Sort queued tiles from center tile\n this.queued_coords.sort((a, b) => {\n let center = this.view.center.meters;\n let half_span = Geo.metersPerTile(a.z) / 2;\n\n let ac = Geo.metersForTile(a);\n ac.x += half_span;\n ac.y -= half_span;\n\n let bc = Geo.metersForTile(b);\n bc.x += half_span;\n bc.y -= half_span;\n\n let ad = Math.abs(center.x - ac.x) + Math.abs(center.y - ac.y);\n let bd = Math.abs(center.x - bc.x) + Math.abs(center.y - bc.y);\n\n a.center_dist = ad;\n b.center_dist = bd;\n\n return (bd > ad ? -1 : (bd === ad ? 0 : 1));\n });\n this.queued_coords.forEach(coords => this.loadCoordinate(coords));\n this.queued_coords = [];\n }\n\n // Load all tiles to cover a given logical tile coordinate\n loadCoordinate(coords) {\n // Skip if not at current scene zoom\n if (coords.z !== this.view.center.tile.z) {\n return;\n }\n\n // Determine necessary tiles for each source\n for (let s in this.scene.sources) {\n let source = this.scene.sources[s];\n // Check if data source should build this tile\n if (!source.builds_geometry_tiles || !source.includesTile(coords, this.view.tile_zoom)) {\n continue;\n }\n\n let key = Tile.normalizedKey(coords, source, this.view.tile_zoom);\n if (key && !this.hasTile(key)) {\n log('trace', `load tile ${key}, distance from view center: ${coords.center_dist}`);\n let tile = new Tile({\n source,\n coords,\n worker: this.getWorkerForTile(coords, source),\n style_zoom: this.view.baseZoom(coords.z),\n view: this.view\n });\n\n this.keepTile(tile);\n this.buildTile(tile);\n }\n }\n }\n\n // Start tile build process\n buildTile(tile, options) {\n this.tileBuildStart(tile.key);\n this.updateVisibility(tile);\n tile.build(this.scene.generation, options);\n }\n\n // Called on main thread when a web worker completes processing for a single tile (initial load, or rebuild)\n buildTileStylesCompleted({ tile, progress }) {\n // Removed this tile during load?\n if (this.tiles[tile.key] == null) {\n log('trace', `discarded tile ${tile.key} in TileManager.buildTileStylesCompleted because previously removed`);\n Tile.abortBuild(tile);\n this.updateTileStates();\n }\n // Built with an outdated scene configuration?\n else if (tile.generation !== this.scene.generation) {\n log('debug', `discarded tile ${tile.key} in TileManager.buildTileStylesCompleted because built with ` +\n `scene config gen ${tile.generation}, current ${this.scene.generation}`);\n Tile.abortBuild(tile);\n this.updateTileStates();\n }\n else {\n // Update tile with properties from worker\n if (this.tiles[tile.key]) {\n // Ignore if from a previously discarded tile\n if (tile.id < this.tiles[tile.key].id) {\n log('trace', `discarded tile ${tile.key} for id ${tile.id} in TileManager.buildTileStylesCompleted because built for discarded tile id`);\n Tile.abortBuild(tile);\n return;\n }\n\n tile = this.tiles[tile.key].merge(tile);\n }\n\n if (progress.done) {\n tile.built = true;\n }\n\n tile.buildMeshes(this.scene.styles, progress);\n this.updateTileStates();\n this.scene.requestRedraw();\n }\n\n if (progress.done) {\n this.tileBuildStop(tile.key);\n }\n }\n\n // Called on main thread when web worker encounters an error building a tile\n buildTileError(tile) {\n log('error', `Error building tile ${tile.key}:`, tile.error);\n this.forgetTile(tile.key);\n Tile.abortBuild(tile);\n }\n\n // Track tile build state\n tileBuildStart(key) {\n this.building_tiles = this.building_tiles || {};\n this.building_tiles[key] = true;\n log('trace', `tileBuildStart for ${key}: ${Object.keys(this.building_tiles).length}`);\n }\n\n tileBuildStop(key) {\n // Done building?\n if (this.building_tiles) {\n log('trace', `tileBuildStop for ${key}: ${Object.keys(this.building_tiles).length}`);\n delete this.building_tiles[key];\n this.checkBuildQueue();\n }\n }\n\n // Check status of tile building queue and notify scene when we're done\n checkBuildQueue() {\n if (!this.building_tiles || Object.keys(this.building_tiles).length === 0) {\n this.building_tiles = null;\n this.scene.tileManagerBuildDone();\n }\n }\n\n // Get a debug property across tiles\n getDebugProp(prop, filter) {\n var vals = [];\n for (var t in this.tiles) {\n if (this.tiles[t].debug[prop] != null && (typeof filter !== 'function' || filter(this.tiles[t]) === true)) {\n vals.push(this.tiles[t].debug[prop]);\n }\n }\n return vals;\n }\n\n // Sum of a debug property across tiles\n getDebugSum(prop, filter) {\n var sum = 0;\n for (var t in this.tiles) {\n if (this.tiles[t].debug[prop] != null && (typeof filter !== 'function' || filter(this.tiles[t]) === true)) {\n sum += this.tiles[t].debug[prop];\n }\n }\n return sum;\n }\n\n // Average of a debug property across tiles\n getDebugAverage(prop, filter) {\n return this.getDebugSum(prop, filter) / Object.keys(this.tiles).length;\n }\n\n}\n", "import Geo from './geo';\nimport Tile from './tile';\n\nexport default class TilePyramid {\n\n constructor() {\n this.coords = {};\n this.max_proxy_descendant_depth = 3; // # of levels to search up/down for proxy tiles\n this.max_proxy_ancestor_depth = 5;\n }\n\n sourceTiles(coord, source) {\n return (\n this.coords[coord.key] &&\n this.coords[coord.key].sources &&\n this.coords[coord.key].sources[source.name]);\n }\n\n addTile(tile) {\n // Add target tile\n let key = tile.coords.key;\n let coord = this.coords[key];\n if (!coord) {\n coord = this.coords[key] = { descendants: 0 };\n }\n\n if (!coord.sources) {\n coord.sources = {};\n }\n\n if (!coord.sources[tile.source.name]) {\n coord.sources[tile.source.name] = {};\n }\n coord.sources[tile.source.name][tile.style_zoom] = tile;\n\n // Increment reference count up the tile pyramid\n for (let z = tile.coords.z - 1; z >= 0; z--) {\n let up = Tile.coordinateAtZoom(tile.coords, z);\n if (!this.coords[up.key]) {\n this.coords[up.key] = { descendants: 0 };\n }\n this.coords[up.key].descendants++;\n }\n }\n\n removeTile(tile) {\n // Remove target tile\n let source_tiles = this.sourceTiles(tile.coords, tile.source);\n let key = tile.coords.key;\n\n if (source_tiles) {\n delete source_tiles[tile.style_zoom];\n if (Object.keys(source_tiles).length === 0) {\n // remove source\n delete this.coords[key].sources[tile.source.name];\n if (Object.keys(this.coords[key].sources).length === 0) {\n delete this.coords[key].sources;\n\n if (this.coords[key].descendants === 0) {\n // remove whole coord\n delete this.coords[key];\n }\n }\n }\n }\n\n // Decrement reference count up the tile pyramid\n for (let z = tile.coords.z - 1; z >= 0; z--) {\n let down = Tile.coordinateAtZoom(tile.coords, z);\n if (this.coords[down.key] && this.coords[down.key].descendants > 0) {\n this.coords[down.key].descendants--;\n if (this.coords[down.key].descendants === 0 && !this.coords[down.key].sources) {\n delete this.coords[down.key];\n }\n }\n }\n }\n\n getAncestor ({ coords, style_zoom, source }, level = 1) {\n if (level > this.max_proxy_ancestor_depth) {\n return;\n }\n\n // First check overzoomed tiles at same coordinate zoom\n if (style_zoom > source.max_coord_zoom) {\n let source_tiles = this.sourceTiles(coords, source);\n if (source_tiles) {\n for (let z = style_zoom - 1; z >= source.max_coord_zoom; z--) {\n if (source_tiles[z] && source_tiles[z].loaded) {\n return source_tiles[z];\n }\n }\n }\n style_zoom = source.max_coord_zoom;\n }\n\n // Check tiles at next zoom up\n style_zoom--;\n let parent = Tile.coordinateAtZoom(coords, coords.z - 1);\n let parent_tiles = this.sourceTiles(parent, source);\n if (parent_tiles && parent_tiles[style_zoom] && parent_tiles[style_zoom].loaded) {\n return parent_tiles[style_zoom];\n }\n // didn't find ancestor, try next level\n if (parent.z > 0) {\n return this.getAncestor({ coords: parent, style_zoom, source }, level + 1);\n }\n }\n\n getDescendants ({ coords, style_zoom, source }, level = 1) {\n let descendants = [];\n\n // First check overzoomed tiles at same coordinate zoom\n if (style_zoom >= source.max_coord_zoom) {\n let source_tiles = this.sourceTiles(coords, source);\n if (source_tiles) {\n let search_max_zoom = Math.max(Geo.default_view_max_zoom, style_zoom + this.max_proxy_descendant_depth);\n for (let z = style_zoom + 1; z <= search_max_zoom; z++) {\n if (source_tiles[z] && source_tiles[z].loaded) {\n descendants.push(source_tiles[z]);\n return descendants;\n }\n }\n }\n return descendants;\n }\n\n // Check tiles at next zoom down\n if (this.coords[coords.key] && this.coords[coords.key].descendants > 0) {\n style_zoom++;\n const children = Tile.childrenForCoordinate(coords);\n for (let c=0; c < children.length; c++) {\n const child = children[c];\n let child_tiles = this.sourceTiles(child, source);\n if (child_tiles && child_tiles[style_zoom] && child_tiles[style_zoom].loaded) {\n descendants.push(child_tiles[style_zoom]);\n }\n // didn't find child, try next level\n else if (level <= this.max_proxy_descendant_depth && child.z <= source.max_coord_zoom) {\n descendants.push(...this.getDescendants({ coords: child, source, style_zoom }, level + 1));\n }\n }\n }\n\n return descendants;\n }\n\n}\n", "// Debounce a function\n// https://davidwalsh.name/javascript-debounce-function\nexport default function debounce (func, wait) {\n var timeout;\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n func.apply(context, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n", @@ -539,7 +537,7 @@ "// Partial import of gl-matrix via modularized stack-gl forks\n// https://github.com/toji/gl-matrix\n// https://github.com/stackgl\n\n// vec3\n\n// Substitute 64-bit version\n// We need the extra precision when multiplying matrices w/mercator projected values\nconst vec3 = {\n fromValues (x, y, z) {\n var out = new Float64Array(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n }\n};\n\n\n// mat3\n\nimport {default as mat3_normalFromMat4} from 'gl-mat3/normal-from-mat4';\nimport {default as mat3_invert} from 'gl-mat3/invert';\n\nconst mat3 = {\n normalFromMat4: mat3_normalFromMat4,\n invert: mat3_invert\n};\n\n\n// mat4\n\nimport {default as mat4_multiply} from 'gl-mat4/multiply';\nimport {default as mat4_translate} from 'gl-mat4/translate';\nimport {default as mat4_scale} from 'gl-mat4/scale';\nimport {default as mat4_perspective} from 'gl-mat4/perspective';\nimport {default as mat4_lookAt} from 'gl-mat4/lookAt';\nimport {default as mat4_identity} from 'gl-mat4/identity';\nimport {default as mat4_copy} from 'gl-mat4/copy';\n\nconst mat4 = {\n multiply: mat4_multiply,\n translate: mat4_translate,\n scale: mat4_scale,\n perspective: mat4_perspective,\n lookAt: mat4_lookAt,\n identity: mat4_identity,\n copy: mat4_copy\n};\n\n\nexport {vec3, mat3, mat4};\n", "// http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\nexport default function hashString (string) {\n var hash = 0, i, chr, len;\n\n if (string.length === 0) {\n return hash;\n }\n\n for (i = 0, len = string.length; i < len; i++) {\n chr = string.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n}\n", "import version from './version';\nimport Thread from './thread';\nimport WorkerBroker from './worker_broker';\n\nconst LEVELS = {\n silent: -1,\n error: 0,\n warn: 1,\n info: 2,\n debug: 3,\n trace: 4\n};\n\nconst methods = {};\nlet logged_once = {};\n\nfunction methodForLevel (level) {\n if (Thread.is_main) {\n methods[level] = methods[level] || (console[level] ? console[level] : console.log).bind(console);\n return methods[level];\n }\n}\n\nexport default function log (opts, ...msg) {\n let level = (typeof opts === 'object') ? opts.level : opts;\n if (LEVELS[level] <= LEVELS[log.level]) {\n if (Thread.is_worker) {\n // Proxy to main thread\n WorkerBroker.postMessage({ method: '_logProxy', stringify: true }, opts, ...msg);\n }\n else {\n // Only log message once?\n if (typeof opts === 'object' && opts.once === true) {\n if (logged_once[JSON.stringify(msg)]) {\n return;\n }\n logged_once[JSON.stringify(msg)] = true;\n }\n\n // Write to console (on main thread)\n let logger = methodForLevel(level);\n if (msg.length > 1) {\n logger(`Tangram ${version} [${level}]: ${msg[0]}`, ...msg.slice(1));\n }\n else {\n logger(`Tangram ${version} [${level}]: ${msg[0]}`);\n }\n }\n }\n}\n\nlog.level = 'info';\nlog.workers = null;\n\nlog.setLevel = function (level) {\n log.level = level;\n\n if (Thread.is_main && Array.isArray(log.workers)) {\n WorkerBroker.postMessage(log.workers, '_logSetLevelProxy', level);\n }\n};\n\nif (Thread.is_main) {\n log.setWorkers = function (workers) {\n log.workers = workers;\n };\n\n log.reset = function () {\n logged_once = {};\n };\n}\n\nWorkerBroker.addTarget('_logProxy', log); // proxy log messages from worker to main thread\nWorkerBroker.addTarget('_logSetLevelProxy', log.setLevel); // proxy log level setting from main to worker thread\n", - "/* global MediaRecorder, ImageData */\nimport log from './log';\nimport {createObjectURL} from './urls';\nimport {StyleParser} from '../styles/style_parser';\n\nexport default class MediaCapture {\n\n constructor() {\n this.canvas = null;\n this.gl = null;\n this.screenshot_canvas = null;\n this.screenshot_context = null;\n this.queue_screenshot = null;\n this.video_capture = null;\n }\n\n setCanvas (canvas, gl) {\n this.canvas = canvas;\n this.gl = gl;\n }\n\n // Take a screenshot, returns a promise that resolves with the screenshot data when available\n // `background`: optional background color to blend screenshot with\n screenshot ({ background } = {}) {\n if (this.queue_screenshot != null) {\n return this.queue_screenshot.promise; // only capture one screenshot at a time\n }\n\n // Will resolve once rendering is complete and render buffer is captured\n this.queue_screenshot = { background };\n this.queue_screenshot.promise = new Promise((resolve, reject) => {\n this.queue_screenshot.resolve = resolve;\n this.queue_screenshot.reject = reject;\n });\n return this.queue_screenshot.promise;\n }\n\n // Called after rendering, captures render buffer and resolves promise with the image data\n completeScreenshot () {\n if (this.queue_screenshot != null) {\n // Firefox appears to have an issue where its alpha conversion overflows some channels when\n // the WebGL canvas content is captured. To get around this, we read pixels from the GL buffer\n // directly, then flip and unmulitply the alpha on each pixel to get the desired RGB values.\n // See https://github.com/tangrams/tangram/issues/551\n\n // Get raw pixels from GL\n let w = this.canvas.width;\n let h = this.canvas.height;\n let pixels = new Uint8Array(w * h * 4);\n this.gl.readPixels(0, 0, w, h, this.gl.RGBA, this.gl.UNSIGNED_BYTE, pixels);\n\n // Optional background to blend with (only RGB, alpha is ignored)\n let background = this.queue_screenshot.background;\n if (background && background !== 'transparent') {\n background = StyleParser.parseColor(background).slice(0, 3).map(c => c * 255);\n }\n else {\n background = null; // skip blend if transparent\n }\n\n // Flip Y (GL buffer is upside down)\n let flip = new Uint8ClampedArray(w * h * 4); // canvas requires 'clamped' array type\n for (let y=0; y < h; y++) {\n for (let x=0; x < w; x++) {\n let s = ((h - y - 1) * w + x) * 4; // source offset\n let d = (y * w + x) * 4; // destination offset\n let a = pixels[s + 3]; // unmultiply alpha\n flip[d + 0] = pixels[s + 0] * 255 / a;\n flip[d + 1] = pixels[s + 1] * 255 / a;\n flip[d + 2] = pixels[s + 2] * 255 / a;\n flip[d + 3] = a;\n\n if (background) {\n a /= 255;\n flip[d + 0] = (flip[d + 0] * a) + (background[0] * (1 - a));\n flip[d + 1] = (flip[d + 1] * a) + (background[1] * (1 - a));\n flip[d + 2] = (flip[d + 2] * a) + (background[2] * (1 - a));\n flip[d + 3] = 255;\n }\n }\n }\n\n // Draw flipped pixels to a canvas\n this.screenshot_canvas = this.screenshot_canvas || document.createElement('canvas');\n let canvas = this.screenshot_canvas;\n canvas.width = w;\n canvas.height = h;\n\n this.screenshot_context = this.screenshot_context || canvas.getContext('2d');\n let ctx = this.screenshot_context;\n let image = new ImageData(flip, w, h);\n ctx.putImageData(image, 0, 0);\n\n // Get data URL from canvas and convert to blob\n // Strip host/mimetype/etc., convert base64 to binary without UTF-8 mangling\n // Adapted from: https://gist.github.com/unconed/4370822\n const url = canvas.toDataURL('image/png');\n const data = atob(url.slice(22));\n const buffer = new Uint8Array(data.length);\n for (let i = 0; i < data.length; ++i) {\n buffer[i] = data.charCodeAt(i);\n }\n const blob = new Blob([buffer], { type: 'image/png' });\n\n // Resolve with screenshot data\n this.queue_screenshot.resolve({ url, blob, type: 'png' });\n this.queue_screenshot = null;\n }\n }\n\n // Starts capturing a video stream from the canvas\n startVideoCapture () {\n if (typeof window.MediaRecorder !== 'function' || !this.canvas || typeof this.canvas.captureStream !== 'function') {\n log('warn', 'Video capture (Canvas.captureStream and/or MediaRecorder APIs) not supported by browser');\n return false;\n }\n else if (this.video_capture) {\n log('warn', 'Video capture already in progress, call Scene.stopVideoCapture() first');\n return false;\n }\n\n // Start a new capture\n try {\n let cap = this.video_capture = {};\n cap.chunks = [];\n cap.stream = this.canvas.captureStream();\n cap.options = { mimeType: 'video/webm' }; // TODO: support other format options\n cap.media_recorder = new MediaRecorder(cap.stream, cap.options);\n cap.media_recorder.ondataavailable = (event) => {\n if (event.data.size > 0) {\n cap.chunks.push(event.data);\n }\n\n // Stopped recording? Create the final capture file blob\n if (cap.resolve) {\n let blob = new Blob(cap.chunks, { type: cap.options.mimeType });\n let url = createObjectURL(blob);\n\n // Explicitly remove all stream tracks, and set objects to null\n if (cap.stream) {\n let tracks = cap.stream.getTracks() || [];\n tracks.forEach(track => {\n track.stop();\n cap.stream.removeTrack(track);\n });\n }\n cap.stream = null;\n cap.media_recorder = null;\n this.video_capture = null;\n\n cap.resolve({ url, blob, type: 'webm' });\n }\n };\n cap.media_recorder.start();\n }\n catch (e) {\n this.video_capture = null;\n log('error', 'Scene video capture failed', e);\n return false;\n }\n return true;\n }\n\n // Stops capturing a video stream from the canvas, returns a promise that resolves with the video when available\n stopVideoCapture () {\n if (!this.video_capture) {\n log('warn', 'No scene video capture in progress, call Scene.startVideoCapture() first');\n return Promise.resolve({});\n }\n\n // Promise that will resolve when final stream is available\n this.video_capture.promise = new Promise((resolve, reject) => {\n this.video_capture.resolve = resolve;\n this.video_capture.reject = reject;\n });\n\n // Stop recording\n this.video_capture.media_recorder.stop();\n\n return this.video_capture.promise;\n }\n\n}\n", + "/* global MediaRecorder, ImageData */\nimport log from './log';\nimport {createObjectURL} from './urls';\nimport StyleParser from '../styles/style_parser';\n\nexport default class MediaCapture {\n\n constructor() {\n this.canvas = null;\n this.gl = null;\n this.screenshot_canvas = null;\n this.screenshot_context = null;\n this.queue_screenshot = null;\n this.video_capture = null;\n }\n\n setCanvas (canvas, gl) {\n this.canvas = canvas;\n this.gl = gl;\n }\n\n // Take a screenshot, returns a promise that resolves with the screenshot data when available\n // `background`: optional background color to blend screenshot with\n screenshot ({ background } = {}) {\n if (this.queue_screenshot != null) {\n return this.queue_screenshot.promise; // only capture one screenshot at a time\n }\n\n // Will resolve once rendering is complete and render buffer is captured\n this.queue_screenshot = { background };\n this.queue_screenshot.promise = new Promise((resolve, reject) => {\n this.queue_screenshot.resolve = resolve;\n this.queue_screenshot.reject = reject;\n });\n return this.queue_screenshot.promise;\n }\n\n // Called after rendering, captures render buffer and resolves promise with the image data\n completeScreenshot () {\n if (this.queue_screenshot != null) {\n // Firefox appears to have an issue where its alpha conversion overflows some channels when\n // the WebGL canvas content is captured. To get around this, we read pixels from the GL buffer\n // directly, then flip and unmulitply the alpha on each pixel to get the desired RGB values.\n // See https://github.com/tangrams/tangram/issues/551\n\n // Get raw pixels from GL\n let w = this.canvas.width;\n let h = this.canvas.height;\n let pixels = new Uint8Array(w * h * 4);\n this.gl.readPixels(0, 0, w, h, this.gl.RGBA, this.gl.UNSIGNED_BYTE, pixels);\n\n // Optional background to blend with (only RGB, alpha is ignored)\n let background = this.queue_screenshot.background;\n if (background && background !== 'transparent') {\n background = StyleParser.parseColor(background).slice(0, 3).map(c => c * 255);\n }\n else {\n background = null; // skip blend if transparent\n }\n\n // Flip Y (GL buffer is upside down)\n let flip = new Uint8ClampedArray(w * h * 4); // canvas requires 'clamped' array type\n for (let y=0; y < h; y++) {\n for (let x=0; x < w; x++) {\n let s = ((h - y - 1) * w + x) * 4; // source offset\n let d = (y * w + x) * 4; // destination offset\n let a = pixels[s + 3]; // unmultiply alpha\n flip[d + 0] = pixels[s + 0] * 255 / a;\n flip[d + 1] = pixels[s + 1] * 255 / a;\n flip[d + 2] = pixels[s + 2] * 255 / a;\n flip[d + 3] = a;\n\n if (background) {\n a /= 255;\n flip[d + 0] = (flip[d + 0] * a) + (background[0] * (1 - a));\n flip[d + 1] = (flip[d + 1] * a) + (background[1] * (1 - a));\n flip[d + 2] = (flip[d + 2] * a) + (background[2] * (1 - a));\n flip[d + 3] = 255;\n }\n }\n }\n\n // Draw flipped pixels to a canvas\n this.screenshot_canvas = this.screenshot_canvas || document.createElement('canvas');\n let canvas = this.screenshot_canvas;\n canvas.width = w;\n canvas.height = h;\n\n this.screenshot_context = this.screenshot_context || canvas.getContext('2d');\n let ctx = this.screenshot_context;\n let image = new ImageData(flip, w, h);\n ctx.putImageData(image, 0, 0);\n\n // Get data URL from canvas and convert to blob\n // Strip host/mimetype/etc., convert base64 to binary without UTF-8 mangling\n // Adapted from: https://gist.github.com/unconed/4370822\n const url = canvas.toDataURL('image/png');\n const data = atob(url.slice(22));\n const buffer = new Uint8Array(data.length);\n for (let i = 0; i < data.length; ++i) {\n buffer[i] = data.charCodeAt(i);\n }\n const blob = new Blob([buffer], { type: 'image/png' });\n\n // Resolve with screenshot data\n this.queue_screenshot.resolve({ url, blob, type: 'png' });\n this.queue_screenshot = null;\n }\n }\n\n // Starts capturing a video stream from the canvas\n startVideoCapture () {\n if (typeof window.MediaRecorder !== 'function' || !this.canvas || typeof this.canvas.captureStream !== 'function') {\n log('warn', 'Video capture (Canvas.captureStream and/or MediaRecorder APIs) not supported by browser');\n return false;\n }\n else if (this.video_capture) {\n log('warn', 'Video capture already in progress, call Scene.stopVideoCapture() first');\n return false;\n }\n\n // Start a new capture\n try {\n let cap = this.video_capture = {};\n cap.chunks = [];\n cap.stream = this.canvas.captureStream();\n cap.options = { mimeType: 'video/webm' }; // TODO: support other format options\n cap.media_recorder = new MediaRecorder(cap.stream, cap.options);\n cap.media_recorder.ondataavailable = (event) => {\n if (event.data.size > 0) {\n cap.chunks.push(event.data);\n }\n\n // Stopped recording? Create the final capture file blob\n if (cap.resolve) {\n let blob = new Blob(cap.chunks, { type: cap.options.mimeType });\n let url = createObjectURL(blob);\n\n // Explicitly remove all stream tracks, and set objects to null\n if (cap.stream) {\n let tracks = cap.stream.getTracks() || [];\n tracks.forEach(track => {\n track.stop();\n cap.stream.removeTrack(track);\n });\n }\n cap.stream = null;\n cap.media_recorder = null;\n this.video_capture = null;\n\n cap.resolve({ url, blob, type: 'webm' });\n }\n };\n cap.media_recorder.start();\n }\n catch (e) {\n this.video_capture = null;\n log('error', 'Scene video capture failed', e);\n return false;\n }\n return true;\n }\n\n // Stops capturing a video stream from the canvas, returns a promise that resolves with the video when available\n stopVideoCapture () {\n if (!this.video_capture) {\n log('warn', 'No scene video capture in progress, call Scene.startVideoCapture() first');\n return Promise.resolve({});\n }\n\n // Promise that will resolve when final stream is available\n this.video_capture.promise = new Promise((resolve, reject) => {\n this.video_capture.resolve = resolve;\n this.video_capture.reject = reject;\n });\n\n // Stop recording\n this.video_capture.media_recorder.stop();\n\n return this.video_capture.promise;\n }\n\n}\n", "// Deep/recursive merge of one or more source objects into a destination object\nexport default function mergeObjects (dest, ...sources) {\n for (let s=0; s < sources.length; s++) {\n let source = sources[s];\n if (!source) {\n continue;\n }\n for (let key in source) {\n let value = source[key];\n // Recursively merge the source into the destination if it is a a non-null key/value object\n // (e.g. don't merge arrays, those are treated as scalar values; null values will overwrite/erase\n // the previous destination value)\n if (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n if (dest[key] !== null && typeof dest[key] === 'object' && !Array.isArray(dest[key])) {\n dest[key] = mergeObjects(dest[key], value);\n }\n else {\n dest[key] = mergeObjects({}, value); // destination not an object, overwrite\n }\n }\n // Overwrite the previous destination value if the source property is: a scalar (number/string),\n // an array, or a null value\n else if (value !== undefined) {\n dest[key] = value;\n }\n // Undefined source properties are ignored\n }\n\n }\n return dest;\n}\n", "import Vector from '../vector';\n\nexport default class OBB {\n\n constructor (x, y, a, w, h) {\n this.dimension = [w, h];\n this.angle = a;\n this.centroid = [x, y];\n this.quad = [];\n this.axes = [];\n\n this.update();\n }\n\n move (px, py) {\n \tthis.centroid = [px, py];\n\n \tthis.update();\n }\n\n getExtent () {\n \tlet inf = 1e6;\n \tlet aabb = [inf, inf, -inf, -inf];\n\n \tfor (let i = 0; i < 4; ++i) {\n aabb[0] = Math.min(this.quad[i][0], aabb[0]);\n aabb[1] = Math.min(this.quad[i][1], aabb[1]);\n aabb[2] = Math.max(this.quad[i][0], aabb[2]);\n aabb[3] = Math.max(this.quad[i][1], aabb[3]);\n \t}\n\n \treturn aabb;\n }\n\n perpAxes () {\n \tthis.axes[0] = Vector.normalize(Vector.sub(this.quad[2], this.quad[3]));\n \tthis.axes[1] = Vector.normalize(Vector.sub(this.quad[2], this.quad[1]));\n }\n\n update () {\n \tlet x = [ Math.cos(this.angle), Math.sin(this.angle)];\n \tlet y = [-Math.sin(this.angle), Math.cos(this.angle)];\n\n \tx = Vector.mult(x, this.dimension[0] / 2.0);\n \ty = Vector.mult(y, this.dimension[1] / 2.0);\n\n \tthis.quad[0] = Vector.sub(Vector.sub(this.centroid, x), y); // lower-left\n \tthis.quad[1] = Vector.sub(Vector.add(this.centroid, x), y); // lower-right\n \tthis.quad[2] = Vector.add(Vector.add(this.centroid, x), y); // uper-right\n \tthis.quad[3] = Vector.add(Vector.sub(this.centroid, x), y); // uper-left\n\n \tthis.perpAxes();\n }\n\n static projectToAxis (obb, axis) {\n \tlet inf = 1e6;\n \tlet min = inf;\n \tlet max = -inf;\n\n \tlet quad = obb.quad;\n\n \t// for each axis, project obb quad to it and find min and max values\n \tfor (let i = 0; i < 4; ++i) {\n let d = Vector.dot(quad[i], axis);\n min = Math.min(min, d);\n max = Math.max(max, d);\n \t}\n\n \treturn [min, max];\n }\n\n static axisCollide (obb_a, obb_b, axes) {\n \tfor (let i = 0; i < 2; ++i) {\n \t\tlet a_proj = OBB.projectToAxis(obb_a, axes[i]);\n \t\tlet b_proj = OBB.projectToAxis(obb_b, axes[i]);\n\n \t\tif (b_proj[0] > a_proj[1] || b_proj[1] < a_proj[0]) {\n \t\t\treturn false;\n \t\t}\n \t}\n \treturn true;\n }\n\n static intersect(obb_a, obb_b) {\n \treturn OBB.axisCollide(obb_a, obb_b, obb_a.axes) && OBB.axisCollide(obb_a, obb_b, obb_b.axes);\n }\n\n}\n\n", "/* global self, WorkerGlobalScope */\n\n// Promises polyfill\nimport 'core-js/es6/promise';\n\n// Object.assign polyfill\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\nif (typeof Object.assign !== 'function') {\n (function () {\n Object.assign = function (target) {\n 'use strict';\n // We must check against these specific cases.\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n })();\n}\n\n// Math.hypot polyfill\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot\nMath.hypot = Math.hypot || function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};\n\n// Math.log2 polyfill\nMath.log2 = Math.log2 || function(x) { return Math.log(x) * Math.LOG2E; };\n\n// performance.now() polyfill\nlet perf;\nif (typeof window !== 'undefined') {\n if ('performance' in window === false) {\n window.performance = {};\n }\n perf = window.performance;\n}\nelse if (typeof self !== 'undefined' && typeof WorkerGlobalScope !== \"undefined\" && self instanceof WorkerGlobalScope) {\n if ('performance' in self === false) {\n self.performance = {};\n }\n perf = self.performance;\n}\n\nif (perf && typeof perf.now !== 'function') {\n let start = +new Date();\n perf.now = function() { return +new Date() - start; };\n}\n", diff --git a/dist/tangram.min.js b/dist/tangram.min.js index c27f5da6e..5fb77949a 100644 --- a/dist/tangram.min.js +++ b/dist/tangram.min.js @@ -1,20 +1,20 @@ -!function(){var e=("undefined"==typeof self||!("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope))&&("undefined"!=typeof module&&module.exports||"undefined"!=typeof window);if(e)var t=arguments.callee.toString(),r="undefined"!=typeof document&&void 0!==document.currentScript?document.currentScript.src:"",n="";!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Tangram=e()}}(function(){var e;return function i(e,t,r){function n(a,s){if(!t[a]){if(!e[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var c=t[a]={exports:{}};e[a][0].call(c.exports,function(t){var r=e[a][1][t];return n(r?r:t)},c,c.exports,i,e,t,r)}return t[a].exports}for(var o="function"==typeof require&&require,a=0;a=t)return[e];for(var r,n,i=[],o=0;t>o;o++){var s=a(e[o]);0!==s&&(void 0===n&&(n=0>s),n===0>s?(r&&i.push(r),r=[e[o]]):r.push(e[o]))}return r&&i.push(r),i}function a(e){for(var t,r,n=0,i=0,o=e.length,a=o-1;o>i;a=i++)t=e[i],r=e[a],n+=(r.x-t.x)*(t.y+r.y);return n}var s=e("@mapbox/point-geometry");t.exports=r,r.types=["Unknown","Point","LineString","Polygon"],r.prototype.loadGeometry=function(){var e=this._pbf;e.pos=this._geometry;for(var t,r=e.readVarint()+e.pos,n=1,i=0,o=0,a=0,u=[];e.pos>3}if(i--,1===n||2===n)o+=e.readSVarint(),a+=e.readSVarint(),1===n&&(t&&u.push(t),t=[]),t.push(new s(o,a));else{if(7!==n)throw new Error("unknown command "+n);t&&t.push(t[0].clone())}}return t&&u.push(t),u},r.prototype.bbox=function(){var e=this._pbf;e.pos=this._geometry;for(var t=e.readVarint()+e.pos,r=1,n=0,i=0,o=0,a=1/0,s=-1/0,u=1/0,l=-1/0;e.pos>3}if(n--,1===r||2===r)i+=e.readSVarint(),o+=e.readSVarint(),a>i&&(a=i),i>s&&(s=i),u>o&&(u=o),o>l&&(l=o);else if(7!==r)throw new Error("unknown command "+r)}return[a,u,s,l]},r.prototype.toGeoJSON=function(e,t,n){function i(e){for(var t=0;t>3;t=1===n?e.readString():2===n?e.readFloat():3===n?e.readDouble():4===n?e.readVarint64():5===n?e.readVarint():6===n?e.readSVarint():7===n?e.readBoolean():null}return t}var o=e("./vectortilefeature.js");t.exports=r,r.prototype.feature=function(e){if(0>e||e>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];var t=this._pbf.readVarint()+this._pbf.pos;return new o(this._pbf,t,this.extent,this._keys,this._values)}},{"./vectortilefeature.js":4}],6:[function(e,t){"use strict";function r(){if(s.length)throw s.shift()}function n(e){var t;t=a.length?a.pop():new i,t.task=e,o(t)}function i(){this.task=null}var o=e("./raw"),a=[],s=[],u=o.makeRequestCallFromTimer(r);t.exports=n,i.prototype.call=function(){try{this.task.call()}catch(e){n.onerror?n.onerror(e):(s.push(e),u())}finally{this.task=null,a[a.length]=this}}},{"./raw":7}],7:[function(e,t){(function(e){"use strict";function r(e){s.length||(a(),u=!0),s[s.length]=e}function n(){for(;lc){for(var t=0,r=s.length-l;r>t;t++)s[t]=s[t+l];s.length-=l,l=0}}s.length=0,l=0,u=!1}function i(e){var t=1,r=new h(e),n=document.createTextNode("");return r.observe(n,{characterData:!0}),function(){t=-t,n.data=t}}function o(e){return function(){function t(){clearTimeout(r),clearInterval(n),e()}var r=setTimeout(t,0),n=setInterval(t,50)}}t.exports=r;var a,s=[],u=!1,l=0,c=1024,f="undefined"!=typeof e?e:self,h=f.MutationObserver||f.WebKitMutationObserver;a="function"==typeof h?i(n):o(n),r.requestFlush=a,r.makeRequestCallFromTimer=o}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],8:[function(e,t,r){"use strict";function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function i(e){return 3*e.length/4-n(e)}function o(e){var t,r,i,o,a,s=e.length;o=n(e),a=new f(3*s/4-o),r=o>0?s-4:s;var u=0;for(t=0;r>t;t+=4)i=c[e.charCodeAt(t)]<<18|c[e.charCodeAt(t+1)]<<12|c[e.charCodeAt(t+2)]<<6|c[e.charCodeAt(t+3)],a[u++]=i>>16&255,a[u++]=i>>8&255,a[u++]=255&i;return 2===o?(i=c[e.charCodeAt(t)]<<2|c[e.charCodeAt(t+1)]>>4,a[u++]=255&i):1===o&&(i=c[e.charCodeAt(t)]<<10|c[e.charCodeAt(t+1)]<<4|c[e.charCodeAt(t+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i),a}function a(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}function s(e,t,r){for(var n,i=[],o=t;r>o;o+=3)n=(e[o]<<16)+(e[o+1]<<8)+e[o+2],i.push(a(n));return i.join("")}function u(e){for(var t,r=e.length,n=r%3,i="",o=[],a=16383,u=0,c=r-n;c>u;u+=a)o.push(s(e,u,u+a>c?c:u+a));return 1===n?(t=e[r-1],i+=l[t>>2],i+=l[t<<4&63],i+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],i+=l[t>>10],i+=l[t>>4&63],i+=l[t<<2&63],i+="="),o.push(i),o.join("")}r.byteLength=i,r.toByteArray=o,r.fromByteArray=u;for(var l=[],c=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,p=h.length;p>d;++d)l[d]=h[d],c[h.charCodeAt(d)]=d;c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},{}],9:[function(){},{}],10:[function(e,t,r){"use strict";function n(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(t){return!1}}function i(e){if(e>K)throw new RangeError("Invalid typed array length");var t=new Uint8Array(e);return t.__proto__=o.prototype,t}function o(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return l(e)}return a(e,t,r)}function a(e,t,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return Z(e)?h(e,t,r):"string"==typeof e?c(e,t):d(e)}function s(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(0>e)throw new RangeError('"size" argument must not be negative')}function u(e,t,r){return s(e),0>=e?i(e):void 0!==t?"string"==typeof r?i(e).fill(t,r):i(e).fill(t):i(e)}function l(e){return s(e),i(0>e?0:0|p(e))}function c(e,t){if(("string"!=typeof t||""===t)&&(t="utf8"),!o.isEncoding(t))throw new TypeError('"encoding" must be a valid string encoding');var r=0|m(e,t),n=i(r),a=n.write(e,t);return a!==r&&(n=n.slice(0,a)),n}function f(e){for(var t=e.length<0?0:0|p(e.length),r=i(t),n=0;t>n;n+=1)r[n]=255&e[n];return r}function h(e,t,r){if(0>t||e.byteLength=K)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+K.toString(16)+" bytes");return 0|e}function _(e){return+e!=e&&(e=0),o.alloc(+e)}function m(e,t){if(o.isBuffer(e))return e.length;if(H(e)||Z(e))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return q(e).length;default:if(n)return B(e).length;t=(""+t).toLowerCase(),n=!0}}function g(e,t,r){var n=!1;if((void 0===t||0>t)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),0>=r)return"";if(r>>>=0,t>>>=0,t>=r)return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,r);case"utf8":case"utf-8":return R(this,t,r);case"ascii":return z(this,t,r);case"latin1":case"binary":return O(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function v(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:-2147483648>r&&(r=-2147483648),r=+r,X(r)&&(r=i?0:e.length-1),0>r&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(0>r){if(!i)return-1;r=0}if("string"==typeof t&&(t=o.from(t,n)),o.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t=255&t,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){function o(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}var a=1,s=e.length,u=t.length;if(void 0!==n&&(n=String(n).toLowerCase(),"ucs2"===n||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}var l;if(i){var c=-1;for(l=r;s>l;l++)if(o(e,l)===o(t,-1===c?0:l-c)){if(-1===c&&(c=l),l-c+1===u)return c*a}else-1!==c&&(l-=l-c),c=-1}else for(r+u>s&&(r=s-u),l=r;l>=0;l--){for(var f=!0,h=0;u>h;h++)if(o(e,l+h)!==o(t,h)){f=!1;break}if(f)return l}return-1}function x(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n),n>i&&(n=i)):n=i;var o=t.length;if(o%2!==0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;n>a;++a){var s=parseInt(t.substr(2*a,2),16);if(X(s))return a;e[r+a]=s}return a}function w(e,t,r,n){return W(B(t,e.length-r),e,r,n)}function k(e,t,r,n){return W(G(t),e,r,n)}function A(e,t,r,n){return k(e,t,r,n)}function T(e,t,r,n){return W(q(t),e,r,n)}function E(e,t,r,n){return W(V(t,e.length-r),e,r,n)}function S(e,t,r){return Y.fromByteArray(0===t&&r===e.length?e:e.slice(t,r))}function R(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;r>i;){var o=e[i],a=null,s=o>239?4:o>223?3:o>191?2:1;if(r>=i+s){var u,l,c,f;switch(s){case 1:128>o&&(a=o);break;case 2:u=e[i+1],128===(192&u)&&(f=(31&o)<<6|63&u,f>127&&(a=f));break;case 3:u=e[i+1],l=e[i+2],128===(192&u)&&128===(192&l)&&(f=(15&o)<<12|(63&u)<<6|63&l,f>2047&&(55296>f||f>57343)&&(a=f));break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],128===(192&u)&&128===(192&l)&&128===(192&c)&&(f=(15&o)<<18|(63&u)<<12|(63&l)<<6|63&c,f>65535&&1114112>f&&(a=f))}}null===a?(a=65533,s=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=s}return M(n)}function M(e){var t=e.length;if($>=t)return String.fromCharCode.apply(String,e);for(var r="",n=0;t>n;)r+=String.fromCharCode.apply(String,e.slice(n,n+=$));return r}function z(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;r>i;++i)n+=String.fromCharCode(127&e[i]);return n}function O(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;r>i;++i)n+=String.fromCharCode(e[i]);return n}function P(e,t,r){var n=e.length;(!t||0>t)&&(t=0),(!r||0>r||r>n)&&(r=n);for(var i="",o=t;r>o;++o)i+=U(e[o]);return i}function N(e,t,r){for(var n=e.slice(t,r),i="",o=0;oe)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function L(e,t,r,n,i,a){if(!o.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||a>t)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function I(e,t,r,n){if(r+n>e.length)throw new RangeError("Index out of range");if(0>r)throw new RangeError("Index out of range")}function C(e,t,r,n,i){return t=+t,r>>>=0,i||I(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(e,t,r,n,23,4),r+4}function F(e,t,r,n,i){return t=+t,r>>>=0,i||I(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(e,t,r,n,52,8),r+8}function D(e){if(e=e.trim().replace(Q,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function U(e){return 16>e?"0"+e.toString(16):e.toString(16)}function B(e,t){t=t||1/0;for(var r,n=e.length,i=null,o=[],a=0;n>a;++a){if(r=e.charCodeAt(a),r>55295&&57344>r){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(56320>r){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,128>r){if((t-=1)<0)break;o.push(r)}else if(2048>r){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(65536>r){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(1114112>r))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function G(e){for(var t=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function q(e){return Y.toByteArray(D(e))}function W(e,t,r,n){for(var i=0;n>i&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function Z(e){return e instanceof ArrayBuffer||null!=e&&null!=e.constructor&&"ArrayBuffer"===e.constructor.name&&"number"==typeof e.byteLength}function H(e){return"function"==typeof ArrayBuffer.isView&&ArrayBuffer.isView(e)}function X(e){return e!==e}var Y=e("base64-js"),J=e("ieee754");r.Buffer=o,r.SlowBuffer=_,r.INSPECT_MAX_BYTES=50;var K=2147483647;r.kMaxLength=K,o.TYPED_ARRAY_SUPPORT=n(),o.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),o.poolSize=8192,o.from=function(e,t,r){return a(e,t,r)},o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,o.alloc=function(e,t,r){return u(e,t,r)},o.allocUnsafe=function(e){return l(e)},o.allocUnsafeSlow=function(e){return l(e)},o.isBuffer=function(e){return null!=e&&e._isBuffer===!0},o.compare=function(e,t){if(!o.isBuffer(e)||!o.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);a>i;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return n>r?-1:r>n?1:0},o.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return o.alloc(0);var r;if(void 0===t)for(t=0,r=0;rt;t+=2)v(this,t,t+1);return this},o.prototype.swap32=function(){var e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;e>t;t+=4)v(this,t,t+3),v(this,t+1,t+2);return this},o.prototype.swap64=function(){var e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;e>t;t+=8)v(this,t,t+7),v(this,t+1,t+6),v(this,t+2,t+5),v(this,t+3,t+4);return this},o.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?R(this,0,e):g.apply(this,arguments)},o.prototype.equals=function(e){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?!0:0===o.compare(this,e)},o.prototype.inspect=function(){var e="",t=r.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},o.prototype.compare=function(e,t,r,n,i){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),0>t||r>e.length||0>n||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,s=r-t,u=Math.min(a,s),l=this.slice(n,i),c=e.slice(t,r),f=0;u>f;++f)if(l[f]!==c[f]){a=l[f],s=c[f];break}return s>a?-1:a>s?1:0},o.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},o.prototype.indexOf=function(e,t,r){return y(this,e,t,r,!0)},o.prototype.lastIndexOf=function(e,t,r){return y(this,e,t,r,!1)},o.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(0>r||0>t)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return x(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":return k(this,e,t,r);case"latin1":case"binary":return A(this,e,t,r);case"base64":return T(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;o.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,0>e?(e+=r,0>e&&(e=0)):e>r&&(e=r),0>t?(t+=r,0>t&&(t=0)):t>r&&(t=r),e>t&&(t=e);var n=this.subarray(e,t);return n.__proto__=o.prototype,n},o.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var n=this[e],i=1,o=0;++o>>=0,t>>>=0,r||j(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},o.prototype.readUInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var n=this[e],i=1,o=0;++o=i&&(n-=Math.pow(2,8*t)),n},o.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},o.prototype.readInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},o.prototype.readInt16LE=function(e,t){e>>>=0,t||j(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(e,t){e>>>=0,t||j(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return e>>>=0,t||j(e,4,this.length),J.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return e>>>=0,t||j(e,4,this.length),J.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return e>>>=0,t||j(e,8,this.length),J.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return e>>>=0,t||j(e,8,this.length),J.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;L(this,e,t,r,i,0)}var o=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;L(this,e,t,r,i,0)}var o=r-1,a=1;for(this[t+o]=255&e;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+r},o.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,1,255,0),this[t]=255&e,t+1},o.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},o.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++oe&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},o.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)0>e&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},o.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,1,127,-128),0>e&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},o.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeFloatLE=function(e,t,r){return C(this,e,t,!0,r)},o.prototype.writeFloatBE=function(e,t,r){return C(this,e,t,!1,r)},o.prototype.writeDoubleLE=function(e,t,r){return F(this,e,t,!0,r)},o.prototype.writeDoubleBE=function(e,t,r){return F(this,e,t,!1,r)},o.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&r>n&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(0>t)throw new RangeError("targetStart out of bounds");if(0>r||r>=this.length)throw new RangeError("sourceStart out of bounds");if(0>n)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-tr&&n>t)for(i=o-1;i>=0;--i)e[i+t]=this[i+r];else if(1e3>o)for(i=0;o>i;++i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,r+o),t);return o},o.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),1===e.length){var i=e.charCodeAt(0);256>i&&(e=i)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!o.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof e&&(e=255&e);if(0>t||this.length=r)return this;t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var a;if("number"==typeof e)for(a=t;r>a;++a)this[a]=e;else{var s=o.isBuffer(e)?e:new o(e,n),u=s.length;for(a=0;r-t>a;++a)this[a+t]=s[a%u]}return this};var Q=/[^+\/0-9A-Za-z-_]/g},{"base64-js":8,ieee754:98}],11:[function(e,t){e("../modules/es6.object.to-string"),e("../modules/es6.string.iterator"),e("../modules/web.dom.iterable"),e("../modules/es6.promise"),t.exports=e("../modules/_core").Promise},{"../modules/_core":19,"../modules/es6.object.to-string":71,"../modules/es6.promise":72,"../modules/es6.string.iterator":73,"../modules/web.dom.iterable":74}],12:[function(e,t){t.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},{}],13:[function(e,t){var r=e("./_wks")("unscopables"),n=Array.prototype;void 0==n[r]&&e("./_hide")(n,r,{}),t.exports=function(e){n[r][e]=!0}},{"./_hide":30,"./_wks":68}],14:[function(e,t){t.exports=function(e,t,r,n){if(!(e instanceof t)||void 0!==n&&n in e)throw TypeError(r+": incorrect invocation!");return e}},{}],15:[function(e,t){var r=e("./_is-object");t.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":36}],16:[function(e,t){var r=e("./_to-iobject"),n=e("./_to-length"),i=e("./_to-index");t.exports=function(e){return function(t,o,a){var s,u=r(t),l=n(u.length),c=i(a,l);if(e&&o!=o){for(;l>c;)if(s=u[c++],s!=s)return!0}else for(;l>c;c++)if((e||c in u)&&u[c]===o)return e||c||0;return!e&&-1}}},{"./_to-index":61,"./_to-iobject":63,"./_to-length":64}],17:[function(e,t){var r=e("./_cof"),n=e("./_wks")("toStringTag"),i="Arguments"==r(function(){return arguments}()),o=function(e,t){try{return e[t]}catch(r){}};t.exports=function(e){var t,a,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(a=o(t=Object(e),n))?a:i?r(t):"Object"==(s=r(t))&&"function"==typeof t.callee?"Arguments":s}},{"./_cof":18,"./_wks":68}],18:[function(e,t){var r={}.toString;t.exports=function(e){return r.call(e).slice(8,-1)}},{}],19:[function(e,t){var r=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},{}],20:[function(e,t){var r=e("./_a-function");t.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":12}],21:[function(e,t){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},{}],22:[function(e,t){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":26}],23:[function(e,t){var r=e("./_is-object"),n=e("./_global").document,i=r(n)&&r(n.createElement);t.exports=function(e){return i?n.createElement(e):{}}},{"./_global":28,"./_is-object":36}],24:[function(e,t){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],25:[function(e,t){var r=e("./_global"),n=e("./_core"),i=e("./_hide"),o=e("./_redefine"),a=e("./_ctx"),s="prototype",u=function(e,t,l){var c,f,h,d,p=e&u.F,_=e&u.G,m=e&u.S,g=e&u.P,v=e&u.B,y=_?r:m?r[t]||(r[t]={}):(r[t]||{})[s],b=_?n:n[t]||(n[t]={}),x=b[s]||(b[s]={});_&&(l=t);for(c in l)f=!p&&y&&void 0!==y[c],h=(f?y:l)[c],d=v&&f?a(h,r):g&&"function"==typeof h?a(Function.call,h):h,y&&o(y,c,h,e&u.U),b[c]!=h&&i(b,c,d),g&&x[c]!=h&&(x[c]=h)};r.core=n,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},{"./_core":19,"./_ctx":20,"./_global":28,"./_hide":30,"./_redefine":53}],26:[function(e,t){t.exports=function(e){try{return!!e()}catch(t){return!0 +!function(){var e=("undefined"==typeof self||!("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope))&&("undefined"!=typeof module&&module.exports||"undefined"!=typeof window);if(e)var t=arguments.callee.toString(),r="undefined"!=typeof document&&void 0!==document.currentScript?document.currentScript.src:"",n="";!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Tangram=e()}}(function(){var e;return function i(e,t,r){function n(a,s){if(!t[a]){if(!e[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var c=t[a]={exports:{}};e[a][0].call(c.exports,function(t){var r=e[a][1][t];return n(r?r:t)},c,c.exports,i,e,t,r)}return t[a].exports}for(var o="function"==typeof require&&require,a=0;a=t)return[e];for(var r,n,i=[],o=0;t>o;o++){var s=a(e[o]);0!==s&&(void 0===n&&(n=0>s),n===0>s?(r&&i.push(r),r=[e[o]]):r.push(e[o]))}return r&&i.push(r),i}function a(e){for(var t,r,n=0,i=0,o=e.length,a=o-1;o>i;a=i++)t=e[i],r=e[a],n+=(r.x-t.x)*(t.y+r.y);return n}var s=e("@mapbox/point-geometry");t.exports=r,r.types=["Unknown","Point","LineString","Polygon"],r.prototype.loadGeometry=function(){var e=this._pbf;e.pos=this._geometry;for(var t,r=e.readVarint()+e.pos,n=1,i=0,o=0,a=0,u=[];e.pos>3}if(i--,1===n||2===n)o+=e.readSVarint(),a+=e.readSVarint(),1===n&&(t&&u.push(t),t=[]),t.push(new s(o,a));else{if(7!==n)throw new Error("unknown command "+n);t&&t.push(t[0].clone())}}return t&&u.push(t),u},r.prototype.bbox=function(){var e=this._pbf;e.pos=this._geometry;for(var t=e.readVarint()+e.pos,r=1,n=0,i=0,o=0,a=1/0,s=-1/0,u=1/0,l=-1/0;e.pos>3}if(n--,1===r||2===r)i+=e.readSVarint(),o+=e.readSVarint(),a>i&&(a=i),i>s&&(s=i),u>o&&(u=o),o>l&&(l=o);else if(7!==r)throw new Error("unknown command "+r)}return[a,u,s,l]},r.prototype.toGeoJSON=function(e,t,n){function i(e){for(var t=0;t>3;t=1===n?e.readString():2===n?e.readFloat():3===n?e.readDouble():4===n?e.readVarint64():5===n?e.readVarint():6===n?e.readSVarint():7===n?e.readBoolean():null}return t}var o=e("./vectortilefeature.js");t.exports=r,r.prototype.feature=function(e){if(0>e||e>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];var t=this._pbf.readVarint()+this._pbf.pos;return new o(this._pbf,t,this.extent,this._keys,this._values)}},{"./vectortilefeature.js":4}],6:[function(e,t){"use strict";function r(){if(s.length)throw s.shift()}function n(e){var t;t=a.length?a.pop():new i,t.task=e,o(t)}function i(){this.task=null}var o=e("./raw"),a=[],s=[],u=o.makeRequestCallFromTimer(r);t.exports=n,i.prototype.call=function(){try{this.task.call()}catch(e){n.onerror?n.onerror(e):(s.push(e),u())}finally{this.task=null,a[a.length]=this}}},{"./raw":7}],7:[function(e,t){(function(e){"use strict";function r(e){s.length||(a(),u=!0),s[s.length]=e}function n(){for(;lc){for(var t=0,r=s.length-l;r>t;t++)s[t]=s[t+l];s.length-=l,l=0}}s.length=0,l=0,u=!1}function i(e){var t=1,r=new h(e),n=document.createTextNode("");return r.observe(n,{characterData:!0}),function(){t=-t,n.data=t}}function o(e){return function(){function t(){clearTimeout(r),clearInterval(n),e()}var r=setTimeout(t,0),n=setInterval(t,50)}}t.exports=r;var a,s=[],u=!1,l=0,c=1024,f="undefined"!=typeof e?e:self,h=f.MutationObserver||f.WebKitMutationObserver;a="function"==typeof h?i(n):o(n),r.requestFlush=a,r.makeRequestCallFromTimer=o}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],8:[function(e,t,r){"use strict";function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function i(e){return 3*e.length/4-n(e)}function o(e){var t,r,i,o,a,s=e.length;o=n(e),a=new f(3*s/4-o),r=o>0?s-4:s;var u=0;for(t=0;r>t;t+=4)i=c[e.charCodeAt(t)]<<18|c[e.charCodeAt(t+1)]<<12|c[e.charCodeAt(t+2)]<<6|c[e.charCodeAt(t+3)],a[u++]=i>>16&255,a[u++]=i>>8&255,a[u++]=255&i;return 2===o?(i=c[e.charCodeAt(t)]<<2|c[e.charCodeAt(t+1)]>>4,a[u++]=255&i):1===o&&(i=c[e.charCodeAt(t)]<<10|c[e.charCodeAt(t+1)]<<4|c[e.charCodeAt(t+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i),a}function a(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}function s(e,t,r){for(var n,i=[],o=t;r>o;o+=3)n=(e[o]<<16)+(e[o+1]<<8)+e[o+2],i.push(a(n));return i.join("")}function u(e){for(var t,r=e.length,n=r%3,i="",o=[],a=16383,u=0,c=r-n;c>u;u+=a)o.push(s(e,u,u+a>c?c:u+a));return 1===n?(t=e[r-1],i+=l[t>>2],i+=l[t<<4&63],i+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],i+=l[t>>10],i+=l[t>>4&63],i+=l[t<<2&63],i+="="),o.push(i),o.join("")}r.byteLength=i,r.toByteArray=o,r.fromByteArray=u;for(var l=[],c=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,p=h.length;p>d;++d)l[d]=h[d],c[h.charCodeAt(d)]=d;c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},{}],9:[function(){},{}],10:[function(e,t,r){"use strict";function n(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(t){return!1}}function i(e){if(e>K)throw new RangeError("Invalid typed array length");var t=new Uint8Array(e);return t.__proto__=o.prototype,t}function o(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return l(e)}return a(e,t,r)}function a(e,t,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return Z(e)?h(e,t,r):"string"==typeof e?c(e,t):d(e)}function s(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(0>e)throw new RangeError('"size" argument must not be negative')}function u(e,t,r){return s(e),0>=e?i(e):void 0!==t?"string"==typeof r?i(e).fill(t,r):i(e).fill(t):i(e)}function l(e){return s(e),i(0>e?0:0|p(e))}function c(e,t){if(("string"!=typeof t||""===t)&&(t="utf8"),!o.isEncoding(t))throw new TypeError('"encoding" must be a valid string encoding');var r=0|m(e,t),n=i(r),a=n.write(e,t);return a!==r&&(n=n.slice(0,a)),n}function f(e){for(var t=e.length<0?0:0|p(e.length),r=i(t),n=0;t>n;n+=1)r[n]=255&e[n];return r}function h(e,t,r){if(0>t||e.byteLength=K)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+K.toString(16)+" bytes");return 0|e}function _(e){return+e!=e&&(e=0),o.alloc(+e)}function m(e,t){if(o.isBuffer(e))return e.length;if(H(e)||Z(e))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return q(e).length;default:if(n)return B(e).length;t=(""+t).toLowerCase(),n=!0}}function g(e,t,r){var n=!1;if((void 0===t||0>t)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),0>=r)return"";if(r>>>=0,t>>>=0,t>=r)return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,r);case"utf8":case"utf-8":return R(this,t,r);case"ascii":return z(this,t,r);case"latin1":case"binary":return O(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function v(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:-2147483648>r&&(r=-2147483648),r=+r,X(r)&&(r=i?0:e.length-1),0>r&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(0>r){if(!i)return-1;r=0}if("string"==typeof t&&(t=o.from(t,n)),o.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t=255&t,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){function o(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}var a=1,s=e.length,u=t.length;if(void 0!==n&&(n=String(n).toLowerCase(),"ucs2"===n||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}var l;if(i){var c=-1;for(l=r;s>l;l++)if(o(e,l)===o(t,-1===c?0:l-c)){if(-1===c&&(c=l),l-c+1===u)return c*a}else-1!==c&&(l-=l-c),c=-1}else for(r+u>s&&(r=s-u),l=r;l>=0;l--){for(var f=!0,h=0;u>h;h++)if(o(e,l+h)!==o(t,h)){f=!1;break}if(f)return l}return-1}function x(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n),n>i&&(n=i)):n=i;var o=t.length;if(o%2!==0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;n>a;++a){var s=parseInt(t.substr(2*a,2),16);if(X(s))return a;e[r+a]=s}return a}function w(e,t,r,n){return W(B(t,e.length-r),e,r,n)}function k(e,t,r,n){return W(G(t),e,r,n)}function A(e,t,r,n){return k(e,t,r,n)}function T(e,t,r,n){return W(q(t),e,r,n)}function E(e,t,r,n){return W(V(t,e.length-r),e,r,n)}function S(e,t,r){return Y.fromByteArray(0===t&&r===e.length?e:e.slice(t,r))}function R(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;r>i;){var o=e[i],a=null,s=o>239?4:o>223?3:o>191?2:1;if(r>=i+s){var u,l,c,f;switch(s){case 1:128>o&&(a=o);break;case 2:u=e[i+1],128===(192&u)&&(f=(31&o)<<6|63&u,f>127&&(a=f));break;case 3:u=e[i+1],l=e[i+2],128===(192&u)&&128===(192&l)&&(f=(15&o)<<12|(63&u)<<6|63&l,f>2047&&(55296>f||f>57343)&&(a=f));break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],128===(192&u)&&128===(192&l)&&128===(192&c)&&(f=(15&o)<<18|(63&u)<<12|(63&l)<<6|63&c,f>65535&&1114112>f&&(a=f))}}null===a?(a=65533,s=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=s}return M(n)}function M(e){var t=e.length;if($>=t)return String.fromCharCode.apply(String,e);for(var r="",n=0;t>n;)r+=String.fromCharCode.apply(String,e.slice(n,n+=$));return r}function z(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;r>i;++i)n+=String.fromCharCode(127&e[i]);return n}function O(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;r>i;++i)n+=String.fromCharCode(e[i]);return n}function P(e,t,r){var n=e.length;(!t||0>t)&&(t=0),(!r||0>r||r>n)&&(r=n);for(var i="",o=t;r>o;++o)i+=U(e[o]);return i}function N(e,t,r){for(var n=e.slice(t,r),i="",o=0;oe)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function L(e,t,r,n,i,a){if(!o.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||a>t)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function C(e,t,r,n){if(r+n>e.length)throw new RangeError("Index out of range");if(0>r)throw new RangeError("Index out of range")}function I(e,t,r,n,i){return t=+t,r>>>=0,i||C(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(e,t,r,n,23,4),r+4}function F(e,t,r,n,i){return t=+t,r>>>=0,i||C(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(e,t,r,n,52,8),r+8}function D(e){if(e=e.trim().replace(Q,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function U(e){return 16>e?"0"+e.toString(16):e.toString(16)}function B(e,t){t=t||1/0;for(var r,n=e.length,i=null,o=[],a=0;n>a;++a){if(r=e.charCodeAt(a),r>55295&&57344>r){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(56320>r){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,128>r){if((t-=1)<0)break;o.push(r)}else if(2048>r){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(65536>r){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(1114112>r))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function G(e){for(var t=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function q(e){return Y.toByteArray(D(e))}function W(e,t,r,n){for(var i=0;n>i&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function Z(e){return e instanceof ArrayBuffer||null!=e&&null!=e.constructor&&"ArrayBuffer"===e.constructor.name&&"number"==typeof e.byteLength}function H(e){return"function"==typeof ArrayBuffer.isView&&ArrayBuffer.isView(e)}function X(e){return e!==e}var Y=e("base64-js"),J=e("ieee754");r.Buffer=o,r.SlowBuffer=_,r.INSPECT_MAX_BYTES=50;var K=2147483647;r.kMaxLength=K,o.TYPED_ARRAY_SUPPORT=n(),o.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),o.poolSize=8192,o.from=function(e,t,r){return a(e,t,r)},o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,o.alloc=function(e,t,r){return u(e,t,r)},o.allocUnsafe=function(e){return l(e)},o.allocUnsafeSlow=function(e){return l(e)},o.isBuffer=function(e){return null!=e&&e._isBuffer===!0},o.compare=function(e,t){if(!o.isBuffer(e)||!o.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);a>i;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return n>r?-1:r>n?1:0},o.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return o.alloc(0);var r;if(void 0===t)for(t=0,r=0;rt;t+=2)v(this,t,t+1);return this},o.prototype.swap32=function(){var e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;e>t;t+=4)v(this,t,t+3),v(this,t+1,t+2);return this},o.prototype.swap64=function(){var e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;e>t;t+=8)v(this,t,t+7),v(this,t+1,t+6),v(this,t+2,t+5),v(this,t+3,t+4);return this},o.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?R(this,0,e):g.apply(this,arguments)},o.prototype.equals=function(e){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?!0:0===o.compare(this,e)},o.prototype.inspect=function(){var e="",t=r.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},o.prototype.compare=function(e,t,r,n,i){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),0>t||r>e.length||0>n||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,s=r-t,u=Math.min(a,s),l=this.slice(n,i),c=e.slice(t,r),f=0;u>f;++f)if(l[f]!==c[f]){a=l[f],s=c[f];break}return s>a?-1:a>s?1:0},o.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},o.prototype.indexOf=function(e,t,r){return y(this,e,t,r,!0)},o.prototype.lastIndexOf=function(e,t,r){return y(this,e,t,r,!1)},o.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(0>r||0>t)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return x(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":return k(this,e,t,r);case"latin1":case"binary":return A(this,e,t,r);case"base64":return T(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;o.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,0>e?(e+=r,0>e&&(e=0)):e>r&&(e=r),0>t?(t+=r,0>t&&(t=0)):t>r&&(t=r),e>t&&(t=e);var n=this.subarray(e,t);return n.__proto__=o.prototype,n},o.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var n=this[e],i=1,o=0;++o>>=0,t>>>=0,r||j(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},o.prototype.readUInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var n=this[e],i=1,o=0;++o=i&&(n-=Math.pow(2,8*t)),n},o.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},o.prototype.readInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},o.prototype.readInt16LE=function(e,t){e>>>=0,t||j(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(e,t){e>>>=0,t||j(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return e>>>=0,t||j(e,4,this.length),J.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return e>>>=0,t||j(e,4,this.length),J.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return e>>>=0,t||j(e,8,this.length),J.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return e>>>=0,t||j(e,8,this.length),J.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;L(this,e,t,r,i,0)}var o=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;L(this,e,t,r,i,0)}var o=r-1,a=1;for(this[t+o]=255&e;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+r},o.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,1,255,0),this[t]=255&e,t+1},o.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},o.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++oe&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},o.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)0>e&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},o.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,1,127,-128),0>e&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},o.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeFloatLE=function(e,t,r){return I(this,e,t,!0,r)},o.prototype.writeFloatBE=function(e,t,r){return I(this,e,t,!1,r)},o.prototype.writeDoubleLE=function(e,t,r){return F(this,e,t,!0,r)},o.prototype.writeDoubleBE=function(e,t,r){return F(this,e,t,!1,r)},o.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&r>n&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(0>t)throw new RangeError("targetStart out of bounds");if(0>r||r>=this.length)throw new RangeError("sourceStart out of bounds");if(0>n)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-tr&&n>t)for(i=o-1;i>=0;--i)e[i+t]=this[i+r];else if(1e3>o)for(i=0;o>i;++i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,r+o),t);return o},o.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),1===e.length){var i=e.charCodeAt(0);256>i&&(e=i)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!o.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof e&&(e=255&e);if(0>t||this.length=r)return this;t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var a;if("number"==typeof e)for(a=t;r>a;++a)this[a]=e;else{var s=o.isBuffer(e)?e:new o(e,n),u=s.length;for(a=0;r-t>a;++a)this[a+t]=s[a%u]}return this};var Q=/[^+\/0-9A-Za-z-_]/g},{"base64-js":8,ieee754:98}],11:[function(e,t){e("../modules/es6.object.to-string"),e("../modules/es6.string.iterator"),e("../modules/web.dom.iterable"),e("../modules/es6.promise"),t.exports=e("../modules/_core").Promise},{"../modules/_core":19,"../modules/es6.object.to-string":71,"../modules/es6.promise":72,"../modules/es6.string.iterator":73,"../modules/web.dom.iterable":74}],12:[function(e,t){t.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},{}],13:[function(e,t){var r=e("./_wks")("unscopables"),n=Array.prototype;void 0==n[r]&&e("./_hide")(n,r,{}),t.exports=function(e){n[r][e]=!0}},{"./_hide":30,"./_wks":68}],14:[function(e,t){t.exports=function(e,t,r,n){if(!(e instanceof t)||void 0!==n&&n in e)throw TypeError(r+": incorrect invocation!");return e}},{}],15:[function(e,t){var r=e("./_is-object");t.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":36}],16:[function(e,t){var r=e("./_to-iobject"),n=e("./_to-length"),i=e("./_to-index");t.exports=function(e){return function(t,o,a){var s,u=r(t),l=n(u.length),c=i(a,l);if(e&&o!=o){for(;l>c;)if(s=u[c++],s!=s)return!0}else for(;l>c;c++)if((e||c in u)&&u[c]===o)return e||c||0;return!e&&-1}}},{"./_to-index":61,"./_to-iobject":63,"./_to-length":64}],17:[function(e,t){var r=e("./_cof"),n=e("./_wks")("toStringTag"),i="Arguments"==r(function(){return arguments}()),o=function(e,t){try{return e[t]}catch(r){}};t.exports=function(e){var t,a,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(a=o(t=Object(e),n))?a:i?r(t):"Object"==(s=r(t))&&"function"==typeof t.callee?"Arguments":s}},{"./_cof":18,"./_wks":68}],18:[function(e,t){var r={}.toString;t.exports=function(e){return r.call(e).slice(8,-1)}},{}],19:[function(e,t){var r=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},{}],20:[function(e,t){var r=e("./_a-function");t.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":12}],21:[function(e,t){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},{}],22:[function(e,t){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":26}],23:[function(e,t){var r=e("./_is-object"),n=e("./_global").document,i=r(n)&&r(n.createElement);t.exports=function(e){return i?n.createElement(e):{}}},{"./_global":28,"./_is-object":36}],24:[function(e,t){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],25:[function(e,t){var r=e("./_global"),n=e("./_core"),i=e("./_hide"),o=e("./_redefine"),a=e("./_ctx"),s="prototype",u=function(e,t,l){var c,f,h,d,p=e&u.F,_=e&u.G,m=e&u.S,g=e&u.P,v=e&u.B,y=_?r:m?r[t]||(r[t]={}):(r[t]||{})[s],b=_?n:n[t]||(n[t]={}),x=b[s]||(b[s]={});_&&(l=t);for(c in l)f=!p&&y&&void 0!==y[c],h=(f?y:l)[c],d=v&&f?a(h,r):g&&"function"==typeof h?a(Function.call,h):h,y&&o(y,c,h,e&u.U),b[c]!=h&&i(b,c,d),g&&x[c]!=h&&(x[c]=h)};r.core=n,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},{"./_core":19,"./_ctx":20,"./_global":28,"./_hide":30,"./_redefine":53}],26:[function(e,t){t.exports=function(e){try{return!!e()}catch(t){return!0 }}},{}],27:[function(e,t,r){var n=e("./_ctx"),i=e("./_iter-call"),o=e("./_is-array-iter"),a=e("./_an-object"),s=e("./_to-length"),u=e("./core.get-iterator-method"),l={},c={},r=t.exports=function(e,t,r,f,h){var d,p,_,m,g=h?function(){return e}:u(e),v=n(r,f,t?2:1),y=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(o(g)){for(d=s(e.length);d>y;y++)if(m=t?v(a(p=e[y])[0],p[1]):v(e[y]),m===l||m===c)return m}else for(_=g.call(e);!(p=_.next()).done;)if(m=i(_,v,p.value,t),m===l||m===c)return m};r.BREAK=l,r.RETURN=c},{"./_an-object":15,"./_ctx":20,"./_is-array-iter":35,"./_iter-call":37,"./_to-length":64,"./core.get-iterator-method":69}],28:[function(e,t){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},{}],29:[function(e,t){var r={}.hasOwnProperty;t.exports=function(e,t){return r.call(e,t)}},{}],30:[function(e,t){var r=e("./_object-dp"),n=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,i){return r.f(e,t,n(1,i))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":22,"./_object-dp":46,"./_property-desc":51}],31:[function(e,t){t.exports=e("./_global").document&&document.documentElement},{"./_global":28}],32:[function(e,t){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":22,"./_dom-create":23,"./_fails":26}],33:[function(e,t){t.exports=function(e,t,r){var n=void 0===r;switch(t.length){case 0:return n?e():e.call(r);case 1:return n?e(t[0]):e.call(r,t[0]);case 2:return n?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return n?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return n?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3])}return e.apply(r,t)}},{}],34:[function(e,t){var r=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},{"./_cof":18}],35:[function(e,t){var r=e("./_iterators"),n=e("./_wks")("iterator"),i=Array.prototype;t.exports=function(e){return void 0!==e&&(r.Array===e||i[n]===e)}},{"./_iterators":42,"./_wks":68}],36:[function(e,t){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],37:[function(e,t){var r=e("./_an-object");t.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(o){var a=e["return"];throw void 0!==a&&r(a.call(e)),o}}},{"./_an-object":15}],38:[function(e,t){"use strict";var r=e("./_object-create"),n=e("./_property-desc"),i=e("./_set-to-string-tag"),o={};e("./_hide")(o,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,a){e.prototype=r(o,{next:n(1,a)}),i(e,t+" Iterator")}},{"./_hide":30,"./_object-create":45,"./_property-desc":51,"./_set-to-string-tag":55,"./_wks":68}],39:[function(e,t){"use strict";var r=e("./_library"),n=e("./_export"),i=e("./_redefine"),o=e("./_hide"),a=e("./_has"),s=e("./_iterators"),u=e("./_iter-create"),l=e("./_set-to-string-tag"),c=e("./_object-gpo"),f=e("./_wks")("iterator"),h=!([].keys&&"next"in[].keys()),d="@@iterator",p="keys",_="values",m=function(){return this};t.exports=function(e,t,g,v,y,b,x){u(g,t,v);var w,k,A,T=function(e){if(!h&&e in M)return M[e];switch(e){case p:return function(){return new g(this,e)};case _:return function(){return new g(this,e)}}return function(){return new g(this,e)}},E=t+" Iterator",S=y==_,R=!1,M=e.prototype,z=M[f]||M[d]||y&&M[y],O=z||T(y),P=y?S?T("entries"):O:void 0,N="Array"==t?M.entries||z:z;if(N&&(A=c(N.call(new e)),A!==Object.prototype&&(l(A,E,!0),r||a(A,f)||o(A,f,m))),S&&z&&z.name!==_&&(R=!0,O=function(){return z.call(this)}),r&&!x||!h&&!R&&M[f]||o(M,f,O),s[t]=O,s[E]=m,y)if(w={values:S?O:T(_),keys:b?O:T(p),entries:P},x)for(k in w)k in M||i(M,k,w[k]);else n(n.P+n.F*(h||R),t,w);return w}},{"./_export":25,"./_has":29,"./_hide":30,"./_iter-create":38,"./_iterators":42,"./_library":43,"./_object-gpo":48,"./_redefine":53,"./_set-to-string-tag":55,"./_wks":68}],40:[function(e,t){var r=e("./_wks")("iterator"),n=!1;try{var i=[7][r]();i["return"]=function(){n=!0},Array.from(i,function(){throw 2})}catch(o){}t.exports=function(e,t){if(!t&&!n)return!1;var i=!1;try{var o=[7],a=o[r]();a.next=function(){return{done:i=!0}},o[r]=function(){return a},e(o)}catch(s){}return i}},{"./_wks":68}],41:[function(e,t){t.exports=function(e,t){return{value:t,done:!!e}}},{}],42:[function(e,t){t.exports={}},{}],43:[function(e,t){t.exports=!1},{}],44:[function(e,t){var r=e("./_global"),n=e("./_task").set,i=r.MutationObserver||r.WebKitMutationObserver,o=r.process,a=r.Promise,s="process"==e("./_cof")(o);t.exports=function(){var e,t,u,l=function(){var r,n;for(s&&(r=o.domain)&&r.exit();e;){n=e.fn,e=e.next;try{n()}catch(i){throw e?u():t=void 0,i}}t=void 0,r&&r.enter()};if(s)u=function(){o.nextTick(l)};else if(i){var c=!0,f=document.createTextNode("");new i(l).observe(f,{characterData:!0}),u=function(){f.data=c=!c}}else if(a&&a.resolve){var h=a.resolve();u=function(){h.then(l)}}else u=function(){n.call(r,l)};return function(r){var n={fn:r,next:void 0};t&&(t.next=n),e||(e=n,u()),t=n}}},{"./_cof":18,"./_global":28,"./_task":60}],45:[function(e,t){var r=e("./_an-object"),n=e("./_object-dps"),i=e("./_enum-bug-keys"),o=e("./_shared-key")("IE_PROTO"),a=function(){},s="prototype",u=function(){var t,r=e("./_dom-create")("iframe"),n=i.length,o="<",a=">";for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",t=r.contentWindow.document,t.open(),t.write(o+"script"+a+"document.F=Object"+o+"/script"+a),t.close(),u=t.F;n--;)delete u[s][i[n]];return u()};t.exports=Object.create||function(e,t){var i;return null!==e?(a[s]=r(e),i=new a,a[s]=null,i[o]=e):i=u(),void 0===t?i:n(i,t)}},{"./_an-object":15,"./_dom-create":23,"./_enum-bug-keys":24,"./_html":31,"./_object-dps":47,"./_shared-key":56}],46:[function(e,t,r){var n=e("./_an-object"),i=e("./_ie8-dom-define"),o=e("./_to-primitive"),a=Object.defineProperty;r.f=e("./_descriptors")?Object.defineProperty:function(e,t,r){if(n(e),t=o(t,!0),n(r),i)try{return a(e,t,r)}catch(s){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},{"./_an-object":15,"./_descriptors":22,"./_ie8-dom-define":32,"./_to-primitive":66}],47:[function(e,t){var r=e("./_object-dp"),n=e("./_an-object"),i=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function(e,t){n(e);for(var o,a=i(t),s=a.length,u=0;s>u;)r.f(e,o=a[u++],t[o]);return e}},{"./_an-object":15,"./_descriptors":22,"./_object-dp":46,"./_object-keys":50}],48:[function(e,t){var r=e("./_has"),n=e("./_to-object"),i=e("./_shared-key")("IE_PROTO"),o=Object.prototype;t.exports=Object.getPrototypeOf||function(e){return e=n(e),r(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},{"./_has":29,"./_shared-key":56,"./_to-object":65}],49:[function(e,t){var r=e("./_has"),n=e("./_to-iobject"),i=e("./_array-includes")(!1),o=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var a,s=n(e),u=0,l=[];for(a in s)a!=o&&r(s,a)&&l.push(a);for(;t.length>u;)r(s,a=t[u++])&&(~i(l,a)||l.push(a));return l}},{"./_array-includes":16,"./_has":29,"./_shared-key":56,"./_to-iobject":63}],50:[function(e,t){var r=e("./_object-keys-internal"),n=e("./_enum-bug-keys");t.exports=Object.keys||function(e){return r(e,n)}},{"./_enum-bug-keys":24,"./_object-keys-internal":49}],51:[function(e,t){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],52:[function(e,t){var r=e("./_redefine");t.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},{"./_redefine":53}],53:[function(e,t){var r=e("./_global"),n=e("./_hide"),i=e("./_has"),o=e("./_uid")("src"),a="toString",s=Function[a],u=(""+s).split(a);e("./_core").inspectSource=function(e){return s.call(e)},(t.exports=function(e,t,a,s){var l="function"==typeof a;l&&(i(a,"name")||n(a,"name",t)),e[t]!==a&&(l&&(i(a,o)||n(a,o,e[t]?""+e[t]:u.join(String(t)))),e===r?e[t]=a:s?e[t]?e[t]=a:n(e,t,a):(delete e[t],n(e,t,a)))})(Function.prototype,a,function(){return"function"==typeof this&&this[o]||s.call(this)})},{"./_core":19,"./_global":28,"./_has":29,"./_hide":30,"./_uid":67}],54:[function(e,t){"use strict";var r=e("./_global"),n=e("./_object-dp"),i=e("./_descriptors"),o=e("./_wks")("species");t.exports=function(e){var t=r[e];i&&t&&!t[o]&&n.f(t,o,{configurable:!0,get:function(){return this}})}},{"./_descriptors":22,"./_global":28,"./_object-dp":46,"./_wks":68}],55:[function(e,t){var r=e("./_object-dp").f,n=e("./_has"),i=e("./_wks")("toStringTag");t.exports=function(e,t,o){e&&!n(e=o?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},{"./_has":29,"./_object-dp":46,"./_wks":68}],56:[function(e,t){var r=e("./_shared")("keys"),n=e("./_uid");t.exports=function(e){return r[e]||(r[e]=n(e))}},{"./_shared":57,"./_uid":67}],57:[function(e,t){var r=e("./_global"),n="__core-js_shared__",i=r[n]||(r[n]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./_global":28}],58:[function(e,t){var r=e("./_an-object"),n=e("./_a-function"),i=e("./_wks")("species");t.exports=function(e,t){var o,a=r(e).constructor;return void 0===a||void 0==(o=r(a)[i])?t:n(o)}},{"./_a-function":12,"./_an-object":15,"./_wks":68}],59:[function(e,t){var r=e("./_to-integer"),n=e("./_defined");t.exports=function(e){return function(t,i){var o,a,s=String(n(t)),u=r(i),l=s.length;return 0>u||u>=l?e?"":void 0:(o=s.charCodeAt(u),55296>o||o>56319||u+1===l||(a=s.charCodeAt(u+1))<56320||a>57343?e?s.charAt(u):o:e?s.slice(u,u+2):(o-55296<<10)+(a-56320)+65536)}}},{"./_defined":21,"./_to-integer":62}],60:[function(e,t){var r,n,i,o=e("./_ctx"),a=e("./_invoke"),s=e("./_html"),u=e("./_dom-create"),l=e("./_global"),c=l.process,f=l.setImmediate,h=l.clearImmediate,d=l.MessageChannel,p=0,_={},m="onreadystatechange",g=function(){var e=+this;if(_.hasOwnProperty(e)){var t=_[e];delete _[e],t()}},v=function(e){g.call(e.data)};f&&h||(f=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return _[++p]=function(){a("function"==typeof e?e:Function(e),t)},r(p),p},h=function(e){delete _[e]},"process"==e("./_cof")(c)?r=function(e){c.nextTick(o(g,e,1))}:d?(n=new d,i=n.port2,n.port1.onmessage=v,r=o(i.postMessage,i,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(e){l.postMessage(e+"","*")},l.addEventListener("message",v,!1)):r=m in u("script")?function(e){s.appendChild(u("script"))[m]=function(){s.removeChild(this),g.call(e)}}:function(e){setTimeout(o(g,e,1),0)}),t.exports={set:f,clear:h}},{"./_cof":18,"./_ctx":20,"./_dom-create":23,"./_global":28,"./_html":31,"./_invoke":33}],61:[function(e,t){var r=e("./_to-integer"),n=Math.max,i=Math.min;t.exports=function(e,t){return e=r(e),0>e?n(e+t,0):i(e,t)}},{"./_to-integer":62}],62:[function(e,t){var r=Math.ceil,n=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?n:r)(e)}},{}],63:[function(e,t){var r=e("./_iobject"),n=e("./_defined");t.exports=function(e){return r(n(e))}},{"./_defined":21,"./_iobject":34}],64:[function(e,t){var r=e("./_to-integer"),n=Math.min;t.exports=function(e){return e>0?n(r(e),9007199254740991):0}},{"./_to-integer":62}],65:[function(e,t){var r=e("./_defined");t.exports=function(e){return Object(r(e))}},{"./_defined":21}],66:[function(e,t){var r=e("./_is-object");t.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":36}],67:[function(e,t){var r=0,n=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++r+n).toString(36))}},{}],68:[function(e,t){var r=e("./_shared")("wks"),n=e("./_uid"),i=e("./_global").Symbol,o="function"==typeof i,a=t.exports=function(e){return r[e]||(r[e]=o&&i[e]||(o?i:n)("Symbol."+e))};a.store=r},{"./_global":28,"./_shared":57,"./_uid":67}],69:[function(e,t){var r=e("./_classof"),n=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){return void 0!=e?e[n]||e["@@iterator"]||i[r(e)]:void 0}},{"./_classof":17,"./_core":19,"./_iterators":42,"./_wks":68}],70:[function(e,t){"use strict";var r=e("./_add-to-unscopables"),n=e("./_iter-step"),i=e("./_iterators"),o=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=o(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,n(1)):"keys"==t?n(0,r):"values"==t?n(0,e[r]):n(0,[r,e[r]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},{"./_add-to-unscopables":13,"./_iter-define":39,"./_iter-step":41,"./_iterators":42,"./_to-iobject":63}],71:[function(e){"use strict";var t=e("./_classof"),r={};r[e("./_wks")("toStringTag")]="z",r+""!="[object z]"&&e("./_redefine")(Object.prototype,"toString",function(){return"[object "+t(this)+"]"},!0)},{"./_classof":17,"./_redefine":53,"./_wks":68}],72:[function(e){"use strict";var t,r,n,i=e("./_library"),o=e("./_global"),a=e("./_ctx"),s=e("./_classof"),u=e("./_export"),l=e("./_is-object"),c=e("./_a-function"),f=e("./_an-instance"),h=e("./_for-of"),d=e("./_species-constructor"),p=e("./_task").set,_=e("./_microtask")(),m="Promise",g=o.TypeError,v=o.process,y=o[m],v=o.process,b="process"==s(v),x=function(){},w=!!function(){try{var t=y.resolve(1),r=(t.constructor={})[e("./_wks")("species")]=function(e){e(x,x)};return(b||"function"==typeof PromiseRejectionEvent)&&t.then(x)instanceof r}catch(n){}}(),k=function(e,t){return e===t||e===y&&t===n},A=function(e){var t;return l(e)&&"function"==typeof(t=e.then)?t:!1},T=function(e){return k(y,e)?new E(e):new r(e)},E=r=function(e){var t,r;this.promise=new e(function(e,n){if(void 0!==t||void 0!==r)throw g("Bad Promise constructor");t=e,r=n}),this.resolve=c(t),this.reject=c(r)},S=function(e){try{e()}catch(t){return{error:t}}},R=function(e,t){if(!e._n){e._n=!0;var r=e._c;_(function(){for(var n=e._v,i=1==e._s,o=0,a=function(t){var r,o,a=i?t.ok:t.fail,s=t.resolve,u=t.reject,l=t.domain;try{a?(i||(2==e._h&&O(e),e._h=1),a===!0?r=n:(l&&l.enter(),r=a(n),l&&l.exit()),r===t.promise?u(g("Promise-chain cycle")):(o=A(r))?o.call(r,s,u):s(r)):u(n)}catch(c){u(c)}};r.length>o;)a(r[o++]);e._c=[],e._n=!1,t&&!e._h&&M(e)})}},M=function(e){p.call(o,function(){var t,r,n,i=e._v;if(z(e)&&(t=S(function(){b?v.emit("unhandledRejection",i,e):(r=o.onunhandledrejection)?r({promise:e,reason:i}):(n=o.console)&&n.error&&n.error("Unhandled promise rejection",i)}),e._h=b||z(e)?2:1),e._a=void 0,t)throw t.error})},z=function(e){if(1==e._h)return!1;for(var t,r=e._a||e._c,n=0;r.length>n;)if(t=r[n++],t.fail||!z(t.promise))return!1;return!0},O=function(e){p.call(o,function(){var t;b?v.emit("rejectionHandled",e):(t=o.onrejectionhandled)&&t({promise:e,reason:e._v})})},P=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),R(t,!0))},N=function(e){var t,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===e)throw g("Promise can't be resolved itself");(t=A(e))?_(function(){var n={_w:r,_d:!1};try{t.call(e,a(N,n,1),a(P,n,1))}catch(i){P.call(n,i)}}):(r._v=e,r._s=1,R(r,!1))}catch(n){P.call({_w:r,_d:!1},n)}}};w||(y=function(e){f(this,y,m,"_h"),c(e),t.call(this);try{e(a(N,this,1),a(P,this,1))}catch(r){P.call(this,r)}},t=function(){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},t.prototype=e("./_redefine-all")(y.prototype,{then:function(e,t){var r=T(d(this,y));return r.ok="function"==typeof e?e:!0,r.fail="function"==typeof t&&t,r.domain=b?v.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&R(this,!1),r.promise},"catch":function(e){return this.then(void 0,e)}}),E=function(){var e=new t;this.promise=e,this.resolve=a(N,e,1),this.reject=a(P,e,1)}),u(u.G+u.W+u.F*!w,{Promise:y}),e("./_set-to-string-tag")(y,m),e("./_set-species")(m),n=e("./_core")[m],u(u.S+u.F*!w,m,{reject:function(e){var t=T(this),r=t.reject;return r(e),t.promise}}),u(u.S+u.F*(i||!w),m,{resolve:function(e){if(e instanceof y&&k(e.constructor,this))return e;var t=T(this),r=t.resolve;return r(e),t.promise}}),u(u.S+u.F*!(w&&e("./_iter-detect")(function(e){y.all(e)["catch"](x)})),m,{all:function(e){var t=this,r=T(t),n=r.resolve,i=r.reject,o=S(function(){var r=[],o=0,a=1;h(e,!1,function(e){var s=o++,u=!1;r.push(void 0),a++,t.resolve(e).then(function(e){u||(u=!0,r[s]=e,--a||n(r))},i)}),--a||n(r)});return o&&i(o.error),r.promise},race:function(e){var t=this,r=T(t),n=r.reject,i=S(function(){h(e,!1,function(e){t.resolve(e).then(r.resolve,n)})});return i&&n(i.error),r.promise}})},{"./_a-function":12,"./_an-instance":14,"./_classof":17,"./_core":19,"./_ctx":20,"./_export":25,"./_for-of":27,"./_global":28,"./_is-object":36,"./_iter-detect":40,"./_library":43,"./_microtask":44,"./_redefine-all":52,"./_set-species":54,"./_set-to-string-tag":55,"./_species-constructor":58,"./_task":60,"./_wks":68}],73:[function(e){"use strict";var t=e("./_string-at")(!0);e("./_iter-define")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,r=this._t,n=this._i;return n>=r.length?{value:void 0,done:!0}:(e=t(r,n),this._i+=e.length,{value:e,done:!1})})},{"./_iter-define":39,"./_string-at":59}],74:[function(e){for(var t=e("./es6.array.iterator"),r=e("./_redefine"),n=e("./_global"),i=e("./_hide"),o=e("./_iterators"),a=e("./_wks"),s=a("iterator"),u=a("toStringTag"),l=o.Array,c=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],f=0;5>f;f++){var h,d=c[f],p=n[d],_=p&&p.prototype;if(_){_[s]||i(_,s,l),_[u]||i(_,u,d),o[d]=l;for(h in t)_[h]||r(_,h,t[h],!0)}}},{"./_global":28,"./_hide":30,"./_iterators":42,"./_redefine":53,"./_wks":68,"./es6.array.iterator":70}],75:[function(e,t,r){(function(e){function t(e){return Array.isArray?Array.isArray(e):"[object Array]"===m(e)}function n(e){return"boolean"==typeof e}function i(e){return null===e}function o(e){return null==e}function a(e){return"number"==typeof e}function s(e){return"string"==typeof e}function u(e){return"symbol"==typeof e}function l(e){return void 0===e}function c(e){return"[object RegExp]"===m(e)}function f(e){return"object"==typeof e&&null!==e}function h(e){return"[object Date]"===m(e)}function d(e){return"[object Error]"===m(e)||e instanceof Error}function p(e){return"function"==typeof e}function _(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function m(e){return Object.prototype.toString.call(e)}r.isArray=t,r.isBoolean=n,r.isNull=i,r.isNullOrUndefined=o,r.isNumber=a,r.isString=s,r.isSymbol=u,r.isUndefined=l,r.isRegExp=c,r.isObject=f,r.isDate=h,r.isError=d,r.isFunction=p,r.isPrimitive=_,r.isBuffer=e.isBuffer}).call(this,{isBuffer:e("../../is-buffer/index.js")})},{"../../is-buffer/index.js":100}],76:[function(e,t,r){function n(e){return e=Math.round(e),0>e?0:e>255?255:e}function i(e){return 0>e?0:e>1?1:e}function o(e){return n("%"===e[e.length-1]?parseFloat(e)/100*255:parseInt(e))}function a(e){return i("%"===e[e.length-1]?parseFloat(e)/100:parseFloat(e))}function s(e,t,r){return 0>r?r+=1:r>1&&(r-=1),1>6*r?e+(t-e)*r*6:1>2*r?t:2>3*r?e+(t-e)*(2/3-r)*6:e}function u(e){var t=e.replace(/ /g,"").toLowerCase();if(t in l)return l[t].slice();if("#"===t[0]){if(4===t.length){var r=parseInt(t.substr(1),16);return r>=0&&4095>=r?[(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)<<4,1]:null}if(7===t.length){var r=parseInt(t.substr(1),16);return r>=0&&16777215>=r?[(16711680&r)>>16,(65280&r)>>8,255&r,1]:null}return null}var i=t.indexOf("("),u=t.indexOf(")");if(-1!==i&&u+1===t.length){var c=t.substr(0,i),f=t.substr(i+1,u-(i+1)).split(","),h=1;switch(c){case"rgba":if(4!==f.length)return null;h=a(f.pop());case"rgb":return 3!==f.length?null:[o(f[0]),o(f[1]),o(f[2]),h];case"hsla":if(4!==f.length)return null;h=a(f.pop());case"hsl":if(3!==f.length)return null;var d=(parseFloat(f[0])%360+360)%360/360,p=a(f[1]),_=a(f[2]),m=.5>=_?_*(p+1):_+p-_*p,g=2*_-m;return[n(255*s(g,m,d+1/3)),n(255*s(g,m,d)),n(255*s(g,m,d-1/3)),h];default:return null}}return null}var l={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};try{r.parseCSSColor=u}catch(c){}},{}],77:[function(e,t){"use strict";function r(e,t,r){r=r||2;var i=t&&t.length,a=i?t[0]*r:e.length,s=n(e,0,a,r,!0),u=[];if(!s)return u;var l,f,h,d,p,_,m;if(i&&(s=c(e,t,s,r)),e.length>80*r){l=h=e[0],f=d=e[1];for(var g=r;a>g;g+=r)p=e[g],_=e[g+1],l>p&&(l=p),f>_&&(f=_),p>h&&(h=p),_>d&&(d=_);m=Math.max(h-l,d-f)}return o(s,u,r,l,f,m),u}function n(e,t,r,n,i){var o,a;if(i===z(e,t,r,n)>0)for(o=t;r>o;o+=n)a=S(o,e[o],e[o+1],a);else for(o=r-n;o>=t;o-=n)a=S(o,e[o],e[o+1],a);return a&&x(a,a.next)&&(R(a),a=a.next),a}function i(e,t){if(!e)return e;t||(t=e);var r,n=e;do if(r=!1,n.steiner||!x(n,n.next)&&0!==b(n.prev,n,n.next))n=n.next;else{if(R(n),n=t=n.prev,n===n.next)return null;r=!0}while(r||n!==t);return t}function o(e,t,r,n,c,f,h){if(e){!h&&f&&p(e,n,c,f);for(var d,_,m=e;e.prev!==e.next;)if(d=e.prev,_=e.next,f?s(e,n,c,f):a(e))t.push(d.i/r),t.push(e.i/r),t.push(_.i/r),R(e),e=_.next,m=_.next;else if(e=_,e===m){h?1===h?(e=u(e,t,r),o(e,t,r,n,c,f,2)):2===h&&l(e,t,r,n,c,f):o(i(e),t,r,n,c,f,1);break}}}function a(e){var t=e.prev,r=e,n=e.next;if(b(t,r,n)>=0)return!1;for(var i=e.next.next;i!==e.prev;){if(v(t.x,t.y,r.x,r.y,n.x,n.y,i.x,i.y)&&b(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function s(e,t,r,n){var i=e.prev,o=e,a=e.next;if(b(i,o,a)>=0)return!1;for(var s=i.xo.x?i.x>a.x?i.x:a.x:o.x>a.x?o.x:a.x,c=i.y>o.y?i.y>a.y?i.y:a.y:o.y>a.y?o.y:a.y,f=m(s,u,t,r,n),h=m(l,c,t,r,n),d=e.nextZ;d&&d.z<=h;){if(d!==e.prev&&d!==e.next&&v(i.x,i.y,o.x,o.y,a.x,a.y,d.x,d.y)&&b(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(d=e.prevZ;d&&d.z>=f;){if(d!==e.prev&&d!==e.next&&v(i.x,i.y,o.x,o.y,a.x,a.y,d.x,d.y)&&b(d.prev,d,d.next)>=0)return!1;d=d.prevZ}return!0}function u(e,t,r){var n=e;do{var i=n.prev,o=n.next.next;!x(i,o)&&w(i,n,n.next,o)&&A(i,o)&&A(o,i)&&(t.push(i.i/r),t.push(n.i/r),t.push(o.i/r),R(n),R(n.next),n=e=o),n=n.next}while(n!==e);return n}function l(e,t,r,n,a,s){var u=e;do{for(var l=u.next.next;l!==u.prev;){if(u.i!==l.i&&y(u,l)){var c=E(u,l);return u=i(u,u.next),c=i(c,c.next),o(u,t,r,n,a,s),void o(c,t,r,n,a,s)}l=l.next}u=u.next}while(u!==e)}function c(e,t,r,o){var a,s,u,l,c,d=[];for(a=0,s=t.length;s>a;a++)u=t[a]*o,l=s-1>a?t[a+1]*o:e.length,c=n(e,u,l,o,!1),c===c.next&&(c.steiner=!0),d.push(g(c));for(d.sort(f),a=0;a=n.next.y){var s=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(i>=s&&s>a){if(a=s,s===i){if(o===n.y)return n;if(o===n.next.y)return n.next}r=n.x=n.x&&n.x>=c&&v(f>o?i:a,o,c,f,f>o?a:i,o,n.x,n.y)&&(u=Math.abs(o-n.y)/(i-n.x),(h>u||u===h&&n.x>r.x)&&A(n,e)&&(r=n,h=u)),n=n.next;return r}function p(e,t,r,n){var i=e;do null===i.z&&(i.z=m(i.x,i.y,t,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,_(i)}function _(e){var t,r,n,i,o,a,s,u,l=1;do{for(r=e,e=null,o=null,a=0;r;){for(a++,n=r,s=0,t=0;l>t&&(s++,n=n.nextZ,n);t++);for(u=l;s>0||u>0&&n;)0===s?(i=n,n=n.nextZ,u--):0!==u&&n?r.z<=n.z?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,u--):(i=r,r=r.nextZ,s--),o?o.nextZ=i:e=i,i.prevZ=o,o=i;r=n}o.nextZ=null,l*=2}while(a>1);return e}function m(e,t,r,n,i){return e=32767*(e-r)/i,t=32767*(t-n)/i,e=16711935&(e|e<<8),e=252645135&(e|e<<4),e=858993459&(e|e<<2),e=1431655765&(e|e<<1),t=16711935&(t|t<<8),t=252645135&(t|t<<4),t=858993459&(t|t<<2),t=1431655765&(t|t<<1),e|t<<1}function g(e){var t=e,r=e;do t.x=0&&(e-a)*(n-s)-(r-a)*(t-s)>=0&&(r-a)*(o-s)-(i-a)*(n-s)>=0}function y(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!k(e,t)&&A(e,t)&&A(t,e)&&T(e,t)}function b(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function x(e,t){return e.x===t.x&&e.y===t.y}function w(e,t,r,n){return x(e,t)&&x(r,n)||x(e,n)&&x(r,t)?!0:b(e,t,r)>0!=b(e,t,n)>0&&b(r,n,e)>0!=b(r,n,t)>0}function k(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&w(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function A(e,t){return b(e.prev,e,e.next)<0?b(e,t,e.next)>=0&&b(e,e.prev,t)>=0:b(e,t,e.prev)<0||b(e,e.next,t)<0}function T(e,t){var r=e,n=!1,i=(e.x+t.x)/2,o=(e.y+t.y)/2;do r.y>o!=r.next.y>o&&i<(r.next.x-r.x)*(o-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;while(r!==e);return n}function E(e,t){var r=new M(e.i,e.x,e.y),n=new M(t.i,t.x,t.y),i=e.next,o=t.prev;return e.next=t,t.prev=e,r.next=i,i.prev=r,n.next=r,r.prev=n,o.next=n,n.prev=o,n}function S(e,t,r,n){var i=new M(e,t,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function R(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function M(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function z(e,t,r,n){for(var i=0,o=t,a=r-n;r>o;o+=n)i+=(e[a]-e[o])*(e[o+1]+e[a+1]),a=o;return i}t.exports=r,r.deviation=function(e,t,r,n){var i=t&&t.length,o=i?t[0]*r:e.length,a=Math.abs(z(e,0,o,r));if(i)for(var s=0,u=t.length;u>s;s++){var l=t[s]*r,c=u-1>s?t[s+1]*r:e.length;a-=Math.abs(z(e,l,c,r))}var f=0;for(s=0;sa;a++)r.vertices.push(e[i][o][a]);i>0&&(n+=e[i-1].length,r.holes.push(n))}return r}},{}],78:[function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(e){return"function"==typeof e}function i(e){return"number"==typeof e}function o(e){return"object"==typeof e&&null!==e}function a(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!i(e)||0>e||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,i,s,u,l;if(this._events||(this._events={}),"error"===e&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(r=this._events[e],a(r))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(o(r))for(s=Array.prototype.slice.call(arguments,1),l=r.slice(),i=l.length,u=0;i>u;u++)l[u].apply(this,s);return!0},r.prototype.addListener=function(e,t){var i;if(!n(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,n(t.listener)?t.listener:t),this._events[e]?o(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,o(this._events[e])&&!this._events[e].warned&&(i=a(this._maxListeners)?r.defaultMaxListeners:this._maxListeners,i&&i>0&&this._events[e].length>i&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),i||(i=!0,t.apply(this,arguments))}if(!n(t))throw TypeError("listener must be a function");var i=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var r,i,a,s;if(!n(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this; if(r=this._events[e],a=r.length,i=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(r)){for(s=a;s-->0;)if(r[s]===t||r[s].listener&&r[s].listener===t){i=s;break}if(0>i)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],n(r))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],79:[function(e,t){!function(){function e(e,t){document.addEventListener?e.addEventListener("scroll",t,!1):e.attachEvent("scroll",t)}function r(e){document.body?e():document.addEventListener?document.addEventListener("DOMContentLoaded",function t(){document.removeEventListener("DOMContentLoaded",t),e()}):document.attachEvent("onreadystatechange",function r(){("interactive"==document.readyState||"complete"==document.readyState)&&(document.detachEvent("onreadystatechange",r),e())})}function n(e){this.a=document.createElement("div"),this.a.setAttribute("aria-hidden","true"),this.a.appendChild(document.createTextNode(e)),this.b=document.createElement("span"),this.c=document.createElement("span"),this.h=document.createElement("span"),this.f=document.createElement("span"),this.g=-1,this.b.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.c.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.f.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.h.style.cssText="display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;",this.b.appendChild(this.h),this.c.appendChild(this.f),this.a.appendChild(this.b),this.a.appendChild(this.c)}function i(e,t){e.a.style.cssText="max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;left:-999px;white-space:nowrap;font:"+t+";"}function o(e){var t=e.a.offsetWidth,r=t+100;return e.f.style.width=r+"px",e.c.scrollLeft=r,e.b.scrollLeft=e.b.scrollWidth+100,e.g!==t?(e.g=t,!0):!1}function a(t,r){function n(){var e=i;o(e)&&e.a.parentNode&&r(e.g)}var i=t;e(t.b,n),e(t.c,n),o(t)}function s(e,t){var r=t||{};this.family=e,this.style=r.style||"normal",this.weight=r.weight||"normal",this.stretch=r.stretch||"normal"}function u(){if(null===h){var e=document.createElement("div");try{e.style.font="condensed 100px sans-serif"}catch(t){}h=""!==e.style.font}return h}function l(e,t){return[e.style,e.weight,u()?e.stretch:"","100px",t].join(" ")}var c=null,f=null,h=null,d=null;s.prototype.load=function(e,t){var o=this,s=e||"BESbswy",u=0,h=t||3e3,p=(new Date).getTime();return new Promise(function(e,t){var _;if(null===d&&(d=!!document.fonts),(_=d)&&(null===f&&(f=/OS X.*Version\/10\..*Safari/.test(navigator.userAgent)&&/Apple/.test(navigator.vendor)),_=!f),_){_=new Promise(function(e,t){function r(){(new Date).getTime()-p>=h?t():document.fonts.load(l(o,'"'+o.family+'"'),s).then(function(t){1<=t.length?e():setTimeout(r,25)},function(){t()})}r()});var m=new Promise(function(e,t){u=setTimeout(t,h)});Promise.race([m,_]).then(function(){clearTimeout(u),e(o)},function(){t(o)})}else r(function(){function r(){var t;(t=-1!=g&&-1!=v||-1!=g&&-1!=y||-1!=v&&-1!=y)&&((t=g!=v&&g!=y&&v!=y)||(null===c&&(t=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),c=!!t&&(536>parseInt(t[1],10)||536===parseInt(t[1],10)&&11>=parseInt(t[2],10))),t=c&&(g==b&&v==b&&y==b||g==x&&v==x&&y==x||g==w&&v==w&&y==w)),t=!t),t&&(k.parentNode&&k.parentNode.removeChild(k),clearTimeout(u),e(o))}function f(){if((new Date).getTime()-p>=h)k.parentNode&&k.parentNode.removeChild(k),t(o);else{var e=document.hidden;(!0===e||void 0===e)&&(g=d.a.offsetWidth,v=_.a.offsetWidth,y=m.a.offsetWidth,r()),u=setTimeout(f,50)}}var d=new n(s),_=new n(s),m=new n(s),g=-1,v=-1,y=-1,b=-1,x=-1,w=-1,k=document.createElement("div");k.dir="ltr",i(d,l(o,"sans-serif")),i(_,l(o,"serif")),i(m,l(o,"monospace")),k.appendChild(d.a),k.appendChild(_.a),k.appendChild(m.a),document.body.appendChild(k),b=d.a.offsetWidth,x=_.a.offsetWidth,w=m.a.offsetWidth,f(),a(d,function(e){g=e,r()}),i(d,l(o,'"'+o.family+'",sans-serif')),a(_,function(e){v=e,r()}),i(_,l(o,'"'+o.family+'",serif')),a(m,function(e){y=e,r()}),i(m,l(o,'"'+o.family+'",monospace'))})})},"undefined"!=typeof t?t.exports=s:(window.FontFaceObserver=s,window.FontFaceObserver.prototype.load=s.prototype.load)}()},{}],80:[function(e,t){"use strict";function r(e,t,r,o,s,u,l,c){if(r/=t,o/=t,l>=r&&o>=c)return e;if(l>o||r>c)return null;for(var f=[],h=0;h=r&&o>=p)f.push(_);else if(!(d>o||r>p)){var v=1===g?n(m,r,o,s):i(m,r,o,s,u,3===g);v.length&&f.push(a(_.tags,g,v,_.id))}}return f.length?f:null}function n(e,t,r,n){for(var i=[],o=0;o=t&&r>=s&&i.push(a)}return i}function i(e,t,r,n,i,a){for(var s=[],u=0;uc;c++)l=p||_[c],p=_[c+1],h=d||l[n],d=p[n],t>h?d>r?(b.push(i(l,p,t),i(l,p,r)),a||(b=o(s,b,m,g,v))):d>=t&&b.push(i(l,p,t)):h>r?t>d?(b.push(i(l,p,r),i(l,p,t)),a||(b=o(s,b,m,g,v))):r>=d&&b.push(i(l,p,r)):(b.push(l),t>d?(b.push(i(l,p,t)),a||(b=o(s,b,m,g,v))):d>r&&(b.push(i(l,p,r)),a||(b=o(s,b,m,g,v))));l=_[y-1],h=l[n],h>=t&&r>=h&&b.push(l),f=b[b.length-1],a&&f&&(b[0][0]!==f[0]||b[0][1]!==f[1])&&b.push(b[0]),o(s,b,m,g,v)}return s}function o(e,t,r,n,i){return t.length&&(t.area=r,t.dist=n,void 0!==i&&(t.outer=i),e.push(t)),[]}t.exports=r;var a=e("./feature")},{"./feature":82}],81:[function(e,t){"use strict";function r(e,t){var r=[];if("FeatureCollection"===e.type)for(var i=0;in?0:n>1?1:n,[r,n,0]}function a(e){for(var t,r,n=0,i=0,o=0;o1)return!1;var o=i.geometry[0].length;if(5!==o)return!1;for(var a=0;o>a;a++){var s=c.point(i.geometry[0][a],t,e.z2,e.x,e.y);if(s[0]!==-r&&s[0]!==t+r||s[1]!==-r&&s[1]!==t+r)return!1}return!0}t.exports=r;var l=e("./convert"),c=e("./transform"),f=e("./clip"),h=e("./wrap"),d=e("./tile");n.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,solidChildren:!1,tolerance:3,extent:4096,buffer:64,debug:0},n.prototype.splitTile=function(e,t,r,n,s,l,c){for(var h=[e,t,r,n],p=this.options,_=p.debug,m=null;h.length;){n=h.pop(),r=h.pop(),t=h.pop(),e=h.pop();var g=1<1&&console.time("creation"),y=this.tiles[v]=d(e,g,r,n,b,t===p.maxZoom),this.tileCoords.push({z:t,x:r,y:n}),_)){_>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",t,r,n,y.numFeatures,y.numPoints,y.numSimplified),console.timeEnd("creation"));var x="z"+t;this.stats[x]=(this.stats[x]||0)+1,this.total++}if(y.source=e,s){if(t===p.maxZoom||t===s)continue;var w=1<1&&console.time("clipping");var k,A,T,E,S,R,M=.5*p.buffer/p.extent,z=.5-M,O=.5+M,P=1+M;k=A=T=E=null,S=f(e,g,r-M,r+O,0,o,y.min[0],y.max[0]),R=f(e,g,r+z,r+P,0,o,y.min[0],y.max[0]),S&&(k=f(S,g,n-M,n+O,1,a,y.min[1],y.max[1]),A=f(S,g,n+z,n+P,1,a,y.min[1],y.max[1])),R&&(T=f(R,g,n-M,n+O,1,a,y.min[1],y.max[1]),E=f(R,g,n+z,n+P,1,a,y.min[1],y.max[1])),_>1&&console.timeEnd("clipping"),e.length&&(h.push(k||[],t+1,2*r,2*n),h.push(A||[],t+1,2*r,2*n+1),h.push(T||[],t+1,2*r+1,2*n),h.push(E||[],t+1,2*r+1,2*n+1))}else s&&(m=t)}return m},n.prototype.getTile=function(e,t,r){var n=this.options,o=n.extent,a=n.debug,s=1<1&&console.log("drilling down to z%d-%d-%d",e,t,r);for(var f,h=e,d=t,p=r;!f&&h>0;)h--,d=Math.floor(d/2),p=Math.floor(p/2),f=this.tiles[i(h,d,p)];if(!f||!f.source)return null;if(a>1&&console.log("found parent tile z%d-%d-%d",h,d,p),u(f,o,n.buffer))return c.tile(f,o);a>1&&console.time("drilling down");var _=this.splitTile(f.source,h,d,p,e,t,r);if(a>1&&console.timeEnd("drilling down"),null!==_){var m=1<r;r++)o=n(e[r],e[l],e[c]),o>i&&(a=r,i=o);i>s?(e[a][2]=i,f.push(l),f.push(a),l=a):(c=f.pop(),l=f.pop())}}function n(e,t,r){var n=t[0],i=t[1],o=r[0],a=r[1],s=e[0],u=e[1],l=o-n,c=a-i;if(0!==l||0!==c){var f=((s-n)*l+(u-i)*c)/(l*l+c*c);f>1?(n=o,i=a):f>0&&(n+=l*f,i+=c*f)}return l=s-n,c=u-i,l*l+c*c}t.exports=r},{}],85:[function(e,t){"use strict";function r(e,t,r,i,o,a){for(var s={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:i,z2:t,transformed:!1,min:[2,1],max:[-1,0]},u=0;us.max[0]&&(s.max[0]=c[0]),c[1]>s.max[1]&&(s.max[1]=c[1])}return s}function n(e,t,r,n){var o,a,s,u,l=t.geometry,c=t.type,f=[],h=r*r;if(1===c)for(o=0;oh)&&(d.push(u),e.numSimplified++),e.numPoints++;3===c&&i(d,s.outer),f.push(d)}else e.numPoints+=s.length;if(f.length){var p={geometry:f,type:c,tags:t.tags||null};null!==t.id&&(p.id=t.id),e.features.push(p)}}function i(e,t){var r=o(e);0>r===t&&e.reverse()}function o(e){for(var t,r,n=0,i=0,o=e.length,a=o-1;o>i;a=i++)t=e[i],r=e[a],n+=(r[0]-t[0])*(t[1]+r[1]);return n}t.exports=r},{}],86:[function(e,t,r){"use strict";function n(e,t){if(e.transformed)return e;var r,n,o,a=e.z2,s=e.x,u=e.y;for(r=0;r>1,c=-7,f=r?i-1:0,h=r?-1:1,d=e[t+f];for(f+=h,o=d&(1<<-c)-1,d>>=-c,c+=s;c>0;o=256*o+e[t+f],f+=h,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=n;c>0;a=256*a+e[t+f],f+=h,c-=8);if(0===o)o=1-l;else{if(o===u)return a?0/0:1/0*(d?-1:1);a+=Math.pow(2,n),o-=l}return(d?-1:1)*a*Math.pow(2,o-n)},r.write=function(e,t,r,n,i,o){var a,s,u,l=8*o-i-1,c=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,_=0>t||0===t&&0>1/t?1:0;for(t=Math.abs(t),isNaN(t)||1/0===t?(s=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),t+=a+f>=1?h/u:h*Math.pow(2,1-f),t*u>=2&&(a++,u/=2),a+f>=c?(s=0,a=c):a+f>=1?(s=(t*u-1)*Math.pow(2,i),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,l-=8);e[r+d-p]|=128*_}},{}],99:[function(e,t){t.exports="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},{}],100:[function(e,t){function r(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function n(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&r(e.slice(0,0))}t.exports=function(e){return null!=e&&(r(e)||n(e)||!!e._isBuffer)}},{}],101:[function(e,t){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],102:[function(e,t){"use strict";var r=e("./lib/js-yaml.js");t.exports=r},{"./lib/js-yaml.js":103}],103:[function(e,t){"use strict";function r(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}var n=e("./js-yaml/loader");t.exports.Type=e("./js-yaml/type"),t.exports.Schema=e("./js-yaml/schema"),t.exports.FAILSAFE_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.JSON_SCHEMA=e("./js-yaml/schema/json"),t.exports.CORE_SCHEMA=e("./js-yaml/schema/core"),t.exports.DEFAULT_SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_FULL_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.load=n.load,t.exports.loadAll=n.loadAll,t.exports.safeLoad=n.safeLoad,t.exports.safeLoadAll=n.safeLoadAll,t.exports.YAMLException=e("./js-yaml/exception"),t.exports.MINIMAL_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.scan=r("scan"),t.exports.parse=r("parse"),t.exports.compose=r("compose"),t.exports.addConstructor=r("addConstructor")},{"./js-yaml/exception":105,"./js-yaml/loader":106,"./js-yaml/schema":108,"./js-yaml/schema/core":109,"./js-yaml/schema/default_full":110,"./js-yaml/schema/default_safe":111,"./js-yaml/schema/failsafe":112,"./js-yaml/schema/json":113,"./js-yaml/type":114}],104:[function(e,t){"use strict";function r(e){return"undefined"==typeof e||null===e}function n(e){return"object"==typeof e&&null!==e}function i(e){return Array.isArray(e)?e:r(e)?[]:[e]}function o(e,t){var r,n,i,o;if(t)for(o=Object.keys(t),r=0,n=o.length;n>r;r+=1)i=o[r],e[i]=t[i];return e}function a(e,t){var r,n="";for(r=0;t>r;r+=1)n+=e;return n}function s(e){return 0===e&&Number.NEGATIVE_INFINITY===1/e}t.exports.isNothing=r,t.exports.isObject=n,t.exports.toArray=i,t.exports.repeat=a,t.exports.isNegativeZero=s,t.exports.extend=o},{}],105:[function(e,t){"use strict";function r(e,t){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||"",this.name="YAMLException",this.reason=e,this.mark=t,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():"")}r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t},t.exports=r},{}],106:[function(e,t){"use strict";function r(e){return 10===e||13===e}function n(e){return 9===e||32===e}function i(e){return 9===e||32===e||10===e||13===e}function o(e){return 44===e||91===e||93===e||123===e||125===e}function a(e){var t;return e>=48&&57>=e?e-48:(t=32|e,t>=97&&102>=t?t-97+10:-1)}function s(e){return 120===e?2:117===e?4:85===e?8:0}function u(e){return e>=48&&57>=e?e-48:-1}function l(e){return 48===e?"\x00":97===e?"":98===e?"\b":116===e?" ":9===e?" ":110===e?"\n":118===e?" ":102===e?"\f":114===e?"\r":101===e?"":32===e?" ":34===e?'"':47===e?"/":92===e?"\\":78===e?"…":95===e?" ":76===e?"\u2028":80===e?"\u2029":""}function c(e){return 65535>=e?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}function f(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||V,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function h(e,t){return new U(t,new B(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function d(e,t){throw h(e,t)}function p(e,t){e.onWarning&&e.onWarning.call(null,h(e,t))}function _(e,t,r,n){var i,o,a,s;if(r>t){if(s=e.input.slice(t,r),n)for(i=0,o=s.length;o>i;i+=1)a=s.charCodeAt(i),9===a||a>=32&&1114111>=a||d(e,"expected valid JSON character");else $.test(s)&&d(e,"the stream contains non-printable characters");e.result+=s}}function m(e,t,r,n){var i,o,a,s;for(D.isObject(r)||d(e,"cannot merge mappings; the provided source object is unacceptable"),i=Object.keys(r),a=0,s=i.length;s>a;a+=1)o=i[a],q.call(t,o)||(t[o]=r[o],n[o]=!0)}function g(e,t,r,n,i,o){var a,s;if(i=String(i),null===t&&(t={}),"tag:yaml.org,2002:merge"===n)if(Array.isArray(o))for(a=0,s=o.length;s>a;a+=1)m(e,t,o[a],r);else m(e,t,o,r);else e.json||q.call(r,i)||!q.call(t,i)||d(e,"duplicated mapping key"),t[i]=o,delete r[i];return t}function v(e){var t;t=e.input.charCodeAt(e.position),10===t?e.position++:13===t?(e.position++,10===e.input.charCodeAt(e.position)&&e.position++):d(e,"a line break is expected"),e.line+=1,e.lineStart=e.position}function y(e,t,i){for(var o=0,a=e.input.charCodeAt(e.position);0!==a;){for(;n(a);)a=e.input.charCodeAt(++e.position);if(t&&35===a)do a=e.input.charCodeAt(++e.position);while(10!==a&&13!==a&&0!==a);if(!r(a))break;for(v(e),a=e.input.charCodeAt(e.position),o++,e.lineIndent=0;32===a;)e.lineIndent++,a=e.input.charCodeAt(++e.position)}return-1!==i&&0!==o&&e.lineIndent1&&(e.result+=D.repeat("\n",t-1))}function w(e,t,a){var s,u,l,c,f,h,d,p,m,g=e.kind,v=e.result;if(m=e.input.charCodeAt(e.position),i(m)||o(m)||35===m||38===m||42===m||33===m||124===m||62===m||39===m||34===m||37===m||64===m||96===m)return!1;if((63===m||45===m)&&(u=e.input.charCodeAt(e.position+1),i(u)||a&&o(u)))return!1;for(e.kind="scalar",e.result="",l=c=e.position,f=!1;0!==m;){if(58===m){if(u=e.input.charCodeAt(e.position+1),i(u)||a&&o(u))break}else if(35===m){if(s=e.input.charCodeAt(e.position-1),i(s))break}else{if(e.position===e.lineStart&&b(e)||a&&o(m))break;if(r(m)){if(h=e.line,d=e.lineStart,p=e.lineIndent,y(e,!1,-1),e.lineIndent>=t){f=!0,m=e.input.charCodeAt(e.position);continue}e.position=c,e.line=h,e.lineStart=d,e.lineIndent=p;break}}f&&(_(e,l,c,!1),x(e,e.line-h),l=c=e.position,f=!1),n(m)||(c=e.position+1),m=e.input.charCodeAt(++e.position)}return _(e,l,c,!1),e.result?!0:(e.kind=g,e.result=v,!1)}function k(e,t){var n,i,o;if(n=e.input.charCodeAt(e.position),39!==n)return!1;for(e.kind="scalar",e.result="",e.position++,i=o=e.position;0!==(n=e.input.charCodeAt(e.position));)if(39===n){if(_(e,i,e.position,!0),n=e.input.charCodeAt(++e.position),39!==n)return!0;i=o=e.position,e.position++}else r(n)?(_(e,i,o,!0),x(e,y(e,!1,t)),i=o=e.position):e.position===e.lineStart&&b(e)?d(e,"unexpected end of the document within a single quoted scalar"):(e.position++,o=e.position);d(e,"unexpected end of the stream within a single quoted scalar")}function A(e,t){var n,i,o,u,l,f;if(f=e.input.charCodeAt(e.position),34!==f)return!1;for(e.kind="scalar",e.result="",e.position++,n=i=e.position;0!==(f=e.input.charCodeAt(e.position));){if(34===f)return _(e,n,e.position,!0),e.position++,!0;if(92===f){if(_(e,n,e.position,!0),f=e.input.charCodeAt(++e.position),r(f))y(e,!1,t);else if(256>f&&nt[f])e.result+=it[f],e.position++;else if((l=s(f))>0){for(o=l,u=0;o>0;o--)f=e.input.charCodeAt(++e.position),(l=a(f))>=0?u=(u<<4)+l:d(e,"expected hexadecimal character");e.result+=c(u),e.position++}else d(e,"unknown escape sequence");n=i=e.position}else r(f)?(_(e,n,i,!0),x(e,y(e,!1,t)),n=i=e.position):e.position===e.lineStart&&b(e)?d(e,"unexpected end of the document within a double quoted scalar"):(e.position++,i=e.position)}d(e,"unexpected end of the stream within a double quoted scalar")}function T(e,t){var r,n,o,a,s,u,l,c,f,h,p,_=!0,m=e.tag,v=e.anchor,b={};if(p=e.input.charCodeAt(e.position),91===p)a=93,l=!1,n=[];else{if(123!==p)return!1;a=125,l=!0,n={}}for(null!==e.anchor&&(e.anchorMap[e.anchor]=n),p=e.input.charCodeAt(++e.position);0!==p;){if(y(e,!0,t),p=e.input.charCodeAt(e.position),p===a)return e.position++,e.tag=m,e.anchor=v,e.kind=l?"mapping":"sequence",e.result=n,!0;_||d(e,"missed comma between flow collection entries"),f=c=h=null,s=u=!1,63===p&&(o=e.input.charCodeAt(e.position+1),i(o)&&(s=u=!0,e.position++,y(e,!0,t))),r=e.line,P(e,t,W,!1,!0),f=e.tag,c=e.result,y(e,!0,t),p=e.input.charCodeAt(e.position),!u&&e.line!==r||58!==p||(s=!0,p=e.input.charCodeAt(++e.position),y(e,!0,t),P(e,t,W,!1,!0),h=e.result),l?g(e,n,b,f,c,h):n.push(s?g(e,null,b,f,c,h):c),y(e,!0,t),p=e.input.charCodeAt(e.position),44===p?(_=!0,p=e.input.charCodeAt(++e.position)):_=!1}d(e,"unexpected end of the stream within a flow collection")}function E(e,t){var i,o,a,s,l=Y,c=!1,f=t,h=0,p=!1;if(s=e.input.charCodeAt(e.position),124===s)o=!1;else{if(62!==s)return!1;o=!0}for(e.kind="scalar",e.result="";0!==s;)if(s=e.input.charCodeAt(++e.position),43===s||45===s)Y===l?l=43===s?K:J:d(e,"repeat of a chomping mode identifier");else{if(!((a=u(s))>=0))break;0===a?d(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?d(e,"repeat of an indentation width identifier"):(f=t+a-1,c=!0)}if(n(s)){do s=e.input.charCodeAt(++e.position);while(n(s));if(35===s)do s=e.input.charCodeAt(++e.position);while(!r(s)&&0!==s)}for(;0!==s;){for(v(e),e.lineIndent=0,s=e.input.charCodeAt(e.position);(!c||e.lineIndentf&&(f=e.lineIndent),r(s))h++;else{if(e.lineIndentt)&&0!==o)d(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(P(e,t,X,!0,a)&&(v?_=e.result:m=e.result),v||(g(e,f,h,p,_,m),p=_=m=null),y(e,!0,-1),u=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==u)d(e,"bad indentation of a mapping entry");else if(e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndentu;u+=1)if(c=e.implicitTypes[u],c.resolve(e.result)){e.result=c.construct(e.result),e.tag=c.tag,null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);break}}else q.call(e.typeMap,e.tag)?(c=e.typeMap[e.tag],null!==e.result&&c.kind!==e.kind&&d(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+c.kind+'", not "'+e.kind+'"'),c.resolve(e.result)?(e.result=c.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):d(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):d(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||m}function N(e){var t,o,a,s,u=e.position,l=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(s=e.input.charCodeAt(e.position))&&(y(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==s));){for(l=!0,s=e.input.charCodeAt(++e.position),t=e.position;0!==s&&!i(s);)s=e.input.charCodeAt(++e.position);for(o=e.input.slice(t,e.position),a=[],o.length<1&&d(e,"directive name must not be less than one character in length");0!==s;){for(;n(s);)s=e.input.charCodeAt(++e.position);if(35===s){do s=e.input.charCodeAt(++e.position);while(0!==s&&!r(s));break}if(r(s))break;for(t=e.position;0!==s&&!i(s);)s=e.input.charCodeAt(++e.position);a.push(e.input.slice(t,e.position))}0!==s&&v(e),q.call(at,o)?at[o](e,o,a):p(e,'unknown document directive "'+o+'"')}return y(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,y(e,!0,-1)):l&&d(e,"directives end mark is expected"),P(e,e.lineIndent-1,X,!1,!0),y(e,!0,-1),e.checkLineBreaks&&Q.test(e.input.slice(u,e.position))&&p(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&b(e)?void(46===e.input.charCodeAt(e.position)&&(e.position+=3,y(e,!0,-1))):void(e.positionn;n+=1)t(o[n])}function I(e,t){var r=j(e,t);if(0===r.length)return void 0;if(1===r.length)return r[0];throw new U("expected a single document in the stream, but found more")}function C(e,t,r){L(e,t,D.extend({schema:G},r))}function F(e,t){return I(e,D.extend({schema:G},t))}for(var D=e("./common"),U=e("./exception"),B=e("./mark"),G=e("./schema/default_safe"),V=e("./schema/default_full"),q=Object.prototype.hasOwnProperty,W=1,Z=2,H=3,X=4,Y=1,J=2,K=3,$=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Q=/[\x85\u2028\u2029]/,et=/[,\[\]\{\}]/,tt=/^(?:!|!!|![a-z\-]+!)$/i,rt=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i,nt=new Array(256),it=new Array(256),ot=0;256>ot;ot++)nt[ot]=l(ot)?1:0,it[ot]=l(ot);var at={YAML:function(e,t,r){var n,i,o;null!==e.version&&d(e,"duplication of %YAML directive"),1!==r.length&&d(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),null===n&&d(e,"ill-formed argument of the YAML directive"),i=parseInt(n[1],10),o=parseInt(n[2],10),1!==i&&d(e,"unacceptable YAML version of the document"),e.version=r[0],e.checkLineBreaks=2>o,1!==o&&2!==o&&p(e,"unsupported YAML version of the document")},TAG:function(e,t,r){var n,i;2!==r.length&&d(e,"TAG directive accepts exactly two arguments"),n=r[0],i=r[1],tt.test(n)||d(e,"ill-formed tag handle (first argument) of the TAG directive"),q.call(e.tagMap,n)&&d(e,'there is a previously declared suffix for "'+n+'" tag handle'),rt.test(i)||d(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=i}};t.exports.loadAll=L,t.exports.load=I,t.exports.safeLoadAll=C,t.exports.safeLoad=F},{"./common":104,"./exception":105,"./mark":107,"./schema/default_full":110,"./schema/default_safe":111}],107:[function(e,t){"use strict";function r(e,t,r,n,i){this.name=e,this.buffer=t,this.position=r,this.line=n,this.column=i}var n=e("./common");r.prototype.getSnippet=function(e,t){var r,i,o,a,s;if(!this.buffer)return null;for(e=e||4,t=t||75,r="",i=this.position;i>0&&-1==="\x00\r\n…\u2028\u2029".indexOf(this.buffer.charAt(i-1));)if(i-=1,this.position-i>t/2-1){r=" ... ",i+=5;break}for(o="",a=this.position;at/2-1){o=" ... ",a-=5;break}return s=this.buffer.slice(i,a),n.repeat(" ",e)+r+s+o+"\n"+n.repeat(" ",e+this.position-i+r.length)+"^"},r.prototype.toString=function(e){var t,r="";return this.name&&(r+='in "'+this.name+'" '),r+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(r+=":\n"+t)),r},t.exports=r},{"./common":104}],108:[function(e,t){"use strict";function r(e,t,n){var i=[];return e.include.forEach(function(e){n=r(e,t,n)}),e[t].forEach(function(e){n.forEach(function(t,r){t.tag===e.tag&&i.push(r)}),n.push(e)}),n.filter(function(e,t){return-1===i.indexOf(t)})}function n(){function e(e){n[e.tag]=e}var t,r,n={};for(t=0,r=arguments.length;r>t;t+=1)arguments[t].forEach(e);return n}function i(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new a("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=r(this,"implicit",[]),this.compiledExplicit=r(this,"explicit",[]),this.compiledTypeMap=n(this.compiledImplicit,this.compiledExplicit)}var o=e("./common"),a=e("./exception"),s=e("./type");i.DEFAULT=null,i.create=function(){var e,t;switch(arguments.length){case 1:e=i.DEFAULT,t=arguments[0];break;case 2:e=arguments[0],t=arguments[1];break;default:throw new a("Wrong number of arguments for Schema.create function")}if(e=o.toArray(e),t=o.toArray(t),!e.every(function(e){return e instanceof i}))throw new a("Specified list of super schemas (or a single Schema object) contains a non-Schema object.");if(!t.every(function(e){return e instanceof s}))throw new a("Specified list of YAML types (or a single Type object) contains a non-Type object.");return new i({include:e,explicit:t})},t.exports=i},{"./common":104,"./exception":105,"./type":114}],109:[function(e,t){"use strict";var r=e("../schema");t.exports=new r({include:[e("./json")]})},{"../schema":108,"./json":113}],110:[function(e,t){"use strict";var r=e("../schema");t.exports=r.DEFAULT=new r({include:[e("./default_safe")],explicit:[e("../type/js/undefined"),e("../type/js/regexp"),e("../type/js/function")]})},{"../schema":108,"../type/js/function":119,"../type/js/regexp":120,"../type/js/undefined":121,"./default_safe":111}],111:[function(e,t){"use strict";var r=e("../schema");t.exports=new r({include:[e("./core")],implicit:[e("../type/timestamp"),e("../type/merge")],explicit:[e("../type/binary"),e("../type/omap"),e("../type/pairs"),e("../type/set")]})},{"../schema":108,"../type/binary":115,"../type/merge":123,"../type/omap":125,"../type/pairs":126,"../type/set":128,"../type/timestamp":130,"./core":109}],112:[function(e,t){"use strict";var r=e("../schema");t.exports=new r({explicit:[e("../type/str"),e("../type/seq"),e("../type/map")]})},{"../schema":108,"../type/map":122,"../type/seq":127,"../type/str":129}],113:[function(e,t){"use strict";var r=e("../schema");t.exports=new r({include:[e("./failsafe")],implicit:[e("../type/null"),e("../type/bool"),e("../type/int"),e("../type/float")]})},{"../schema":108,"../type/bool":116,"../type/float":117,"../type/int":118,"../type/null":124,"./failsafe":112}],114:[function(e,t){"use strict";function r(e){var t={};return null!==e&&Object.keys(e).forEach(function(r){e[r].forEach(function(e){t[String(e)]=r})}),t}function n(e,t){if(t=t||{},Object.keys(t).forEach(function(t){if(-1===o.indexOf(t))throw new i('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=r(t.styleAliases||null),-1===a.indexOf(this.kind))throw new i('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var i=e("./exception"),o=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],a=["scalar","sequence","mapping"];t.exports=n},{"./exception":105}],115:[function(e,t){"use strict";function r(e){if(null===e)return!1;var t,r,n=0,i=e.length,o=u;for(r=0;i>r;r++)if(t=o.indexOf(e.charAt(r)),!(t>64)){if(0>t)return!1;n+=6}return n%8===0}function n(e){var t,r,n=e.replace(/[\r\n=]/g,""),i=n.length,o=u,s=0,l=[];for(t=0;i>t;t++)t%4===0&&t&&(l.push(s>>16&255),l.push(s>>8&255),l.push(255&s)),s=s<<6|o.indexOf(n.charAt(t));return r=i%4*6,0===r?(l.push(s>>16&255),l.push(s>>8&255),l.push(255&s)):18===r?(l.push(s>>10&255),l.push(s>>2&255)):12===r&&l.push(s>>4&255),a?new a(l):l}function i(e){var t,r,n="",i=0,o=e.length,a=u;for(t=0;o>t;t++)t%3===0&&t&&(n+=a[i>>18&63],n+=a[i>>12&63],n+=a[i>>6&63],n+=a[63&i]),i=(i<<8)+e[t];return r=o%3,0===r?(n+=a[i>>18&63],n+=a[i>>12&63],n+=a[i>>6&63],n+=a[63&i]):2===r?(n+=a[i>>10&63],n+=a[i>>4&63],n+=a[i<<2&63],n+=a[64]):1===r&&(n+=a[i>>2&63],n+=a[i<<4&63],n+=a[64],n+=a[64]),n}function o(e){return a&&a.isBuffer(e)}var a=e("buffer").Buffer,s=e("../type"),u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";t.exports=new s("tag:yaml.org,2002:binary",{kind:"scalar",resolve:r,construct:n,predicate:o,represent:i})},{"../type":114,buffer:9}],116:[function(e,t){"use strict";function r(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)}function n(e){return"true"===e||"True"===e||"TRUE"===e}function i(e){return"[object Boolean]"===Object.prototype.toString.call(e)}var o=e("../type");t.exports=new o("tag:yaml.org,2002:bool",{kind:"scalar",resolve:r,construct:n,predicate:i,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},{"../type":114}],117:[function(e,t){"use strict";function r(e){return null===e?!1:u.test(e)?!0:!1}function n(e){var t,r,n,i;return t=e.replace(/_/g,"").toLowerCase(),r="-"===t[0]?-1:1,i=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?0/0:t.indexOf(":")>=0?(t.split(":").forEach(function(e){i.unshift(parseFloat(e,10))}),t=0,n=1,i.forEach(function(e){t+=e*n,n*=60}),r*t):r*parseFloat(t,10)}function i(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(a.isNegativeZero(e))return"-0.0";return r=e.toString(10),l.test(r)?r.replace("e",".e"):r}function o(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!==0||a.isNegativeZero(e))}var a=e("../common"),s=e("../type"),u=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?|\\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),l=/^[-+]?[0-9]+e/;t.exports=new s("tag:yaml.org,2002:float",{kind:"scalar",resolve:r,construct:n,predicate:o,represent:i,defaultStyle:"lowercase"})},{"../common":104,"../type":114}],118:[function(e,t){"use strict";function r(e){return e>=48&&57>=e||e>=65&&70>=e||e>=97&&102>=e}function n(e){return e>=48&&55>=e}function i(e){return e>=48&&57>=e}function o(e){if(null===e)return!1;var t,o=e.length,a=0,s=!1;if(!o)return!1;if(t=e[a],("-"===t||"+"===t)&&(t=e[++a]),"0"===t){if(a+1===o)return!0;if(t=e[++a],"b"===t){for(a++;o>a;a++)if(t=e[a],"_"!==t){if("0"!==t&&"1"!==t)return!1;s=!0}return s}if("x"===t){for(a++;o>a;a++)if(t=e[a],"_"!==t){if(!r(e.charCodeAt(a)))return!1;s=!0}return s}for(;o>a;a++)if(t=e[a],"_"!==t){if(!n(e.charCodeAt(a)))return!1;s=!0}return s}for(;o>a;a++)if(t=e[a],"_"!==t){if(":"===t)break;if(!i(e.charCodeAt(a)))return!1;s=!0}return s?":"!==t?!0:/^(:[0-5]?[0-9])+$/.test(e.slice(a)):!1}function a(e){var t,r,n=e,i=1,o=[];return-1!==n.indexOf("_")&&(n=n.replace(/_/g,"")),t=n[0],("-"===t||"+"===t)&&("-"===t&&(i=-1),n=n.slice(1),t=n[0]),"0"===n?0:"0"===t?"b"===n[1]?i*parseInt(n.slice(2),2):"x"===n[1]?i*parseInt(n,16):i*parseInt(n,8):-1!==n.indexOf(":")?(n.split(":").forEach(function(e){o.unshift(parseInt(e,10))}),n=0,r=1,o.forEach(function(e){n+=e*r,r*=60}),i*n):i*parseInt(n,10)}function s(e){return"[object Number]"===Object.prototype.toString.call(e)&&e%1===0&&!u.isNegativeZero(e)}var u=e("../common"),l=e("../type");t.exports=new l("tag:yaml.org,2002:int",{kind:"scalar",resolve:o,construct:a,predicate:s,represent:{binary:function(e){return"0b"+e.toString(2)},octal:function(e){return"0"+e.toString(8)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return"0x"+e.toString(16).toUpperCase()}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},{"../common":104,"../type":114}],119:[function(e,t){"use strict";function r(e){if(null===e)return!1;try{var t="("+e+")",r=a.parse(t,{range:!0});return"Program"!==r.type||1!==r.body.length||"ExpressionStatement"!==r.body[0].type||"FunctionExpression"!==r.body[0].expression.type?!1:!0}catch(n){return!1}}function n(e){var t,r="("+e+")",n=a.parse(r,{range:!0}),i=[];if("Program"!==n.type||1!==n.body.length||"ExpressionStatement"!==n.body[0].type||"FunctionExpression"!==n.body[0].expression.type)throw new Error("Failed to resolve function");return n.body[0].expression.params.forEach(function(e){i.push(e.name)}),t=n.body[0].expression.body.range,new Function(i,r.slice(t[0]+1,t[1]-1))}function i(e){return e.toString()}function o(e){return"[object Function]"===Object.prototype.toString.call(e)}var a;try{var s=e;a=s("esprima")}catch(u){"undefined"!=typeof window&&(a=window.esprima)}var l=e("../../type");t.exports=new l("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:r,construct:n,predicate:o,represent:i})},{"../../type":114}],120:[function(e,t){"use strict";function r(e){if(null===e)return!1;if(0===e.length)return!1;var t=e,r=/\/([gim]*)$/.exec(e),n="";if("/"===t[0]){if(r&&(n=r[1]),n.length>3)return!1;if("/"!==t[t.length-n.length-1])return!1}return!0}function n(e){var t=e,r=/\/([gim]*)$/.exec(e),n="";return"/"===t[0]&&(r&&(n=r[1]),t=t.slice(1,t.length-n.length-1)),new RegExp(t,n)}function i(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}function o(e){return"[object RegExp]"===Object.prototype.toString.call(e)}var a=e("../../type");t.exports=new a("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:r,construct:n,predicate:o,represent:i})},{"../../type":114}],121:[function(e,t){"use strict";function r(){return!0}function n(){return void 0}function i(){return""}function o(e){return"undefined"==typeof e}var a=e("../../type");t.exports=new a("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:r,construct:n,predicate:o,represent:i})},{"../../type":114}],122:[function(e,t){"use strict";var r=e("../type");t.exports=new r("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},{"../type":114}],123:[function(e,t){"use strict";function r(e){return"<<"===e||null===e}var n=e("../type");t.exports=new n("tag:yaml.org,2002:merge",{kind:"scalar",resolve:r})},{"../type":114}],124:[function(e,t){"use strict";function r(e){if(null===e)return!0;var t=e.length;return 1===t&&"~"===e||4===t&&("null"===e||"Null"===e||"NULL"===e)}function n(){return null}function i(e){return null===e}var o=e("../type");t.exports=new o("tag:yaml.org,2002:null",{kind:"scalar",resolve:r,construct:n,predicate:i,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},{"../type":114}],125:[function(e,t){"use strict";function r(e){if(null===e)return!0;var t,r,n,i,s,u=[],l=e;for(t=0,r=l.length;r>t;t+=1){if(n=l[t],s=!1,"[object Object]"!==a.call(n))return!1;for(i in n)if(o.call(n,i)){if(s)return!1;s=!0}if(!s)return!1;if(-1!==u.indexOf(i))return!1;u.push(i)}return!0}function n(e){return null!==e?e:[]}var i=e("../type"),o=Object.prototype.hasOwnProperty,a=Object.prototype.toString;t.exports=new i("tag:yaml.org,2002:omap",{kind:"sequence",resolve:r,construct:n})},{"../type":114}],126:[function(e,t){"use strict";function r(e){if(null===e)return!0;var t,r,n,i,a,s=e;for(a=new Array(s.length),t=0,r=s.length;r>t;t+=1){if(n=s[t],"[object Object]"!==o.call(n))return!1;if(i=Object.keys(n),1!==i.length)return!1;a[t]=[i[0],n[i[0]]]}return!0}function n(e){if(null===e)return[];var t,r,n,i,o,a=e;for(o=new Array(a.length),t=0,r=a.length;r>t;t+=1)n=a[t],i=Object.keys(n),o[t]=[i[0],n[i[0]]];return o}var i=e("../type"),o=Object.prototype.toString;t.exports=new i("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:r,construct:n})},{"../type":114}],127:[function(e,t){"use strict";var r=e("../type");t.exports=new r("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return null!==e?e:[]}})},{"../type":114}],128:[function(e,t){"use strict";function r(e){if(null===e)return!0;var t,r=e;for(t in r)if(o.call(r,t)&&null!==r[t])return!1;return!0}function n(e){return null!==e?e:{}}var i=e("../type"),o=Object.prototype.hasOwnProperty;t.exports=new i("tag:yaml.org,2002:set",{kind:"mapping",resolve:r,construct:n})},{"../type":114}],129:[function(e,t){"use strict";var r=e("../type");t.exports=new r("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return null!==e?e:""}})},{"../type":114}],130:[function(e,t){"use strict";function r(e){return null===e?!1:null===a.exec(e)?!1:!0}function n(e){var t,r,n,i,o,s,u,l,c,f,h=0,d=null;if(t=a.exec(e),null===t)throw new Error("Date resolve error");if(r=+t[1],n=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(r,n,i));if(o=+t[4],s=+t[5],u=+t[6],t[7]){for(h=t[7].slice(0,3);h.length<3;)h+="0";h=+h}return t[9]&&(l=+t[10],c=+(t[11]||0),d=6e4*(60*l+c),"-"===t[9]&&(d=-d)),f=new Date(Date.UTC(r,n,i,o,s,u,h)),d&&f.setTime(f.getTime()-d),f}function i(e){return e.toISOString()}var o=e("../type"),a=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?)?$");t.exports=new o("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:r,construct:n,instanceOf:Date,represent:i})},{"../type":114}],131:[function(e,t,r){"use strict";var n=(e("./utils"),e("./support")),i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.decode=function(e){var t,r,o,a,s,u,l,c=0,f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");var h=3*e.length/4;e.charAt(e.length-1)===i.charAt(64)&&h--,e.charAt(e.length-2)===i.charAt(64)&&h--;var d;for(d=n.uint8array?new Uint8Array(h):new Array(h);c>4,r=(15&s)<<4|u>>2,o=(3&u)<<6|l,d[f++]=t,64!==u&&(d[f++]=r),64!==l&&(d[f++]=o);return d}},{"./support":157,"./utils":159}],132:[function(e,t){"use strict";function r(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}var n=e("./external"),i=e("./stream/DataWorker"),o=e("./stream/DataLengthProbe"),a=e("./stream/Crc32Probe"),o=e("./stream/DataLengthProbe");r.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new o("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},r.createWorkerFrom=function(e,t,r){return e.pipe(new a).pipe(new o("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new o("compressedSize")).withStreamInfo("compression",t)},t.exports=r},{"./external":136,"./stream/Crc32Probe":152,"./stream/DataLengthProbe":153,"./stream/DataWorker":154}],133:[function(e,t,r){"use strict";var n=e("./stream/GenericWorker");r.STORE={magic:"\x00\x00",uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":137,"./stream/GenericWorker":155}],134:[function(e,t){"use strict";function r(){for(var e,t=[],r=0;256>r;r++){e=r;for(var n=0;8>n;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}function n(e,t,r,n){var i=a,o=n+r;e=-1^e;for(var s=n;o>s;s++)e=e>>>8^i[255&(e^t[s])];return-1^e}function i(e,t,r,n){var i=a,o=n+r;e=-1^e;for(var s=n;o>s;s++)e=e>>>8^i[255&(e^t.charCodeAt(s))];return-1^e}var o=e("./utils"),a=r();t.exports=function(e,t){if("undefined"==typeof e||!e.length)return 0;var r="string"!==o.getTypeOf(e);return r?n(0|t,e,e.length,0):i(0|t,e,e.length,0)}},{"./utils":159}],135:[function(e,t,r){"use strict";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],136:[function(e,t){"use strict";t.exports={Promise:window.Promise}},{}],137:[function(e,t,r){"use strict";function n(e,t){s.call(this,"FlateWorker/"+e),this._pako=new o[e]({raw:!0,level:t.level||-1}),this.meta={};var r=this;this._pako.onData=function(e){r.push({data:e,meta:r.meta})}}var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,o=e("pako"),a=e("./utils"),s=e("./stream/GenericWorker"),u=i?"uint8array":"array";r.magic="\b\x00",a.inherits(n,s),n.prototype.processChunk=function(e){this.meta=e.meta,this._pako.push(a.transformTo(u,e.data),!1)},n.prototype.flush=function(){s.prototype.flush.call(this),this._pako.push([],!0)},n.prototype.cleanUp=function(){s.prototype.cleanUp.call(this),this._pako=null},r.compressWorker=function(e){return new n("Deflate",e)},r.uncompressWorker=function(){return new n("Inflate",{})}},{"./stream/GenericWorker":155,"./utils":159,pako:170}],138:[function(e,t){"use strict";function r(){if(!(this instanceof r))return new r;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files={},this.comment=null,this.root="",this.clone=function(){var e=new r;for(var t in this)"function"!=typeof this[t]&&(e[t]=this[t]);return e}}r.prototype=e("./object"),r.prototype.loadAsync=e("./load"),r.support=e("./support"),r.defaults=e("./defaults"),r.loadAsync=function(e,t){return(new r).loadAsync(e,t)},r.external=e("./external"),t.exports=r},{"./defaults":135,"./external":136,"./load":139,"./object":143,"./support":157}],139:[function(e,t){"use strict";function r(e){return new i.Promise(function(t,r){var n=e.decompressed.getContentWorker().pipe(new s);n.on("error",function(e){r(e)}).on("end",function(){n.streamInfo.crc32!==e.decompressed.crc32?r(new Error("Corrupted zip : CRC32 mismatch")):t()}).resume()})}var n=e("./utils"),i=e("./external"),o=e("./utf8"),n=e("./utils"),a=e("./zipEntries"),s=e("./stream/Crc32Probe"),u=e("./nodejsUtils");t.exports=function(e,t){var s=this;return t=n.extend(t||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),u.isNode&&u.isStream(e)?i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):n.prepareContent("the loaded zip file",e,!0,t.optimizedBinaryString,t.base64).then(function(e){var r=new a(t);return r.load(e),r}).then(function(e){var n=[i.Promise.resolve(e)],o=e.files;if(t.checkCRC32)for(var a=0;a0?e.substring(0,t):""},h=function(e){return"/"!==e.slice(-1)&&(e+="/"),e},d=function(e,t){return t="undefined"!=typeof t?t:o.createFolders,e=h(e),this.files[e]||c.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]},p={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(e){var t,r,n;for(t in this.files)this.files.hasOwnProperty(t)&&(n=this.files[t],r=t.slice(this.root.length,t.length),r&&t.slice(0,this.root.length)===this.root&&e(r,n))},filter:function(e){var t=[];return this.forEach(function(r,n){e(r,n)&&t.push(n)}),t},file:function(e,t,n){if(1===arguments.length){if(r(e)){var i=e;return this.filter(function(e,t){return!t.dir&&i.test(e)})}var o=this.files[this.root+e];return o&&!o.dir?o:null}return e=this.root+e,c.call(this,e,t,n),this},folder:function(e){if(!e)return this;if(r(e))return this.filter(function(t,r){return r.dir&&e.test(t)});var t=this.root+e,n=d.call(this,t),i=this.clone();return i.root=n.name,i}};t.exports=p},{"./compressedObject":132,"./defaults":135,"./nodejs/NodejsStreamInputAdapter":140,"./nodejsUtils":142,"./stream/GenericWorker":155,"./utils":159,"./zipObject":162}],144:[function(e,t){"use strict";function r(e){n.call(this,e);for(var t=0;t=0;--o)if(this.data[o]===t&&this.data[o+1]===r&&this.data[o+2]===n&&this.data[o+3]===i)return o-this.zero;return-1},r.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),o=this.readData(4);return t===o[0]&&r===o[1]&&n===o[2]&&i===o[3]},r.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=r},{"../utils":159,"./DataReader":145}],145:[function(e,t){"use strict";function r(e){this.data=e,this.length=e.length,this.index=0,this.zero=0 -}var n=e("../utils");r.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.lengthe)throw new Error("End of data reached (data length = "+this.length+", asked index = "+e+"). Corrupted zip ?")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC((e>>25&127)+1980,(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=r},{"../utils":159}],146:[function(e,t){"use strict";function r(e){n.call(this,e)}var n=e("./Uint8ArrayReader"),i=e("../utils");i.inherits(r,n),r.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=r},{"../utils":159,"./Uint8ArrayReader":148}],147:[function(e,t){"use strict";function r(e){n.call(this,e)}var n=e("./DataReader"),i=e("../utils");i.inherits(r,n),r.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},r.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},r.prototype.readAndCheckSignature=function(e){var t=this.readData(4);return e===t},r.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=r},{"../utils":159,"./DataReader":145}],148:[function(e,t){"use strict";function r(e){n.call(this,e)}var n=e("./ArrayReader"),i=e("../utils");i.inherits(r,n),r.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=r},{"../utils":159,"./ArrayReader":144}],149:[function(e,t){"use strict";var r=e("../utils"),n=e("../support"),i=e("./ArrayReader"),o=e("./StringReader"),a=e("./NodeBufferReader"),s=e("./Uint8ArrayReader");t.exports=function(e){var t=r.getTypeOf(e);return r.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new a(e):n.uint8array?new s(r.transformTo("uint8array",e)):new i(r.transformTo("array",e)):new o(e)}},{"../support":157,"../utils":159,"./ArrayReader":144,"./NodeBufferReader":146,"./StringReader":147,"./Uint8ArrayReader":148}],150:[function(e,t,r){"use strict";r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],151:[function(e,t){"use strict";function r(e){n.call(this,"ConvertWorker to "+e),this.destType=e}var n=e("./GenericWorker"),i=e("../utils");i.inherits(r,n),r.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=r},{"../utils":159,"./GenericWorker":155}],152:[function(e,t){"use strict";function r(){n.call(this,"Crc32Probe")}var n=e("./GenericWorker"),i=e("../crc32"),o=e("../utils");o.inherits(r,n),r.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=r},{"../crc32":134,"../utils":159,"./GenericWorker":155}],153:[function(e,t){"use strict";function r(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}var n=e("../utils"),i=e("./GenericWorker");n.inherits(r,i),r.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=r},{"../utils":159,"./GenericWorker":155}],154:[function(e,t){"use strict";function r(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}var n=e("../utils"),i=e("./GenericWorker"),o=16384;n.inherits(r,i),r.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return i.prototype.resume.call(this)?(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0):!1},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=o,t=null,r=Math.min(this.max,this.index+e);if(this.index>=this.max)return this.end();switch(this.type){case"string":t=this.data.substring(this.index,r);break;case"uint8array":t=this.data.subarray(this.index,r);break;case"array":case"nodebuffer":t=this.data.slice(this.index,r)}return this.index=r,this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=r},{"../utils":159,"./GenericWorker":155}],155:[function(e,t){"use strict";function r(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}r.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return this.isFinished?!1:(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r "+e:e}},t.exports=r},{}],156:[function(e,t){(function(r){"use strict";function n(e,t,r){switch(e){case"blob":return s.newBlob(s.transformTo("arraybuffer",t),r);case"base64":return c.encode(t);default:return s.transformTo(e,t)}}function i(e,t){var n,i=0,o=null,a=0;for(n=0;nc;c++)l[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;l[254]=l[254]=1;var f=function(e){var t,r,n,i,o,s=e.length,u=0;for(i=0;s>i;i++)r=e.charCodeAt(i),55296===(64512&r)&&s>i+1&&(n=e.charCodeAt(i+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),i++)),u+=128>r?1:2048>r?2:65536>r?3:4;for(t=a.uint8array?new Uint8Array(u):new Array(u),o=0,i=0;u>o;i++)r=e.charCodeAt(i),55296===(64512&r)&&s>i+1&&(n=e.charCodeAt(i+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),i++)),128>r?t[o++]=r:2048>r?(t[o++]=192|r>>>6,t[o++]=128|63&r):65536>r?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t},h=function(e,t){var r;for(t=t||e.length,t>e.length&&(t=e.length),r=t-1;r>=0&&128===(192&e[r]);)r--;return 0>r?t:0===r?t:r+l[e[r]]>t?r:t},d=function(e){var t,r,n,i,a=e.length,s=new Array(2*a);for(r=0,t=0;a>t;)if(n=e[t++],128>n)s[r++]=n;else if(i=l[n],i>4)s[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;i>1&&a>t;)n=n<<6|63&e[t++],i--;i>1?s[r++]=65533:65536>n?s[r++]=n:(n-=65536,s[r++]=55296|n>>10&1023,s[r++]=56320|1023&n)}return s.length!==r&&(s.subarray?s=s.subarray(0,r):s.length=r),o.applyFromCharCode(s)};r.utf8encode=function(e){return a.nodebuffer?s.newBuffer(e,"utf-8"):f(e)},r.utf8decode=function(e){return a.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):(e=o.transformTo(a.uint8array?"uint8array":"array",e),d(e))},o.inherits(n,u),n.prototype.processChunk=function(e){var t=o.transformTo(a.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(a.uint8array){var n=t;t=new Uint8Array(n.length+this.leftOver.length),t.set(this.leftOver,0),t.set(n,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var i=h(t),s=t;i!==t.length&&(a.uint8array?(s=t.subarray(0,i),this.leftOver=t.subarray(i,t.length)):(s=t.slice(0,i),this.leftOver=t.slice(i,t.length))),this.push({data:r.utf8decode(s),meta:e.meta})},n.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:r.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},r.Utf8DecodeWorker=n,o.inherits(i,u),i.prototype.processChunk=function(e){this.push({data:r.utf8encode(e.data),meta:e.meta})},r.Utf8EncodeWorker=i},{"./nodejsUtils":142,"./stream/GenericWorker":155,"./support":157,"./utils":159}],159:[function(e,t,r){"use strict";function n(e){var t=null;return t=u.uint8array?new Uint8Array(e.length):new Array(e.length),o(e,t)}function i(e){return e}function o(e,t){for(var r=0;r1;)try{return d.stringifyByChunk(e,n,t)}catch(o){t=Math.floor(t/2)}return d.stringifyByChar(e)}function s(e,t){for(var r=0;r=o)return String.fromCharCode.apply(null,e);for(;o>i;)n.push("array"===t||"nodebuffer"===t?String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,o))):String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,o)))),i+=r;return n.join("")},stringifyByChar:function(e){for(var t="",r=0;rt?"0":"")+t.toString(16).toUpperCase();return n},r.delay=function(e,t,r){f(function(){e.apply(r||null,t||[])})},r.inherits=function(e,t){var r=function(){};r.prototype=t.prototype,e.prototype=new r},r.extend=function(){var e,t,r={};for(e=0;ei;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var e,t;for(e=0;ee){var t=!this.isSignature(0,o.LOCAL_FILE_HEADER);throw new Error(t?"Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html":"Corrupted zip : can't find end of central directory")}this.reader.setIndex(e);var r=e;if(this.checkSignature(o.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,e=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR),0>e)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(e),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,o.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip : can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var n=this.centralDirOffset+this.centralDirSize;this.zip64&&(n+=20,n+=12+this.zip64EndOfCentralSize);var a=r-n;if(a>0)this.isSignature(r,o.CENTRAL_FILE_HEADER)||(this.reader.zero=a);else if(0>a)throw new Error("Corrupted zip: missing "+Math.abs(a)+" bytes.")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=r},{"./reader/readerFor":149,"./signature":150,"./support":157,"./utf8":158,"./utils":159,"./zipEntry":161}],161:[function(e,t){"use strict";function r(e,t){this.options=e,this.loadOptions=t}var n=e("./reader/readerFor"),i=e("./utils"),o=e("./compressedObject"),a=e("./crc32"),s=e("./utf8"),u=e("./compressions"),l=e("./support"),c=0,f=3,h=function(e){for(var t in u)if(u.hasOwnProperty(t)&&u[t].magic===e)return u[t];return null};r.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(t=h(this.compressionMethod),null===t)throw new Error("Corrupted zip : compression "+i.pretty(this.compressionMethod)+" unknown (inner file : "+i.transformTo("string",this.fileName)+")");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=16&this.externalFileAttributes?!0:!1,e===c&&(this.dosPermissions=63&this.externalFileAttributes),e===f&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===i.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===i.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===i.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===i.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index0)if(t.ended&&!i){var s=new Error("stream.push() after EOF");e.emit("error",s)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var u;!t.decoder||i||n||(r=t.decoder.write(r),u=!t.objectMode&&0===r.length),i||(t.reading=!1),u||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&f(e))),d(e,t)}else i||(t.reading=!1);return a(t)}function a(e){return!e.ended&&(e.needReadable||e.length=L?e=L:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function u(e,t){return 0===t.length&&t.ended?0:t.objectMode?0===e?0:1:null===e||isNaN(e)?t.flowing&&t.buffer.length?t.buffer[0].length:t.length:0>=e?0:(e>t.highWaterMark&&(t.highWaterMark=s(e)),e>t.length?t.ended?t.length:(t.needReadable=!0,0):e)}function l(e,t){var r=null;return S.isBuffer(t)||"string"==typeof t||null===t||void 0===t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk")),r}function c(e,t){if(!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,f(e)}}function f(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(P("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?T(h,e):h(e))}function h(e){P("emit readable"),e.emit("readable"),y(e)}function d(e,t){t.readingMore||(t.readingMore=!0,T(p,e,t))}function p(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=i)r=o?n.join(""):1===n.length?n[0]:S.concat(n,i),n.length=0;else if(el&&e>u;l++){var s=n[0],f=Math.min(e-u,s.length);o?r+=s.slice(0,f):s.copy(r,u,0,f),f0)throw new Error("endReadable called on non-empty stream"); -t.endEmitted||(t.ended=!0,T(w,t,e))}function w(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function k(e,t){for(var r=0,n=e.length;n>r;r++)t(e[r],r)}function A(e,t){for(var r=0,n=e.length;n>r;r++)if(e[r]===t)return r;return-1}t.exports=i;var T=e("process-nextick-args"),E=e("isarray"),S=e("buffer").Buffer;i.ReadableState=n;var R,M=(e("events"),function(e,t){return e.listeners(t).length});!function(){try{R=e("stream")}catch(t){}finally{R||(R=e("events").EventEmitter)}}();var S=e("buffer").Buffer,z=e("core-util-is");z.inherits=e("inherits");var O=e("util"),P=void 0;P=O&&O.debuglog?O.debuglog("stream"):function(){};var N;z.inherits(i,R);var j,j;i.prototype.push=function(e,t){var r=this._readableState;return r.objectMode||"string"!=typeof e||(t=t||r.defaultEncoding,t!==r.encoding&&(e=new S(e,t),t="")),o(this,r,e,t,!1)},i.prototype.unshift=function(e){var t=this._readableState;return o(this,t,e,"",!0)},i.prototype.isPaused=function(){return this._readableState.flowing===!1},i.prototype.setEncoding=function(t){return N||(N=e("string_decoder/").StringDecoder),this._readableState.decoder=new N(t),this._readableState.encoding=t,this};var L=8388608;i.prototype.read=function(e){P("read",e);var t=this._readableState,r=e;if(("number"!=typeof e||e>0)&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return P("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?x(this):f(this),null;if(e=u(e,t),0===e&&t.ended)return 0===t.length&&x(this),null;var n=t.needReadable;P("need readable",n),(0===t.length||t.length-e0?b(e,t):null,null===i&&(t.needReadable=!0,e=0),t.length-=e,0!==t.length||t.ended||(t.needReadable=!0),r!==e&&t.ended&&0===t.length&&x(this),null!==i&&this.emit("data",i),i},i.prototype._read=function(){this.emit("error",new Error("not implemented"))},i.prototype.pipe=function(e,t){function n(e){P("onunpipe"),e===f&&o()}function i(){P("onend"),e.end()}function o(){P("cleanup"),e.removeListener("close",u),e.removeListener("finish",l),e.removeListener("drain",m),e.removeListener("error",s),e.removeListener("unpipe",n),f.removeListener("end",i),f.removeListener("end",o),f.removeListener("data",a),g=!0,!h.awaitDrain||e._writableState&&!e._writableState.needDrain||m()}function a(t){P("ondata");var r=e.write(t);!1===r&&(1!==h.pipesCount||h.pipes[0]!==e||1!==f.listenerCount("data")||g||(P("false write response, pause",f._readableState.awaitDrain),f._readableState.awaitDrain++),f.pause())}function s(t){P("onerror",t),c(),e.removeListener("error",s),0===M(e,"error")&&e.emit("error",t)}function u(){e.removeListener("finish",l),c()}function l(){P("onfinish"),e.removeListener("close",u),c()}function c(){P("unpipe"),f.unpipe(e)}var f=this,h=this._readableState;switch(h.pipesCount){case 0:h.pipes=e;break;case 1:h.pipes=[h.pipes,e];break;default:h.pipes.push(e)}h.pipesCount+=1,P("pipe count=%d opts=%j",h.pipesCount,t);var d=(!t||t.end!==!1)&&e!==r.stdout&&e!==r.stderr,p=d?i:o;h.endEmitted?T(p):f.once("end",p),e.on("unpipe",n);var m=_(f);e.on("drain",m);var g=!1;return f.on("data",a),e._events&&e._events.error?E(e._events.error)?e._events.error.unshift(s):e._events.error=[s,e._events.error]:e.on("error",s),e.once("close",u),e.once("finish",l),e.emit("pipe",f),h.flowing||(P("pipe resume"),f.resume()),e},i.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;n>i;i++)r[i].emit("unpipe",this);return this}var o=A(t.pipes,e);return-1===o?this:(t.pipes.splice(o,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this),this)},i.prototype.on=function(e,t){var r=R.prototype.on.call(this,e,t);if("data"===e&&!1!==this._readableState.flowing&&this.resume(),"readable"===e&&!this._readableState.endEmitted){var n=this._readableState;n.readableListening||(n.readableListening=!0,n.emittedReadable=!1,n.needReadable=!0,n.reading?n.length&&f(this,n):T(m,this))}return r},i.prototype.addListener=i.prototype.on,i.prototype.resume=function(){var e=this._readableState;return e.flowing||(P("resume"),e.flowing=!0,g(this,e)),this},i.prototype.pause=function(){return P("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(P("pause"),this._readableState.flowing=!1,this.emit("pause")),this},i.prototype.wrap=function(e){var t=this._readableState,r=!1,n=this;e.on("end",function(){if(P("wrapped end"),t.decoder&&!t.ended){var e=t.decoder.end();e&&e.length&&n.push(e)}n.push(null)}),e.on("data",function(i){if(P("wrapped data"),t.decoder&&(i=t.decoder.write(i)),(!t.objectMode||null!==i&&void 0!==i)&&(t.objectMode||i&&i.length)){var o=n.push(i);o||(r=!0,e.pause())}});for(var i in e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));var o=["error","close","destroy","pause","resume"];return k(o,function(t){e.on(t,n.emit.bind(n,t))}),n._read=function(t){P("wrapped _read",t),r&&(r=!1,e.resume())},n},i._fromList=b}).call(this,e("_process"))},{"./_stream_duplex":163,_process:189,buffer:10,"core-util-is":75,events:78,inherits:99,isarray:101,"process-nextick-args":188,"string_decoder/":169,util:9}],166:[function(e,t){"use strict";function r(e){this.afterTransform=function(t,r){return n(e,t,r)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function n(e,t,r){var n=e._transformState;n.transforming=!1;var i=n.writecb;if(!i)return e.emit("error",new Error("no writecb in Transform class"));n.writechunk=null,n.writecb=null,null!==r&&void 0!==r&&e.push(r),i(t);var o=e._readableState;o.reading=!1,(o.needReadable||o.length-1?setImmediate:k,T=e("buffer").Buffer;a.WritableState=o;var E=e("core-util-is");E.inherits=e("inherits");var S,R={deprecate:e("util-deprecate")};!function(){try{S=e("stream")}catch(t){}finally{S||(S=e("events").EventEmitter)}}();var T=e("buffer").Buffer;E.inherits(a,S);var M;o.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(o.prototype,"buffer",{get:R.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(e){}}();var M;a.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe. Not readable."))},a.prototype.write=function(e,t,r){var i=this._writableState,o=!1;return"function"==typeof t&&(r=t,t=null),T.isBuffer(e)?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=n),i.ended?s(this,r):u(this,i,e,r)&&(i.pendingcb++,o=c(this,i,e,t,r)),o},a.prototype.cork=function(){var e=this._writableState;e.corked++},a.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||g(this,e))},a.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);this._writableState.defaultEncoding=e},a.prototype._write=function(e,t,r){r(new Error("not implemented"))},a.prototype._writev=null,a.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||x(this,n,r)}}).call(this,e("_process"))},{"./_stream_duplex":163,_process:189,buffer:10,"core-util-is":75,events:78,inherits:99,"process-nextick-args":188,"util-deprecate":192}],168:[function(e,t,r){var n=function(){try{return e("stream")}catch(t){}}();r=t.exports=e("./lib/_stream_readable.js"),r.Stream=n||r,r.Readable=r,r.Writable=e("./lib/_stream_writable.js"),r.Duplex=e("./lib/_stream_duplex.js"),r.Transform=e("./lib/_stream_transform.js"),r.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":163,"./lib/_stream_passthrough.js":164,"./lib/_stream_readable.js":165,"./lib/_stream_transform.js":166,"./lib/_stream_writable.js":167}],169:[function(e,t,r){function n(e){if(e&&!u(e))throw new Error("Unknown encoding: "+e)}function i(e){return e.toString(this.encoding)}function o(e){this.charReceived=e.length%2,this.charLength=this.charReceived?2:0}function a(e){this.charReceived=e.length%3,this.charLength=this.charReceived?3:0}var s=e("buffer").Buffer,u=s.isEncoding||function(e){switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},l=r.StringDecoder=function(e){switch(this.encoding=(e||"utf8").toLowerCase().replace(/[-_]/,""),n(e),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=o;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=a;break;default:return void(this.write=i)}this.charBuffer=new s(6),this.charReceived=0,this.charLength=0};l.prototype.write=function(e){for(var t="";this.charLength;){var r=e.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived=55296&&56319>=n)){if(this.charReceived=this.charLength=0,0===e.length)return t;break}this.charLength+=this.surrogateSize,t=""}this.detectIncompleteChar(e);var i=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,i),i-=this.charReceived),t+=e.toString(this.encoding,0,i);var i=t.length-1,n=t.charCodeAt(i);if(n>=55296&&56319>=n){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),e.copy(this.charBuffer,0,0,o),t.substring(0,i)}return t},l.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var r=e[e.length-t];if(1==t&&r>>5==6){this.charLength=2;break}if(2>=t&&r>>4==14){this.charLength=3;break}if(3>=t&&r>>3==30){this.charLength=4;break}}this.charReceived=t},l.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;t+=n.slice(0,r).toString(i)}return t}},{buffer:10}],170:[function(e,t){"use strict";var r=e("./lib/utils/common").assign,n=e("./lib/deflate"),i=e("./lib/inflate"),o=e("./lib/zlib/constants"),a={};r(a,n,i,o),t.exports=a},{"./lib/deflate":171,"./lib/inflate":172,"./lib/utils/common":173,"./lib/zlib/constants":176}],171:[function(e,t,r){"use strict";function n(e){if(!(this instanceof n))return new n(e);this.options=u.assign({level:v,method:b,chunkSize:16384,windowBits:15,memLevel:8,strategy:y,to:""},e||{});var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new f,this.strm.avail_out=0;var r=s.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==_)throw new Error(c[r]);if(t.header&&s.deflateSetHeader(this.strm,t.header),t.dictionary){var i;if(i="string"==typeof t.dictionary?l.string2buf(t.dictionary):"[object ArrayBuffer]"===h.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,r=s.deflateSetDictionary(this.strm,i),r!==_)throw new Error(c[r]);this._dict_set=!0}}function i(e,t){var r=new n(t);if(r.push(e,!0),r.err)throw r.msg||c[r.err];return r.result}function o(e,t){return t=t||{},t.raw=!0,i(e,t)}function a(e,t){return t=t||{},t.gzip=!0,i(e,t)}var s=e("./zlib/deflate"),u=e("./utils/common"),l=e("./utils/strings"),c=e("./zlib/messages"),f=e("./zlib/zstream"),h=Object.prototype.toString,d=0,p=4,_=0,m=1,g=2,v=-1,y=0,b=8;n.prototype.push=function(e,t){var r,n,i=this.strm,o=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:t===!0?p:d,i.input="string"==typeof e?l.string2buf(e):"[object ArrayBuffer]"===h.call(e)?new Uint8Array(e):e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new u.Buf8(o),i.next_out=0,i.avail_out=o),r=s.deflate(i,n),r!==m&&r!==_)return this.onEnd(r),this.ended=!0,!1;(0===i.avail_out||0===i.avail_in&&(n===p||n===g))&&this.onData("string"===this.options.to?l.buf2binstring(u.shrinkBuf(i.output,i.next_out)):u.shrinkBuf(i.output,i.next_out))}while((i.avail_in>0||0===i.avail_out)&&r!==m);return n===p?(r=s.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===_):n===g?(this.onEnd(_),i.avail_out=0,!0):!0},n.prototype.onData=function(e){this.chunks.push(e)},n.prototype.onEnd=function(e){e===_&&(this.result="string"===this.options.to?this.chunks.join(""):u.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=n,r.deflate=i,r.deflateRaw=o,r.gzip=a},{"./utils/common":173,"./utils/strings":174,"./zlib/deflate":178,"./zlib/messages":183,"./zlib/zstream":185}],172:[function(e,t,r){"use strict";function n(e){if(!(this instanceof n))return new n(e);this.options=s.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0===(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new f,this.strm.avail_out=0;var r=a.inflateInit2(this.strm,t.windowBits);if(r!==l.Z_OK)throw new Error(c[r]);this.header=new h,a.inflateGetHeader(this.strm,this.header)}function i(e,t){var r=new n(t);if(r.push(e,!0),r.err)throw r.msg||c[r.err];return r.result}function o(e,t){return t=t||{},t.raw=!0,i(e,t)}var a=e("./zlib/inflate"),s=e("./utils/common"),u=e("./utils/strings"),l=e("./zlib/constants"),c=e("./zlib/messages"),f=e("./zlib/zstream"),h=e("./zlib/gzheader"),d=Object.prototype.toString;n.prototype.push=function(e,t){var r,n,i,o,c,f,h=this.strm,p=this.options.chunkSize,_=this.options.dictionary,m=!1;if(this.ended)return!1;n=t===~~t?t:t===!0?l.Z_FINISH:l.Z_NO_FLUSH,h.input="string"==typeof e?u.binstring2buf(e):"[object ArrayBuffer]"===d.call(e)?new Uint8Array(e):e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new s.Buf8(p),h.next_out=0,h.avail_out=p),r=a.inflate(h,l.Z_NO_FLUSH),r===l.Z_NEED_DICT&&_&&(f="string"==typeof _?u.string2buf(_):"[object ArrayBuffer]"===d.call(_)?new Uint8Array(_):_,r=a.inflateSetDictionary(this.strm,f)),r===l.Z_BUF_ERROR&&m===!0&&(r=l.Z_OK,m=!1),r!==l.Z_STREAM_END&&r!==l.Z_OK)return this.onEnd(r),this.ended=!0,!1;h.next_out&&(0===h.avail_out||r===l.Z_STREAM_END||0===h.avail_in&&(n===l.Z_FINISH||n===l.Z_SYNC_FLUSH))&&("string"===this.options.to?(i=u.utf8border(h.output,h.next_out),o=h.next_out-i,c=u.buf2string(h.output,i),h.next_out=o,h.avail_out=p-o,o&&s.arraySet(h.output,h.output,i,o,0),this.onData(c)):this.onData(s.shrinkBuf(h.output,h.next_out))),0===h.avail_in&&0===h.avail_out&&(m=!0)}while((h.avail_in>0||0===h.avail_out)&&r!==l.Z_STREAM_END);return r===l.Z_STREAM_END&&(n=l.Z_FINISH),n===l.Z_FINISH?(r=a.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l.Z_OK):n===l.Z_SYNC_FLUSH?(this.onEnd(l.Z_OK),h.avail_out=0,!0):!0},n.prototype.onData=function(e){this.chunks.push(e)},n.prototype.onEnd=function(e){e===l.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):s.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=n,r.inflate=i,r.inflateRaw=o,r.ungzip=i},{"./utils/common":173,"./utils/strings":174,"./zlib/constants":176,"./zlib/gzheader":179,"./zlib/inflate":181,"./zlib/messages":183,"./zlib/zstream":185}],173:[function(e,t,r){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var i in r)n(r,i)&&(e[i]=r[i])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var o={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)return void e.set(t.subarray(r,r+n),i);for(var o=0;n>o;o++)e[i+o]=t[r+o]},flattenChunks:function(e){var t,r,n,i,o,a;for(n=0,t=0,r=e.length;r>t;t++)n+=e[t].length;for(a=new Uint8Array(n),i=0,t=0,r=e.length;r>t;t++)o=e[t],a.set(o,i),i+=o.length;return a}},a={arraySet:function(e,t,r,n,i){for(var o=0;n>o;o++)e[i+o]=t[r+o]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,o)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,a))},r.setTyped(i)},{}],174:[function(e,t,r){"use strict";function n(e,t){if(65537>t&&(e.subarray&&a||!e.subarray&&o))return String.fromCharCode.apply(null,i.shrinkBuf(e,t));for(var r="",n=0;t>n;n++)r+=String.fromCharCode(e[n]);return r}var i=e("./common"),o=!0,a=!0;try{String.fromCharCode.apply(null,[0])}catch(s){o=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(s){a=!1}for(var u=new i.Buf8(256),l=0;256>l;l++)u[l]=l>=252?6:l>=248?5:l>=240?4:l>=224?3:l>=192?2:1;u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,o,a,s=e.length,u=0;for(o=0;s>o;o++)r=e.charCodeAt(o),55296===(64512&r)&&s>o+1&&(n=e.charCodeAt(o+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),o++)),u+=128>r?1:2048>r?2:65536>r?3:4;for(t=new i.Buf8(u),a=0,o=0;u>a;o++)r=e.charCodeAt(o),55296===(64512&r)&&s>o+1&&(n=e.charCodeAt(o+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),o++)),128>r?t[a++]=r:2048>r?(t[a++]=192|r>>>6,t[a++]=128|63&r):65536>r?(t[a++]=224|r>>>12,t[a++]=128|r>>>6&63,t[a++]=128|63&r):(t[a++]=240|r>>>18,t[a++]=128|r>>>12&63,t[a++]=128|r>>>6&63,t[a++]=128|63&r);return t},r.buf2binstring=function(e){return n(e,e.length)},r.binstring2buf=function(e){for(var t=new i.Buf8(e.length),r=0,n=t.length;n>r;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,i,o,a,s=t||e.length,l=new Array(2*s);for(i=0,r=0;s>r;)if(o=e[r++],128>o)l[i++]=o;else if(a=u[o],a>4)l[i++]=65533,r+=a-1;else{for(o&=2===a?31:3===a?15:7;a>1&&s>r;)o=o<<6|63&e[r++],a--;a>1?l[i++]=65533:65536>o?l[i++]=o:(o-=65536,l[i++]=55296|o>>10&1023,l[i++]=56320|1023&o)}return n(l,i)},r.utf8border=function(e,t){var r;for(t=t||e.length,t>e.length&&(t=e.length),r=t-1;r>=0&&128===(192&e[r]);)r--;return 0>r?t:0===r?t:r+u[e[r]]>t?r:t}},{"./common":173}],175:[function(e,t){"use strict";function r(e,t,r,n){for(var i=65535&e|0,o=e>>>16&65535|0,a=0;0!==r;){a=r>2e3?2e3:r,r-=a;do i=i+t[n++]|0,o=o+i|0;while(--a);i%=65521,o%=65521}return i|o<<16|0}t.exports=r},{}],176:[function(e,t){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],177:[function(e,t){"use strict";function r(){for(var e,t=[],r=0;256>r;r++){e=r;for(var n=0;8>n;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}function n(e,t,r,n){var o=i,a=n+r;e^=-1;for(var s=n;a>s;s++)e=e>>>8^o[255&(e^t[s])];return-1^e}var i=r();t.exports=n},{}],178:[function(e,t,r){"use strict";function n(e,t){return e.msg=j[t],t}function i(e){return(e<<1)-(e>4?9:0)}function o(e){for(var t=e.length;--t>=0;)e[t]=0}function a(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(z.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function s(e,t){O._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,a(e.strm)}function u(e,t){e.pending_buf[e.pending++]=t}function l(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function c(e,t,r,n){var i=e.avail_in;return i>n&&(i=n),0===i?0:(e.avail_in-=i,z.arraySet(t,e.input,e.next_in,i,r),1===e.state.wrap?e.adler=P(e.adler,t,i,r):2===e.state.wrap&&(e.adler=N(e.adler,t,i,r)),e.next_in+=i,e.total_in+=i,i)}function f(e,t){var r,n,i=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match,u=e.strstart>e.w_size-ft?e.strstart-(e.w_size-ft):0,l=e.window,c=e.w_mask,f=e.prev,h=e.strstart+ct,d=l[o+a-1],p=l[o+a];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do if(r=t,l[r+a]===p&&l[r+a-1]===d&&l[r]===l[o]&&l[++r]===l[o+1]){o+=2,r++;do;while(l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&h>o);if(n=ct-(h-o),o=h-ct,n>a){if(e.match_start=t,a=n,n>=s)break;d=l[o+a-1],p=l[o+a]}}while((t=f[t&c])>u&&0!==--i);return a<=e.lookahead?a:e.lookahead}function h(e){var t,r,n,i,o,a=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=a+(a-ft)){z.arraySet(e.window,e.window,a,a,0),e.match_start-=a,e.strstart-=a,e.block_start-=a,r=e.hash_size,t=r;do n=e.head[--t],e.head[t]=n>=a?n-a:0;while(--r);r=a,t=r;do n=e.prev[--t],e.prev[t]=n>=a?n-a:0;while(--r);i+=a}if(0===e.strm.avail_in)break;if(r=c(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=r,e.lookahead+e.insert>=lt)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(h(e),0===e.lookahead&&t===L)return bt;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,s(e,!1),0===e.strm.avail_out))return bt;if(e.strstart-e.block_start>=e.w_size-ft&&(s(e,!1),0===e.strm.avail_out))return bt}return e.insert=0,t===F?(s(e,!0),0===e.strm.avail_out?wt:kt):e.strstart>e.block_start&&(s(e,!1),0===e.strm.avail_out)?bt:bt}function p(e,t){for(var r,n;;){if(e.lookahead=lt&&(e.ins_h=(e.ins_h<=lt)if(n=O._tr_tally(e,e.strstart-e.match_start,e.match_length-lt),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=lt){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<=lt&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=lt-1)),e.prev_length>=lt&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-lt,n=O._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-lt),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=(e.ins_h<=lt&&e.strstart>0&&(i=e.strstart-1,n=a[i],n===a[++i]&&n===a[++i]&&n===a[++i])){o=e.strstart+ct;do;while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&o>i);e.match_length=ct-(o-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=lt?(r=O._tr_tally(e,1,e.match_length-lt),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=O._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(s(e,!1),0===e.strm.avail_out))return bt}return e.insert=0,t===F?(s(e,!0),0===e.strm.avail_out?wt:kt):e.last_lit&&(s(e,!1),0===e.strm.avail_out)?bt:xt}function g(e,t){for(var r;;){if(0===e.lookahead&&(h(e),0===e.lookahead)){if(t===L)return bt;break}if(e.match_length=0,r=O._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(s(e,!1),0===e.strm.avail_out))return bt}return e.insert=0,t===F?(s(e,!0),0===e.strm.avail_out?wt:kt):e.last_lit&&(s(e,!1),0===e.strm.avail_out)?bt:xt}function v(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function y(e){e.window_size=2*e.w_size,o(e.head),e.max_lazy_match=M[e.level].max_lazy,e.good_match=M[e.level].good_length,e.nice_match=M[e.level].nice_length,e.max_chain_length=M[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=lt-1,e.match_available=0,e.ins_h=0 -}function b(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=$,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new z.Buf16(2*st),this.dyn_dtree=new z.Buf16(2*(2*ot+1)),this.bl_tree=new z.Buf16(2*(2*at+1)),o(this.dyn_ltree),o(this.dyn_dtree),o(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new z.Buf16(ut+1),this.heap=new z.Buf16(2*it+1),o(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new z.Buf16(2*it+1),o(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function x(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=K,t=e.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?dt:vt,e.adler=2===t.wrap?0:1,t.last_flush=L,O._tr_init(t),U):n(e,G)}function w(e){var t=x(e);return t===U&&y(e.state),t}function k(e,t){return e&&e.state?2!==e.state.wrap?G:(e.state.gzhead=t,U):G}function A(e,t,r,i,o,a){if(!e)return G;var s=1;if(t===W&&(t=6),0>i?(s=0,i=-i):i>15&&(s=2,i-=16),1>o||o>Q||r!==$||8>i||i>15||0>t||t>9||0>a||a>Y)return n(e,G);8===i&&(i=9);var u=new b;return e.state=u,u.strm=e,u.wrap=s,u.gzhead=null,u.w_bits=i,u.w_size=1<D||0>t)return e?n(e,G):G;if(s=e.state,!e.output||!e.input&&0!==e.avail_in||s.status===yt&&t!==F)return n(e,0===e.avail_out?q:G);if(s.strm=e,r=s.last_flush,s.last_flush=t,s.status===dt)if(2===s.wrap)e.adler=0,u(s,31),u(s,139),u(s,8),s.gzhead?(u(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),u(s,255&s.gzhead.time),u(s,s.gzhead.time>>8&255),u(s,s.gzhead.time>>16&255),u(s,s.gzhead.time>>24&255),u(s,9===s.level?2:s.strategy>=H||s.level<2?4:0),u(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(u(s,255&s.gzhead.extra.length),u(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(e.adler=N(e.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=pt):(u(s,0),u(s,0),u(s,0),u(s,0),u(s,0),u(s,9===s.level?2:s.strategy>=H||s.level<2?4:0),u(s,At),s.status=vt);else{var h=$+(s.w_bits-8<<4)<<8,d=-1;d=s.strategy>=H||s.level<2?0:s.level<6?1:6===s.level?2:3,h|=d<<6,0!==s.strstart&&(h|=ht),h+=31-h%31,s.status=vt,l(s,h),0!==s.strstart&&(l(s,e.adler>>>16),l(s,65535&e.adler)),e.adler=1}if(s.status===pt)if(s.gzhead.extra){for(c=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>c&&(e.adler=N(e.adler,s.pending_buf,s.pending-c,c)),a(e),c=s.pending,s.pending!==s.pending_buf_size));)u(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>c&&(e.adler=N(e.adler,s.pending_buf,s.pending-c,c)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=_t)}else s.status=_t;if(s.status===_t)if(s.gzhead.name){c=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>c&&(e.adler=N(e.adler,s.pending_buf,s.pending-c,c)),a(e),c=s.pending,s.pending===s.pending_buf_size)){f=1;break}f=s.gzindexc&&(e.adler=N(e.adler,s.pending_buf,s.pending-c,c)),0===f&&(s.gzindex=0,s.status=mt)}else s.status=mt;if(s.status===mt)if(s.gzhead.comment){c=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>c&&(e.adler=N(e.adler,s.pending_buf,s.pending-c,c)),a(e),c=s.pending,s.pending===s.pending_buf_size)){f=1;break}f=s.gzindexc&&(e.adler=N(e.adler,s.pending_buf,s.pending-c,c)),0===f&&(s.status=gt)}else s.status=gt;if(s.status===gt&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&a(e),s.pending+2<=s.pending_buf_size&&(u(s,255&e.adler),u(s,e.adler>>8&255),e.adler=0,s.status=vt)):s.status=vt),0!==s.pending){if(a(e),0===e.avail_out)return s.last_flush=-1,U}else if(0===e.avail_in&&i(t)<=i(r)&&t!==F)return n(e,q);if(s.status===yt&&0!==e.avail_in)return n(e,q);if(0!==e.avail_in||0!==s.lookahead||t!==L&&s.status!==yt){var p=s.strategy===H?g(s,t):s.strategy===X?m(s,t):M[s.level].func(s,t);if((p===wt||p===kt)&&(s.status=yt),p===bt||p===wt)return 0===e.avail_out&&(s.last_flush=-1),U;if(p===xt&&(t===I?O._tr_align(s):t!==D&&(O._tr_stored_block(s,0,0,!1),t===C&&(o(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),a(e),0===e.avail_out))return s.last_flush=-1,U}return t!==F?U:s.wrap<=0?B:(2===s.wrap?(u(s,255&e.adler),u(s,e.adler>>8&255),u(s,e.adler>>16&255),u(s,e.adler>>24&255),u(s,255&e.total_in),u(s,e.total_in>>8&255),u(s,e.total_in>>16&255),u(s,e.total_in>>24&255)):(l(s,e.adler>>>16),l(s,65535&e.adler)),a(e),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?U:B)}function S(e){var t;return e&&e.state?(t=e.state.status,t!==dt&&t!==pt&&t!==_t&&t!==mt&&t!==gt&&t!==vt&&t!==yt?n(e,G):(e.state=null,t===vt?n(e,V):U)):G}function R(e,t){var r,n,i,a,s,u,l,c,f=t.length;if(!e||!e.state)return G;if(r=e.state,a=r.wrap,2===a||1===a&&r.status!==dt||r.lookahead)return G;for(1===a&&(e.adler=P(e.adler,t,f,0)),r.wrap=0,f>=r.w_size&&(0===a&&(o(r.head),r.strstart=0,r.block_start=0,r.insert=0),c=new z.Buf8(r.w_size),z.arraySet(c,t,f-r.w_size,r.w_size,0),t=c,f=r.w_size),s=e.avail_in,u=e.next_in,l=e.input,e.avail_in=f,e.next_in=0,e.input=t,h(r);r.lookahead>=lt;){n=r.strstart,i=r.lookahead-(lt-1);do r.ins_h=(r.ins_h<m&&(_+=S[o++]<>>24,_>>>=w,m-=w,w=x>>>16&255,0===w)R[s++]=65535&x;else{if(!(16&w)){if(0===(64&w)){x=g[(65535&x)+(_&(1<m&&(_+=S[o++]<>>=w,m-=w),15>m&&(_+=S[o++]<>>24,_>>>=w,m-=w,w=x>>>16&255,!(16&w)){if(0===(64&w)){x=v[(65535&x)+(_&(1<m&&(_+=S[o++]<m&&(_+=S[o++]<c){e.msg="invalid distance too far back",i.mode=r;break e}if(_>>>=w,m-=w,w=s-u,A>w){if(w=A-w,w>h&&i.sane){e.msg="invalid distance too far back",i.mode=r;break e}if(T=0,E=p,0===d){if(T+=f-w,k>w){k-=w;do R[s++]=p[T++];while(--w);T=s-A,E=R}}else if(w>d){if(T+=f+d-w,w-=d,k>w){k-=w;do R[s++]=p[T++];while(--w);if(T=0,k>d){w=d,k-=w;do R[s++]=p[T++];while(--w);T=s-A,E=R}}}else if(T+=d-w,k>w){k-=w;do R[s++]=p[T++];while(--w);T=s-A,E=R}for(;k>2;)R[s++]=E[T++],R[s++]=E[T++],R[s++]=E[T++],k-=3;k&&(R[s++]=E[T++],k>1&&(R[s++]=E[T++]))}else{T=s-A;do R[s++]=R[T++],R[s++]=R[T++],R[s++]=R[T++],k-=3;while(k>2);k&&(R[s++]=R[T++],k>1&&(R[s++]=R[T++]))}break}}break}}while(a>o&&l>s);k=m>>3,o-=k,m-=k<<3,_&=(1<o?5+(a-o):5-(o-a),e.avail_out=l>s?257+(l-s):257-(s-l),i.hold=_,i.bits=m}},{}],181:[function(e,t,r){"use strict";function n(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function i(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new v.Buf16(320),this.work=new v.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function o(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=C,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new v.Buf32(_t),t.distcode=t.distdyn=new v.Buf32(mt),t.sane=1,t.back=-1,M):P}function a(e){var t;return e&&e.state?(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,o(e)):P}function s(e,t){var r,n;return e&&e.state?(n=e.state,0>t?(r=0,t=-t):(r=(t>>4)+1,48>t&&(t&=15)),t&&(8>t||t>15)?P:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,a(e))):P}function u(e,t){var r,n;return e?(n=new i,e.state=n,n.window=null,r=s(e,t),r!==M&&(e.state=null),r):P}function l(e){return u(e,vt)}function c(e){if(yt){var t;for(m=new v.Buf32(512),g=new v.Buf32(32),t=0;144>t;)e.lens[t++]=8;for(;256>t;)e.lens[t++]=9;for(;280>t;)e.lens[t++]=7;for(;288>t;)e.lens[t++]=8;for(w(A,e.lens,0,288,m,0,e.work,{bits:9}),t=0;32>t;)e.lens[t++]=5;w(T,e.lens,0,32,g,0,e.work,{bits:5}),yt=!1}e.lencode=m,e.lenbits=9,e.distcode=g,e.distbits=5}function f(e,t,r,n){var i,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(v.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>n&&(i=n),v.arraySet(o.window,t,r-n,i,o.wnext),n-=i,n?(v.arraySet(o.window,t,r-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whaved;){if(0===u)break e;u--,h+=i[a++]<>>8&255,r.check=b(r.check,St,2,0),h=0,d=0,r.mode=F;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",r.mode=ht;break}if((15&h)!==I){e.msg="unknown compression method",r.mode=ht;break}if(h>>>=4,d-=4,wt=(15&h)+8,0===r.wbits)r.wbits=wt;else if(wt>r.wbits){e.msg="invalid window size",r.mode=ht;break}r.dmax=1<d;){if(0===u)break e;u--,h+=i[a++]<>8&1),512&r.flags&&(St[0]=255&h,St[1]=h>>>8&255,r.check=b(r.check,St,2,0)),h=0,d=0,r.mode=D;case D:for(;32>d;){if(0===u)break e;u--,h+=i[a++]<>>8&255,St[2]=h>>>16&255,St[3]=h>>>24&255,r.check=b(r.check,St,4,0)),h=0,d=0,r.mode=U;case U:for(;16>d;){if(0===u)break e;u--,h+=i[a++]<>8),512&r.flags&&(St[0]=255&h,St[1]=h>>>8&255,r.check=b(r.check,St,2,0)),h=0,d=0,r.mode=B;case B:if(1024&r.flags){for(;16>d;){if(0===u)break e;u--,h+=i[a++]<>>8&255,r.check=b(r.check,St,2,0)),h=0,d=0}else r.head&&(r.head.extra=null);r.mode=G;case G:if(1024&r.flags&&(m=r.length,m>u&&(m=u),m&&(r.head&&(wt=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),v.arraySet(r.head.extra,i,a,m,wt)),512&r.flags&&(r.check=b(r.check,i,m,a)),u-=m,a+=m,r.length-=m),r.length))break e;r.length=0,r.mode=V;case V:if(2048&r.flags){if(0===u)break e;m=0;do wt=i[a+m++],r.head&&wt&&r.length<65536&&(r.head.name+=String.fromCharCode(wt));while(wt&&u>m);if(512&r.flags&&(r.check=b(r.check,i,m,a)),u-=m,a+=m,wt)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=q;case q:if(4096&r.flags){if(0===u)break e;m=0;do wt=i[a+m++],r.head&&wt&&r.length<65536&&(r.head.comment+=String.fromCharCode(wt));while(wt&&u>m);if(512&r.flags&&(r.check=b(r.check,i,m,a)),u-=m,a+=m,wt)break e}else r.head&&(r.head.comment=null);r.mode=W;case W:if(512&r.flags){for(;16>d;){if(0===u)break e;u--,h+=i[a++]<>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=X;break;case Z:for(;32>d;){if(0===u)break e;u--,h+=i[a++]<>>=7&d,d-=7&d,r.mode=lt;break}for(;3>d;){if(0===u)break e;u--,h+=i[a++]<>>=1,d-=1,3&h){case 0:r.mode=J;break;case 1:if(c(r),r.mode=rt,t===R){h>>>=2,d-=2;break e}break;case 2:r.mode=Q;break;case 3:e.msg="invalid block type",r.mode=ht}h>>>=2,d-=2;break;case J:for(h>>>=7&d,d-=7&d;32>d;){if(0===u)break e;u--,h+=i[a++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=ht;break}if(r.length=65535&h,h=0,d=0,r.mode=K,t===R)break e;case K:r.mode=$;case $:if(m=r.length){if(m>u&&(m=u),m>l&&(m=l),0===m)break e;v.arraySet(o,i,a,m,s),u-=m,a+=m,l-=m,s+=m,r.length-=m;break}r.mode=X;break;case Q:for(;14>d;){if(0===u)break e;u--,h+=i[a++]<>>=5,d-=5,r.ndist=(31&h)+1,h>>>=5,d-=5,r.ncode=(15&h)+4,h>>>=4,d-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=ht;break}r.have=0,r.mode=et;case et:for(;r.haved;){if(0===u)break e;u--,h+=i[a++]<>>=3,d-=3}for(;r.have<19;)r.lens[Rt[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,At={bits:r.lenbits},kt=w(k,r.lens,0,19,r.lencode,0,r.work,At),r.lenbits=At.bits,kt){e.msg="invalid code lengths set",r.mode=ht;break}r.have=0,r.mode=tt;case tt:for(;r.have>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=mt);){if(0===u)break e;u--,h+=i[a++]<vt)h>>>=mt,d-=mt,r.lens[r.have++]=vt;else{if(16===vt){for(Tt=mt+2;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=mt,d-=mt,0===r.have){e.msg="invalid bit length repeat",r.mode=ht;break}wt=r.lens[r.have-1],m=3+(3&h),h>>>=2,d-=2}else if(17===vt){for(Tt=mt+3;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=mt,d-=mt,wt=0,m=3+(7&h),h>>>=3,d-=3}else{for(Tt=mt+7;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=mt,d-=mt,wt=0,m=11+(127&h),h>>>=7,d-=7}if(r.have+m>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=ht;break}for(;m--;)r.lens[r.have++]=wt}}if(r.mode===ht)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=ht;break}if(r.lenbits=9,At={bits:r.lenbits},kt=w(A,r.lens,0,r.nlen,r.lencode,0,r.work,At),r.lenbits=At.bits,kt){e.msg="invalid literal/lengths set",r.mode=ht;break}if(r.distbits=6,r.distcode=r.distdyn,At={bits:r.distbits},kt=w(T,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,At),r.distbits=At.bits,kt){e.msg="invalid distances set",r.mode=ht;break}if(r.mode=rt,t===R)break e;case rt:r.mode=nt;case nt:if(u>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=u,r.hold=h,r.bits=d,x(e,_),s=e.next_out,o=e.output,l=e.avail_out,a=e.next_in,i=e.input,u=e.avail_in,h=r.hold,d=r.bits,r.mode===X&&(r.back=-1);break}for(r.back=0;Et=r.lencode[h&(1<>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=mt);){if(0===u)break e;u--,h+=i[a++]<>yt)],mt=Et>>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=yt+mt);){if(0===u)break e;u--,h+=i[a++]<>>=yt,d-=yt,r.back+=yt}if(h>>>=mt,d-=mt,r.back+=mt,r.length=vt,0===gt){r.mode=ut;break}if(32>){r.back=-1,r.mode=X;break}if(64>){e.msg="invalid literal/length code",r.mode=ht;break}r.extra=15>,r.mode=it;case it:if(r.extra){for(Tt=r.extra;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=r.extra,d-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=ot;case ot:for(;Et=r.distcode[h&(1<>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=mt);){if(0===u)break e;u--,h+=i[a++]<>yt)],mt=Et>>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=yt+mt);){if(0===u)break e;u--,h+=i[a++]<>>=yt,d-=yt,r.back+=yt}if(h>>>=mt,d-=mt,r.back+=mt,64>){e.msg="invalid distance code",r.mode=ht;break}r.offset=vt,r.extra=15>,r.mode=at;case at:if(r.extra){for(Tt=r.extra;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=r.extra,d-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=ht;break}r.mode=st;case st:if(0===l)break e;if(m=_-l,r.offset>m){if(m=r.offset-m,m>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=ht;break}m>r.wnext?(m-=r.wnext,g=r.wsize-m):g=r.wnext-m,m>r.length&&(m=r.length),_t=r.window}else _t=o,g=s-r.offset,m=r.length;m>l&&(m=l),l-=m,r.length-=m;do o[s++]=_t[g++];while(--m);0===r.length&&(r.mode=nt);break;case ut:if(0===l)break e;o[s++]=r.length,l--,r.mode=nt;break;case lt:if(r.wrap){for(;32>d;){if(0===u)break e;u--,h|=i[a++]<d;){if(0===u)break e;u--,h+=i[a++]<=M;M++)B[M]=0;for(z=0;p>z;z++)B[t[d+z]]++;for(N=R,P=n;P>=1&&0===B[P];P--);if(N>P&&(N=P),0===P)return _[m++]=20971520,_[m++]=20971520,v.bits=1,0;for(O=1;P>O&&0===B[O];O++);for(O>N&&(N=O),I=1,M=1;n>=M;M++)if(I<<=1,I-=B[M],0>I)return-1;if(I>0&&(e===a||1!==P))return-1;for(G[1]=0,M=1;n>M;M++)G[M+1]=G[M]+B[M];for(z=0;p>z;z++)0!==t[d+z]&&(g[G[t[d+z]]++]=z);if(e===a?(D=V=g,A=19):e===s?(D=l,U-=257,V=c,q-=257,A=256):(D=f,V=h,A=-1),F=0,z=0,M=O,k=m,j=N,L=0,x=-1,C=1<i||e===u&&C>o)return 1;for(;;){T=M-L,g[z]A?(E=V[q+g[z]],S=D[U+g[z]]):(E=96,S=0),y=1<>L)+b]=T<<24|E<<16|S|0;while(0!==b);for(y=1<>=1;if(0!==y?(F&=y-1,F+=y):F=0,z++,0===--B[M]){if(M===P)break;M=t[d+g[z]]}if(M>N&&(F&w)!==x){for(0===L&&(L=N),k+=O,j=M-L,I=1<j+L&&(I-=B[j+L],!(0>=I));)j++,I<<=1;if(C+=1<i||e===u&&C>o)return 1;x=F&w,_[x]=N<<24|j<<16|k-m|0}}return 0!==F&&(_[k+F]=M-L<<24|64<<16|0),v.bits=N,0}},{"../utils/common":173}],183:[function(e,t){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],184:[function(e,t,r){"use strict";function n(e){for(var t=e.length;--t>=0;)e[t]=0}function i(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function o(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function a(e){return 256>e?ut[e]:ut[256+(e>>>7)]}function s(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function u(e,t,r){e.bi_valid>Y-r?(e.bi_buf|=t<>Y-e.bi_valid,e.bi_valid+=r-Y):(e.bi_buf|=t<>>=1,r<<=1;while(--t>0);return r>>>1}function f(e){16===e.bi_valid?(s(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}function h(e,t){var r,n,i,o,a,s,u=t.dyn_tree,l=t.max_code,c=t.stat_desc.static_tree,f=t.stat_desc.has_stree,h=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,_=0;for(o=0;X>=o;o++)e.bl_count[o]=0;for(u[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;H>r;r++)n=e.heap[r],o=u[2*u[2*n+1]+1]+1,o>p&&(o=p,_++),u[2*n+1]=o,n>l||(e.bl_count[o]++,a=0,n>=d&&(a=h[n-d]),s=u[2*n],e.opt_len+=s*(o+a),f&&(e.static_len+=s*(c[2*n+1]+a)));if(0!==_){do{for(o=p-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[p]--,_-=2}while(_>0);for(o=p;0!==o;o--)for(n=e.bl_count[o];0!==n;)i=e.heap[--r],i>l||(u[2*i+1]!==o&&(e.opt_len+=(o-u[2*i+1])*u[2*i],u[2*i+1]=o),n--)}}function d(e,t,r){var n,i,o=new Array(X+1),a=0;for(n=1;X>=n;n++)o[n]=a=a+r[n-1]<<1;for(i=0;t>=i;i++){var s=e[2*i+1];0!==s&&(e[2*i]=c(o[s]++,s))}}function p(){var e,t,r,n,o,a=new Array(X+1);for(r=0,n=0;G-1>n;n++)for(ct[n]=r,e=0;e<1<n;n++)for(ft[n]=o,e=0;e<1<>=7;W>n;n++)for(ft[n]=o<<7,e=0;e<1<=t;t++)a[t]=0;for(e=0;143>=e;)at[2*e+1]=8,e++,a[8]++;for(;255>=e;)at[2*e+1]=9,e++,a[9]++;for(;279>=e;)at[2*e+1]=7,e++,a[7]++;for(;287>=e;)at[2*e+1]=8,e++,a[8]++;for(d(at,q+1,a),e=0;W>e;e++)st[2*e+1]=5,st[2*e]=c(e,5);ht=new i(at,tt,V+1,q,X),dt=new i(st,rt,0,W,X),pt=new i(new Array(0),nt,0,Z,J)}function _(e){var t;for(t=0;q>t;t++)e.dyn_ltree[2*t]=0;for(t=0;W>t;t++)e.dyn_dtree[2*t]=0;for(t=0;Z>t;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*K]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function m(e){e.bi_valid>8?s(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function g(e,t,r,n){m(e),n&&(s(e,r),s(e,~r)),P.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}function v(e,t,r,n){var i=2*t,o=2*r;return e[i]r;r++)0!==o[2*r]?(e.heap[++e.heap_len]=l=r,e.depth[r]=0):o[2*r+1]=0;for(;e.heap_len<2;)i=e.heap[++e.heap_len]=2>l?++l:0,o[2*i]=1,e.depth[i]=0,e.opt_len--,s&&(e.static_len-=a[2*i+1]);for(t.max_code=l,r=e.heap_len>>1;r>=1;r--)y(e,o,r);i=u;do r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],y(e,o,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,o[2*i]=o[2*r]+o[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,o[2*r+1]=o[2*n+1]=i,e.heap[1]=i++,y(e,o,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],h(e,t),d(o,l,e.bl_count)}function w(e,t,r){var n,i,o=-1,a=t[1],s=0,u=7,l=4;for(0===a&&(u=138,l=3),t[2*(r+1)+1]=65535,n=0;r>=n;n++)i=a,a=t[2*(n+1)+1],++ss?e.bl_tree[2*i]+=s:0!==i?(i!==o&&e.bl_tree[2*i]++,e.bl_tree[2*$]++):10>=s?e.bl_tree[2*Q]++:e.bl_tree[2*et]++,s=0,o=i,0===a?(u=138,l=3):i===a?(u=6,l=3):(u=7,l=4))}function k(e,t,r){var n,i,o=-1,a=t[1],s=0,c=7,f=4;for(0===a&&(c=138,f=3),n=0;r>=n;n++)if(i=a,a=t[2*(n+1)+1],!(++ss){do l(e,i,e.bl_tree);while(0!==--s)}else 0!==i?(i!==o&&(l(e,i,e.bl_tree),s--),l(e,$,e.bl_tree),u(e,s-3,2)):10>=s?(l(e,Q,e.bl_tree),u(e,s-3,3)):(l(e,et,e.bl_tree),u(e,s-11,7));s=0,o=i,0===a?(c=138,f=3):i===a?(c=6,f=3):(c=7,f=4)}}function A(e){var t;for(w(e,e.dyn_ltree,e.l_desc.max_code),w(e,e.dyn_dtree,e.d_desc.max_code),x(e,e.bl_desc),t=Z-1;t>=3&&0===e.bl_tree[2*it[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}function T(e,t,r,n){var i;for(u(e,t-257,5),u(e,r-1,5),u(e,n-4,4),i=0;n>i;i++)u(e,e.bl_tree[2*it[i]+1],3);k(e,e.dyn_ltree,t-1),k(e,e.dyn_dtree,r-1)}function E(e){var t,r=4093624447;for(t=0;31>=t;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return j;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return L;for(t=32;V>t;t++)if(0!==e.dyn_ltree[2*t])return L;return j}function S(e){_t||(p(),_t=!0),e.l_desc=new o(e.dyn_ltree,ht),e.d_desc=new o(e.dyn_dtree,dt),e.bl_desc=new o(e.bl_tree,pt),e.bi_buf=0,e.bi_valid=0,_(e)}function R(e,t,r,n){u(e,(C<<1)+(n?1:0),3),g(e,t,r,!0)}function M(e){u(e,F<<1,3),l(e,K,at),f(e)}function z(e,t,r,n){var i,o,a=0;e.level>0?(e.strm.data_type===I&&(e.strm.data_type=E(e)),x(e,e.l_desc),x(e,e.d_desc),a=A(e),i=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,i>=o&&(i=o)):i=o=r+5,i>=r+4&&-1!==t?R(e,t,r,n):e.strategy===N||o===i?(u(e,(F<<1)+(n?1:0),3),b(e,at,st)):(u(e,(D<<1)+(n?1:0),3),T(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),b(e,e.dyn_ltree,e.dyn_dtree)),_(e),n&&m(e)}function O(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(lt[r]+V+1)]++,e.dyn_dtree[2*a(t)]++),e.last_lit===e.lit_bufsize-1}var P=e("../utils/common"),N=4,j=0,L=1,I=2,C=0,F=1,D=2,U=3,B=258,G=29,V=256,q=V+1+G,W=30,Z=19,H=2*q+1,X=15,Y=16,J=7,K=256,$=16,Q=17,et=18,tt=[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],rt=[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],nt=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],it=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ot=512,at=new Array(2*(q+2));n(at);var st=new Array(2*W);n(st);var ut=new Array(ot);n(ut);var lt=new Array(B-U+1);n(lt);var ct=new Array(G);n(ct);var ft=new Array(W);n(ft);var ht,dt,pt,_t=!1;r._tr_init=S,r._tr_stored_block=R,r._tr_flush_block=z,r._tr_tally=O,r._tr_align=M},{"../utils/common":173}],185:[function(e,t){"use strict";function r(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}t.exports=r},{}],186:[function(e,t){"use strict";function r(e){var t;e&&e.length&&(t=e,e=t.length);var r=new Uint8Array(e||0);return t&&r.set(t),r.readUInt32LE=i.readUInt32LE,r.writeUInt32LE=i.writeUInt32LE,r.readInt32LE=i.readInt32LE,r.writeInt32LE=i.writeInt32LE,r.readFloatLE=i.readFloatLE,r.writeFloatLE=i.writeFloatLE,r.readDoubleLE=i.readDoubleLE,r.writeDoubleLE=i.writeDoubleLE,r.toString=i.toString,r.write=i.write,r.slice=i.slice,r.copy=i.copy,r._isBuffer=!0,r}function n(e){for(var t,r,n=e.length,i=[],o=0;n>o;o++){if(t=e.charCodeAt(o),t>55295&&57344>t){if(!r){t>56319||o+1===n?i.push(239,191,189):r=t;continue}if(56320>t){i.push(239,191,189),r=t;continue}t=r-55296<<10|t-56320|65536,r=null}else r&&(i.push(239,191,189),r=null);128>t?i.push(t):2048>t?i.push(t>>6|192,63&t|128):65536>t?i.push(t>>12|224,t>>6&63|128,63&t|128):i.push(t>>18|240,t>>12&63|128,t>>6&63|128,63&t|128)}return i}t.exports=r;var i,o,a,s=e("ieee754");i={readUInt32LE:function(e){return(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},writeUInt32LE:function(e,t){this[t]=e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24},readInt32LE:function(e){return(this[e]|this[e+1]<<8|this[e+2]<<16)+(this[e+3]<<24)},readFloatLE:function(e){return s.read(this,e,!0,23,4)},readDoubleLE:function(e){return s.read(this,e,!0,52,8)},writeFloatLE:function(e,t){return s.write(this,e,t,!0,23,4)},writeDoubleLE:function(e,t){return s.write(this,e,t,!0,52,8)},toString:function(e,t,r){var n="",i="";t=t||0,r=Math.min(this.length,r||this.length);for(var o=t;r>o;o++){var a=this[o];127>=a?(n+=decodeURIComponent(i)+String.fromCharCode(a),i=""):i+="%"+a.toString(16)}return n+=decodeURIComponent(i)},write:function(e,t){for(var r=e===o?a:n(e),i=0;ir)return e;if(r=n[t.pos++],e+=34359738368*(127&r),128>r)return e;if(r=n[t.pos++],e+=4398046511104*(127&r),128>r)return e;if(r=n[t.pos++],e+=562949953421312*(127&r),128>r)return e;if(r=n[t.pos++],e+=72057594037927940*(127&r),128>r)return e;if(r=n[t.pos++],e+=0x8000000000000000*(127&r),128>r)return e;throw new Error("Expected varint not more than 10 bytes")}function o(e,t){t.realloc(10);for(var r=t.pos+10;e>=1;){if(t.pos>=r)throw new Error("Given varint doesn't fit into 10 bytes");var n=255&e;t.buf[t.pos++]=n|(e>=128?128:0),e/=128}}function a(e,t,r){var n=16383>=t?1:2097151>=t?2:268435455>=t?3:Math.ceil(Math.log(t)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=e;i--)r.buf[i+n]=r.buf[i]}function s(e,t){for(var r=0;r>3,o=this.pos;e(i,t,this),this.pos===o&&this.skip(n)}return t},readMessage:function(e,t){return this.readFields(e,t,this.readVarint()+this.pos)},readFixed32:function(){var e=this.buf.readUInt32LE(this.pos);return this.pos+=4,e},readSFixed32:function(){var e=this.buf.readInt32LE(this.pos);return this.pos+=4,e},readFixed64:function(){var e=this.buf.readUInt32LE(this.pos)+this.buf.readUInt32LE(this.pos+4)*g;return this.pos+=8,e},readSFixed64:function(){var e=this.buf.readUInt32LE(this.pos)+this.buf.readInt32LE(this.pos+4)*g;return this.pos+=8,e},readFloat:function(){var e=this.buf.readFloatLE(this.pos);return this.pos+=4,e},readDouble:function(){var e=this.buf.readDoubleLE(this.pos);return this.pos+=8,e},readVarint:function(){var e,t,r=this.buf;return t=r[this.pos++],e=127&t,128>t?e:(t=r[this.pos++],e|=(127&t)<<7,128>t?e:(t=r[this.pos++],e|=(127&t)<<14,128>t?e:(t=r[this.pos++],e|=(127&t)<<21,128>t?e:i(e,this))))},readVarint64:function(){var e=this.pos,t=this.readVarint();if(y>t)return t;for(var r=this.pos-2;255===this.buf[r];)r--;e>r&&(r=e),t=0;for(var n=0;r-e+1>n;n++){var i=127&~this.buf[e+n];t+=4>n?i<<7*n:i*Math.pow(2,7*n)}return-t-1},readSVarint:function(){var e=this.readVarint();return e%2===1?(e+1)/-2:e/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var e=this.readVarint()+this.pos,t=this.buf.toString("utf8",this.pos,e);return this.pos=e,t},readBytes:function(){var e=this.readVarint()+this.pos,t=this.buf.slice(this.pos,e);return this.pos=e,t},readPackedVarint:function(){for(var e=this.readVarint()+this.pos,t=[];this.pos127;);else if(t===n.Bytes)this.pos=this.readVarint()+this.pos;else if(t===n.Fixed32)this.pos+=4;else{if(t!==n.Fixed64)throw new Error("Unimplemented type: "+t);this.pos+=8}},writeTag:function(e,t){this.writeVarint(e<<3|t)},realloc:function(e){for(var t=this.length||16;t268435455?void o(e,this):(this.realloc(4),this.buf[this.pos++]=127&e|(e>127?128:0),void(127>=e||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),127>=e||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),127>=e||(this.buf[this.pos++]=e>>>7&127)))))},writeSVarint:function(e){this.writeVarint(0>e?2*-e-1:2*e)},writeBoolean:function(e){this.writeVarint(Boolean(e))},writeString:function(e){e=String(e);var t=m.byteLength(e);this.writeVarint(t),this.realloc(t),this.buf.write(e,this.pos),this.pos+=t},writeFloat:function(e){this.realloc(4),this.buf.writeFloatLE(e,this.pos),this.pos+=4},writeDouble:function(e){this.realloc(8),this.buf.writeDoubleLE(e,this.pos),this.pos+=8},writeBytes:function(e){var t=e.length;this.writeVarint(t),this.realloc(t);for(var r=0;t>r;r++)this.buf[this.pos++]=e[r]},writeRawMessage:function(e,t){this.pos++;var r=this.pos;e(t,this);var n=this.pos-r;n>=128&&a(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(e,t,r){this.writeTag(e,n.Bytes),this.writeRawMessage(t,r)},writePackedVarint:function(e,t){this.writeMessage(e,s,t)},writePackedSVarint:function(e,t){this.writeMessage(e,u,t)},writePackedBoolean:function(e,t){this.writeMessage(e,f,t)},writePackedFloat:function(e,t){this.writeMessage(e,l,t)},writePackedDouble:function(e,t){this.writeMessage(e,c,t)},writePackedFixed32:function(e,t){this.writeMessage(e,h,t)},writePackedSFixed32:function(e,t){this.writeMessage(e,d,t)},writePackedFixed64:function(e,t){this.writeMessage(e,p,t)},writePackedSFixed64:function(e,t){this.writeMessage(e,_,t)},writeBytesField:function(e,t){this.writeTag(e,n.Bytes),this.writeBytes(t)},writeFixed32Field:function(e,t){this.writeTag(e,n.Fixed32),this.writeFixed32(t)},writeSFixed32Field:function(e,t){this.writeTag(e,n.Fixed32),this.writeSFixed32(t)},writeFixed64Field:function(e,t){this.writeTag(e,n.Fixed64),this.writeFixed64(t)},writeSFixed64Field:function(e,t){this.writeTag(e,n.Fixed64),this.writeSFixed64(t)},writeVarintField:function(e,t){this.writeTag(e,n.Varint),this.writeVarint(t)},writeSVarintField:function(e,t){this.writeTag(e,n.Varint),this.writeSVarint(t)},writeStringField:function(e,t){this.writeTag(e,n.Bytes),this.writeString(t)},writeFloatField:function(e,t){this.writeTag(e,n.Fixed32),this.writeFloat(t)},writeDoubleField:function(e,t){this.writeTag(e,n.Fixed64),this.writeDouble(t)},writeBooleanField:function(e,t){this.writeVarintField(e,Boolean(t))}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./buffer":186}],188:[function(e,t){(function(e){"use strict";function r(t,r,n,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,r)});case 3:return e.nextTick(function(){t.call(null,r,n)});case 4:return e.nextTick(function(){t.call(null,r,n,i)});default:for(o=new Array(s-1),a=0;a1)for(var r=1;re?~e:e],i=0,o=r.length;o>i;++i)t.push(c(r[i].slice(),i));0>e&&n(t,o)}function i(e){return c(e.slice())}function a(e){for(var t=[],n=0,i=e.length;i>n;++n)r(e[n],t);return t.length<2&&t.push(t[0].slice()),t}function s(e){for(var t=a(e);t.length<4;)t.push(t[0].slice());return t}function u(e){return e.map(s)}function l(e){var t,r=e.type;switch(r){case"GeometryCollection":return{type:r,geometries:e.geometries.map(l)};case"Point":t=i(e.coordinates);break;case"MultiPoint":t=e.coordinates.map(i);break;case"LineString":t=a(e.arcs);break;case"MultiLineString":t=e.arcs.map(a);break;case"Polygon":t=u(e.arcs);break;case"MultiPolygon":t=e.arcs.map(u);break;default:return null}return{type:r,coordinates:t}}var c=o(e),f=e.arcs;return l(t)}var n=function(e,t){for(var r,n=e.length,i=n-t;i<--n;)r=e[i],e[i++]=e[n],e[n]=r},i=function(e){return e},o=function(e){if(null==(t=e.transform))return i;var t,r,n,o=t.scale[0],a=t.scale[1],s=t.translate[0],u=t.translate[1];return function(e,t){return t||(r=n=0),e[0]=(r+=e[0])*o+s,e[1]=(n+=e[1])*a+u,e}},a=function(e,r){return"GeometryCollection"===r.type?{type:"FeatureCollection",features:r.geometries.map(function(r){return t(e,r)})}:t(e,r)};e.feature=a,Object.defineProperty(e,"__esModule",{value:!0})})},{}],192:[function(e,t){(function(e){function r(e,t){function r(){if(!i){if(n("throwDeprecation"))throw new Error(t);n("traceDeprecation")?console.trace(t):console.warn(t),i=!0}return e.apply(this,arguments)}if(n("noDeprecation"))return e;var i=!1;return r}function n(t){try{if(!e.localStorage)return!1}catch(r){return!1}var n=e.localStorage[t];return null==n?!1:"true"===String(n).toLowerCase()}t.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],193:[function(e,t,r){arguments[4][99][0].apply(r,arguments)},{dup:99}],194:[function(e,t){t.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},{}],195:[function(e,t,r){(function(t,n){function i(e,t){var n={seen:[],stylize:a};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),_(t)?n.showHidden=t:t&&r._extend(n,t),x(n.showHidden)&&(n.showHidden=!1),x(n.depth)&&(n.depth=2),x(n.colors)&&(n.colors=!1),x(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),u(n,e,n.depth)}function o(e,t){var r=i.styles[t];return r?"["+i.colors[r][0]+"m"+e+"["+i.colors[r][1]+"m":e}function a(e){return e}function s(e){var t={};return e.forEach(function(e){t[e]=!0}),t}function u(e,t,n){if(e.customInspect&&t&&E(t.inspect)&&t.inspect!==r.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(n,e);return y(i)||(i=u(e,i,n)),i}var o=l(e,t);if(o)return o;var a=Object.keys(t),_=s(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),T(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return c(t);if(0===a.length){if(E(t)){var m=t.name?": "+t.name:"";return e.stylize("[Function"+m+"]","special")}if(w(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(A(t))return e.stylize(Date.prototype.toString.call(t),"date");if(T(t))return c(t)}var g="",v=!1,b=["{","}"];if(p(t)&&(v=!0,b=["[","]"]),E(t)){var x=t.name?": "+t.name:"";g=" [Function"+x+"]"}if(w(t)&&(g=" "+RegExp.prototype.toString.call(t)),A(t)&&(g=" "+Date.prototype.toUTCString.call(t)),T(t)&&(g=" "+c(t)),0===a.length&&(!v||0==t.length))return b[0]+g+b[1];if(0>n)return w(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var k;return k=v?f(e,t,n,_,a):a.map(function(r){return h(e,t,n,_,r,v)}),e.seen.pop(),d(k,g,b)}function l(e,t){if(x(t))return e.stylize("undefined","undefined");if(y(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return v(t)?e.stylize(""+t,"number"):_(t)?e.stylize(""+t,"boolean"):m(t)?e.stylize("null","null"):void 0}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function f(e,t,r,n,i){for(var o=[],a=0,s=t.length;s>a;++a)o.push(O(t,String(a))?h(e,t,r,n,String(a),!0):"");return i.forEach(function(i){i.match(/^\d+$/)||o.push(h(e,t,r,n,i,!0))}),o}function h(e,t,r,n,i,o){var a,s,l;if(l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]},l.get?s=l.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):l.set&&(s=e.stylize("[Setter]","special")),O(n,i)||(a="["+i+"]"),s||(e.seen.indexOf(l.value)<0?(s=m(r)?u(e,l.value,null):u(e,l.value,r-1),s.indexOf("\n")>-1&&(s=o?s.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+s.split("\n").map(function(e){return" "+e}).join("\n"))):s=e.stylize("[Circular]","special")),x(a)){if(o&&i.match(/^\d+$/))return s;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function d(e,t,r){var n=0,i=e.reduce(function(e,t){return n++,t.indexOf("\n")>=0&&n++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}function p(e){return Array.isArray(e)}function _(e){return"boolean"==typeof e}function m(e){return null===e}function g(e){return null==e}function v(e){return"number"==typeof e}function y(e){return"string"==typeof e}function b(e){return"symbol"==typeof e}function x(e){return void 0===e}function w(e){return k(e)&&"[object RegExp]"===R(e)}function k(e){return"object"==typeof e&&null!==e}function A(e){return k(e)&&"[object Date]"===R(e)}function T(e){return k(e)&&("[object Error]"===R(e)||e instanceof Error)}function E(e){return"function"==typeof e}function S(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function R(e){return Object.prototype.toString.call(e)}function M(e){return 10>e?"0"+e.toString(10):e.toString(10)}function z(){var e=new Date,t=[M(e.getHours()),M(e.getMinutes()),M(e.getSeconds())].join(":");return[e.getDate(),L[e.getMonth()],t].join(" ")}function O(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var P=/%[sdj%]/g;r.format=function(e){if(!y(e)){for(var t=[],r=0;r=o)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return e}}),s=n[r];o>r;s=n[++r])a+=m(s)||!k(s)?" "+s:" "+i(s);return a},r.deprecate=function(e,i){function o(){if(!a){if(t.throwDeprecation)throw new Error(i);t.traceDeprecation?console.trace(i):console.error(i),a=!0}return e.apply(this,arguments)}if(x(n.process))return function(){return r.deprecate(e,i).apply(this,arguments)};if(t.noDeprecation===!0)return e;var a=!1;return o};var N,j={};r.debuglog=function(e){if(x(N)&&(N=t.env.NODE_DEBUG||""),e=e.toUpperCase(),!j[e])if(new RegExp("\\b"+e+"\\b","i").test(N)){var n=t.pid;j[e]=function(){var t=r.format.apply(r,arguments);console.error("%s %d: %s",e,n,t)}}else j[e]=function(){};return j[e]},r.inspect=i,i.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},i.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},r.isArray=p,r.isBoolean=_,r.isNull=m,r.isNullOrUndefined=g,r.isNumber=v,r.isString=y,r.isSymbol=b,r.isUndefined=x,r.isRegExp=w,r.isObject=k,r.isDate=A,r.isError=T,r.isFunction=E,r.isPrimitive=S,r.isBuffer=e("./support/isBuffer");var L=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];r.log=function(){console.log("%s - %s",z(),r.format.apply(r,arguments))},r.inherits=e("inherits"),r._extend=function(e,t){if(!t||!k(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":194,_process:189,inherits:193}],196:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,r){var n=u[0],i=u[1];return e[0]<=n.x+r&&t[0]<=n.x+r||e[0]>=i.x-r&&t[0]>=i.x-r||e[1]>=n.y-r&&t[1]>=n.y-r||e[1]<=i.y+r&&t[1]<=i.y+r?!0:!1}function o(e,t){t=t||0;var r=u[0],n=u[1];return e[0]<=r.x+t||e[0]>=n.x-t||e[1]>=r.y-t||e[1]<=n.y+t}Object.defineProperty(r,"__esModule",{value:!0}),r.default_uvs=r.tile_bounds=void 0,r.outsideTile=i,r.isCoordOutsideTile=o;{var a=e("../geo"),s=n(a),u=r.tile_bounds=[{x:0,y:0},{x:s.default.tile_scale,y:-s.default.tile_scale}];r.default_uvs=[0,0,1,1]}},{"../geo":201}],197:[function(e,t,r){"use strict";function n(e,t,r,n,a){var s=n.texcoord_index,u=n.position_index,l=n.shape_index,c=n.offset_index,f=n.offsets_index,h=n.pre_angles_index,d=n.angles_index,p=a.quad,_=a.quad_normalize,m=a.offset,g=a.offsets,v=a.pre_angles,y=a.angle,b=a.angles,x=a.curve,w=a.texcoord_scale,k=a.texcoord_normalize,A=a.pre_angles_normalize,T=a.angles_normalize,E=a.offsets_normalize;_=_||1;var S=p[0]/2*_,R=p[1]/2*_,M=[[-S,-R],[S,-R],[S,R],[-S,R]],z=t.vertex_elements,O=t.vertex_count,P=void 0;if(s){k=k||1;var N=w||o.default_uvs,j=i(N,4),L=j[0],I=j[1],C=j[2],F=j[3];P=[[L,I],[C,I],[C,F],[L,F]]}for(var D=0,U=e.length,B=0;U>B;B++){for(var G=e[B],V=0;4>V;V++)s&&(r[s+0]=P[V][0]*k,r[s+1]=P[V][1]*k),r[u+0]=G[0],r[u+1]=G[1],r[l+0]=M[V][0],r[l+1]=M[V][1],r[l+2]=y,r[c+0]=m[0],r[c+1]=m[1],x&&(r[h+0]=A*v[0],r[h+1]=A*v[1],r[h+2]=A*v[2],r[h+3]=A*v[3],r[d+0]=T*b[0],r[d+1]=T*b[1],r[d+2]=T*b[2],r[d+3]=T*b[3],r[f+0]=E*g[0],r[f+1]=E*g[1],r[f+2]=E*g[2],r[f+3]=E*g[3]),t.addVertex(r);z.push(O+0),z.push(O+1),z.push(O+2),z.push(O+2),z.push(O+3),z.push(O+0),O+=4,D+=2}return D}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(u){i=!0,o=u}finally{try{!n&&s["return"]&&s["return"]()}finally{if(i)throw o}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();r.buildQuadsForPoints=n;var o=e("./common")},{"./common":196}],198:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,r,n){var i=n.texcoord_index,o=n.texcoord_scale,u=n.texcoord_normalize,c=t.vertex_elements;if(i){u=u||1;var f=o||h.default_uvs,d=s(f,4),_=d[0],m=d[1],g=d[2],v=d[3]}for(var y=0,b=e.length,x=0;b>x;x++){var w=t.vertex_count,k=e[x];if(i)var A=l.default.findBoundingBox(k),T=s(A,4),E=T[0],S=T[1],R=T[2],M=T[3],z=R-E,O=M-S,P=(g-_)/z,N=(v-m)/O;for(var j=0;jN;N++)for(var j=e[N],L=0;LL;L++){var I=L,C=L+1;if(r=e[I],n=e[C],!b.default.isEqual(r,n)){if(y&&k.outsideTile(r,n,x)){p(r,o,o,1,R,t,1),p(r,o,o,0,R,t,-1),d(1,t);var F=s(e,I+1,x);return void(F&&(t.extra_lines=t.extra_lines||[],t.extra_lines.push(F)))}i=o,o=b.default.normalize(b.default.perp(r,n)),c===E.miter?f(R,r,i,o,A,!1,t):h(c,R,r,i,o,!1,t),S&&(R+=w*b.default.length(b.default.sub(n,r)))}}r=n,i=o,g?(o=b.default.normalize(b.default.perp(r,e[1])),l(r,i,o,c,R,t)):(p(r,i,o,1,R,t,1),p(r,i,o,0,R,t,-1),d(1,t),k.isCoordOutsideTile(r)||m(r,R,i,_,!1,t))}}}function a(e){if(k.isCoordOutsideTile(e[0]))return 0;for(var t=0;t=2?e.slice(n):!1}function u(e,t,r,n,i){if(void 0===n||k.isCoordOutsideTile(e))p(e,r,r,1,0,i,1),p(e,r,r,0,0,i,-1);else{var o=0;n===E.miter?f(o,e,t,r,i.miter_len_sq,!0,i):h(n,o,e,t,r,!0,i)}}function l(e,t,r,n,i,o){if(k.isCoordOutsideTile(e))p(e,t,t,1,i,o,1),p(e,t,t,0,i,o,-1),d(1,o);else{var a=c(t,r);n===E.miter&&b.default.lengthSq(a)>o.miter_len_sq&&(n=E.bevel),n===E.miter?(p(e,a,t,1,i,o,1),p(e,a,t,0,i,o,-1),d(1,o)):(p(e,t,t,1,i,o,1),p(e,t,t,0,i,o,-1),d(1,o))}}function c(e,t){var r=b.default.normalize(b.default.add(e,t)),n=2/(1+Math.abs(b.default.dot(e,r)));return b.default.mult(r,n*n)}function f(e,t,r,n,i,o,a){var s=c(r,n);b.default.lengthSq(s)>i?h(E.bevel,e,t,r,n,o,a):(p(t,s,s,1,e,a,1),p(t,s,s,0,e,a,-1),o||d(1,a))}function h(e,t,r,n,i,o,a){var s=c(n,i),u=i[0]*n[1]-i[1]*n[0]>0;null!=a.texcoord_index&&(M[1]=t,z[1]=t),u?(p(r,s,s,1,t,a,1),p(r,n,s,0,t,a,-1),o||d(1,a),_(r,b.default.neg(n),s,b.default.neg(i),s,M,z,M,!1,e===E.bevel,a),p(r,s,s,1,t,a,1),p(r,i,s,0,t,a,-1)):(p(r,n,s,1,t,a,1),p(r,s,s,0,t,a,-1),o||d(1,a),_(r,n,b.default.neg(s),i,s,z,M,z,!1,e===E.bevel,a),p(r,i,s,1,t,a,1),p(r,s,s,0,t,a,-1))}function d(e,t){for(var r=t.vertex_data.vertex_elements,n=t.vertex_data.vertex_count,i=n-2*e-2,o=0;e>o;o++)r.push(i+2*o+2),r.push(i+2*o+1),r.push(i+2*o+0),r.push(i+2*o+2),r.push(i+2*o+3),r.push(i+2*o+1),t.geom_count+=2}function p(e,t,r,n,i,o,a){var s=o.vertex_template,u=o.vertex_data;s[0]=e[0],s[1]=e[1];var l=o.half_width*a;s[o.extrude_index+0]=t[0]*l,s[o.extrude_index+1]=t[1]*l,o.offset&&(s[o.offset_index+0]=r[0]*o.offset,s[o.offset_index+1]=r[1]*o.offset),null!=o.texcoord_index&&(s[o.texcoord_index+0]=n*o.texcoord_normalize,s[o.texcoord_index+1]=i*o.texcoord_normalize),u.addVertex(s)}function _(e,t,r,n,i,o,a,s,u,l,c){for(var f=t[0]*n[1]-t[1]*n[0],h=b.default.dot(t,n),d=Math.atan2(f,h);d>=Math.PI;)d-=2*Math.PI;if(l)_=1;else{var _=g(d,c.half_width);if(1>_)return}var m=c.vertex_data.vertex_count,v=c.vertex_data.vertex_elements;0>d?(p(e,r,i,a[0],a[1],c,1),p(e,t,i,o[0],o[1],c,1)):(p(e,r,i,a[0],a[1],c,1),p(e,t,i,o[0],o[1],c,1));var y=t,x=null!=c.texcoord_index;if(x)if(u)var w=b.default.sub(o,a);else{P=b.default.copy(o);var k=b.default.div(b.default.sub(s,o),_)}var A=d/_,T=0>d?-1:1,E=void 0,S=void 0;f>0?(E=2,S=1):(E=1,S=2);for(var R=0;_>R;R++)0===R&&0>d&&(y=b.default.neg(y)),y=b.default.rot(y,A),x&&(u?(w=b.default.rot(w,A),P[0]=w[0]+a[0],P[1]=w[1]*c.texcoord_width*c.v_scale+a[1]):P=b.default.add(P,k)),p(e,y,i,P[0],P[1],c,T),v.push(m+R+E),v.push(m),v.push(m+R+S)}function m(e,t,r,n,i,o){var a=b.default.neg(r),s=null!=o.texcoord_index;switch(n){case T.square:var u;i?(u=[r[1],-r[0]],p(e,b.default.add(r,u),r,1,t,o,1),p(e,b.default.add(a,u),r,0,t,o,1),s&&(t+=.5*o.texcoord_width*o.v_scale),p(e,r,r,1,t,o,1),p(e,a,r,0,t,o,1)):(u=[-r[1],r[0]],p(e,r,r,1,t,o,1),p(e,a,r,0,t,o,1),s&&(t+=.5*o.texcoord_width*o.v_scale),p(e,b.default.add(r,u),r,1,t,o,1),p(e,b.default.add(a,u),r,0,t,o,1)),d(1,o);break;case T.round:var l,c,f=M,h=z,m=O;i?(l=r,c=a,s&&(t+=.5*o.texcoord_width*o.v_scale,f=z,h=M,m=O)):(l=a,c=r),s&&(M[1]=t,z[1]=t,O[1]=t),_(e,l,A,c,r,f,m,h,!0,!1,o);break;case T.butt:return}}function g(e,t){0>e&&(e=-e);var r=t>2*S.MIN_FAN_WIDTH?Math.log2(t/S.MIN_FAN_WIDTH):1;return Math.ceil(e/Math.PI*r)}function v(e,t){for(var r=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{}; -a(this,e),this.view=r,this.position=n.position,this.zoom=n.zoom}return u(e,[{key:"update",value:function(){}},{key:"setupProgram",value:function(){}},{key:"updateView",value:function(){if(this.position||this.zoom){var e={};this.position&&(e={lng:this.position[0],lat:this.position[1],zoom:this.position[2]}),this.zoom&&(e.zoom=this.zoom),this.view.setView(e)}}},{key:"setupMatrices",value:function(e,t){d.mat4.multiply(e.model_view32,this.view_matrix,e.model),t.uniform("Matrix4fv","u_modelView",e.model_view32),d.mat3.normalFromMat4(e.normal32,e.model_view32),d.mat3.invert(e.inverse_normal32,e.normal32),t.uniform("Matrix3fv","u_normalMatrix",e.normal32),t.uniform("Matrix3fv","u_inverseNormalMatrix",e.inverse_normal32)}}],[{key:"create",value:function(e,t,r){switch(r.type){case"isometric":return new m(e,t,r);case"flat":return new g(e,t,r);case"perspective":default:return new _(e,t,r)}}}]),e}();r.default=p;var _=function(e){function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,t);var o=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r,n));return o.type="perspective",o.focal_length=n.focal_length,o.fov=n.fov,o.focal_length||o.fov||(o.focal_length=[[16,2],[17,2.5],[18,3],[19,4],[20,6]]),o.vanishing_point=n.vanishing_point||[0,0],o.vanishing_point=o.vanishing_point.map(parseFloat),o.vanishing_point_skew=[],o.position_meters=null,o.view_matrix=new Float64Array(16),o.projection_matrix=new Float32Array(16),h.default.replaceBlock("camera","\n uniform mat4 u_projection;\n uniform vec3 u_eye;\n uniform vec2 u_vanishing_point;\n\n void cameraProjection (inout vec4 position) {\n position = u_projection * position;\n }"),o}return o(t,e),u(t,[{key:"constrainCamera",value:function(e){var t=e.view_height,r=e.height,n=e.focal_length,i=e.fov;return r?(n=2*r/t,i=2*Math.atan(1/n)):(n?i=2*Math.atan(1/n):i&&(i=i*Math.PI/180,n=1/Math.tan(i/2)),r=t/2*n),{view_height:t,height:r,focal_length:n,fov:i}}},{key:"updateMatrices",value:function(){var e=this.view.size.css.height*this.view.meters_per_pixel,t=this.constrainCamera({view_height:e,focal_length:c.default.interpolate(this.view.zoom,this.focal_length),fov:c.default.interpolate(this.view.zoom,this.fov)}),r=t.height,n=t.fov,i=[this.view.center.meters.x,this.view.center.meters.y,r];this.position_meters=i,d.mat4.lookAt(this.view_matrix,d.vec3.fromValues(i[0],i[1],0),d.vec3.fromValues(i[0],i[1],-1),d.vec3.fromValues(0,1,0)),d.mat4.perspective(this.projection_matrix,n,this.view.aspect,1,2*r),this.vanishing_point_skew[0]=this.vanishing_point[0]/this.view.size.css.width,this.vanishing_point_skew[1]=this.vanishing_point[1]/this.view.size.css.height,this.projection_matrix[8]=2*-this.vanishing_point_skew[0],this.projection_matrix[9]=2*-this.vanishing_point_skew[1],d.mat4.translate(this.projection_matrix,this.projection_matrix,d.vec3.fromValues(e/2*this.view.aspect*2*-this.vanishing_point_skew[0],e/2*2*-this.vanishing_point_skew[1],0)),d.mat4.translate(this.projection_matrix,this.projection_matrix,d.vec3.fromValues(0,0,-r))}},{key:"update",value:function(){s(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"update",this).call(this),this.updateMatrices()}},{key:"setupProgram",value:function(e){e.uniform("Matrix4fv","u_projection",this.projection_matrix),e.uniform("3f","u_eye",[0,0,this.position_meters[2]]),e.uniform("2fv","u_vanishing_point",this.vanishing_point_skew)}}]),t}(p),m=function(e){function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,t);var o=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r,n));return o.type="isometric",o.axis=n.axis||{x:0,y:1},2===o.axis.length&&(o.axis={x:o.axis[0],y:o.axis[1]}),o.position_meters=null,o.viewport_height=null,o.view_matrix=new Float64Array(16),o.projection_matrix=new Float32Array(16),h.default.replaceBlock("camera","\n uniform mat4 u_projection;\n uniform vec3 u_eye;\n uniform vec2 u_vanishing_point;\n\n void cameraProjection (inout vec4 position) {\n position = u_projection * position;\n // position.xy += position.z * u_isometric_axis;\n\n // Reverse z for depth buffer so up is negative,\n // and scale down values so objects higher than one screen height will not get clipped\n // pull forward slightly to avoid going past far clipping plane\n position.z = -position.z / 100. + 1. - 0.001;\n }"),o}return o(t,e),u(t,[{key:"update",value:function(){s(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"update",this).call(this),this.viewport_height=this.view.size.css.height*this.view.meters_per_pixel;var e=[this.view.center.meters.x,this.view.center.meters.y,this.viewport_height];this.position_meters=e,d.mat4.identity(this.view_matrix),d.mat4.translate(this.view_matrix,this.view_matrix,d.vec3.fromValues(-e[0],-e[1],0)),d.mat4.identity(this.projection_matrix),this.projection_matrix[8]=this.axis.x/this.view.aspect,this.projection_matrix[9]=this.axis.y,d.mat4.scale(this.projection_matrix,this.projection_matrix,d.vec3.fromValues(2/this.view.size.meters.x,2/this.view.size.meters.y,2/this.view.size.meters.y))}},{key:"setupProgram",value:function(e){e.uniform("Matrix4fv","u_projection",this.projection_matrix),e.uniform("3fv","u_eye",[0,0,this.viewport_height]),e.uniform("2fv","u_vanishing_point",[0,0])}}]),t}(p),g=function(e){function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,t);var o=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r,n));return o.type="flat",o}return o(t,e),u(t,[{key:"update",value:function(){this.axis.x=0,this.axis.y=0,s(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"update",this).call(this)}}]),t}(m)},{"./gl/shader_program":207,"./utils/gl-matrix":257,"./utils/utils":269}],201:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,i=function(){function e(e,t){var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(u){i=!0,o=u}finally{try{!n&&s["return"]&&s["return"]()}finally{if(i)throw o}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();r.default=n={},n.default_source_max_zoom=18,n.default_view_max_zoom=20,n.tile_size=256,n.half_circumference_meters=20037508.342789244,n.circumference_meters=2*n.half_circumference_meters,n.min_zoom_meters_per_pixel=n.circumference_meters/n.tile_size;var o=[];n.metersPerPixel=function(e){return o[e]=o[e]||n.min_zoom_meters_per_pixel/Math.pow(2,e),o[e]};var a=[];n.metersPerTile=function(e){return a[e]=a[e]||n.circumference_meters/Math.pow(2,e),a[e]},n.tile_scale=4096,n.units_per_pixel=n.tile_scale/n.tile_size,n.height_scale=16;var s=[];n.unitsPerMeter=function(e){return s[e]=s[e]||n.tile_scale/(n.tile_size*n.metersPerPixel(e)),s[e]},n.metersForTile=function(e){return{x:e.x*n.circumference_meters/Math.pow(2,e.z)-n.half_circumference_meters,y:-(e.y*n.circumference_meters/Math.pow(2,e.z)-n.half_circumference_meters)}},n.tileForMeters=function(e,t){var r=i(e,2),o=r[0],a=r[1];return{x:Math.floor((o+n.half_circumference_meters)/(n.circumference_meters/Math.pow(2,t))),y:Math.floor((-a+n.half_circumference_meters)/(n.circumference_meters/Math.pow(2,t))),z:t}},n.wrapTile=function(e){var t=e.x,r=e.y,n=e.z,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{x:!0,y:!1},o=(1<e.ne.x||t.ne.xe.ne.y||t.ne.ya;a++){var s=e[0][a];s[0]r&&(r=s[0]),s[1]>i&&(i=s[1])}return[t,n,r,i]},n.geometryType=function(e){return"Polygon"===e||"MultiPolygon"===e?"polygon":"LineString"===e||"MultiLineString"===e?"line":"Point"===e||"MultiPoint"===e?"point":void 0},n.centroid=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:!0;if(e&&0!==e.length){var r=0,n=0,i=0,o=e[0],a=o.length,s=void 0;t&&(s=o[0],o=o.map(function(e){return[e[0]-s[0],e[1]-s[1]]}));for(var u=0,l=a-1;a>u;l=u,u++){var c=o[u],f=o[l],h=c[1]*f[0]-f[1]*c[0];r+=(c[0]+f[0])*h,n+=(c[1]+f[1])*h,i+=3*h}var d=[r/i,n/i];return t&&(d[0]+=s[0],d[1]+=s[1]),d}},n.multiCentroid=function(e){for(var t=e.length,r=[0,0],i=0;in;n++){var i=e[n],o=e[n+1];t+=i[0]*o[1]-o[0]*i[1]}return t+=e[r-1][0]*e[0][1]-e[0][0]*e[r-1][1]},n.polygonRingArea=function(e){return Math.abs(n.signedPolygonRingAreaSum(e))/2},n.polygonArea=function(e){return e?n.polygonRingArea(e[0]):void 0},n.multiPolygonArea=function(e){for(var t=0,r=0;r0?"CW":0>t?"CCW":void 0}},{}],202:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n;r.default=n={},n.BYTE=5120,n.UNSIGNED_BYTE=5121,n.SHORT=5122,n.UNSIGNED_SHORT=5123,n.INT=5124,n.UNSIGNED_INT=5125,n.FLOAT=5126},{}],203:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n;r.default=n={};var i=0;n.getContext=function(e,t){var r=!1;null==e&&(e=document.createElement("canvas"),e.style.position="absolute",e.style.top=0,e.style.left=0,e.style.zIndex=-1,document.body.appendChild(e),r=!0);var o=e.getContext("webgl",t)||e.getContext("experimental-webgl",t);if(!o)throw new Error("Couldn't create WebGL context.");return o._tangram_id=i++,r?(n.resize(o,window.innerWidth,window.innerHeight,t.device_pixel_ratio),window.addEventListener("resize",function(){n.resize(o,window.innerWidth,window.innerHeight,t.device_pixel_ratio)})):n.resize(o,parseFloat(e.style.width),parseFloat(e.style.height),t.device_pixel_ratio),o},n.resize=function(e,t,r,n){n=n||window.devicePixelRatio||1,e.canvas.style.width=t+"px",e.canvas.style.height=r+"px",e.canvas.width=Math.round(t*n),e.canvas.height=Math.round(r*n),e.bindFramebuffer(e.FRAMEBUFFER,null),e.viewport(0,0,e.canvas.width,e.canvas.height)}},{}],204:[function(e,t,r){"use strict";function n(e,t){var r=i.filter(function(t){return t[0]===e})[0];return r=r&&r[1],r||(i.push([e,{}]),r=i[i.length-1][1]),r[t]||(r[t]=e.getExtension(t)),r[t]}Object.defineProperty(r,"__esModule",{value:!0}),r.default=n;var i=[]},{}],205:[function(e,t,r){"use strict";function n(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t=2&&o.length<=4?t.push({type:"vec"+o.length,method:o.length+"fv",name:r,value:o,key:i,uniforms:e}):o.length>4&&t.push({type:"float[]",method:"1fv",name:r+"[0]",value:o,key:i,uniforms:e});else if("string"==typeof o[0])for(n=0;n=2&&o[0].length<=4)for(n=0;n=2&&t.length<=4?r="vec"+t.length:(r="float",n=t.length):"string"==typeof t[0]&&(r="sampler2D",n=t.length);else if("boolean"==typeof t)r="bool";else{if("string"!=typeof t)return;r="sampler2D"}var i="";return i+=r+" "+e,n&&(i+="["+n+"]"),i+=";\n"},i.defineUniform=function(e,t){var r=i.defineVariable(e,t);if(r)return"uniform "+r},i.isUniformDefined=function(e,t){var r=new RegExp("uniform[^;]+(?:{[\\s\\S]*})?[^;]*\\b"+e+"\\b","g");return t.match(r)?!0:!1},i.isSymbolReferenced=function(e,t){var r=new RegExp("\\b"+e+"\\b","g");return t.search(r)>=0?!0:!1},i.expandVec3=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=void 0;if(Array.isArray(e)){if(2!==e.length)return e;r=[].concat(n(e),[t]).map(parseFloat)}else r=[e,e,e].map(parseFloat);return r&&r.every(function(e){return"number"==typeof e&&!isNaN(e)})?r:void 0},i.expandVec4=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=void 0;if(Array.isArray(e)){if(3!==e.length)return e;r=[].concat(n(e),[t]).map(parseFloat)}else r=[e,e,e,t].map(parseFloat);return r&&r.every(function(e){return"number"==typeof e&&!isNaN(e)})?r:void 0}},{}],206:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r0?"precision highp float;\n":"precision mediump float;\n",i.TANGRAM_VERTEX_SHADER=!0,i.TANGRAM_FRAGMENT_SHADER=!1,this.computed_vertex_source=f+e.buildDefineString(i)+this.computed_vertex_source,i.TANGRAM_VERTEX_SHADER=!1,i.TANGRAM_FRAGMENT_SHADER=!0,this.computed_fragment_source=e.buildExtensionString(n)+f+e.buildDefineString(i)+this.computed_fragment_source,this.computed_vertex_source=this.computed_vertex_source.replace(w,""),this.computed_fragment_source=this.computed_fragment_source.replace(w,"");try{this.program=e.updateProgram(this.gl,this.program,this.computed_vertex_source,this.computed_fragment_source),this.compiled=!0,this.compiling=!1}catch(d){throw this.program=null,this.compiled=!1,this.compiling=!1,this.error=d,("vertex"===d.type||"fragment"===d.type)&&(this.shader_errors=d.errors,this.shader_errors.forEach(function(e){e.type=d.type,e.block=t.block(d.type,e.line)})),d}this.computed_vertex_source=null,this.computed_fragment_source=null,this.use(),this.refreshUniforms(),this.refreshAttributes()}},{key:"buildDefineList",value:function(){var t,r={};for(t in e.defines)r[t]=e.defines[t];for(t in this.defines)r[t]=this.defines[t];return r}},{key:"buildShaderBlockList",value:function(){var t=void 0,r={};for(t in e.blocks)if(r[t]=[],Array.isArray(e.blocks[t])){var n;(n=r[t]).push.apply(n,i(e.blocks[t].map(function(e,r){return{key:t,source:e,num:r,scope:"ShaderProgram"}})))}else r[t]=[{key:t,source:e.blocks[t],num:0,scope:"ShaderProgram"}];for(t in this.blocks)if(r[t]=r[t]||[],Array.isArray(this.blocks[t]))for(var o=this.block_scopes&&this.block_scopes[t]||[],a=null,s=0,u=0;u0&&(this.computed_vertex_source=i.join("\n")+this.computed_vertex_source),o.length>0&&(this.computed_fragment_source=o.join("\n")+this.computed_fragment_source)}}},{key:"setUniforms",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:!0;if(this.compiled){t&&(this.texture_unit=0);for(var r=c.default.parseUniforms(e),n=0;ni&&i1?r={scope:a[1],name:a[2],num:a[3]}:(a=o.match(/\/\/ tangram-block-end: ([A-Za-z0-9_-]+), ([A-Za-z0-9_-]+), (\d+)/),a&&a.length>1&&(r=null)),r&&(r.line=null==r.line?-1:r.line+1,r.source=o)}return r}},{key:"checkExtensions",value:function(){var e=this,t=[];return this.extensions.forEach(function(r){var n=p.default(e.gl,r),i="TANGRAM_EXTENSION_"+r;e.defines[i]=null!=n,n?t.push(r):u.default("debug","Could not enable extension '"+r+"'")}),t}}]),e}();r.default=k,k.id=0,k.current=null,k.defines={},k.blocks={},k.reset=function(){k.programs_by_source={},k.shaders_by_source={}},k.reset(),k.buildDefineString=function(e){var t="";for(var r in e)null!=e[r]&&e[r]!==!1&&(t+="boolean"==typeof e[r]&&e[r]===!0?"#define "+r+"\n":"number"==typeof e[r]&&Math.floor(e[r])===e[r]?"#define "+r+" "+e[r].toFixed(1)+"\n":"#define "+r+" "+e[r]+"\n");return t},k.buildExtensionString=function(e){e=e||[];var t="";return e.forEach(function(e){t+="#ifdef GL_"+e+"\n#extension GL_"+e+" : enable\n#endif\n"}),t},k.addBlock=function(e){var t;k.blocks[e]=k.blocks[e]||[];for(var r=arguments.length,n=Array(r>1?r-1:0),i=1;r>i;i++)n[i-1]=arguments[i];(t=k.blocks[e]).push.apply(t,n)},k.removeBlock=function(e){k.blocks[e]=[]},k.replaceBlock=function(e){k.removeBlock(e);for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];k.addBlock.apply(k,[e].concat(r))},k.updateProgram=function(e,t,r,n){var i=m.default(e._tangram_id+"::"+r+"::"+n);if(k.programs_by_source[i])return u.default("trace","Reusing identical source GL program object"),k.programs_by_source[i];var o=k.createShader(e,r,e.VERTEX_SHADER),a=k.createShader(e,n,e.FRAGMENT_SHADER);if(e.useProgram(null),null!=t)for(var s=e.getAttachedShaders(t),l=0;l2&&void 0!==arguments[2]?arguments[2]:{};i(this,e),n=e.sliceOptions(n),this.gl=t,this.texture=t.createTexture(),this.texture&&(this.valid=!0),this.bind(),this.name=r,this.retain_count=0,this.config_type=null,this.loading=null,this.loaded=!1,this.filtering=n.filtering,this.density=n.density||1,this.sprites=n.sprites,this.texcoords={},this.sizes={},this.css_sizes={},this.aspects={},this.setData(1,1,new Uint8Array([0,0,0,0]),{filtering:"nearest"}),this.loaded=!1,e.textures[this.name]&&(this.retain_count=e.textures[this.name].retain_count,e.textures[this.name].retain_count=0,e.textures[this.name].destroy()),e.textures[this.name]=this,e.texture_configs[this.name]=JSON.stringify(Object.assign({name:r},n)),this.load(n),s.default("trace","creating Texture "+this.name)}return o(e,[{key:"destroy",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.force;return this.retain_count>0&&!r?void s.default("error","Texture '"+this.name+"': destroying texture with retain count of '"+this.retain_count+"'"):void(this.valid&&(this.gl.deleteTexture(this.texture),this.texture=null,delete this.data,this.data=null,delete e.textures[this.name],delete e.texture_configs[this.name],this.valid=!1,s.default("trace","destroying Texture "+this.name)))}},{key:"retain",value:function(){this.retain_count++}},{key:"release",value:function(){this.retain_count<=0&&s.default("error","Texture '"+this.name+"': releasing texture with retain count of '"+this.retain_count+"'"),this.retain_count--,this.retain_count<=0&&this.destroy()}},{key:"bind",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.valid&&(e.activeUnit!==t&&(this.gl.activeTexture(this.gl.TEXTURE0+t),e.activeUnit=t,e.boundTexture=null),e.boundTexture!==this.texture&&(this.gl.bindTexture(this.gl.TEXTURE_2D,this.texture),e.boundTexture=this.texture))}},{key:"load",value:function(e){var t=this;return e?(this.loading=null,"string"==typeof e.url?(this.config_type="url",this.setUrl(e.url,e)):e.element?(this.config_type="element",this.setElement(e.element,e)):e.data&&e.width&&e.height&&(this.config_type="data",this.setData(e.width,e.height,e.data,e)),this.loading=this.loading&&this.loading.then(function(){return t.calculateSprites(),t})||Promise.resolve(this),this.loading):this.loading||Promise.resolve(this)}},{key:"setUrl",value:function(t){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.valid?(this.url=t,this.loading=new Promise(function(t){var i=new Image;i.onload=function(){try{r.setElement(i,n)}catch(o){r.loaded=!1,s.default("warn","Texture '"+r.name+"': failed to load url: '"+r.url+"'",o,n),e.trigger("warning",{message:"Failed to load texture from "+r.url,error:o,texture:n})}r.loaded=!0,t(r)},i.onerror=function(i){r.loaded=!1,s.default("warn","Texture '"+r.name+"': failed to load url: '"+r.url+"'",i,n),e.trigger("warning",{message:"Failed to load texture from "+r.url,error:i,texture:n}),t(r)},l.default.isSafari()&&"data:"===r.url.slice(0,5)||(i.crossOrigin="anonymous"),i.src=r.url}),this.loading):void 0}},{key:"setData",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.width=e,this.height=t,Array.isArray(r)&&(r=new Uint8Array(r)),this.update(r,n),this.setFiltering(n),this.loaded=!0,this.loading=Promise.resolve(this),this.loading}},{key:"setElement",value:function(t,r){var n=t;if("string"==typeof t&&(t=document.querySelector(t)),t instanceof HTMLCanvasElement||t instanceof HTMLImageElement||t instanceof HTMLVideoElement)this.update(t,r),this.setFiltering(r);else{this.loaded=!1;var i="the 'element' parameter (`element: "+JSON.stringify(n)+"`) must be a CSS ";i+="selector string, or a , or