Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

deck.gl

Package Overview
Dependencies
Maintainers
3
Versions
674
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

deck.gl - npm Package Compare versions

Comparing version 2.2.0 to 2.2.1

19

dist/attribute-manager.js

@@ -348,4 +348,12 @@ 'use strict';

// Initialize the attribute descriptor, with WebGL and metadata fields
var attributeData = _extends({}, attribute, updater, {
var attributeData = _extends({
// Ensure that fields are present before Object.seal()
target: undefined,
isIndexed: false,
// Reserved for application
userData: {}
}, attribute, updater, {
// State

@@ -355,11 +363,6 @@ isExternalBuffer: false,

// Reserved for application
userData: {},
// WebGL fields
size: attribute.size,
value: attribute.value || null,
value: attribute.value || null
// buffer type
target: undefined
}, _extraProps);

@@ -401,2 +404,2 @@ // Sanity - no app fields on our attributes. Use userData instead.

exports.default = AttributeManager;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hdHRyaWJ1dGUtbWFuYWdlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7OztJQUtxQixnQjs7Ozs7Ozs7Ozs7OztBQVluQixrQ0FBdUI7QUFBQSx1QkFBVixFQUFVO0FBQUEsUUFBVixFQUFVLDJCQUFMLEVBQUs7O0FBQUE7O0FBQ3JCLFNBQUssRUFBTCxHQUFVLEVBQVY7QUFDQSxTQUFLLFVBQUwsR0FBa0IsRUFBbEI7QUFDQSxTQUFLLG1CQUFMLEdBQTJCLEVBQTNCO0FBQ0EsU0FBSyxnQkFBTCxHQUF3QixDQUFDLENBQXpCO0FBQ0EsU0FBSyxXQUFMLEdBQW1CLElBQW5CO0FBQ0EsU0FBSyxRQUFMLEdBQWdCLEVBQWhCOztBQUVBLFdBQU8sSUFBUCxDQUFZLElBQVo7QUFDRDs7Ozs7OztvQ0FHZTtBQUNkLGFBQU8sS0FBSyxVQUFaO0FBQ0Q7Ozs7OzswQ0FHMkI7QUFBQSxVQUFaLFNBQVksU0FBWixTQUFZOztBQUMxQixVQUFNLGNBQWMsS0FBSyxXQUF6QjtBQUNBLFVBQUksU0FBSixFQUFlO0FBQ2IsYUFBSyxXQUFMLEdBQW1CLEtBQW5CO0FBQ0Q7QUFDRCxhQUFPLFdBQVA7QUFDRDs7Ozs7O3dCQUdHLFUsRUFBWSxRLEVBQVU7QUFDeEIsVUFBTSxnQkFBZ0IsS0FBSyxJQUFMLENBQVUsVUFBVixFQUFzQixRQUF0QixFQUFnQyxFQUFoQyxDQUF0QjtBQUNBLGFBQU8sTUFBUCxDQUFjLEtBQUssVUFBbkIsRUFBK0IsYUFBL0I7QUFDRDs7Ozs7OytCQUdVLFUsRUFBWSxRLEVBQVU7QUFDL0IsVUFBTSxnQkFBZ0IsS0FBSyxJQUFMLENBQVUsVUFBVixFQUFzQixRQUF0QixFQUFnQztBQUNwRCxvQkFBWTtBQUR3QyxPQUFoQyxDQUF0QjtBQUdBLGFBQU8sTUFBUCxDQUFjLEtBQUssVUFBbkIsRUFBK0IsYUFBL0I7QUFDRDs7Ozs7O2lDQUdZLFUsRUFBWSxRLEVBQVU7QUFD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Qyw0QkFBTyxPQUFPLFVBQVUsSUFBakIsS0FBMEIsUUFBakMsZ0NBQzhCLGFBRDlCOzs7QUFJQSw0QkFBTyxPQUFPLFVBQVUsQ0FBVixDQUFQLEtBQXdCLFFBQS9CLGdDQUM4QixhQUQ5QjtBQUVBLFVBQUksVUFBVSxJQUFWLElBQWtCLENBQXRCLEVBQXlCO0FBQ3ZCLDhCQUFPLE9BQU8sVUFBVSxDQUFWLENBQVAsS0FBd0IsUUFBL0IsZ0NBQzhCLGFBRDlCO0FBRUQ7QUFDRCxVQUFJLFVBQVUsSUFBVixJQUFrQixDQUF0QixFQUF5QjtBQUN2Qiw4QkFBTyxPQUFPLFVBQVUsQ0FBVixDQUFQLEtBQXdCLFFBQS9CLGdDQUM4QixhQUQ5QjtBQUVEO0FBQ0QsVUFBSSxVQUFVLElBQVYsSUFBa0IsQ0FBdEIsRUFBeUI7QUFDdkIsOEJBQU8sT0FBTyxVQUFVLENBQVYsQ0FBUCxLQUF3QixRQUEvQixnQ0FDOEIsYUFEOUI7QUFFRDs7O0FBR0QsNEJBQU8sQ0FBQyxPQUFELElBQVksT0FBTyxRQUFRLE1BQWYsS0FBMEIsVUFBN0MsNkJBQzJCLGFBRDNCO0FBRUQ7Ozs7OztrQkE3UWtCLGdCIiwiZmlsZSI6ImF0dHJpYnV0ZS1tYW5hZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgZ3VhcmQtZm9yLWluICovXG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuLy8gYXV0bzogLVxuLy8gaW5zdGFuY2VkOiAtIGltcGxpZXMgYXV0b1xuLy9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF0dHJpYnV0ZU1hbmFnZXIge1xuXG4gIC8qKlxuICAgKiBAY2xhc3NkZXNjXG4gICAqIE1hbmFnZXMgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgYW5kIGFuIGluc3RhbmNlIGNvdW50XG4gICAqIEF1dG8gYWxsb2NhdGVzIGFuZCB1cGRhdGVzIFwiaW5zdGFuY2VkXCIgYXR0cmlidXRlcyBhcyBuZWNlc3NhcnlcbiAgICpcbiAgICogLSBrZWVwcyB0cmFjayBvZiB2YWxpZCBzdGF0ZSBmb3IgZWFjaCBhdHRyaWJ1dGVcbiAgICogLSBhdXRvIHJlYWxsb2NhdGVzIGF0dHJpYnV0ZXMgd2hlbiBuZWVkZWRcbiAgICogLSBhdXRvIHVwZGF0ZXMgYXR0cmlidXRlcyB3aXRoIHJlZ2lzdGVyZWQgdXBkYXRlciBmdW5jdGlvbnNcbiAgICogLSBhbGxvd3Mgb3ZlcnJpZGluZyB3aXRoIGFwcGxpY2F0aW9uIHN1cHBsaWVkIGJ1ZmZlcnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHtpZCA9ICcnfSkge1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSB7fTtcbiAgICB0aGlzLmluc3RhbmNlZEF0dHJpYnV0ZXMgPSB7fTtcbiAgICB0aGlzLmFsbG9jZWRJbnN0YW5jZXMgPSAtMTtcbiAgICB0aGlzLm5lZWRzUmVkcmF3ID0gdHJ1ZTtcbiAgICB0aGlzLnVzZXJEYXRhID0ge307XG4gICAgLy8gRm9yIGRlYnVnZ2luZyBzYW5pdHksIHByZXZlbnQgdW5pbml0aWFsaXplZCBtZW1iZXJzXG4gICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gIH1cblxuICAvLyBSZXR1cm5zIGF0dHJpYnV0ZXMgaW4gYSBmb3JtYXQgc3VpdGFibGUgZm9yIHVzZSB3aXRoIEx1bWEuZ2wgTW9kZWwvUHJvZ3JhbVxuICBnZXRBdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXM7XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSByZWRyYXcgZmxhZ1xuICBnZXROZWVkc1JlZHJhdyh7Y2xlYXJGbGFnfSkge1xuICAgIGNvbnN0IG5lZWRzUmVkcmF3ID0gdGhpcy5uZWVkc1JlZHJhdztcbiAgICBpZiAoY2xlYXJGbGFnKSB7XG4gICAgICB0aGlzLm5lZWRzUmVkcmF3ID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBuZWVkc1JlZHJhdztcbiAgfVxuXG4gIC8vIEFkZHMgYSBzdGF0aWMgYXR0cmlidXRlICh0aGF0IGlzIG5vdCBhdXRvIHVwZGF0ZWQpXG4gIGFkZChhdHRyaWJ1dGVzLCB1cGRhdGVycykge1xuICAgIGNvbnN0IG5ld0F0dHJpYnV0ZXMgPSB0aGlzLl9hZGQoYXR0cmlidXRlcywgdXBkYXRlcnMsIHt9KTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuYXR0cmlidXRlcywgbmV3QXR0cmlidXRlcyk7XG4gIH1cblxuICAvLyBBZGRzIGEgZHluYW1pYyBhdHRyaWJ1dGUsIHRoYXQgaXMgYXV0b3VwZGF0ZWRcbiAgYWRkRHluYW1pYyhhdHRyaWJ1dGVzLCB1cGRhdGVycykge1xuICAgIGNvbnN0IG5ld0F0dHJpYnV0ZXMgPSB0aGlzLl9hZGQoYXR0cmlidXRlcywgdXBkYXRlcnMsIHtcbiAgICAgIGF1dG9VcGRhdGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuYXR0cmlidXRlcywgbmV3QXR0cmlidXRlcyk7XG4gIH1cblxuICAvLyBBZGRzIGFuIGluc3RhbmNlZCBhdHRyaWJ1dGUgdGhhdCBpcyBhdXRvdXBkYXRlZFxuICBhZGRJbnN0YW5jZWQoYXR0cmlidXRlcywgdXBkYXRlcnMpIHtcbiAgICBjb25zdCBuZXdBdHRyaWJ1dGVzID0gdGhpcy5fYWRkKGF0dHJpYnV0ZXMsIHVwZGF0ZXJzLCB7XG4gICAgICBpbnN0YW5jZWQ6IDEsXG4gICAgICBhdXRvVXBkYXRlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLmF0dHJpYnV0ZXMsIG5ld0F0dHJpYnV0ZXMpO1xuICAgIC8vIGFuZCBpbnN0YW5jZWRBdHRyaWJ1dGVzIChmb3IgdXBkYXRpbmcgd2hlbiBkYXRhIGNoYW5nZXMpXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLmluc3RhbmNlZEF0dHJpYnV0ZXMsIG5ld0F0dHJpYnV0ZXMpO1xuICB9XG5cbiAgLy8gTWFya3MgYW4gYXR0cmlidXRlIGZvciB1cGRhdGVcbiAgaW52YWxpZGF0ZShhdHRyaWJ1dGVOYW1lKSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZXN9ID0gdGhpcztcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdO1xuICAgIGFzc2VydChhdHRyaWJ1dGUpO1xuICAgIGF0dHJpYnV0ZS5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gIH1cblxuICBpbnZhbGlkYXRlQWxsKCkge1xuICAgIGNvbnN0IHthdHRyaWJ1dGVzfSA9IHRoaXM7XG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGVOYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV07XG4gICAgICBhdHRyaWJ1dGUubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVuc3VyZSBhbGwgYXR0cmlidXRlIGJ1ZmZlcnMgYXJlIHVwZGF0ZWQgZnJvbSBwcm9wcyBvciBkYXRhXG4gIHVwZGF0ZSh7bnVtSW5zdGFuY2VzLCBidWZmZXJzID0ge30sIGNvbnRleHQsIGRhdGEsIGdldFZhbHVlLCAuLi5vcHRzfSA9IHt9KSB7XG4gICAgdGhpcy5fY2hlY2tCdWZmZXJzKGJ1ZmZlcnMsIG9wdHMpO1xuICAgIHRoaXMuX3NldEJ1ZmZlcnMoYnVmZmVycyk7XG4gICAgdGhpcy5fYWxsb2NhdGVCdWZmZXJzKHtudW1JbnN0YW5jZXN9KTtcbiAgICB0aGlzLl91cGRhdGVCdWZmZXJzKHtudW1JbnN0YW5jZXMsIGNvbnRleHQsIGRhdGEsIGdldFZhbHVlfSk7XG4gIH1cblxuICAvLyBTZXQgdGhlIGJ1ZmZlcnMgZm9yIHRoZSBzdXBwbGllZCBhdHRyaWJ1dGVzXG4gIC8vIFVwZGF0ZSBhdHRyaWJ1dGUgYnVmZmVycyBmcm9tIGFueSBhdHRyaWJ1dGVzIGluIHByb3BzXG4gIC8vIERldGFjaCBhbnkgcHJldmlvdXNseSBzZXQgYnVmZmVycywgbWFya2luZyBhbGxcbiAgLy8gQXR0cmlidXRlcyBmb3IgYXV0byBhbGxvY2F0aW9uXG4gIF9zZXRCdWZmZXJzKGJ1ZmZlck1hcCwgb3B0KSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZXN9ID0gdGhpcztcblxuICAgIC8vIENvcHkgdGhlIHJlZnMgb2YgYW55IHN1cHBsaWVkIGJ1ZmZlcnMgaW4gdGhlIHByb3BzXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGVOYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV07XG4gICAgICBjb25zdCBidWZmZXIgPSBidWZmZXJNYXBbYXR0cmlidXRlTmFtZV07XG4gICAgICBpZiAoYnVmZmVyKSB7XG4gICAgICAgIGF0dHJpYnV0ZS5pc0V4dGVybmFsQnVmZmVyID0gdHJ1ZTtcbiAgICAgICAgYXR0cmlidXRlLm5lZWRzVXBkYXRlID0gZmFsc2U7XG4gICAgICAgIGlmIChhdHRyaWJ1dGUudmFsdWUgIT09IGJ1ZmZlcikge1xuICAgICAgICAgIGF0dHJpYnV0ZS52YWx1ZSA9IGJ1ZmZlcjtcbiAgICAgICAgICB0aGlzLm5lZWRzUmVkcmF3ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXR0cmlidXRlLmlzRXh0ZXJuYWxCdWZmZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBdXRvIGFsbG9jYXRlcyBidWZmZXJzIGZvciBhdHRyaWJ1dGVzXG4gIC8vIE5vdGU6IFRvIHJlZHVjZSBhbGxvY2F0aW9ucywgb25seSBncm93cyBidWZmZXJzXG4gIC8vIE5vdGU6IE9ubHkgYWxsb2NhdGVzIGJ1ZmZlcnMgbm90IHNldCBieSBzZXRCdWZmZXJcbiAgX2FsbG9jYXRlQnVmZmVycyh7bnVtSW5zdGFuY2VzfSkge1xuICAgIGNvbnN0IHthbGxvY2VkSW5zdGFuY2VzLCBhdHRyaWJ1dGVzfSA9IHRoaXM7XG4gICAgYXNzZXJ0KG51bUluc3RhbmNlcyAhPT0gdW5kZWZpbmVkKTtcblxuICAgIGlmIChudW1JbnN0YW5jZXMgPiBhbGxvY2VkSW5zdGFuY2VzKSB7XG4gICAgICAvLyBBbGxvY2F0ZSBhdCBsZWFzdCBvbmUgZWxlbWVudCB0byBlbnN1cmUgYSB2YWxpZCBidWZmZXJcbiAgICAgIGNvbnN0IGFsbG9jQ291bnQgPSBNYXRoLm1heChudW1JbnN0YW5jZXMsIDEpO1xuICAgICAgZm9yIChjb25zdCBhdHRyaWJ1dGVOYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlID0gYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXTtcbiAgICAgICAgY29uc3Qge3NpemUsIGlzRXh0ZXJuYWxCdWZmZXIsIGF1dG9VcGRhdGV9ID0gYXR0cmlidXRlO1xuICAgICAgICBpZiAoIWlzRXh0ZXJuYWxCdWZmZXIgJiYgYXV0b1VwZGF0ZSkge1xuICAgICAgICAgIGNvbnN0IEFycmF5VHlwZSA9IGF0dHJpYnV0ZS50eXBlIHx8IEZsb2F0MzJBcnJheTtcbiAgICAgICAgICBhdHRyaWJ1dGUudmFsdWUgPSBuZXcgQXJyYXlUeXBlKHNpemUgKiBhbGxvY0NvdW50KTtcbiAgICAgICAgICBhdHRyaWJ1dGUubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgIGxvZygyLCBgYXV0b2FsbG9jYXRlZCAke2FsbG9jQ291bnR9ICR7YXR0cmlidXRlTmFtZX0gZm9yICR7dGhpcy5pZH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5hbGxvY2VkSW5zdGFuY2VzID0gYWxsb2NDb3VudDtcbiAgICB9XG4gIH1cblxuICBfdXBkYXRlQnVmZmVycyh7bnVtSW5zdGFuY2VzLCBkYXRhLCBnZXRWYWx1ZSwgY29udGV4dH0pIHtcbiAgICBjb25zdCB7YXR0cmlidXRlc30gPSB0aGlzO1xuXG4gICAgLy8gSWYgYXBwIHN1cHBsaWVkIGFsbCBhdHRyaWJ1dGVzLCBubyBuZWVkIHRvIGl0ZXJhdGUgb3ZlciBkYXRhXG5cbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZU5hbWUgaW4gYXR0cmlidXRlcykge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXTtcbiAgICAgIGNvbnN0IHt1cGRhdGV9ID0gYXR0cmlidXRlO1xuICAgICAgaWYgKGF0dHJpYnV0ZS5uZWVkc1VwZGF0ZSAmJiBhdHRyaWJ1dGUuYXV0b1VwZGF0ZSkge1xuICAgICAgICBpZiAodXBkYXRlKSB7XG4gICAgICAgICAgbG9nKDIsXG4gICAgICAgICAgICBgYXV0b3VwZGF0aW5nICR7bnVtSW5zdGFuY2VzfSAke2F0dHJpYnV0ZU5hbWV9IGZvciAke3RoaXMuaWR9YCk7XG4gICAgICAgICAgdXBkYXRlLmNhbGwoY29udGV4dCwgYXR0cmlidXRlLCBudW1JbnN0YW5jZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZygyLFxuICAgICAgICAgICAgYGF1dG9jYWxjdWxhdGluZyAke251bUluc3RhbmNlc30gJHthdHRyaWJ1dGVOYW1lfSBmb3IgJHt0aGlzLmlkfWApO1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZUF0dHJpYnV0ZUZyb21EYXRhKGF0dHJpYnV0ZSwgZGF0YSwgZ2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGF0dHJpYnV0ZS5uZWVkc1VwZGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm5lZWRzUmVkcmF3ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfdXBkYXRlQXR0cmlidXRlRnJvbURhdGEoYXR0cmlidXRlLCBkYXRhID0gW10sIGdldFZhbHVlID0geCA9PiB4KSB7XG5cbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yIChjb25zdCBvYmplY3Qgb2YgZGF0YSkge1xuICAgICAgY29uc3QgdmFsdWVzID0gZ2V0VmFsdWUob2JqZWN0KTtcbiAgICAgIC8vIElmIHRoaXMgYXR0cmlidXRlJ3MgYnVmZmVyIHdhc24ndCBjb3BpZWQgZnJvbSBwcm9wcywgaW5pdGlhbGl6ZSBpdFxuICAgICAgaWYgKCFhdHRyaWJ1dGUuaXNFeHRlcm5hbEJ1ZmZlcikge1xuICAgICAgICBjb25zdCB7dmFsdWUsIHNpemV9ID0gYXR0cmlidXRlO1xuICAgICAgICB2YWx1ZVtpICogc2l6ZSArIDBdID0gdmFsdWVzW2F0dHJpYnV0ZVswXV07XG4gICAgICAgIGlmIChzaXplID49IDIpIHtcbiAgICAgICAgICB2YWx1ZVtpICogc2l6ZSArIDFdID0gdmFsdWVzW2F0dHJpYnV0ZVswXV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNpemUgPj0gMykge1xuICAgICAgICAgIHZhbHVlW2kgKiBzaXplICsgMl0gPSB2YWx1ZXNbYXR0cmlidXRlWzBdXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2l6ZSA+PSA0KSB7XG4gICAgICAgICAgdmFsdWVbaSAqIHNpemUgKyAzXSA9IHZhbHVlc1thdHRyaWJ1dGVbMF1dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2tzIHRoYXQgYW55IGF0dHJpYnV0ZSBidWZmZXJzIGluIHByb3BzIGFyZSB2YWxpZFxuICAvLyBOb3RlOiBUaGlzIGlzIGp1c3QgdG8gaGVscCBhcHAgY2F0Y2ggbWlzdGFrZXNcbiAgX2NoZWNrQnVmZmVycyhidWZmZXJNYXAgPSB7fSwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZXMsIG51bUluc3RhbmNlc30gPSB0aGlzO1xuXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGVOYW1lIGluIGJ1ZmZlck1hcCkge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXTtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGJ1ZmZlck1hcFthdHRyaWJ1dGVOYW1lXTtcbiAgICAgIGlmICghYXR0cmlidXRlICYmICFvcHRzLmlnbm9yZVVua25vd25BdHRyaWJ1dGVzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBhdHRyaWJ1dGUgcHJvcCAke2F0dHJpYnV0ZU5hbWV9YCk7XG4gICAgICB9XG4gICAgICBpZiAoYXR0cmlidXRlKSB7XG4gICAgICAgIGlmICghKGJ1ZmZlciBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dHJpYnV0ZSBwcm9wZXJ0aWVzIG11c3QgYmUgb2YgdHlwZSBGbG9hdDMyQXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXR0cmlidXRlLmF1dG8gJiYgYnVmZmVyLmxlbmd0aCA8PSBudW1JbnN0YW5jZXMgKiBhdHRyaWJ1dGUuc2l6ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXR0cmlidXRlIHByb3AgYXJyYXkgbXVzdCBtYXRjaCBsZW5ndGggYW5kIHNpemUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFVzZWQgdG8gcmVnaXN0ZXIgYW4gYXR0cmlidXRlXG4gIF9hZGQoYXR0cmlidXRlcywgdXBkYXRlcnMsIF9leHRyYVByb3BzID0ge30pIHtcblxuICAgIGNvbnN0IG5ld0F0dHJpYnV0ZXMgPSB7fTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdO1xuICAgICAgY29uc3QgdXBkYXRlciA9IHVwZGF0ZXJzICYmIHVwZGF0ZXJzW2F0dHJpYnV0ZU5hbWVdO1xuXG4gICAgICAvLyBDaGVjayBhbGwgZmllbGRzIGFuZCBnZW5lcmF0ZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2VzXG4gICAgICB0aGlzLl92YWxpZGF0ZShhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGUsIHVwZGF0ZXIpO1xuXG4gICAgICAvLyBJbml0aWFsaXplIHRoZSBhdHRyaWJ1dGUgZGVzY3JpcHRvciwgd2l0aCBXZWJHTCBhbmQgbWV0YWRhdGEgZmllbGRzXG4gICAgICBjb25zdCBhdHRyaWJ1dGVEYXRhID0ge1xuICAgICAgICAvLyBNZXRhZGF0YVxuICAgICAgICAuLi5hdHRyaWJ1dGUsXG4gICAgICAgIC4uLnVwZGF0ZXIsXG5cbiAgICAgICAgLy8gU3RhdGVcbiAgICAgICAgaXNFeHRlcm5hbEJ1ZmZlcjogZmFsc2UsXG4gICAgICAgIG5lZWRzVXBkYXRlOiB0cnVlLFxuXG4gICAgICAgIC8vIFJlc2VydmVkIGZvciBhcHBsaWNhdGlvblxuICAgICAgICB1c2VyRGF0YToge30sXG5cbiAgICAgICAgLy8gV2ViR0wgZmllbGRzXG4gICAgICAgIHNpemU6IGF0dHJpYnV0ZS5zaXplLFxuICAgICAgICB2YWx1ZTogYXR0cmlidXRlLnZhbHVlIHx8IG51bGwsXG5cbiAgICAgICAgLy8gYnVmZmVyIHR5cGVcbiAgICAgICAgdGFyZ2V0OiB1bmRlZmluZWQsXG4gICAgICAgIC4uLl9leHRyYVByb3BzXG4gICAgICB9O1xuICAgICAgLy8gU2FuaXR5IC0gbm8gYXBwIGZpZWxkcyBvbiBvdXIgYXR0cmlidXRlcy4gVXNlIHVzZXJEYXRhIGluc3RlYWQuXG4gICAgICBPYmplY3Quc2VhbChhdHRyaWJ1dGVEYXRhKTtcblxuICAgICAgLy8gQWRkIHRvIGJvdGggYXR0cmlidXRlcyBsaXN0IChmb3IgcmVnaXN0cmF0aW9uIHdpdGggbW9kZWwpXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0gPSBhdHRyaWJ1dGVEYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdBdHRyaWJ1dGVzO1xuICB9XG5cbiAgX3ZhbGlkYXRlKGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZSwgdXBkYXRlcikge1xuICAgIGFzc2VydCh0eXBlb2YgYXR0cmlidXRlLnNpemUgPT09ICdudW1iZXInLFxuICAgICAgYEF0dHJpYnV0ZSBkZWZpbml0aW9uIGZvciAke2F0dHJpYnV0ZU5hbWV9IG1pc3Npbmcgc2l6ZWApO1xuXG4gICAgLy8gQ2hlY2sgdGhhdCB2YWx1ZSBleHRyYWN0aW9uIGtleXMgYXJlIHNldFxuICAgIGFzc2VydCh0eXBlb2YgYXR0cmlidXRlWzBdID09PSAnc3RyaW5nJyxcbiAgICAgIGBBdHRyaWJ1dGUgZGVmaW5pdGlvbiBmb3IgJHthdHRyaWJ1dGVOYW1lfSBtaXNzaW5nIGtleSAwYCk7XG4gICAgaWYgKGF0dHJpYnV0ZS5zaXplID49IDIpIHtcbiAgICAgIGFzc2VydCh0eXBlb2YgYXR0cmlidXRlWzFdID09PSAnc3RyaW5nJyxcbiAgICAgICAgYEF0dHJpYnV0ZSBkZWZpbml0aW9uIGZvciAke2F0dHJpYnV0ZU5hbWV9IG1pc3Npbmcga2V5IDFgKTtcbiAgICB9XG4gICAgaWYgKGF0dHJpYnV0ZS5zaXplID49IDMpIHtcbiAgICAgIGFzc2VydCh0eXBlb2YgYXR0cmlidXRlWzJdID09PSAnc3RyaW5nJyxcbiAgICAgICAgYEF0dHJpYnV0ZSBkZWZpbml0aW9uIGZvciAke2F0dHJpYnV0ZU5hbWV9IG1pc3Npbmcga2V5IDJgKTtcbiAgICB9XG4gICAgaWYgKGF0dHJpYnV0ZS5zaXplID49IDQpIHtcbiAgICAgIGFzc2VydCh0eXBlb2YgYXR0cmlidXRlWzNdID09PSAnc3RyaW5nJyxcbiAgICAgICAgYEF0dHJpYnV0ZSBkZWZpbml0aW9uIGZvciAke2F0dHJpYnV0ZU5hbWV9IG1pc3Npbmcga2V5IDNgKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayB0aGUgdXBkYXRlclxuICAgIGFzc2VydCghdXBkYXRlciB8fCB0eXBlb2YgdXBkYXRlci51cGRhdGUgPT09ICdmdW5jdGlvbicsXG4gICAgICBgQXR0cmlidXRlIHVwZGF0ZXIgZm9yICR7YXR0cmlidXRlTmFtZX0gbWlzc2luZyB1cGRhdGUgbWV0aG9kYCk7XG4gIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hdHRyaWJ1dGUtbWFuYWdlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7OztJQUtxQixnQjs7Ozs7Ozs7Ozs7OztBQVluQixrQ0FBdUI7QUFBQSx1QkFBVixFQUFVO0FBQUEsUUFBVixFQUFVLDJCQUFMLEVBQUs7O0FBQUE7O0FBQ3JCLFNBQUssRUFBTCxHQUFVLEVBQVY7QUFDQSxTQUFLLFVBQUwsR0FBa0IsRUFBbEI7QUFDQSxTQUFLLG1CQUFMLEdBQTJCLEVBQTNCO0FBQ0EsU0FBSyxnQkFBTCxHQUF3QixDQUFDLENBQXpCO0FBQ0EsU0FBSyxXQUFMLEdBQW1CLElBQW5CO0FBQ0EsU0FBSyxRQUFMLEdBQWdCLEVBQWhCOztBQUVBLFdBQU8sSUFBUCxDQUFZLElBQVo7QUFDRDs7Ozs7OztvQ0FHZTtBQUNkLGFBQU8sS0FBSyxVQUFaO0FBQ0Q7Ozs7OzswQ0FHMkI7QUFBQSxVQUFaLFNBQVksU0FBWixTQUFZOztBQUMxQixVQUFNLGNBQWMsS0FBSyxXQUF6QjtBQUNBLFVBQUksU0FBSixFQUFlO0FBQ2IsYUFBSyxXQUFMLEdBQW1CLEtBQW5CO0FBQ0Q7QUFDRCxhQUFPLFdBQVA7QUFDRDs7Ozs7O3dCQUdHLFUsRUFBWSxRLEVBQVU7QUFDeEIsVUFBTSxnQkFBZ0IsS0FBSyxJQUFMLENBQVUsVUFBVixFQUFzQixRQUF0QixFQUFnQyxFQUFoQyxDQUF0QjtBQUNBLGFBQU8sTUFBUCxDQUFjLEtBQUssVUFBbkIsRUFBK0IsYUFBL0I7QUFDRDs7Ozs7OytCQUdVLFUsRUFBWSxRLEVBQVU7QUFDL0IsVUFBTSxnQkFBZ0IsS0FBSyxJQUFMLENBQVUsVUFBVixFQUFzQixRQUF0QixFQUFnQztBQUNwRCxvQkFBWTtBQUR3QyxPQUFoQyxDQUF0QjtBQUdBLGFBQU8sTUFBUCxDQUFjLEtBQUssVUFBbkIsRUFBK0IsYUFBL0I7QUFDRDs7Ozs7O2lDQUdZLFUsRUFBWSxRLEVBQVU7QUFD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UyxFQUFXLE8sRUFBUztBQUMzQyw0QkFBTyxPQUFPLFVBQVUsSUFBakIsS0FBMEIsUUFBakMsZ0NBQzhCLGFBRDlCOzs7QUFJQSw0QkFBTyxPQUFPLFVBQVUsQ0FBVixDQUFQLEtBQXdCLFFBQS9CLGdDQUM4QixhQUQ5QjtBQUVBLFVBQUksVUFBVSxJQUFWLElBQWtCLENBQXRCLEVBQXlCO0FBQ3ZCLDhCQUFPLE9BQU8sVUFBVSxDQUFWLENBQVAsS0FBd0IsUUFBL0IsZ0NBQzhCLGFBRDlCO0FBRUQ7QUFDRCxVQUFJLFVBQVUsSUFBVixJQUFrQixDQUF0QixFQUF5QjtBQUN2Qiw4QkFBTyxPQUFPLFVBQVUsQ0FBVixDQUFQLEtBQXdCLFFBQS9CLGdDQUM4QixhQUQ5QjtBQUVEO0FBQ0QsVUFBSSxVQUFVLElBQVYsSUFBa0IsQ0FBdEIsRUFBeUI7QUFDdkIsOEJBQU8sT0FBTyxVQUFVLENBQVYsQ0FBUCxLQUF3QixRQUEvQixnQ0FDOEIsYUFEOUI7QUFFRDs7O0FBR0QsNEJBQU8sQ0FBQyxPQUFELElBQVksT0FBTyxRQUFRLE1BQWYsS0FBMEIsVUFBN0MsNkJBQzJCLGFBRDNCO0FBRUQ7Ozs7OztrQkEvUWtCLGdCIiwiZmlsZSI6ImF0dHJpYnV0ZS1tYW5hZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgZ3VhcmQtZm9yLWluICovXG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuLy8gYXV0bzogLVxuLy8gaW5zdGFuY2VkOiAtIGltcGxpZXMgYXV0b1xuLy9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF0dHJpYnV0ZU1hbmFnZXIge1xuXG4gIC8qKlxuICAgKiBAY2xhc3NkZXNjXG4gICAqIE1hbmFnZXMgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgYW5kIGFuIGluc3RhbmNlIGNvdW50XG4gICAqIEF1dG8gYWxsb2NhdGVzIGFuZCB1cGRhdGVzIFwiaW5zdGFuY2VkXCIgYXR0cmlidXRlcyBhcyBuZWNlc3NhcnlcbiAgICpcbiAgICogLSBrZWVwcyB0cmFjayBvZiB2YWxpZCBzdGF0ZSBmb3IgZWFjaCBhdHRyaWJ1dGVcbiAgICogLSBhdXRvIHJlYWxsb2NhdGVzIGF0dHJpYnV0ZXMgd2hlbiBuZWVkZWRcbiAgICogLSBhdXRvIHVwZGF0ZXMgYXR0cmlidXRlcyB3aXRoIHJlZ2lzdGVyZWQgdXBkYXRlciBmdW5jdGlvbnNcbiAgICogLSBhbGxvd3Mgb3ZlcnJpZGluZyB3aXRoIGFwcGxpY2F0aW9uIHN1cHBsaWVkIGJ1ZmZlcnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHtpZCA9ICcnfSkge1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSB7fTtcbiAgICB0aGlzLmluc3RhbmNlZEF0dHJpYnV0ZXMgPSB7fTtcbiAgICB0aGlzLmFsbG9jZWRJbnN0YW5jZXMgPSAtMTtcbiAgICB0aGlzLm5lZWRzUmVkcmF3ID0gdHJ1ZTtcbiAgICB0aGlzLnVzZXJEYXRhID0ge307XG4gICAgLy8gRm9yIGRlYnVnZ2luZyBzYW5pdHksIHByZXZlbnQgdW5pbml0aWFsaXplZCBtZW1iZXJzXG4gICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gIH1cblxuICAvLyBSZXR1cm5zIGF0dHJpYnV0ZXMgaW4gYSBmb3JtYXQgc3VpdGFibGUgZm9yIHVzZSB3aXRoIEx1bWEuZ2wgTW9kZWwvUHJvZ3JhbVxuICBnZXRBdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXM7XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSByZWRyYXcgZmxhZ1xuICBnZXROZWVkc1JlZHJhdyh7Y2xlYXJGbGFnfSkge1xuICAgIGNvbnN0IG5lZWRzUmVkcmF3ID0gdGhpcy5uZWVkc1JlZHJhdztcbiAgICBpZiAoY2xlYXJGbGFnKSB7XG4gICAgICB0aGlzLm5lZWRzUmVkcmF3ID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBuZWVkc1JlZHJhdztcbiAgfVxuXG4gIC8vIEFkZHMgYSBzdGF0aWMgYXR0cmlidXRlICh0aGF0IGlzIG5vdCBhdXRvIHVwZGF0ZWQpXG4gIGFkZChhdHRyaWJ1dGVzLCB1cGRhdGVycykge1xuICAgIGNvbnN0IG5ld0F0dHJpYnV0ZXMgPSB0aGlzLl9hZGQoYXR0cmlidXRlcywgdXBkYXRlcnMsIHt9KTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuYXR0cmlidXRlcywgbmV3QXR0cmlidXRlcyk7XG4gIH1cblxuICAvLyBBZGRzIGEgZHluYW1pYyBhdHRyaWJ1dGUsIHRoYXQgaXMgYXV0b3VwZGF0ZWRcbiAgYWRkRHluYW1pYyhhdHRyaWJ1dGVzLCB1cGRhdGVycykge1xuICAgIGNvbnN0IG5ld0F0dHJpYnV0ZXMgPSB0aGlzLl9hZGQoYXR0cmlidXRlcywgdXBkYXRlcnMsIHtcbiAgICAgIGF1dG9VcGRhdGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuYXR0cmlidXRlcywgbmV3QXR0cmlidXRlcyk7XG4gIH1cblxuICAvLyBBZGRzIGFuIGluc3RhbmNlZCBhdHRyaWJ1dGUgdGhhdCBpcyBhdXRvdXBkYXRlZFxuICBhZGRJbnN0YW5jZWQoYXR0cmlidXRlcywgdXBkYXRlcnMpIHtcbiAgICBjb25zdCBuZXdBdHRyaWJ1dGVzID0gdGhpcy5fYWRkKGF0dHJpYnV0ZXMsIHVwZGF0ZXJzLCB7XG4gICAgICBpbnN0YW5jZWQ6IDEsXG4gICAgICBhdXRvVXBkYXRlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLmF0dHJpYnV0ZXMsIG5ld0F0dHJpYnV0ZXMpO1xuICAgIC8vIGFuZCBpbnN0YW5jZWRBdHRyaWJ1dGVzIChmb3IgdXBkYXRpbmcgd2hlbiBkYXRhIGNoYW5nZXMpXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLmluc3RhbmNlZEF0dHJpYnV0ZXMsIG5ld0F0dHJpYnV0ZXMpO1xuICB9XG5cbiAgLy8gTWFya3MgYW4gYXR0cmlidXRlIGZvciB1cGRhdGVcbiAgaW52YWxpZGF0ZShhdHRyaWJ1dGVOYW1lKSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZXN9ID0gdGhpcztcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdO1xuICAgIGFzc2VydChhdHRyaWJ1dGUpO1xuICAgIGF0dHJpYnV0ZS5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gIH1cblxuICBpbnZhbGlkYXRlQWxsKCkge1xuICAgIGNvbnN0IHthdHRyaWJ1dGVzfSA9IHRoaXM7XG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGVOYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV07XG4gICAgICBhdHRyaWJ1dGUubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVuc3VyZSBhbGwgYXR0cmlidXRlIGJ1ZmZlcnMgYXJlIHVwZGF0ZWQgZnJvbSBwcm9wcyBvciBkYXRhXG4gIHVwZGF0ZSh7bnVtSW5zdGFuY2VzLCBidWZmZXJzID0ge30sIGNvbnRleHQsIGRhdGEsIGdldFZhbHVlLCAuLi5vcHRzfSA9IHt9KSB7XG4gICAgdGhpcy5fY2hlY2tCdWZmZXJzKGJ1ZmZlcnMsIG9wdHMpO1xuICAgIHRoaXMuX3NldEJ1ZmZlcnMoYnVmZmVycyk7XG4gICAgdGhpcy5fYWxsb2NhdGVCdWZmZXJzKHtudW1JbnN0YW5jZXN9KTtcbiAgICB0aGlzLl91cGRhdGVCdWZmZXJzKHtudW1JbnN0YW5jZXMsIGNvbnRleHQsIGRhdGEsIGdldFZhbHVlfSk7XG4gIH1cblxuICAvLyBTZXQgdGhlIGJ1ZmZlcnMgZm9yIHRoZSBzdXBwbGllZCBhdHRyaWJ1dGVzXG4gIC8vIFVwZGF0ZSBhdHRyaWJ1dGUgYnVmZmVycyBmcm9tIGFueSBhdHRyaWJ1dGVzIGluIHByb3BzXG4gIC8vIERldGFjaCBhbnkgcHJldmlvdXNseSBzZXQgYnVmZmVycywgbWFya2luZyBhbGxcbiAgLy8gQXR0cmlidXRlcyBmb3IgYXV0byBhbGxvY2F0aW9uXG4gIF9zZXRCdWZmZXJzKGJ1ZmZlck1hcCwgb3B0KSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZXN9ID0gdGhpcztcblxuICAgIC8vIENvcHkgdGhlIHJlZnMgb2YgYW55IHN1cHBsaWVkIGJ1ZmZlcnMgaW4gdGhlIHByb3BzXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGVOYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV07XG4gICAgICBjb25zdCBidWZmZXIgPSBidWZmZXJNYXBbYXR0cmlidXRlTmFtZV07XG4gICAgICBpZiAoYnVmZmVyKSB7XG4gICAgICAgIGF0dHJpYnV0ZS5pc0V4dGVybmFsQnVmZmVyID0gdHJ1ZTtcbiAgICAgICAgYXR0cmlidXRlLm5lZWRzVXBkYXRlID0gZmFsc2U7XG4gICAgICAgIGlmIChhdHRyaWJ1dGUudmFsdWUgIT09IGJ1ZmZlcikge1xuICAgICAgICAgIGF0dHJpYnV0ZS52YWx1ZSA9IGJ1ZmZlcjtcbiAgICAgICAgICB0aGlzLm5lZWRzUmVkcmF3ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXR0cmlidXRlLmlzRXh0ZXJuYWxCdWZmZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBdXRvIGFsbG9jYXRlcyBidWZmZXJzIGZvciBhdHRyaWJ1dGVzXG4gIC8vIE5vdGU6IFRvIHJlZHVjZSBhbGxvY2F0aW9ucywgb25seSBncm93cyBidWZmZXJzXG4gIC8vIE5vdGU6IE9ubHkgYWxsb2NhdGVzIGJ1ZmZlcnMgbm90IHNldCBieSBzZXRCdWZmZXJcbiAgX2FsbG9jYXRlQnVmZmVycyh7bnVtSW5zdGFuY2VzfSkge1xuICAgIGNvbnN0IHthbGxvY2VkSW5zdGFuY2VzLCBhdHRyaWJ1dGVzfSA9IHRoaXM7XG4gICAgYXNzZXJ0KG51bUluc3RhbmNlcyAhPT0gdW5kZWZpbmVkKTtcblxuICAgIGlmIChudW1JbnN0YW5jZXMgPiBhbGxvY2VkSW5zdGFuY2VzKSB7XG4gICAgICAvLyBBbGxvY2F0ZSBhdCBsZWFzdCBvbmUgZWxlbWVudCB0byBlbnN1cmUgYSB2YWxpZCBidWZmZXJcbiAgICAgIGNvbnN0IGFsbG9jQ291bnQgPSBNYXRoLm1heChudW1JbnN0YW5jZXMsIDEpO1xuICAgICAgZm9yIChjb25zdCBhdHRyaWJ1dGVOYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlID0gYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXTtcbiAgICAgICAgY29uc3Qge3NpemUsIGlzRXh0ZXJuYWxCdWZmZXIsIGF1dG9VcGRhdGV9ID0gYXR0cmlidXRlO1xuICAgICAgICBpZiAoIWlzRXh0ZXJuYWxCdWZmZXIgJiYgYXV0b1VwZGF0ZSkge1xuICAgICAgICAgIGNvbnN0IEFycmF5VHlwZSA9IGF0dHJpYnV0ZS50eXBlIHx8IEZsb2F0MzJBcnJheTtcbiAgICAgICAgICBhdHRyaWJ1dGUudmFsdWUgPSBuZXcgQXJyYXlUeXBlKHNpemUgKiBhbGxvY0NvdW50KTtcbiAgICAgICAgICBhdHRyaWJ1dGUubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgIGxvZygyLCBgYXV0b2FsbG9jYXRlZCAke2FsbG9jQ291bnR9ICR7YXR0cmlidXRlTmFtZX0gZm9yICR7dGhpcy5pZH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5hbGxvY2VkSW5zdGFuY2VzID0gYWxsb2NDb3VudDtcbiAgICB9XG4gIH1cblxuICBfdXBkYXRlQnVmZmVycyh7bnVtSW5zdGFuY2VzLCBkYXRhLCBnZXRWYWx1ZSwgY29udGV4dH0pIHtcbiAgICBjb25zdCB7YXR0cmlidXRlc30gPSB0aGlzO1xuXG4gICAgLy8gSWYgYXBwIHN1cHBsaWVkIGFsbCBhdHRyaWJ1dGVzLCBubyBuZWVkIHRvIGl0ZXJhdGUgb3ZlciBkYXRhXG5cbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZU5hbWUgaW4gYXR0cmlidXRlcykge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXTtcbiAgICAgIGNvbnN0IHt1cGRhdGV9ID0gYXR0cmlidXRlO1xuICAgICAgaWYgKGF0dHJpYnV0ZS5uZWVkc1VwZGF0ZSAmJiBhdHRyaWJ1dGUuYXV0b1VwZGF0ZSkge1xuICAgICAgICBpZiAodXBkYXRlKSB7XG4gICAgICAgICAgbG9nKDIsXG4gICAgICAgICAgICBgYXV0b3VwZGF0aW5nICR7bnVtSW5zdGFuY2VzfSAke2F0dHJpYnV0ZU5hbWV9IGZvciAke3RoaXMuaWR9YCk7XG4gICAgICAgICAgdXBkYXRlLmNhbGwoY29udGV4dCwgYXR0cmlidXRlLCBudW1JbnN0YW5jZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZygyLFxuICAgICAgICAgICAgYGF1dG9jYWxjdWxhdGluZyAke251bUluc3RhbmNlc30gJHthdHRyaWJ1dGVOYW1lfSBmb3IgJHt0aGlzLmlkfWApO1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZUF0dHJpYnV0ZUZyb21EYXRhKGF0dHJpYnV0ZSwgZGF0YSwgZ2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGF0dHJpYnV0ZS5uZWVkc1VwZGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm5lZWRzUmVkcmF3ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfdXBkYXRlQXR0cmlidXRlRnJvbURhdGEoYXR0cmlidXRlLCBkYXRhID0gW10sIGdldFZhbHVlID0geCA9PiB4KSB7XG5cbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yIChjb25zdCBvYmplY3Qgb2YgZGF0YSkge1xuICAgICAgY29uc3QgdmFsdWVzID0gZ2V0VmFsdWUob2JqZWN0KTtcbiAgICAgIC8vIElmIHRoaXMgYXR0cmlidXRlJ3MgYnVmZmVyIHdhc24ndCBjb3BpZWQgZnJvbSBwcm9wcywgaW5pdGlhbGl6ZSBpdFxuICAgICAgaWYgKCFhdHRyaWJ1dGUuaXNFeHRlcm5hbEJ1ZmZlcikge1xuICAgICAgICBjb25zdCB7dmFsdWUsIHNpemV9ID0gYXR0cmlidXRlO1xuICAgICAgICB2YWx1ZVtpICogc2l6ZSArIDBdID0gdmFsdWVzW2F0dHJpYnV0ZVswXV07XG4gICAgICAgIGlmIChzaXplID49IDIpIHtcbiAgICAgICAgICB2YWx1ZVtpICogc2l6ZSArIDFdID0gdmFsdWVzW2F0dHJpYnV0ZVswXV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNpemUgPj0gMykge1xuICAgICAgICAgIHZhbHVlW2kgKiBzaXplICsgMl0gPSB2YWx1ZXNbYXR0cmlidXRlWzBdXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2l6ZSA+PSA0KSB7XG4gICAgICAgICAgdmFsdWVbaSAqIHNpemUgKyAzXSA9IHZhbHVlc1thdHRyaWJ1dGVbMF1dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2tzIHRoYXQgYW55IGF0dHJpYnV0ZSBidWZmZXJzIGluIHByb3BzIGFyZSB2YWxpZFxuICAvLyBOb3RlOiBUaGlzIGlzIGp1c3QgdG8gaGVscCBhcHAgY2F0Y2ggbWlzdGFrZXNcbiAgX2NoZWNrQnVmZmVycyhidWZmZXJNYXAgPSB7fSwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZXMsIG51bUluc3RhbmNlc30gPSB0aGlzO1xuXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGVOYW1lIGluIGJ1ZmZlck1hcCkge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXTtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGJ1ZmZlck1hcFthdHRyaWJ1dGVOYW1lXTtcbiAgICAgIGlmICghYXR0cmlidXRlICYmICFvcHRzLmlnbm9yZVVua25vd25BdHRyaWJ1dGVzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBhdHRyaWJ1dGUgcHJvcCAke2F0dHJpYnV0ZU5hbWV9YCk7XG4gICAgICB9XG4gICAgICBpZiAoYXR0cmlidXRlKSB7XG4gICAgICAgIGlmICghKGJ1ZmZlciBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dHJpYnV0ZSBwcm9wZXJ0aWVzIG11c3QgYmUgb2YgdHlwZSBGbG9hdDMyQXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXR0cmlidXRlLmF1dG8gJiYgYnVmZmVyLmxlbmd0aCA8PSBudW1JbnN0YW5jZXMgKiBhdHRyaWJ1dGUuc2l6ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXR0cmlidXRlIHByb3AgYXJyYXkgbXVzdCBtYXRjaCBsZW5ndGggYW5kIHNpemUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFVzZWQgdG8gcmVnaXN0ZXIgYW4gYXR0cmlidXRlXG4gIF9hZGQoYXR0cmlidXRlcywgdXBkYXRlcnMsIF9leHRyYVByb3BzID0ge30pIHtcblxuICAgIGNvbnN0IG5ld0F0dHJpYnV0ZXMgPSB7fTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdO1xuICAgICAgY29uc3QgdXBkYXRlciA9IHVwZGF0ZXJzICYmIHVwZGF0ZXJzW2F0dHJpYnV0ZU5hbWVdO1xuXG4gICAgICAvLyBDaGVjayBhbGwgZmllbGRzIGFuZCBnZW5lcmF0ZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2VzXG4gICAgICB0aGlzLl92YWxpZGF0ZShhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGUsIHVwZGF0ZXIpO1xuXG4gICAgICAvLyBJbml0aWFsaXplIHRoZSBhdHRyaWJ1dGUgZGVzY3JpcHRvciwgd2l0aCBXZWJHTCBhbmQgbWV0YWRhdGEgZmllbGRzXG4gICAgICBjb25zdCBhdHRyaWJ1dGVEYXRhID0ge1xuICAgICAgICAvLyBFbnN1cmUgdGhhdCBmaWVsZHMgYXJlIHByZXNlbnQgYmVmb3JlIE9iamVjdC5zZWFsKClcbiAgICAgICAgdGFyZ2V0OiB1bmRlZmluZWQsXG4gICAgICAgIGlzSW5kZXhlZDogZmFsc2UsXG5cbiAgICAgICAgLy8gUmVzZXJ2ZWQgZm9yIGFwcGxpY2F0aW9uXG4gICAgICAgIHVzZXJEYXRhOiB7fSxcblxuICAgICAgICAvLyBNZXRhZGF0YVxuICAgICAgICAuLi5hdHRyaWJ1dGUsXG4gICAgICAgIC4uLnVwZGF0ZXIsXG5cbiAgICAgICAgLy8gU3RhdGVcbiAgICAgICAgaXNFeHRlcm5hbEJ1ZmZlcjogZmFsc2UsXG4gICAgICAgIG5lZWRzVXBkYXRlOiB0cnVlLFxuXG4gICAgICAgIC8vIFdlYkdMIGZpZWxkc1xuICAgICAgICBzaXplOiBhdHRyaWJ1dGUuc2l6ZSxcbiAgICAgICAgdmFsdWU6IGF0dHJpYnV0ZS52YWx1ZSB8fCBudWxsLFxuXG4gICAgICAgIC4uLl9leHRyYVByb3BzXG4gICAgICB9O1xuICAgICAgLy8gU2FuaXR5IC0gbm8gYXBwIGZpZWxkcyBvbiBvdXIgYXR0cmlidXRlcy4gVXNlIHVzZXJEYXRhIGluc3RlYWQuXG4gICAgICBPYmplY3Quc2VhbChhdHRyaWJ1dGVEYXRhKTtcblxuICAgICAgLy8gQWRkIHRvIGJvdGggYXR0cmlidXRlcyBsaXN0IChmb3IgcmVnaXN0cmF0aW9uIHdpdGggbW9kZWwpXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0gPSBhdHRyaWJ1dGVEYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdBdHRyaWJ1dGVzO1xuICB9XG5cbiAgX3ZhbGlkYXRlKGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZSwgdXBkYXRlcikge1xuICAgIGFzc2VydCh0eXBlb2YgYXR0cmlidXRlLnNpemUgPT09ICdudW1iZXInLFxuICAgICAgYEF0dHJpYnV0ZSBkZWZpbml0aW9uIGZvciAke2F0dHJpYnV0ZU5hbWV9IG1pc3Npbmcgc2l6ZWApO1xuXG4gICAgLy8gQ2hlY2sgdGhhdCB2YWx1ZSBleHRyYWN0aW9uIGtleXMgYXJlIHNldFxuICAgIGFzc2VydCh0eXBlb2YgYXR0cmlidXRlWzBdID09PSAnc3RyaW5nJyxcbiAgICAgIGBBdHRyaWJ1dGUgZGVmaW5pdGlvbiBmb3IgJHthdHRyaWJ1dGVOYW1lfSBtaXNzaW5nIGtleSAwYCk7XG4gICAgaWYgKGF0dHJpYnV0ZS5zaXplID49IDIpIHtcbiAgICAgIGFzc2VydCh0eXBlb2YgYXR0cmlidXRlWzFdID09PSAnc3RyaW5nJyxcbiAgICAgICAgYEF0dHJpYnV0ZSBkZWZpbml0aW9uIGZvciAke2F0dHJpYnV0ZU5hbWV9IG1pc3Npbmcga2V5IDFgKTtcbiAgICB9XG4gICAgaWYgKGF0dHJpYnV0ZS5zaXplID49IDMpIHtcbiAgICAgIGFzc2VydCh0eXBlb2YgYXR0cmlidXRlWzJdID09PSAnc3RyaW5nJyxcbiAgICAgICAgYEF0dHJpYnV0ZSBkZWZpbml0aW9uIGZvciAke2F0dHJpYnV0ZU5hbWV9IG1pc3Npbmcga2V5IDJgKTtcbiAgICB9XG4gICAgaWYgKGF0dHJpYnV0ZS5zaXplID49IDQpIHtcbiAgICAgIGFzc2VydCh0eXBlb2YgYXR0cmlidXRlWzNdID09PSAnc3RyaW5nJyxcbiAgICAgICAgYEF0dHJpYnV0ZSBkZWZpbml0aW9uIGZvciAke2F0dHJpYnV0ZU5hbWV9IG1pc3Npbmcga2V5IDNgKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayB0aGUgdXBkYXRlclxuICAgIGFzc2VydCghdXBkYXRlciB8fCB0eXBlb2YgdXBkYXRlci51cGRhdGUgPT09ICdmdW5jdGlvbicsXG4gICAgICBgQXR0cmlidXRlIHVwZGF0ZXIgZm9yICR7YXR0cmlidXRlTmFtZX0gbWlzc2luZyB1cGRhdGUgbWV0aG9kYCk7XG4gIH1cblxufVxuIl19

@@ -143,3 +143,3 @@ 'use strict';

program: new _luma.Program(gl, {
vs: '#define GLSLIFY 1\n// Copyright (c) 2015 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the "Software"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* vertex shader for the choropleth-layer */\n#define SHADER_NAME choropleth-layer-vertex-shader\n\nconst float TILE_SIZE_1540259130 = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE_1540259130 = TILE_SIZE_1540259130 / (PI * 2.0);\n\n// non-linear projection: lnglats => zoom 0 tile [0-512, 0-512] * scale\nvec2 mercatorProject(vec2 lnglat, float zoomScale) {\n float scale = WORLD_SCALE_1540259130 * zoomScale;\n return vec2(\n \tscale * (radians(lnglat.x) + PI),\n \tscale * (PI - log(tan(PI * 0.25 + radians(lnglat.y) * 0.5)))\n );\n}\n\nuniform float mercatorScale;\n\nattribute vec3 positions;\nattribute vec3 colors;\nattribute vec3 pickingColors;\n\nuniform mat4 projectionMatrix;\nuniform mat4 worldMatrix;\n\nuniform float opacity;\nuniform float renderPickingBuffer;\nuniform vec3 selectedPickingColor;\n\nvarying vec4 vColor;\n\nvec4 getColor(vec4 color, float opacity, vec3 pickingColor, float renderPickingBuffer) {\n vec4 color4 = vec4(color.xyz / 255., color.w / 255. * opacity);\n vec4 pickingColor4 = vec4(pickingColor / 255., 1.);\n return mix(color4, pickingColor4, renderPickingBuffer);\n}\n\nvoid main(void) {\n vec2 pos = mercatorProject(positions.xy, mercatorScale);\n vec3 p = vec3(pos.xy, positions.z);\n gl_Position = projectionMatrix * vec4(p, 1.);\n\n vec4 color = vec4(colors / 255., opacity);\n vec4 pickingColor = vec4(pickingColors / 255., 1.);\n vColor = mix(color, pickingColor, renderPickingBuffer);\n\n // float alpha = pickingColors == selectedPickingColor ? 0.5 : opacity;\n // vColor = vec4(mix(colors / 255., pickingColors / 255., renderPickingBuffer), alpha);\n}\n',
vs: '#define GLSLIFY 1\n// Copyright (c) 2015 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the "Software"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* vertex shader for the choropleth-layer */\n#define SHADER_NAME choropleth-layer-vertex-shader\n\nconst float TILE_SIZE_1540259130 = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE_1540259130 = TILE_SIZE_1540259130 / (PI * 2.0);\n\n// non-linear projection: lnglats => zoom 0 tile [0-512, 0-512] * scale\nvec2 mercatorProject(vec2 lnglat, float zoomScale) {\n float scale = WORLD_SCALE_1540259130 * zoomScale;\n return vec2(\n \tscale * (radians(lnglat.x) + PI),\n \tscale * (PI - log(tan(PI * 0.25 + radians(lnglat.y) * 0.5)))\n );\n}\n\nuniform float mercatorScale;\n\nattribute vec3 positions;\nattribute vec3 colors;\nattribute vec3 pickingColors;\n\nuniform mat4 projectionMatrix;\nuniform mat4 worldMatrix;\n\nuniform float opacity;\nuniform float renderPickingBuffer;\nuniform vec3 selectedPickingColor;\n\nvarying vec4 vColor;\n\nvec4 getColor(vec4 color, float opacity, vec3 pickingColor, float renderPickingBuffer) {\n vec4 color4 = vec4(color.xyz / 255., color.w / 255. * opacity);\n vec4 pickingColor4 = vec4(pickingColor / 255., 1.);\n return mix(color4, pickingColor4, renderPickingBuffer);\n}\n\nvoid main(void) {\n vec2 pos = mercatorProject(positions.xy, mercatorScale);\n // For some reason, need to add one to elevation to show up in untilted mode\n vec3 p = vec3(pos.xy, positions.z + 1.);\n gl_Position = projectionMatrix * vec4(p, 1.);\n\n vec4 color = vec4(colors / 255., opacity);\n vec4 pickingColor = vec4(pickingColors / 255., 1.);\n vColor = mix(color, pickingColor, renderPickingBuffer);\n\n // float alpha = pickingColors == selectedPickingColor ? 0.5 : opacity;\n // vColor = vec4(mix(colors / 255., pickingColors / 255., renderPickingBuffer), alpha);\n}\n',
fs: '// Copyright (c) 2015 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the "Software"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* fragment shader for the choropleth-layer */\n\n#ifdef GL_ES\nprecision highp float;\n#define GLSLIFY 1\n#endif\n\nvarying vec4 vColor;\n\nvoid main(void) {\n gl_FragColor = vColor;\n}\n',

@@ -278,2 +278,2 @@ id: 'choropleth'

exports.default = ChoroplethLayer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvY2hvcm9wbGV0aC1sYXllci9jaG9yb3BsZXRoLWxheWVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFvQkE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBTSxVQUFVLFFBQVEsU0FBUixDQUFoQjs7QUFFQSxJQUFNLGFBQWE7QUFDakIsV0FBUyxFQUFDLE1BQU0sQ0FBUCxFQUFVLEtBQUssT0FBZixFQUF3QixXQUFXLElBQW5DLEVBRFE7QUFFakIsYUFBVyxFQUFDLE1BQU0sQ0FBUCxFQUFVLEtBQUssR0FBZixFQUFvQixLQUFLLEdBQXpCLEVBQThCLEtBQUssUUFBbkMsRUFGTTtBQUdqQixVQUFRLEVBQUMsTUFBTSxDQUFQLEVBQVUsS0FBSyxLQUFmLEVBQXNCLEtBQUssT0FBM0IsRUFBb0MsS0FBSyxNQUF6QyxFQUhTOztBQUtqQixpQkFBZSxFQUFDLE1BQU0sQ0FBUCxFQUFVLEtBQUssU0FBZixFQUEwQixLQUFLLFdBQS9CLEVBQTRDLEtBQUssVUFBakQ7QUFMRSxDQUFuQjs7SUFRcUIsZTs7Ozs7Ozs7Ozs7Ozs7OztBQWFuQiwyQkFBWSxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7QUFFZixlQUFTO0FBRk0sT0FHWixLQUhZO0FBS2xCOzs7O3NDQUVpQjtBQUFBLG1CQUNlLEtBQUssS0FEcEI7QUFBQSxVQUNULEVBRFMsVUFDVCxFQURTO0FBQUEsVUFDTCxnQkFESyxVQUNMLGdCQURLOzs7QUFHaEIsdUJBQWlCLFVBQWpCLENBQTRCLFVBQTVCLEVBQXdDOztBQUV0QyxpQkFBUyxFQUFDLFFBQVEsS0FBSyxnQkFBZCxFQUY2QjtBQUd0QyxtQkFBVyxFQUFDLFFBQVEsS0FBSyxrQkFBZCxFQUgyQjtBQUl0QyxnQkFBUSxFQUFDLFFBQVEsS0FBSyxlQUFkLEVBSjhCOztBQU10Qyx1QkFBZSxFQUFDLFFBQVEsS0FBSyxzQkFBZCxFQUFzQyxTQUFTLElBQS9DO0FBTnVCLE9BQXhDOztBQVNBLFdBQUssV0FBTCxDQUFpQixFQUFDLFNBQVMsS0FBSyxLQUFMLENBQVcsT0FBckIsRUFBakI7QUFDQSxXQUFLLFFBQUwsQ0FBYztBQUNaLHNCQUFjLENBREY7QUFFWixlQUFPLEtBQUssUUFBTCxDQUFjLEVBQWQ7QUFGSyxPQUFkOztBQUtBLFdBQUssa0JBQUw7QUFDRDs7O3FDQUVnQixRLEVBQVUsUSxFQUFVO0FBQ25DLGtHQUF1QixRQUF2QixFQUFpQyxRQUFqQzs7QUFEbUMsb0JBR0ssS0FBSyxLQUhWO0FBQUEsVUFHNUIsV0FINEIsV0FHNUIsV0FINEI7QUFBQSxVQUdmLGdCQUhlLFdBR2YsZ0JBSGU7O0FBSW5DLFVBQUksV0FBSixFQUFpQjtBQUNmLGFBQUssa0JBQUw7O0FBRUEseUJBQWlCLGFBQWpCO0FBQ0Q7O0FBRUQsVUFBSSxTQUFTLE9BQVQsS0FBcUIsU0FBUyxPQUFsQyxFQUEyQztBQUN6QyxhQUFLLFdBQUwsQ0FBaUIsRUFBQyxTQUFTLFNBQVMsT0FBbkIsRUFBakI7QUFDRDtBQUNGOzs7NkJBRVEsRSxFQUFJO0FBQ1gsYUFBTyxnQkFBVTtBQUNmLGlCQUFTLGtCQUFZLEVBQVosRUFBZ0I7QUFDdkIsOHZGQUR1QjtBQUV2QixtMENBRnVCO0FBR3ZCLGNBQUk7QUFIbUIsU0FBaEIsQ0FETTtBQU1mLGtCQUFVLG1CQUFhO0FBQ3JCLGNBQUksS0FBSyxLQUFMLENBQVcsRUFETTtBQUVyQixvQkFBVSxLQUFLLEtBQUwsQ0FBVyxXQUFYLEdBQXlCLE9BQXpCLEdBQW1DO0FBRnhCLFNBQWIsQ0FOSztBQVVmLHFCQUFhLENBVkU7QUFXZixtQkFBVztBQVhJLE9BQVYsQ0FBUDtBQWFEOzs7dUNBRWtCLFMsRUFBVztBQUM1QixVQUFNLFdBQVcsc0JBQVksS0FBSyxLQUFMLENBQVcsZUFBdkIsQ0FBakI7QUFDQSxnQkFBVSxLQUFWLEdBQWtCLElBQUksWUFBSixDQUFpQixRQUFqQixDQUFsQjtBQUNEOzs7cUNBRWdCLFMsRUFBVztBQUFBOzs7QUFFMUIsVUFBTSxVQUFVLEtBQUssS0FBTCxDQUFXLGVBQVgsQ0FBMkIsTUFBM0IsQ0FDZCxVQUFDLEdBQUQsRUFBTSxRQUFOO0FBQUEsNENBQXVCLEdBQXZCLElBQTRCLElBQUksSUFBSSxNQUFKLEdBQWEsQ0FBakIsSUFBc0IsU0FBUyxNQUEzRDtBQUFBLE9BRGMsRUFFZCxDQUFDLENBQUQsQ0FGYyxDQUFoQjs7QUFLQSxVQUFNLFVBQVUsS0FBSyxLQUFMLENBQVcsZUFBWCxDQUEyQixHQUEzQixDQUNkLFVBQUMsUUFBRCxFQUFXLGVBQVg7QUFBQSxlQUErQixPQUFLLEtBQUwsQ0FBVyxXQUFYOzs7QUFHN0IsZUFBSyx1QkFBTCxDQUE2QixTQUFTLE1BQXRDLEVBQThDLEdBQTlDLENBQ0U7QUFBQSxpQkFBUyxRQUFRLFFBQVEsZUFBUixDQUFqQjtBQUFBLFNBREYsQ0FINkI7OztBQVE3Qiw4QkFBTyxzQkFBWSxRQUFaLENBQVAsRUFBOEIsSUFBOUIsRUFBb0MsQ0FBcEMsRUFBdUMsR0FBdkMsQ0FDRTtBQUFBLGlCQUFTLFFBQVEsUUFBUSxlQUFSLENBQWpCO0FBQUEsU0FERixDQVJGO0FBQUEsT0FEYyxDQUFoQjs7QUFjQSxnQkFBVSxLQUFWLEdBQWtCLElBQUksV0FBSixDQUFnQixzQkFBWSxPQUFaLENBQWhCLENBQWxCO0FBQ0EsZ0JBQVUsTUFBVixHQUFtQixLQUFLLEtBQUwsQ0FBVyxFQUFYLENBQWMsb0JBQWpDO0FBQ0EsV0FBSyxLQUFMLENBQVcsS0FBWCxDQUFpQixjQUFqQixDQUFnQyxVQUFVLEtBQVYsQ0FBZ0IsTUFBaEIsR0FBeUIsVUFBVSxJQUFuRTtBQUNEOzs7b0NBRWUsUyxFQUFXO0FBQUE7O0FBQ3pCLFVBQU0sU0FBUyxLQUFLLEtBQUwsQ0FBVyxlQUFYLENBQTJCLEdBQTNCLENBQ2I7QUFBQSxlQUFZLFNBQVMsR0FBVCxDQUNWO0FBQUEsaUJBQVUsT0FBSyxLQUFMLENBQVcsV0FBWCxHQUF5QixDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxDQUF6QixHQUFxQyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxDQUEvQztBQUFBLFNBRFUsQ0FBWjtBQUFBLE9BRGEsQ0FBZjs7QUFNQSxnQkFBVSxLQUFWLEdBQWtCLElBQUksWUFBSixDQUFpQixzQkFBWSxNQUFaLENBQWpCLENBQWxCO0FBQ0Q7Ozs7OzsyQ0FHc0IsUyxFQUFXO0FBQUE7O0FBQ2hDLFVBQU0sU0FBUyxLQUFLLEtBQUwsQ0FBVyxlQUFYLENBQTJCLEdBQTNCLENBQ2IsVUFBQyxRQUFELEVBQVcsZUFBWDtBQUFBLGVBQStCLFNBQVMsR0FBVCxDQUM3QjtBQUFBLGlCQUFVLE9BQUssS0FBTCxDQUFXLFdBQVgsR0FBeUIsQ0FBQyxDQUFDLENBQUYsRUFBSyxDQUFDLENBQU4sRUFBUyxDQUFDLENBQVYsQ0FBekIsR0FBd0MsQ0FDaEQsQ0FBQyxrQkFBa0IsQ0FBbkIsSUFBd0IsR0FEd0IsRUFFaEQsS0FBSyxLQUFMLENBQVcsQ0FBQyxrQkFBa0IsQ0FBbkIsSUFBd0IsR0FBbkMsSUFBMEMsR0FGTSxFQUdoRCxLQUFLLEtBQUwsQ0FBVyxDQUFDLGtCQUFrQixDQUFuQixJQUF3QixHQUF4QixHQUE4QixHQUF6QyxJQUFnRCxHQUhBLENBQWxEO0FBQUEsU0FENkIsQ0FBL0I7QUFBQSxPQURhLENBQWY7O0FBU0EsZ0JBQVUsS0FBVixHQUFrQixJQUFJLFlBQUosQ0FBaUIsc0JBQVksTUFBWixDQUFqQixDQUFsQjtBQUNEOzs7eUNBRW9CO0FBQUEsVUFDWixJQURZLEdBQ0osS0FBSyxLQURELENBQ1osSUFEWTs7QUFFbkIsVUFBTSxvQkFBb0IsZ0NBQVUsSUFBVixDQUExQjs7QUFFQSxXQUFLLEtBQUwsQ0FBVyxXQUFYLEdBQXlCLGtCQUFrQixRQUFsQixDQUEyQixHQUEzQixDQUErQixzQkFBYztBQUNwRSxZQUFJLGNBQWMsV0FBVyxRQUFYLENBQW9CLFdBQXBCLENBQWdDLENBQWhDLENBQWxCOztBQUVBLFlBQUksWUFBWSxNQUFaLEtBQXVCLENBQXZCLElBQTRCLFlBQVksQ0FBWixFQUFlLE1BQWYsR0FBd0IsQ0FBeEQsRUFBMkQ7QUFDekQsd0JBQWMsWUFBWSxDQUFaLENBQWQ7QUFDRDtBQUNELGVBQU87QUFDTCxzQkFBWSxXQUFXLFVBRGxCO0FBRUw7QUFGSyxTQUFQO0FBSUQsT0FWd0IsQ0FBekI7O0FBWUEsV0FBSyxLQUFMLENBQVcsZUFBWCxHQUE2QixLQUFLLEtBQUwsQ0FBVyxXQUFYLENBQXVCLEdBQXZCLENBQzNCO0FBQUEsZUFBYyxXQUFXLFdBQVgsQ0FBdUIsR0FBdkIsQ0FDWjtBQUFBLGlCQUFjLENBQUMsV0FBVyxDQUFYLENBQUQsRUFBZ0IsV0FBVyxDQUFYLENBQWhCLEVBQStCLENBQS9CLENBQWQ7QUFBQSxTQURZLENBQWQ7QUFBQSxPQUQyQixDQUE3QjtBQUtEOzs7NENBRXVCLFcsRUFBYTs7QUFFbkMsVUFBSSxVQUFVLEVBQWQ7QUFDQSxXQUFLLElBQUksSUFBSSxDQUFiLEVBQWdCLElBQUksY0FBYyxDQUFsQyxFQUFxQyxHQUFyQyxFQUEwQztBQUN4QywrQ0FBYyxPQUFkLElBQXVCLENBQXZCLEVBQTBCLENBQTFCO0FBQ0Q7QUFDRCxjQUFRLENBQVIsNEJBQWMsT0FBZCxJQUF1QixDQUF2QjtBQUVEOzs7NEJBRU8sSSxFQUFNO0FBQUEsVUFDTCxLQURLLEdBQ0ksSUFESixDQUNMLEtBREs7QUFBQSxVQUVMLElBRkssR0FFRyxLQUFLLEtBRlIsQ0FFTCxJQUZLOztBQUdaLFVBQU0sVUFBVSxLQUFLLFFBQUwsQ0FBYyxLQUFkLENBQWhCO0FBQ0EsV0FBSyxLQUFMLENBQVcsT0FBWCxjQUF1QixJQUF2QixJQUE2QixnQkFBN0I7QUFDRDs7OzRCQUVPLEksRUFBTTtBQUFBLFVBQ0wsS0FESyxHQUNJLElBREosQ0FDTCxLQURLO0FBQUEsVUFFTCxJQUZLLEdBRUcsS0FBSyxLQUZSLENBRUwsSUFGSzs7QUFHWixVQUFNLFVBQVUsS0FBSyxRQUFMLENBQWMsS0FBZCxDQUFoQjtBQUNBLFdBQUssS0FBTCxDQUFXLE9BQVgsY0FBdUIsSUFBdkIsSUFBNkIsZ0JBQTdCO0FBQ0Q7Ozs7OztrQkE1S2tCLGUiLCJmaWxlIjoiY2hvcm9wbGV0aC1sYXllci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxNSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBMYXllciBmcm9tICcuLi8uLi9sYXllcic7XG5pbXBvcnQgZWFyY3V0IGZyb20gJ2VhcmN1dCc7XG5pbXBvcnQgZmxhdHRlbkRlZXAgZnJvbSAnbG9kYXNoLmZsYXR0ZW5kZWVwJztcbmltcG9ydCBub3JtYWxpemUgZnJvbSAnZ2VvanNvbi1ub3JtYWxpemUnO1xuaW1wb3J0IHtNb2RlbCwgUHJvZ3JhbSwgR2VvbWV0cnl9IGZyb20gJ2x1bWEuZ2wnO1xuY29uc3QgZ2xzbGlmeSA9IHJlcXVpcmUoJ2dsc2xpZnknKTtcblxuY29uc3QgQVRUUklCVVRFUyA9IHtcbiAgaW5kaWNlczoge3NpemU6IDEsICcwJzogJ2luZGV4JywgaXNJbmRleGVkOiB0cnVlfSxcbiAgcG9zaXRpb25zOiB7c2l6ZTogMywgJzAnOiAneCcsICcxJzogJ3knLCAnMic6ICd1bnVzZWQnfSxcbiAgY29sb3JzOiB7c2l6ZTogMywgJzAnOiAncmVkJywgJzEnOiAnZ3JlZW4nLCAnMic6ICdibHVlJ30sXG4gIC8vIE92ZXJyaWRlIHBpY2tpbmcgY29sb3JzIHRvIHByZXZlbnQgYXV0byBhbGxvY2F0aW9uXG4gIHBpY2tpbmdDb2xvcnM6IHtzaXplOiAzLCAnMCc6ICdwaWNrUmVkJywgJzEnOiAncGlja0dyZWVuJywgJzInOiAncGlja0JsdWUnfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hvcm9wbGV0aExheWVyIGV4dGVuZHMgTGF5ZXIge1xuICAvKipcbiAgICogQGNsYXNzZGVzY1xuICAgKiBDaG9yb3BsZXRoTGF5ZXJcbiAgICpcbiAgICogQGNsYXNzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKiBAcGFyYW0ge2Jvb2x9IHByb3BzLmRyYXdDb250b3VyIC0gPyBkcmF3Q29udG91ciA6IGRyYXdBcmVhXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2hvcm9wbGV0aEhvdmVyZWQgLSBwcm92aWRlIHByb2VydGllcyBvZiB0aGVcbiAgICogc2VsZWN0ZWQgY2hvcm9wbGV0aCwgdG9nZXRoZXIgd2l0aCB0aGUgbW91c2UgZXZlbnQgd2hlbiBtb3VzZSBob3ZlcmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2hvcm9wbGV0aENsaWNrZWQgLSBwcm92aWRlIHByb2VydGllcyBvZiB0aGVcbiAgICogc2VsZWN0ZWQgY2hvcm9wbGV0aCwgdG9nZXRoZXIgd2l0aCB0aGUgbW91c2UgZXZlbnQgd2hlbiBtb3VzZSBjbGlja2VkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHtcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgIGNvbnN0IHtnbCwgYXR0cmlidXRlTWFuYWdlcn0gPSB0aGlzLnN0YXRlO1xuXG4gICAgYXR0cmlidXRlTWFuYWdlci5hZGREeW5hbWljKEFUVFJJQlVURVMsIHtcbiAgICAgIC8vIFByaW10aXZlIGF0dHJpYnV0ZXNcbiAgICAgIGluZGljZXM6IHt1cGRhdGU6IHRoaXMuY2FsY3VsYXRlSW5kaWNlc30sXG4gICAgICBwb3NpdGlvbnM6IHt1cGRhdGU6IHRoaXMuY2FsY3VsYXRlUG9zaXRpb25zfSxcbiAgICAgIGNvbG9yczoge3VwZGF0ZTogdGhpcy5jYWxjdWxhdGVDb2xvcnN9LFxuICAgICAgLy8gSW5zdGFuY2VkIGF0dHJpYnV0ZXNcbiAgICAgIHBpY2tpbmdDb2xvcnM6IHt1cGRhdGU6IHRoaXMuY2FsY3VsYXRlUGlja2luZ0NvbG9ycywgbm9BbGxvYzogdHJ1ZX1cbiAgICB9KTtcblxuICAgIHRoaXMuc2V0VW5pZm9ybXMoe29wYWNpdHk6IHRoaXMucHJvcHMub3BhY2l0eX0pO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbnVtSW5zdGFuY2VzOiAwLFxuICAgICAgbW9kZWw6IHRoaXMuZ2V0TW9kZWwoZ2wpXG4gICAgfSk7XG5cbiAgICB0aGlzLmV4dHJhY3RDaG9yb3BsZXRocygpO1xuICB9XG5cbiAgd2lsbFJlY2VpdmVQcm9wcyhvbGRQcm9wcywgbmV3UHJvcHMpIHtcbiAgICBzdXBlci53aWxsUmVjZWl2ZVByb3BzKG9sZFByb3BzLCBuZXdQcm9wcyk7XG5cbiAgICBjb25zdCB7ZGF0YUNoYW5nZWQsIGF0dHJpYnV0ZU1hbmFnZXJ9ID0gdGhpcy5zdGF0ZTtcbiAgICBpZiAoZGF0YUNoYW5nZWQpIHtcbiAgICAgIHRoaXMuZXh0cmFjdENob3JvcGxldGhzKCk7XG5cbiAgICAgIGF0dHJpYnV0ZU1hbmFnZXIuaW52YWxpZGF0ZUFsbCgpO1xuICAgIH1cblxuICAgIGlmIChvbGRQcm9wcy5vcGFjaXR5ICE9PSBuZXdQcm9wcy5vcGFjaXR5KSB7XG4gICAgICB0aGlzLnNldFVuaWZvcm1zKHtvcGFjaXR5OiBuZXdQcm9wcy5vcGFjaXR5fSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9kZWwoZ2wpIHtcbiAgICByZXR1cm4gbmV3IE1vZGVsKHtcbiAgICAgIHByb2dyYW06IG5ldyBQcm9ncmFtKGdsLCB7XG4gICAgICAgIHZzOiBnbHNsaWZ5KCcuL2Nob3JvcGxldGgtbGF5ZXItdmVydGV4Lmdsc2wnKSxcbiAgICAgICAgZnM6IGdsc2xpZnkoJy4vY2hvcm9wbGV0aC1sYXllci1mcmFnbWVudC5nbHNsJyksXG4gICAgICAgIGlkOiAnY2hvcm9wbGV0aCdcbiAgICAgIH0pLFxuICAgICAgZ2VvbWV0cnk6IG5ldyBHZW9tZXRyeSh7XG4gICAgICAgIGlkOiB0aGlzLnByb3BzLmlkLFxuICAgICAgICBkcmF3TW9kZTogdGhpcy5wcm9wcy5kcmF3Q29udG91ciA/ICdMSU5FUycgOiAnVFJJQU5HTEVTJ1xuICAgICAgfSksXG4gICAgICB2ZXJ0ZXhDb3VudDogMCxcbiAgICAgIGlzSW5kZXhlZDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgY2FsY3VsYXRlUG9zaXRpb25zKGF0dHJpYnV0ZSkge1xuICAgIGNvbnN0IHZlcnRpY2VzID0gZmxhdHRlbkRlZXAodGhpcy5zdGF0ZS5ncm91cGVkVmVydGljZXMpO1xuICAgIGF0dHJpYnV0ZS52YWx1ZSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGljZXMpO1xuICB9XG5cbiAgY2FsY3VsYXRlSW5kaWNlcyhhdHRyaWJ1dGUpIHtcbiAgICAvLyBhZGp1c3QgaW5kZXggb2Zmc2V0IGZvciBtdWx0aXBsZSBjaG9yb3BsZXRoc1xuICAgIGNvbnN0IG9mZnNldHMgPSB0aGlzLnN0YXRlLmdyb3VwZWRWZXJ0aWNlcy5yZWR1Y2UoXG4gICAgICAoYWNjLCB2ZXJ0aWNlcykgPT4gWy4uLmFjYywgYWNjW2FjYy5sZW5ndGggLSAxXSArIHZlcnRpY2VzLmxlbmd0aF0sXG4gICAgICBbMF1cbiAgICApO1xuXG4gICAgY29uc3QgaW5kaWNlcyA9IHRoaXMuc3RhdGUuZ3JvdXBlZFZlcnRpY2VzLm1hcChcbiAgICAgICh2ZXJ0aWNlcywgY2hvcm9wbGV0aEluZGV4KSA9PiB0aGlzLnByb3BzLmRyYXdDb250b3VyID9cbiAgICAgICAgLy8gMS4gZ2V0IHNlcXVlbnRpYWxseSBvcmRlcmVkIGluZGljZXMgb2YgZWFjaCBjaG9yb3BsZXRoIGNvbnRvdXJcbiAgICAgICAgLy8gMi4gb2Zmc2V0IHRoZW0gYnkgdGhlIG51bWJlciBvZiBpbmRpY2VzIGluIHByZXZpb3VzIGNob3JvcGxldGhzXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlQ29udG91ckluZGljZXModmVydGljZXMubGVuZ3RoKS5tYXAoXG4gICAgICAgICAgaW5kZXggPT4gaW5kZXggKyBvZmZzZXRzW2Nob3JvcGxldGhJbmRleF1cbiAgICAgICAgKSA6XG4gICAgICAgIC8vIDEuIGdldCB0cmlhbmd1bGF0ZWQgaW5kaWNlcyBmb3IgdGhlIGludGVybmFsIGFyZWFzXG4gICAgICAgIC8vIDIuIG9mZnNldCB0aGVtIGJ5IHRoZSBudW1iZXIgb2YgaW5kaWNlcyBpbiBwcmV2aW91cyBjaG9yb3BsZXRoc1xuICAgICAgICBlYXJjdXQoZmxhdHRlbkRlZXAodmVydGljZXMpLCBudWxsLCAzKS5tYXAoXG4gICAgICAgICAgaW5kZXggPT4gaW5kZXggKyBvZmZzZXRzW2Nob3JvcGxldGhJbmRleF1cbiAgICAgICAgKVxuICAgICk7XG5cbiAgICBhdHRyaWJ1dGUudmFsdWUgPSBuZXcgVWludDE2QXJyYXkoZmxhdHRlbkRlZXAoaW5kaWNlcykpO1xuICAgIGF0dHJpYnV0ZS50YXJnZXQgPSB0aGlzLnN0YXRlLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSO1xuICAgIHRoaXMuc3RhdGUubW9kZWwuc2V0VmVydGV4Q291bnQoYXR0cmlidXRlLnZhbHVlLmxlbmd0aCAvIGF0dHJpYnV0ZS5zaXplKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZUNvbG9ycyhhdHRyaWJ1dGUpIHtcbiAgICBjb25zdCBjb2xvcnMgPSB0aGlzLnN0YXRlLmdyb3VwZWRWZXJ0aWNlcy5tYXAoXG4gICAgICB2ZXJ0aWNlcyA9PiB2ZXJ0aWNlcy5tYXAoXG4gICAgICAgIHZlcnRleCA9PiB0aGlzLnByb3BzLmRyYXdDb250b3VyID8gWzAsIDAsIDBdIDogWzEyOCwgMTI4LCAxMjhdXG4gICAgICApXG4gICAgKTtcblxuICAgIGF0dHJpYnV0ZS52YWx1ZSA9IG5ldyBGbG9hdDMyQXJyYXkoZmxhdHRlbkRlZXAoY29sb3JzKSk7XG4gIH1cblxuICAvLyBPdmVycmlkZSB0aGUgZGVmYXVsdCBwaWNraW5nIGNvbG9ycyBjYWxjdWxhdGlvblxuICBjYWxjdWxhdGVQaWNraW5nQ29sb3JzKGF0dHJpYnV0ZSkge1xuICAgIGNvbnN0IGNvbG9ycyA9IHRoaXMuc3RhdGUuZ3JvdXBlZFZlcnRpY2VzLm1hcChcbiAgICAgICh2ZXJ0aWNlcywgY2hvcm9wbGV0aEluZGV4KSA9PiB2ZXJ0aWNlcy5tYXAoXG4gICAgICAgIHZlcnRleCA9PiB0aGlzLnByb3BzLmRyYXdDb250b3VyID8gWy0xLCAtMSwgLTFdIDogW1xuICAgICAgICAgIChjaG9yb3BsZXRoSW5kZXggKyAxKSAlIDI1NixcbiAgICAgICAgICBNYXRoLmZsb29yKChjaG9yb3BsZXRoSW5kZXggKyAxKSAvIDI1NikgJSAyNTYsXG4gICAgICAgICAgTWF0aC5mbG9vcigoY2hvcm9wbGV0aEluZGV4ICsgMSkgLyAyNTYgLyAyNTYpICUgMjU2XVxuICAgICAgKVxuICAgICk7XG5cbiAgICBhdHRyaWJ1dGUudmFsdWUgPSBuZXcgRmxvYXQzMkFycmF5KGZsYXR0ZW5EZWVwKGNvbG9ycykpO1xuICB9XG5cbiAgZXh0cmFjdENob3JvcGxldGhzKCkge1xuICAgIGNvbnN0IHtkYXRhfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qgbm9ybWFsaXplZEdlb2pzb24gPSBub3JtYWxpemUoZGF0YSk7XG5cbiAgICB0aGlzLnN0YXRlLmNob3JvcGxldGhzID0gbm9ybWFsaXplZEdlb2pzb24uZmVhdHVyZXMubWFwKGNob3JvcGxldGggPT4ge1xuICAgICAgbGV0IGNvb3JkaW5hdGVzID0gY2hvcm9wbGV0aC5nZW9tZXRyeS5jb29yZGluYXRlc1swXTtcbiAgICAgIC8vIGZsYXR0ZW4gbmVzdGVkIHBvbHlnb25zXG4gICAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID09PSAxICYmIGNvb3JkaW5hdGVzWzBdLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgY29vcmRpbmF0ZXMgPSBjb29yZGluYXRlc1swXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3BlcnRpZXM6IGNob3JvcGxldGgucHJvcGVydGllcyxcbiAgICAgICAgY29vcmRpbmF0ZXNcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YXRlLmdyb3VwZWRWZXJ0aWNlcyA9IHRoaXMuc3RhdGUuY2hvcm9wbGV0aHMubWFwKFxuICAgICAgY2hvcm9wbGV0aCA9PiBjaG9yb3BsZXRoLmNvb3JkaW5hdGVzLm1hcChcbiAgICAgICAgY29vcmRpbmF0ZSA9PiBbY29vcmRpbmF0ZVswXSwgY29vcmRpbmF0ZVsxXSwgMF1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgY2FsY3VsYXRlQ29udG91ckluZGljZXMobnVtVmVydGljZXMpIHtcbiAgICAvLyB1c2UgdmVydGV4IHBhaXJzIGZvciBnbC5MSU5FUyA9PiBbMCwgMSwgMSwgMiwgMiwgLi4uLCBuLTEsIG4tMSwgMF1cbiAgICBsZXQgaW5kaWNlcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVmVydGljZXMgLSAxOyBpKyspIHtcbiAgICAgIGluZGljZXMgPSBbLi4uaW5kaWNlcywgaSwgaV07XG4gICAgfVxuICAgIHJldHVybiBbMCwgLi4uaW5kaWNlcywgMF07XG5cbiAgfVxuXG4gIG9uSG92ZXIoaW5mbykge1xuICAgIGNvbnN0IHtpbmRleH0gPSBpbmZvO1xuICAgIGNvbnN0IHtkYXRhfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgZmVhdHVyZSA9IGRhdGEuZmVhdHVyZXNbaW5kZXhdO1xuICAgIHRoaXMucHJvcHMub25Ib3Zlcih7Li4uaW5mbywgZmVhdHVyZX0pO1xuICB9XG5cbiAgb25DbGljayhpbmZvKSB7XG4gICAgY29uc3Qge2luZGV4fSA9IGluZm87XG4gICAgY29uc3Qge2RhdGF9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBmZWF0dXJlID0gZGF0YS5mZWF0dXJlc1tpbmRleF07XG4gICAgdGhpcy5wcm9wcy5vbkNsaWNrKHsuLi5pbmZvLCBmZWF0dXJlfSk7XG4gIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvY2hvcm9wbGV0aC1sYXllci9jaG9yb3BsZXRoLWxheWVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFvQkE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBTSxVQUFVLFFBQVEsU0FBUixDQUFoQjs7QUFFQSxJQUFNLGFBQWE7QUFDakIsV0FBUyxFQUFDLE1BQU0sQ0FBUCxFQUFVLEtBQUssT0FBZixFQUF3QixXQUFXLElBQW5DLEVBRFE7QUFFakIsYUFBVyxFQUFDLE1BQU0sQ0FBUCxFQUFVLEtBQUssR0FBZixFQUFvQixLQUFLLEdBQXpCLEVBQThCLEtBQUssUUFBbkMsRUFGTTtBQUdqQixVQUFRLEVBQUMsTUFBTSxDQUFQLEVBQVUsS0FBSyxLQUFmLEVBQXNCLEtBQUssT0FBM0IsRUFBb0MsS0FBSyxNQUF6QyxFQUhTOztBQUtqQixpQkFBZSxFQUFDLE1BQU0sQ0FBUCxFQUFVLEtBQUssU0FBZixFQUEwQixLQUFLLFdBQS9CLEVBQTRDLEtBQUssVUFBakQ7QUFMRSxDQUFuQjs7SUFRcUIsZTs7Ozs7Ozs7Ozs7Ozs7OztBQWFuQiwyQkFBWSxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7QUFFZixlQUFTO0FBRk0sT0FHWixLQUhZO0FBS2xCOzs7O3NDQUVpQjtBQUFBLG1CQUNlLEtBQUssS0FEcEI7QUFBQSxVQUNULEVBRFMsVUFDVCxFQURTO0FBQUEsVUFDTCxnQkFESyxVQUNMLGdCQURLOzs7QUFHaEIsdUJBQWlCLFVBQWpCLENBQTRCLFVBQTVCLEVBQXdDOztBQUV0QyxpQkFBUyxFQUFDLFFBQVEsS0FBSyxnQkFBZCxFQUY2QjtBQUd0QyxtQkFBVyxFQUFDLFFBQVEsS0FBSyxrQkFBZCxFQUgyQjtBQUl0QyxnQkFBUSxFQUFDLFFBQVEsS0FBSyxlQUFkLEVBSjhCOztBQU10Qyx1QkFBZSxFQUFDLFFBQVEsS0FB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Ozs7OztrQkE1S2tCLGUiLCJmaWxlIjoiY2hvcm9wbGV0aC1sYXllci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxNSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBMYXllciBmcm9tICcuLi8uLi9sYXllcic7XG5pbXBvcnQgZWFyY3V0IGZyb20gJ2VhcmN1dCc7XG5pbXBvcnQgZmxhdHRlbkRlZXAgZnJvbSAnbG9kYXNoLmZsYXR0ZW5kZWVwJztcbmltcG9ydCBub3JtYWxpemUgZnJvbSAnZ2VvanNvbi1ub3JtYWxpemUnO1xuaW1wb3J0IHtNb2RlbCwgUHJvZ3JhbSwgR2VvbWV0cnl9IGZyb20gJ2x1bWEuZ2wnO1xuY29uc3QgZ2xzbGlmeSA9IHJlcXVpcmUoJ2dsc2xpZnknKTtcblxuY29uc3QgQVRUUklCVVRFUyA9IHtcbiAgaW5kaWNlczoge3NpemU6IDEsICcwJzogJ2luZGV4JywgaXNJbmRleGVkOiB0cnVlfSxcbiAgcG9zaXRpb25zOiB7c2l6ZTogMywgJzAnOiAneCcsICcxJzogJ3knLCAnMic6ICd1bnVzZWQnfSxcbiAgY29sb3JzOiB7c2l6ZTogMywgJzAnOiAncmVkJywgJzEnOiAnZ3JlZW4nLCAnMic6ICdibHVlJ30sXG4gIC8vIE92ZXJyaWRlIHBpY2tpbmcgY29sb3JzIHRvIHByZXZlbnQgYXV0byBhbGxvY2F0aW9uXG4gIHBpY2tpbmdDb2xvcnM6IHtzaXplOiAzLCAnMCc6ICdwaWNrUmVkJywgJzEnOiAncGlja0dyZWVuJywgJzInOiAncGlja0JsdWUnfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hvcm9wbGV0aExheWVyIGV4dGVuZHMgTGF5ZXIge1xuICAvKipcbiAgICogQGNsYXNzZGVzY1xuICAgKiBDaG9yb3BsZXRoTGF5ZXJcbiAgICpcbiAgICogQGNsYXNzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKiBAcGFyYW0ge2Jvb2x9IHByb3BzLmRyYXdDb250b3VyIC0gPyBkcmF3Q29udG91ciA6IGRyYXdBcmVhXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2hvcm9wbGV0aEhvdmVyZWQgLSBwcm92aWRlIHByb2VydGllcyBvZiB0aGVcbiAgICogc2VsZWN0ZWQgY2hvcm9wbGV0aCwgdG9nZXRoZXIgd2l0aCB0aGUgbW91c2UgZXZlbnQgd2hlbiBtb3VzZSBob3ZlcmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2hvcm9wbGV0aENsaWNrZWQgLSBwcm92aWRlIHByb2VydGllcyBvZiB0aGVcbiAgICogc2VsZWN0ZWQgY2hvcm9wbGV0aCwgdG9nZXRoZXIgd2l0aCB0aGUgbW91c2UgZXZlbnQgd2hlbiBtb3VzZSBjbGlja2VkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHtcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgIGNvbnN0IHtnbCwgYXR0cmlidXRlTWFuYWdlcn0gPSB0aGlzLnN0YXRlO1xuXG4gICAgYXR0cmlidXRlTWFuYWdlci5hZGREeW5hbWljKEFUVFJJQlVURVMsIHtcbiAgICAgIC8vIFByaW10aXZlIGF0dHJpYnV0ZXNcbiAgICAgIGluZGljZXM6IHt1cGRhdGU6IHRoaXMuY2FsY3VsYXRlSW5kaWNlc30sXG4gICAgICBwb3NpdGlvbnM6IHt1cGRhdGU6IHRoaXMuY2FsY3VsYXRlUG9zaXRpb25zfSxcbiAgICAgIGNvbG9yczoge3VwZGF0ZTogdGhpcy5jYWxjdWxhdGVDb2xvcnN9LFxuICAgICAgLy8gSW5zdGFuY2VkIGF0dHJpYnV0ZXNcbiAgICAgIHBpY2tpbmdDb2xvcnM6IHt1cGRhdGU6IHRoaXMuY2FsY3VsYXRlUGlja2luZ0NvbG9ycywgbm9BbGxvYzogdHJ1ZX1cbiAgICB9KTtcblxuICAgIHRoaXMuc2V0VW5pZm9ybXMoe29wYWNpdHk6IHRoaXMucHJvcHMub3BhY2l0eX0pO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbnVtSW5zdGFuY2VzOiAwLFxuICAgICAgbW9kZWw6IHRoaXMuZ2V0TW9kZWwoZ2wpXG4gICAgfSk7XG5cbiAgICB0aGlzLmV4dHJhY3RDaG9yb3BsZXRocygpO1xuICB9XG5cbiAgd2lsbFJlY2VpdmVQcm9wcyhvbGRQcm9wcywgbmV3UHJvcHMpIHtcbiAgICBzdXBlci53aWxsUmVjZWl2ZVByb3BzKG9sZFByb3BzLCBuZXdQcm9wcyk7XG5cbiAgICBjb25zdCB7ZGF0YUNoYW5nZWQsIGF0dHJpYnV0ZU1hbmFnZXJ9ID0gdGhpcy5zdGF0ZTtcbiAgICBpZiAoZGF0YUNoYW5nZWQpIHtcbiAgICAgIHRoaXMuZXh0cmFjdENob3JvcGxldGhzKCk7XG5cbiAgICAgIGF0dHJpYnV0ZU1hbmFnZXIuaW52YWxpZGF0ZUFsbCgpO1xuICAgIH1cblxuICAgIGlmIChvbGRQcm9wcy5vcGFjaXR5ICE9PSBuZXdQcm9wcy5vcGFjaXR5KSB7XG4gICAgICB0aGlzLnNldFVuaWZvcm1zKHtvcGFjaXR5OiBuZXdQcm9wcy5vcGFjaXR5fSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9kZWwoZ2wpIHtcbiAgICByZXR1cm4gbmV3IE1vZGVsKHtcbiAgICAgIHByb2dyYW06IG5ldyBQcm9ncmFtKGdsLCB7XG4gICAgICAgIHZzOiBnbHNsaWZ5KCcuL2Nob3JvcGxldGgtbGF5ZXItdmVydGV4Lmdsc2wnKSxcbiAgICAgICAgZnM6IGdsc2xpZnkoJy4vY2hvcm9wbGV0aC1sYXllci1mcmFnbWVudC5nbHNsJyksXG4gICAgICAgIGlkOiAnY2hvcm9wbGV0aCdcbiAgICAgIH0pLFxuICAgICAgZ2VvbWV0cnk6IG5ldyBHZW9tZXRyeSh7XG4gICAgICAgIGlkOiB0aGlzLnByb3BzLmlkLFxuICAgICAgICBkcmF3TW9kZTogdGhpcy5wcm9wcy5kcmF3Q29udG91ciA/ICdMSU5FUycgOiAnVFJJQU5HTEVTJ1xuICAgICAgfSksXG4gICAgICB2ZXJ0ZXhDb3VudDogMCxcbiAgICAgIGlzSW5kZXhlZDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgY2FsY3VsYXRlUG9zaXRpb25zKGF0dHJpYnV0ZSkge1xuICAgIGNvbnN0IHZlcnRpY2VzID0gZmxhdHRlbkRlZXAodGhpcy5zdGF0ZS5ncm91cGVkVmVydGljZXMpO1xuICAgIGF0dHJpYnV0ZS52YWx1ZSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGljZXMpO1xuICB9XG5cbiAgY2FsY3VsYXRlSW5kaWNlcyhhdHRyaWJ1dGUpIHtcbiAgICAvLyBhZGp1c3QgaW5kZXggb2Zmc2V0IGZvciBtdWx0aXBsZSBjaG9yb3BsZXRoc1xuICAgIGNvbnN0IG9mZnNldHMgPSB0aGlzLnN0YXRlLmdyb3VwZWRWZXJ0aWNlcy5yZWR1Y2UoXG4gICAgICAoYWNjLCB2ZXJ0aWNlcykgPT4gWy4uLmFjYywgYWNjW2FjYy5sZW5ndGggLSAxXSArIHZlcnRpY2VzLmxlbmd0aF0sXG4gICAgICBbMF1cbiAgICApO1xuXG4gICAgY29uc3QgaW5kaWNlcyA9IHRoaXMuc3RhdGUuZ3JvdXBlZFZlcnRpY2VzLm1hcChcbiAgICAgICh2ZXJ0aWNlcywgY2hvcm9wbGV0aEluZGV4KSA9PiB0aGlzLnByb3BzLmRyYXdDb250b3VyID9cbiAgICAgICAgLy8gMS4gZ2V0IHNlcXVlbnRpYWxseSBvcmRlcmVkIGluZGljZXMgb2YgZWFjaCBjaG9yb3BsZXRoIGNvbnRvdXJcbiAgICAgICAgLy8gMi4gb2Zmc2V0IHRoZW0gYnkgdGhlIG51bWJlciBvZiBpbmRpY2VzIGluIHByZXZpb3VzIGNob3JvcGxldGhzXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlQ29udG91ckluZGljZXModmVydGljZXMubGVuZ3RoKS5tYXAoXG4gICAgICAgICAgaW5kZXggPT4gaW5kZXggKyBvZmZzZXRzW2Nob3JvcGxldGhJbmRleF1cbiAgICAgICAgKSA6XG4gICAgICAgIC8vIDEuIGdldCB0cmlhbmd1bGF0ZWQgaW5kaWNlcyBmb3IgdGhlIGludGVybmFsIGFyZWFzXG4gICAgICAgIC8vIDIuIG9mZnNldCB0aGVtIGJ5IHRoZSBudW1iZXIgb2YgaW5kaWNlcyBpbiBwcmV2aW91cyBjaG9yb3BsZXRoc1xuICAgICAgICBlYXJjdXQoZmxhdHRlbkRlZXAodmVydGljZXMpLCBudWxsLCAzKS5tYXAoXG4gICAgICAgICAgaW5kZXggPT4gaW5kZXggKyBvZmZzZXRzW2Nob3JvcGxldGhJbmRleF1cbiAgICAgICAgKVxuICAgICk7XG5cbiAgICBhdHRyaWJ1dGUudmFsdWUgPSBuZXcgVWludDE2QXJyYXkoZmxhdHRlbkRlZXAoaW5kaWNlcykpO1xuICAgIGF0dHJpYnV0ZS50YXJnZXQgPSB0aGlzLnN0YXRlLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSO1xuICAgIHRoaXMuc3RhdGUubW9kZWwuc2V0VmVydGV4Q291bnQoYXR0cmlidXRlLnZhbHVlLmxlbmd0aCAvIGF0dHJpYnV0ZS5zaXplKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZUNvbG9ycyhhdHRyaWJ1dGUpIHtcbiAgICBjb25zdCBjb2xvcnMgPSB0aGlzLnN0YXRlLmdyb3VwZWRWZXJ0aWNlcy5tYXAoXG4gICAgICB2ZXJ0aWNlcyA9PiB2ZXJ0aWNlcy5tYXAoXG4gICAgICAgIHZlcnRleCA9PiB0aGlzLnByb3BzLmRyYXdDb250b3VyID8gWzAsIDAsIDBdIDogWzEyOCwgMTI4LCAxMjhdXG4gICAgICApXG4gICAgKTtcblxuICAgIGF0dHJpYnV0ZS52YWx1ZSA9IG5ldyBGbG9hdDMyQXJyYXkoZmxhdHRlbkRlZXAoY29sb3JzKSk7XG4gIH1cblxuICAvLyBPdmVycmlkZSB0aGUgZGVmYXVsdCBwaWNraW5nIGNvbG9ycyBjYWxjdWxhdGlvblxuICBjYWxjdWxhdGVQaWNraW5nQ29sb3JzKGF0dHJpYnV0ZSkge1xuICAgIGNvbnN0IGNvbG9ycyA9IHRoaXMuc3RhdGUuZ3JvdXBlZFZlcnRpY2VzLm1hcChcbiAgICAgICh2ZXJ0aWNlcywgY2hvcm9wbGV0aEluZGV4KSA9PiB2ZXJ0aWNlcy5tYXAoXG4gICAgICAgIHZlcnRleCA9PiB0aGlzLnByb3BzLmRyYXdDb250b3VyID8gWy0xLCAtMSwgLTFdIDogW1xuICAgICAgICAgIChjaG9yb3BsZXRoSW5kZXggKyAxKSAlIDI1NixcbiAgICAgICAgICBNYXRoLmZsb29yKChjaG9yb3BsZXRoSW5kZXggKyAxKSAvIDI1NikgJSAyNTYsXG4gICAgICAgICAgTWF0aC5mbG9vcigoY2hvcm9wbGV0aEluZGV4ICsgMSkgLyAyNTYgLyAyNTYpICUgMjU2XVxuICAgICAgKVxuICAgICk7XG5cbiAgICBhdHRyaWJ1dGUudmFsdWUgPSBuZXcgRmxvYXQzMkFycmF5KGZsYXR0ZW5EZWVwKGNvbG9ycykpO1xuICB9XG5cbiAgZXh0cmFjdENob3JvcGxldGhzKCkge1xuICAgIGNvbnN0IHtkYXRhfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qgbm9ybWFsaXplZEdlb2pzb24gPSBub3JtYWxpemUoZGF0YSk7XG5cbiAgICB0aGlzLnN0YXRlLmNob3JvcGxldGhzID0gbm9ybWFsaXplZEdlb2pzb24uZmVhdHVyZXMubWFwKGNob3JvcGxldGggPT4ge1xuICAgICAgbGV0IGNvb3JkaW5hdGVzID0gY2hvcm9wbGV0aC5nZW9tZXRyeS5jb29yZGluYXRlc1swXTtcbiAgICAgIC8vIGZsYXR0ZW4gbmVzdGVkIHBvbHlnb25zXG4gICAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID09PSAxICYmIGNvb3JkaW5hdGVzWzBdLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgY29vcmRpbmF0ZXMgPSBjb29yZGluYXRlc1swXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3BlcnRpZXM6IGNob3JvcGxldGgucHJvcGVydGllcyxcbiAgICAgICAgY29vcmRpbmF0ZXNcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YXRlLmdyb3VwZWRWZXJ0aWNlcyA9IHRoaXMuc3RhdGUuY2hvcm9wbGV0aHMubWFwKFxuICAgICAgY2hvcm9wbGV0aCA9PiBjaG9yb3BsZXRoLmNvb3JkaW5hdGVzLm1hcChcbiAgICAgICAgY29vcmRpbmF0ZSA9PiBbY29vcmRpbmF0ZVswXSwgY29vcmRpbmF0ZVsxXSwgMF1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgY2FsY3VsYXRlQ29udG91ckluZGljZXMobnVtVmVydGljZXMpIHtcbiAgICAvLyB1c2UgdmVydGV4IHBhaXJzIGZvciBnbC5MSU5FUyA9PiBbMCwgMSwgMSwgMiwgMiwgLi4uLCBuLTEsIG4tMSwgMF1cbiAgICBsZXQgaW5kaWNlcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVmVydGljZXMgLSAxOyBpKyspIHtcbiAgICAgIGluZGljZXMgPSBbLi4uaW5kaWNlcywgaSwgaV07XG4gICAgfVxuICAgIHJldHVybiBbMCwgLi4uaW5kaWNlcywgMF07XG5cbiAgfVxuXG4gIG9uSG92ZXIoaW5mbykge1xuICAgIGNvbnN0IHtpbmRleH0gPSBpbmZvO1xuICAgIGNvbnN0IHtkYXRhfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgZmVhdHVyZSA9IGRhdGEuZmVhdHVyZXNbaW5kZXhdO1xuICAgIHRoaXMucHJvcHMub25Ib3Zlcih7Li4uaW5mbywgZmVhdHVyZX0pO1xuICB9XG5cbiAgb25DbGljayhpbmZvKSB7XG4gICAgY29uc3Qge2luZGV4fSA9IGluZm87XG4gICAgY29uc3Qge2RhdGF9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBmZWF0dXJlID0gZGF0YS5mZWF0dXJlc1tpbmRleF07XG4gICAgdGhpcy5wcm9wcy5vbkNsaWNrKHsuLi5pbmZvLCBmZWF0dXJlfSk7XG4gIH1cblxufVxuIl19

@@ -119,3 +119,3 @@ 'use strict';

program: new _luma.Program(gl, {
vs: '#define GLSLIFY 1\n// Copyright (c) 2015 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the "Software"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* vertex shader for the scatterplot-layer */\n#define SHADER_NAME scatterplot-layer-vs\n\nhighp float random(vec2 co) {\n highp float a = 12.9898;\n highp float b = 78.233;\n highp float c = 43758.5453;\n highp float dt= dot(co.xy ,vec2(a,b));\n highp float sn= mod(dt,3.14);\n return fract(sin(sn) / c) - .5;\n}\n\nconst float TILE_SIZE_1604150559 = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE_1604150559 = TILE_SIZE_1604150559 / (PI * 2.0);\n\n// non-linear projection: lnglats => zoom 0 tile [0-512, 0-512] * scale\nvec2 mercatorProject(vec2 lnglat, float zoomScale) {\n float scale = WORLD_SCALE_1604150559 * zoomScale;\n return vec2(\n \tscale * (radians(lnglat.x) + PI),\n \tscale * (PI - log(tan(PI * 0.25 + radians(lnglat.y) * 0.5)))\n );\n}\n\nuniform float mercatorScale;\n\nattribute vec3 positions;\nattribute vec3 instancePositions;\nattribute vec3 instanceColors;\nattribute vec3 instancePickingColors;\n\nuniform float radius;\nuniform float opacity;\n\nuniform mat4 worldMatrix;\nuniform mat4 projectionMatrix;\n\nvarying vec4 vColor;\nuniform float renderPickingBuffer;\n\nvoid main(void) {\n // vec2 pos = mercatorProject(instancePositions.xy);\n // vec3 p = vec3(pos, instancePositions.z) + positions * radius;\n // // gl_Position = projectionMatrix * vec4(p, 1.0);\n // // float rand = random(pos);\n // // gl_Position = vec4(rand, rand, 0, 1.);\n\n // vec4 color = vec4(instanceColors / 255.0, 1.);\n // vec4 pickingColor = vec4(instancePickingColors / 255.0, 1.);\n // vColor = mix(color, pickingColor, renderPickingBuffer);\n\n vec2 pos = mercatorProject(instancePositions.xy, mercatorScale);\n vec3 p = vec3(pos, instancePositions.z) + positions * radius;\n gl_Position = projectionMatrix * vec4(p, 1.0);\n\n vec4 color = vec4(instanceColors / 255.0, 1.);\n vec4 pickingColor = vec4(instancePickingColors / 255.0, 1.);\n vColor = mix(color, pickingColor, renderPickingBuffer);\n}\n',
vs: '#define GLSLIFY 1\n// Copyright (c) 2015 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the "Software"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* vertex shader for the scatterplot-layer */\n#define SHADER_NAME scatterplot-layer-vs\n\nhighp float random(vec2 co) {\n highp float a = 12.9898;\n highp float b = 78.233;\n highp float c = 43758.5453;\n highp float dt= dot(co.xy ,vec2(a,b));\n highp float sn= mod(dt,3.14);\n return fract(sin(sn) / c) - .5;\n}\n\nconst float TILE_SIZE_1604150559 = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE_1604150559 = TILE_SIZE_1604150559 / (PI * 2.0);\n\n// non-linear projection: lnglats => zoom 0 tile [0-512, 0-512] * scale\nvec2 mercatorProject(vec2 lnglat, float zoomScale) {\n float scale = WORLD_SCALE_1604150559 * zoomScale;\n return vec2(\n \tscale * (radians(lnglat.x) + PI),\n \tscale * (PI - log(tan(PI * 0.25 + radians(lnglat.y) * 0.5)))\n );\n}\n\nuniform float mercatorScale;\n\nattribute vec3 positions;\nattribute vec3 instancePositions;\nattribute vec3 instanceColors;\nattribute vec3 instancePickingColors;\n\nuniform float radius;\nuniform float opacity;\n\nuniform mat4 worldMatrix;\nuniform mat4 projectionMatrix;\n\nvarying vec4 vColor;\nuniform float renderPickingBuffer;\n\nvoid main(void) {\n // vec2 pos = mercatorProject(instancePositions.xy);\n // vec3 p = vec3(pos, instancePositions.z) + positions * radius;\n // // gl_Position = projectionMatrix * vec4(p, 1.0);\n // // float rand = random(pos);\n // // gl_Position = vec4(rand, rand, 0, 1.);\n\n // vec4 color = vec4(instanceColors / 255.0, 1.);\n // vec4 pickingColor = vec4(instancePickingColors / 255.0, 1.);\n // vColor = mix(color, pickingColor, renderPickingBuffer);\n\n vec2 pos = mercatorProject(instancePositions.xy, mercatorScale);\n // For some reason, need to add one to elevation to show up in untilted mode\n vec3 p = vec3(pos, instancePositions.z + 1.) + positions * radius;\n gl_Position = projectionMatrix * vec4(p, 1.0);\n\n vec4 color = vec4(instanceColors / 255.0, 1.);\n vec4 pickingColor = vec4(instancePickingColors / 255.0, 1.);\n vColor = mix(color, pickingColor, renderPickingBuffer);\n}\n',
fs: '// Copyright (c) 2015 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the "Software"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* fragment shader for the scatterplot-layer */\n#define SHADER_NAME scatterplot-layer-fs\n\n#ifdef GL_ES\nprecision highp float;\n#define GLSLIFY 1\n#endif\n\nvarying vec4 vColor;\n\nvoid main(void) {\n // gl_FragColor = vColor;\n gl_FragColor = vec4(1., 0., 0., 1.);\n}\n',

@@ -236,2 +236,2 @@ id: 'scatterplot'

exports.default = ScatterplotLayer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvc2NhdHRlcnBsb3QtbGF5ZXIvc2NhdHRlcnBsb3QtbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFvQkE7Ozs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBTSxVQUFVLFFBQVEsU0FBUixDQUFoQjs7QUFFQSxJQUFNLGFBQWE7QUFDakIscUJBQW1CLEVBQUMsTUFBTSxDQUFQLEVBQVUsS0FBSyxHQUFmLEVBQW9CLEtBQUssR0FBekIsRUFBOEIsS0FBSyxRQUFuQyxFQURGO0FBRWpCLGtCQUFnQixFQUFDLE1BQU0sQ0FBUCxFQUFVLEtBQUssS0FBZixFQUFzQixLQUFLLE9BQTNCLEVBQW9DLEtBQUssTUFBekM7QUFGQyxDQUFuQjs7SUFLcUIsZ0I7Ozs7O3dCQUVLO0FBQ3RCLGFBQU8sVUFBUDtBQUNEOzs7Ozs7Ozs7Ozs7O0FBVUQsNEJBQVksS0FBWixFQUFtQjtBQUFBOztBQUFBLCtGQUNYLEtBRFc7QUFFbEI7Ozs7c0NBRWlCO0FBQUEsVUFDVCxFQURTLEdBQ0gsS0FBSyxLQURGLENBQ1QsRUFEUztBQUFBLFVBRVQsZ0JBRlMsR0FFVyxLQUFLLEtBRmhCLENBRVQsZ0JBRlM7OztBQUloQixXQUFLLFFBQUwsQ0FBYztBQUNaLGVBQU8sS0FBSyxRQUFMLENBQWMsRUFBZDtBQURLLE9BQWQ7O0FBSUEsdUJBQWlCLFlBQWpCLENBQThCLFVBQTlCLEVBQTBDO0FBQ3hDLDJCQUFtQixFQUFDLFFBQVEsS0FBSywwQkFBZCxFQURxQjtBQUV4Qyx3QkFBZ0IsRUFBQyxRQUFRLEtBQUssdUJBQWQ7QUFGd0IsT0FBMUM7QUFJRDs7OytCQUVVO0FBQ1QsV0FBSyxjQUFMO0FBQ0Q7OztxQ0FFZ0IsUSxFQUFVLFEsRUFBVTtBQUNuQyxtR0FBdUIsUUFBdkIsRUFBaUMsUUFBakM7QUFDQSxXQUFLLGNBQUw7QUFDRDs7OzZCQUVRLEUsRUFBSTtBQUNYLFVBQU0sZUFBZSxF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QUFXLE9BQU8sQ0FBN0I7QUFDQSxVQUFNLEtBQUssT0FBTyxDQUFQLEdBQVcsT0FBTyxDQUE3Qjs7QUFFQSxXQUFLLEtBQUwsQ0FBVyxNQUFYLEdBQW9CLEtBQUssR0FBTCxDQUFTLEtBQUssSUFBTCxDQUFVLEtBQUssRUFBTCxHQUFVLEtBQUssRUFBekIsQ0FBVCxFQUF1QyxHQUF2QyxDQUFwQjtBQUNEOzs7Ozs7a0JBbkhrQixnQiIsImZpbGUiOiJzY2F0dGVycGxvdC1sYXllci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxNSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBMYXllciBmcm9tICcuLi8uLi9sYXllcic7XG5pbXBvcnQge01vZGVsLCBQcm9ncmFtLCBHZW9tZXRyeX0gZnJvbSAnbHVtYS5nbCc7XG5jb25zdCBnbHNsaWZ5ID0gcmVxdWlyZSgnZ2xzbGlmeScpO1xuXG5jb25zdCBBVFRSSUJVVEVTID0ge1xuICBpbnN0YW5jZVBvc2l0aW9uczoge3NpemU6IDMsICcwJzogJ3gnLCAnMSc6ICd5JywgJzInOiAndW51c2VkJ30sXG4gIGluc3RhbmNlQ29sb3JzOiB7c2l6ZTogMywgJzAnOiAncmVkJywgJzEnOiAnZ3JlZW4nLCAnMic6ICdibHVlJ31cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYXR0ZXJwbG90TGF5ZXIgZXh0ZW5kcyBMYXllciB7XG5cbiAgc3RhdGljIGdldCBhdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiBBVFRSSUJVVEVTO1xuICB9XG5cbiAgLypcbiAgICogQGNsYXNzZGVzY1xuICAgKiBTY2F0dGVycGxvdExheWVyXG4gICAqXG4gICAqIEBjbGFzc1xuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnJhZGl1cyAtIHBvaW50IHJhZGl1c1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICBpbml0aWFsaXplU3RhdGUoKSB7XG4gICAgY29uc3Qge2dsfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qge2F0dHJpYnV0ZU1hbmFnZXJ9ID0gdGhpcy5zdGF0ZTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbW9kZWw6IHRoaXMuZ2V0TW9kZWwoZ2wpXG4gICAgfSk7XG5cbiAgICBhdHRyaWJ1dGVNYW5hZ2VyLmFkZEluc3RhbmNlZChBVFRSSUJVVEVTLCB7XG4gICAgICBpbnN0YW5jZVBvc2l0aW9uczoge3VwZGF0ZTogdGhpcy5jYWxjdWxhdGVJbnN0YW5jZVBvc2l0aW9uc30sXG4gICAgICBpbnN0YW5jZUNvbG9yczoge3VwZGF0ZTogdGhpcy5jYWxjdWxhdGVJbnN0YW5jZUNvbG9yc31cbiAgICB9KTtcbiAgfVxuXG4gIGRpZE1vdW50KCkge1xuICAgIHRoaXMudXBkYXRlVW5pZm9ybXMoKTtcbiAgfVxuXG4gIHdpbGxSZWNlaXZlUHJvcHMob2xkUHJvcHMsIG5ld1Byb3BzKSB7XG4gICAgc3VwZXIud2lsbFJlY2VpdmVQcm9wcyhvbGRQcm9wcywgbmV3UHJvcHMpO1xuICAgIHRoaXMudXBkYXRlVW5pZm9ybXMoKTtcbiAgfVxuXG4gIGdldE1vZGVsKGdsKSB7XG4gICAgY29uc3QgTlVNX1NFR01FTlRTID0gMTY7XG4gICAgY29uc3QgUEkyID0gTWF0aC5QSSAqIDI7XG5cbiAgICBsZXQgcG9zaXRpb25zID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOVU1fU0VHTUVOVFM7IGkrKykge1xuICAgICAgcG9zaXRpb25zID0gW1xuICAgICAgICAuLi5wb3NpdGlvbnMsXG4gICAgICAgIE1hdGguY29zKFBJMiAqIGkgLyBOVU1fU0VHTUVOVFMpLFxuICAgICAgICBNYXRoLnNpbihQSTIgKiBpIC8gTlVNX1NFR01FTlRTKSxcbiAgICAgICAgMFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1vZGVsKHtcbiAgICAgIHByb2dyYW06IG5ldyBQcm9ncmFtKGdsLCB7XG4gICAgICAgIHZzOiBnbHNsaWZ5KCcuL3NjYXR0ZXJwbG90LWxheWVyLXZlcnRleC5nbHNsJyksXG4gICAgICAgIGZzOiBnbHNsaWZ5KCcuL3NjYXR0ZXJwbG90LWxheWVyLWZyYWdtZW50Lmdsc2wnKSxcbiAgICAgICAgaWQ6ICdzY2F0dGVycGxvdCdcbiAgICAgIH0pLFxuICAgICAgZ2VvbWV0cnk6IG5ldyBHZW9tZXRyeSh7XG4gICAgICAgIGRyYXdNb2RlOiAnVFJJQU5HTEVfRkFOJyxcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9ucylcbiAgICAgIH0pLFxuICAgICAgaXNJbnN0YW5jZWQ6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVVuaWZvcm1zKCkge1xuICAgIHRoaXMuY2FsY3VsYXRlUmFkaXVzKCk7XG4gICAgY29uc3Qge3JhZGl1c30gPSB0aGlzLnN0YXRlO1xuICAgIHRoaXMuc2V0VW5pZm9ybXMoe1xuICAgICAgcmFkaXVzXG4gICAgfSk7XG4gIH1cblxuICBjYWxjdWxhdGVJbnN0YW5jZVBvc2l0aW9ucyhhdHRyaWJ1dGUpIHtcbiAgICBjb25zdCB7ZGF0YX0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHt2YWx1ZSwgc2l6ZX0gPSBhdHRyaWJ1dGU7XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAoY29uc3QgcG9pbnQgb2YgZGF0YSkge1xuICAgICAgdmFsdWVbaSArIDBdID0gcG9pbnQucG9zaXRpb24ueDtcbiAgICAgIHZhbHVlW2kgKyAxXSA9IHBvaW50LnBvc2l0aW9uLnk7XG4gICAgICB2YWx1ZVtpICsgMl0gPSBwb2ludC5wb3NpdGlvbi56O1xuICAgICAgaSArPSBzaXplO1xuICAgIH1cbiAgfVxuXG4gIGNhbGN1bGF0ZUluc3RhbmNlQ29sb3JzKGF0dHJpYnV0ZSkge1xuICAgIGNvbnN0IHtkYXRhfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge3ZhbHVlLCBzaXplfSA9IGF0dHJpYnV0ZTtcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yIChjb25zdCBwb2ludCBvZiBkYXRhKSB7XG4gICAgICB2YWx1ZVtpICsgMF0gPSBwb2ludC5jb2xvclswXTtcbiAgICAgIHZhbHVlW2kgKyAxXSA9IHBvaW50LmNvbG9yWzFdO1xuICAgICAgdmFsdWVbaSArIDJdID0gcG9pbnQuY29sb3JbMl07XG4gICAgICBpICs9IHNpemU7XG4gICAgfVxuICB9XG5cbiAgY2FsY3VsYXRlUmFkaXVzKCkge1xuICAgIC8vIHVzZSByYWRpdXMgaWYgc3BlY2lmaWVkXG4gICAgaWYgKHRoaXMucHJvcHMucmFkaXVzKSB7XG4gICAgICB0aGlzLnN0YXRlLnJhZGl1cyA9IHRoaXMucHJvcHMucmFkaXVzO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBpeGVsMCA9IHRoaXMucHJvamVjdCh7bG9uOiAtMTIyLCBsYXQ6IDM3LjV9KTtcbiAgICBjb25zdCBwaXhlbDEgPSB0aGlzLnByb2plY3Qoe2xvbjogLTEyMiwgbGF0OiAzNy41MDAyfSk7XG5cbiAgICBjb25zdCBkeCA9IHBpeGVsMC54IC0gcGl4ZWwxLng7XG4gICAgY29uc3QgZHkgPSBwaXhlbDAueSAtIHBpeGVsMS55O1xuXG4gICAgdGhpcy5zdGF0ZS5yYWRpdXMgPSBNYXRoLm1heChNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpLCAyLjApO1xuICB9XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvc2NhdHRlcnBsb3QtbGF5ZXIvc2NhdHRlcnBsb3QtbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFvQkE7Ozs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBTSxVQUFVLFFBQVEsU0FBUixDQUFoQjs7QUFFQSxJQUFNLGFBQWE7QUFDakIscUJBQW1CLEVBQUMsTUFBTSxDQUFQLEVBQVUsS0FBSyxHQUFmLEVBQW9CLEtBQUssR0FBekIsRUFBOEIsS0FBSyxRQUFuQyxFQURGO0FBRWpCLGtCQUFnQixFQUFDLE1BQU0sQ0FBUCxFQUFVLEtBQUssS0FBZixFQUFzQixLQUFLLE9BQTNCLEVBQW9DLEtBQUssTUFBekM7QUFGQyxDQUFuQjs7SUFLcUIsZ0I7Ozs7O3dCQUVLO0FBQ3RCLGFBQU8sVUFBUDtBQUNEOzs7Ozs7Ozs7Ozs7O0FBVUQsNEJBQVksS0FBWixFQUFtQjtBQUFBOztBQUFBLCtGQUNYLEtBRFc7QUFFbEI7Ozs7c0NBRWlCO0FBQUEsVUFDVCxFQURTLEdBQ0gsS0FBSyxLQURGLENBQ1QsRUFEUztBQUFBLFVBRVQsZ0JBRlMsR0FFVyxLQUFLLEtBRmhCLENBRVQsZ0JBRlM7OztBQUloQixXQUFLLFFBQUwsQ0FBYztBQUNaLGVBQU8sS0FBSyxRQUFMLENBQWMsRUFBZDtBQURLLE9BQWQ7O0FBSUEsdUJBQWlCLFlBQWpCLENBQThCLFVBQTlCLEVBQTBDO0FBQ3hDLDJCQUFtQixFQUFDLFFBQVEsS0FBSywwQkFBZCxFQURxQjtBQUV4Qyx3QkFBZ0IsRUFBQyxRQUFRLEtBQUssdUJBQWQ7QUFGd0IsT0FBMUM7QUFJRDs7OytCQUVVO0FBQ1QsV0FBSyxjQUFMO0FBQ0Q7OztxQ0FFZ0IsUSxFQUFVLFEsRUFBVTtBQUNuQyxtR0FBdUIsUUFBdkIsRUFBaUMsUUFBakM7QUFDQSxXQUFLLGNBQUw7QUFDRDs7OzZCQUVRLEUsRUFBSTtBQUNYLFVBQU0sZUFBZSxF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QUFXLE9BQU8sQ0FBN0I7QUFDQSxVQUFNLEtBQUssT0FBTyxDQUFQLEdBQVcsT0FBTyxDQUE3Qjs7QUFFQSxXQUFLLEtBQUwsQ0FBVyxNQUFYLEdBQW9CLEtBQUssR0FBTCxDQUFTLEtBQUssSUFBTCxDQUFVLEtBQUssRUFBTCxHQUFVLEtBQUssRUFBekIsQ0FBVCxFQUF1QyxHQUF2QyxDQUFwQjtBQUNEOzs7Ozs7a0JBbkhrQixnQiIsImZpbGUiOiJzY2F0dGVycGxvdC1sYXllci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxNSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBMYXllciBmcm9tICcuLi8uLi9sYXllcic7XG5pbXBvcnQge01vZGVsLCBQcm9ncmFtLCBHZW9tZXRyeX0gZnJvbSAnbHVtYS5nbCc7XG5jb25zdCBnbHNsaWZ5ID0gcmVxdWlyZSgnZ2xzbGlmeScpO1xuXG5jb25zdCBBVFRSSUJVVEVTID0ge1xuICBpbnN0YW5jZVBvc2l0aW9uczoge3NpemU6IDMsICcwJzogJ3gnLCAnMSc6ICd5JywgJzInOiAndW51c2VkJ30sXG4gIGluc3RhbmNlQ29sb3JzOiB7c2l6ZTogMywgJzAnOiAncmVkJywgJzEnOiAnZ3JlZW4nLCAnMic6ICdibHVlJ31cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYXR0ZXJwbG90TGF5ZXIgZXh0ZW5kcyBMYXllciB7XG5cbiAgc3RhdGljIGdldCBhdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiBBVFRSSUJVVEVTO1xuICB9XG5cbiAgLypcbiAgICogQGNsYXNzZGVzY1xuICAgKiBTY2F0dGVycGxvdExheWVyXG4gICAqXG4gICAqIEBjbGFzc1xuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnJhZGl1cyAtIHBvaW50IHJhZGl1c1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICBpbml0aWFsaXplU3RhdGUoKSB7XG4gICAgY29uc3Qge2dsfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qge2F0dHJpYnV0ZU1hbmFnZXJ9ID0gdGhpcy5zdGF0ZTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbW9kZWw6IHRoaXMuZ2V0TW9kZWwoZ2wpXG4gICAgfSk7XG5cbiAgICBhdHRyaWJ1dGVNYW5hZ2VyLmFkZEluc3RhbmNlZChBVFRSSUJVVEVTLCB7XG4gICAgICBpbnN0YW5jZVBvc2l0aW9uczoge3VwZGF0ZTogdGhpcy5jYWxjdWxhdGVJbnN0YW5jZVBvc2l0aW9uc30sXG4gICAgICBpbnN0YW5jZUNvbG9yczoge3VwZGF0ZTogdGhpcy5jYWxjdWxhdGVJbnN0YW5jZUNvbG9yc31cbiAgICB9KTtcbiAgfVxuXG4gIGRpZE1vdW50KCkge1xuICAgIHRoaXMudXBkYXRlVW5pZm9ybXMoKTtcbiAgfVxuXG4gIHdpbGxSZWNlaXZlUHJvcHMob2xkUHJvcHMsIG5ld1Byb3BzKSB7XG4gICAgc3VwZXIud2lsbFJlY2VpdmVQcm9wcyhvbGRQcm9wcywgbmV3UHJvcHMpO1xuICAgIHRoaXMudXBkYXRlVW5pZm9ybXMoKTtcbiAgfVxuXG4gIGdldE1vZGVsKGdsKSB7XG4gICAgY29uc3QgTlVNX1NFR01FTlRTID0gMTY7XG4gICAgY29uc3QgUEkyID0gTWF0aC5QSSAqIDI7XG5cbiAgICBsZXQgcG9zaXRpb25zID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOVU1fU0VHTUVOVFM7IGkrKykge1xuICAgICAgcG9zaXRpb25zID0gW1xuICAgICAgICAuLi5wb3NpdGlvbnMsXG4gICAgICAgIE1hdGguY29zKFBJMiAqIGkgLyBOVU1fU0VHTUVOVFMpLFxuICAgICAgICBNYXRoLnNpbihQSTIgKiBpIC8gTlVNX1NFR01FTlRTKSxcbiAgICAgICAgMFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1vZGVsKHtcbiAgICAgIHByb2dyYW06IG5ldyBQcm9ncmFtKGdsLCB7XG4gICAgICAgIHZzOiBnbHNsaWZ5KCcuL3NjYXR0ZXJwbG90LWxheWVyLXZlcnRleC5nbHNsJyksXG4gICAgICAgIGZzOiBnbHNsaWZ5KCcuL3NjYXR0ZXJwbG90LWxheWVyLWZyYWdtZW50Lmdsc2wnKSxcbiAgICAgICAgaWQ6ICdzY2F0dGVycGxvdCdcbiAgICAgIH0pLFxuICAgICAgZ2VvbWV0cnk6IG5ldyBHZW9tZXRyeSh7XG4gICAgICAgIGRyYXdNb2RlOiAnVFJJQU5HTEVfRkFOJyxcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9ucylcbiAgICAgIH0pLFxuICAgICAgaXNJbnN0YW5jZWQ6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVVuaWZvcm1zKCkge1xuICAgIHRoaXMuY2FsY3VsYXRlUmFkaXVzKCk7XG4gICAgY29uc3Qge3JhZGl1c30gPSB0aGlzLnN0YXRlO1xuICAgIHRoaXMuc2V0VW5pZm9ybXMoe1xuICAgICAgcmFkaXVzXG4gICAgfSk7XG4gIH1cblxuICBjYWxjdWxhdGVJbnN0YW5jZVBvc2l0aW9ucyhhdHRyaWJ1dGUpIHtcbiAgICBjb25zdCB7ZGF0YX0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHt2YWx1ZSwgc2l6ZX0gPSBhdHRyaWJ1dGU7XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAoY29uc3QgcG9pbnQgb2YgZGF0YSkge1xuICAgICAgdmFsdWVbaSArIDBdID0gcG9pbnQucG9zaXRpb24ueDtcbiAgICAgIHZhbHVlW2kgKyAxXSA9IHBvaW50LnBvc2l0aW9uLnk7XG4gICAgICB2YWx1ZVtpICsgMl0gPSBwb2ludC5wb3NpdGlvbi56O1xuICAgICAgaSArPSBzaXplO1xuICAgIH1cbiAgfVxuXG4gIGNhbGN1bGF0ZUluc3RhbmNlQ29sb3JzKGF0dHJpYnV0ZSkge1xuICAgIGNvbnN0IHtkYXRhfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge3ZhbHVlLCBzaXplfSA9IGF0dHJpYnV0ZTtcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yIChjb25zdCBwb2ludCBvZiBkYXRhKSB7XG4gICAgICB2YWx1ZVtpICsgMF0gPSBwb2ludC5jb2xvclswXTtcbiAgICAgIHZhbHVlW2kgKyAxXSA9IHBvaW50LmNvbG9yWzFdO1xuICAgICAgdmFsdWVbaSArIDJdID0gcG9pbnQuY29sb3JbMl07XG4gICAgICBpICs9IHNpemU7XG4gICAgfVxuICB9XG5cbiAgY2FsY3VsYXRlUmFkaXVzKCkge1xuICAgIC8vIHVzZSByYWRpdXMgaWYgc3BlY2lmaWVkXG4gICAgaWYgKHRoaXMucHJvcHMucmFkaXVzKSB7XG4gICAgICB0aGlzLnN0YXRlLnJhZGl1cyA9IHRoaXMucHJvcHMucmFkaXVzO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBpeGVsMCA9IHRoaXMucHJvamVjdCh7bG9uOiAtMTIyLCBsYXQ6IDM3LjV9KTtcbiAgICBjb25zdCBwaXhlbDEgPSB0aGlzLnByb2plY3Qoe2xvbjogLTEyMiwgbGF0OiAzNy41MDAyfSk7XG5cbiAgICBjb25zdCBkeCA9IHBpeGVsMC54IC0gcGl4ZWwxLng7XG4gICAgY29uc3QgZHkgPSBwaXhlbDAueSAtIHBpeGVsMS55O1xuXG4gICAgdGhpcy5zdGF0ZS5yYWRpdXMgPSBNYXRoLm1heChNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpLCAyLjApO1xuICB9XG5cbn1cbiJdfQ==

@@ -5,3 +5,3 @@ {

"license": "MIT",
"version": "2.2.0",
"version": "2.2.1",
"keywords": [

@@ -17,3 +17,3 @@ "webgl",

"type": "git",
"url": "https://github.com/uber-common/deck.gl.git"
"url": "https://github.com/uber/deck.gl.git"
},

@@ -98,3 +98,3 @@ "main": "index.js",

"lint": "eslint src",
"precommit": "npm run lint -s && npm run test",
"precommit": "npm test",
"prepublish": "npm run build",

@@ -101,0 +101,0 @@ "test": "npm run lint && npm run test-headless",

@@ -225,2 +225,9 @@ /* eslint-disable guard-for-in */

const attributeData = {
// Ensure that fields are present before Object.seal()
target: undefined,
isIndexed: false,
// Reserved for application
userData: {},
// Metadata

@@ -234,5 +241,2 @@ ...attribute,

// Reserved for application
userData: {},
// WebGL fields

@@ -242,4 +246,2 @@ size: attribute.size,

// buffer type
target: undefined,
..._extraProps

@@ -246,0 +248,0 @@ };

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc