New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

deck.gl

Package Overview
Dependencies
Maintainers
1
Versions
677
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 3.1.0-beta4 to 3.1.0-beta5

dist/react/autobind.js

6

CHANGELOG.md

@@ -24,2 +24,8 @@ # Change Log

#### [v3.1.0-beta5] -
- FIX: Disable viewport comparison (temporarily) as it broke `METERS` mode.
- CHANGE: Remove react-autobind dependency (deck.gl/react now includes a minimal
`autobind` implementation).
- NEW: Additional examples included, including (WIP) google maps.
#### [v3.1.0-beta4] -

@@ -26,0 +32,0 @@ - FIX: Restore `COORDINATE_SYSTEM` export

20

dist/lib/constants.js

@@ -6,10 +6,24 @@ "use strict";

});
// Note: The numeric values here are matched by shader code in the
// "project" and "project64" shader modules. Both places need to be
// updated.
// TODO: Maybe "POSITIONS" would be a better name?
var COORDINATE_SYSTEM = exports.COORDINATE_SYSTEM = {
// Positions are interpreted as [lng,lat,elevation], distances as meters
// Positions are interpreted as [lng, lat, elevation]
// lng lat are degrees, elevation is meters. distances as meters.
LNGLAT: 1.0,
// Positions are interpreted as lng lat offsets: [deltaLng, deltaLat, elevation]
// deltaLng, deltaLat are delta degrees, elevation is meters.
// distances as meters.
LNGLAT_OFFSETS: 3.0,
// Positions are interpreted as meter offsets, distances as meters
METER_OFFSETS: 2.0,
METERS: 2.0,
// Positions and distances are not transformed
// Positions and distances are not transformed: [x, y, z] in unit coordinates
IDENTITY: 0.0
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29uc3RhbnRzLmpzIl0sIm5hbWVzIjpbIkNPT1JESU5BVEVfU1lTVEVNIiwiTE5HTEFUIiwiTUVURVJTIiwiSURFTlRJVFkiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sSUFBTUEsZ0RBQW9CO0FBQy9CO0FBQ0FDLFVBQVEsR0FGdUI7QUFHL0I7QUFDQUMsVUFBUSxHQUp1QjtBQUsvQjtBQUNBQyxZQUFVO0FBTnFCLENBQTFCIiwiZmlsZSI6ImNvbnN0YW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDT09SRElOQVRFX1NZU1RFTSA9IHtcbiAgLy8gUG9zaXRpb25zIGFyZSBpbnRlcnByZXRlZCBhcyBbbG5nLGxhdCxlbGV2YXRpb25dLCBkaXN0YW5jZXMgYXMgbWV0ZXJzXG4gIExOR0xBVDogMS4wLFxuICAvLyBQb3NpdGlvbnMgYXJlIGludGVycHJldGVkIGFzIG1ldGVyIG9mZnNldHMsIGRpc3RhbmNlcyBhcyBtZXRlcnNcbiAgTUVURVJTOiAyLjAsXG4gIC8vIFBvc2l0aW9ucyBhbmQgZGlzdGFuY2VzIGFyZSBub3QgdHJhbnNmb3JtZWRcbiAgSURFTlRJVFk6IDAuMFxufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29uc3RhbnRzLmpzIl0sIm5hbWVzIjpbIkNPT1JESU5BVEVfU1lTVEVNIiwiTE5HTEFUIiwiTE5HTEFUX09GRlNFVFMiLCJNRVRFUl9PRkZTRVRTIiwiTUVURVJTIiwiSURFTlRJVFkiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBOztBQUVBO0FBQ08sSUFBTUEsZ0RBQW9CO0FBQy9CO0FBQ0E7QUFDQUMsVUFBUSxHQUh1Qjs7QUFLL0I7QUFDQTtBQUNBO0FBQ0FDLGtCQUFnQixHQVJlOztBQVUvQjtBQUNBQyxpQkFBZSxHQVhnQjtBQVkvQkMsVUFBUSxHQVp1Qjs7QUFjL0I7QUFDQUMsWUFBVTtBQWZxQixDQUExQiIsImZpbGUiOiJjb25zdGFudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOb3RlOiBUaGUgbnVtZXJpYyB2YWx1ZXMgaGVyZSBhcmUgbWF0Y2hlZCBieSBzaGFkZXIgY29kZSBpbiB0aGVcbi8vIFwicHJvamVjdFwiIGFuZCBcInByb2plY3Q2NFwiIHNoYWRlciBtb2R1bGVzLiBCb3RoIHBsYWNlcyBuZWVkIHRvIGJlXG4vLyB1cGRhdGVkLlxuXG4vLyBUT0RPOiBNYXliZSBcIlBPU0lUSU9OU1wiIHdvdWxkIGJlIGEgYmV0dGVyIG5hbWU/XG5leHBvcnQgY29uc3QgQ09PUkRJTkFURV9TWVNURU0gPSB7XG4gIC8vIFBvc2l0aW9ucyBhcmUgaW50ZXJwcmV0ZWQgYXMgW2xuZywgbGF0LCBlbGV2YXRpb25dXG4gIC8vIGxuZyBsYXQgYXJlIGRlZ3JlZXMsIGVsZXZhdGlvbiBpcyBtZXRlcnMuIGRpc3RhbmNlcyBhcyBtZXRlcnMuXG4gIExOR0xBVDogMS4wLFxuXG4gIC8vIFBvc2l0aW9ucyBhcmUgaW50ZXJwcmV0ZWQgYXMgbG5nIGxhdCBvZmZzZXRzOiBbZGVsdGFMbmcsIGRlbHRhTGF0LCBlbGV2YXRpb25dXG4gIC8vIGRlbHRhTG5nLCBkZWx0YUxhdCBhcmUgZGVsdGEgZGVncmVlcywgZWxldmF0aW9uIGlzIG1ldGVycy5cbiAgLy8gZGlzdGFuY2VzIGFzIG1ldGVycy5cbiAgTE5HTEFUX09GRlNFVFM6IDMuMCxcblxuICAvLyBQb3NpdGlvbnMgYXJlIGludGVycHJldGVkIGFzIG1ldGVyIG9mZnNldHMsIGRpc3RhbmNlcyBhcyBtZXRlcnNcbiAgTUVURVJfT0ZGU0VUUzogMi4wLFxuICBNRVRFUlM6IDIuMCxcblxuICAvLyBQb3NpdGlvbnMgYW5kIGRpc3RhbmNlcyBhcmUgbm90IHRyYW5zZm9ybWVkOiBbeCwgeSwgel0gaW4gdW5pdCBjb29yZGluYXRlc1xuICBJREVOVElUWTogMC4wXG59O1xuIl19

10

dist/lib/layer-manager.js

@@ -86,5 +86,9 @@ 'use strict';

(0, _assert2.default)(viewport instanceof _viewportMercatorProject.Viewport, 'Invalid viewport');
var oldViewport = this.context.viewport;
var viewportChanged = !oldViewport || !viewport.equals(oldViewport);
// TODO - viewport change detection breaks METER_OFFSETS mode
// const oldViewport = this.context.viewport;
// const viewportChanged = !oldViewport || !viewport.equals(oldViewport);
var viewportChanged = true;
if (viewportChanged) {

@@ -541,2 +545,2 @@ Object.assign(this.oldContext, this.context);

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbGF5ZXItbWFuYWdlci5qcyJdLCJuYW1lcyI6WyJMYXllck1hbmFnZXIiLCJnbCIsInByZXZMYXllcnMiLCJsYXllcnMiLCJkcmV3TGF5ZXJzIiwib2xkQ29udGV4dCIsImNvbnRleHQiLCJ1bmlmb3JtcyIsInZpZXdwb3J0Iiwidmlld3BvcnRDaGFuZ2VkIiwicGlja2luZ0ZCTyIsInJlZHJhd05lZWRlZCIsIk9iamVjdCIsInNlYWwiLCJvbGRWaWV3cG9ydCIsImVxdWFscyIsImFzc2lnbiIsIm5ld0xheWVycyIsImZpbHRlciIsIm5ld0xheWVyIiwibGF5ZXIiLCJfdXBkYXRlTGF5ZXJzIiwib2xkTGF5ZXJzIiwiZXJyb3IiLCJnZW5lcmF0ZWRMYXllcnMiLCJ4IiwieSIsIm1vZGUiLCJjYW52YXMiLCJ3aWR0aCIsImhlaWdodCIsInJlbmRlclBpY2tpbmdCdWZmZXIiLCJwaWNraW5nX3VFbmFibGUiLCJjbGVhclJlZHJhd0ZsYWdzIiwicmVkcmF3IiwibGVuZ3RoIiwiZ2V0TmVlZHNSZWRyYXciLCJvbGRMYXllck1hcCIsIm9sZExheWVyIiwiaWQiLCJvbmNlIiwibGF5ZXJOYW1lIiwiX21hdGNoU3VibGF5ZXJzIiwiZXJyb3IyIiwiX2ZpbmFsaXplT2xkTGF5ZXJzIiwiZmlyc3RFcnJvciIsIl90cmFuc2ZlckxheWVyU3RhdGUiLCJfdXBkYXRlTGF5ZXIiLCJfaW5pdGlhbGl6ZU5ld0xheWVyIiwicHVzaCIsInN1YmxheWVycyIsInJlbmRlckxheWVycyIsIkFycmF5IiwiaXNBcnJheSIsImVyciIsInN0YXRlIiwicHJvcHMiLCJtb2RlbCIsInVzZXJEYXRhIiwib2xkUHJvcHMiLCJfZmluYWxpemVMYXllciIsImluaXRpYWxpemVMYXllciIsImNoYW5nZUZsYWdzIiwiZGlmZlByb3BzIiwidXBkYXRlTGF5ZXIiLCJmaW5hbGl6ZUxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QyxFQUM4RGtDLEdBRDlEO0FBRUE7QUFDQS9CLGtCQUFRK0IsR0FBUjtBQUNEO0FBQ0RsQyxjQUFNbUMsS0FBTixHQUFjLElBQWQ7QUFDQSx3QkFBSSxDQUFKLGtCQUFxQmQsVUFBVXJCLEtBQVYsQ0FBckI7QUFDRDtBQUNELGFBQU9HLEtBQVA7QUFDRDs7Ozs7O2tCQS9Ta0J2QixZOzs7QUFrVHJCLFNBQVN5QyxTQUFULENBQW1CckIsS0FBbkIsRUFBMEI7QUFDeEIsTUFBSUEsZ0NBQUosRUFBNEI7QUFDMUIsZ0JBQVVBLEtBQVY7QUFDRDtBQUNELFNBQU8sQ0FBQ0EsS0FBRCxHQUFTLFlBQVQsR0FBd0IsZUFBL0I7QUFDRCIsImZpbGUiOiJsYXllci1tYW5hZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBJTUxFTUVOVEFUSU9OIE5PVEVTOiBXaHkgbmV3IGxheWVycyBhcmUgY3JlYXRlZCBvbiBldmVyeSByZW5kZXJcbi8vXG4vLyBUaGUga2V5IGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVjbGFyYXRpdmUgLyBmdW5jdGlvbmFsXG4vLyBwcm9ncmFtbWluZyBuYXR1cmUgb2YgXCJyZWFjdGl2ZVwiIGFwcGxpY2F0aW9ucy5cbi8vXG4vLyAtIEluIGEgcmVhY3RpdmUgYXBwbGljYXRpb24sIHRoZSBlbnRpcmUgXCJVSSB0cmVlXCJcbi8vICAgaXMgcmUtcmVuZGVyZWQgZXZlcnkgdGltZSBzb21ldGhpbmcgaW4gdGhlIGFwcGxpY2F0aW9uIGNoYW5nZXMuXG4vL1xuLy8gLSBUaGUgVUkgZnJhbWV3b3JrIChzdWNoIGFzIFJlYWN0IG9yIGRlY2suZ2wpIHRoZW4gZGlmZnMgdGhlIHJlbmRlcmVkXG4vLyAgIHRyZWUgb2YgVUkgZWxlbWVudHMgKFJlYWN0IEVsZW1lbnRzIG9yIGRlY2suZ2wgTGF5ZXJzKSBhZ2FpbnN0IHRoZVxuLy8gICBwcmV2aW91c2x5IHRyZWUgYW5kIG1ha2VzIG9wdGltaXplZCBjaGFuZ2VzICh0byB0aGUgRE9NIG9yIHRvIFdlYkdMIHN0YXRlKS5cbi8vXG4vLyAtIERlY2suZ2wgbGF5ZXJzIGFyZSBub3QgYmFzZWQgb24gUmVhY3QuXG4vLyAgIEJ1dCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gd3JhcCBkZWNrLmdsIGxheWVycyBpbiBSZWFjdCBjb21wb25lbnRzIHRvXG4vLyAgIGVuYWJsZSB1c2Ugb2YgSlNYLlxuLy9cbi8vIFRoZSBkZWNrLmdsIG1vZGVsIHRoYXQgZm9yIHRoZSBhcHAgY3JlYXRlcyBhIG5ldyBzZXQgb2Ygb24gbGF5ZXJzIG9uIGV2ZXJ5XG4vLyByZW5kZXIuXG4vLyBJbnRlcm5hbGx5LCB0aGUgbmV3IGxheWVycyBhcmUgZWZmaWNpZW50bHkgbWF0Y2hlZCBhZ2FpbnN0IGV4aXN0aW5nIGxheWVyc1xuLy8gdXNpbmcgbGF5ZXIgaWRzLlxuLy9cbi8vIEFsbCBjYWxjdWxhdGVkIHN0YXRlIChwcm9ncmFtcywgYXR0cmlidXRlcyBldGMpIGFyZSBzdG9yZWQgaW4gYSBzdGF0ZSBvYmplY3Rcbi8vIGFuZCB0aGlzIHN0YXRlIG9iamVjdCBpcyBtb3ZlZCBmb3J3YXJkIHRvIHRoZSBtYXRjaCBsYXllciBvbiBldmVyeSByZW5kZXJcbi8vIGN5Y2xlLiAgVGhlIG5ldyBsYXllciBlbmRzIHVwIHdpdGggdGhlIHN0YXRlIG9mIHRoZSBvbGQgbGF5ZXIgKGFuZCB0aGVcbi8vIHByb3BzIG9mIHRoZSBuZXcgbGF5ZXIpLCB3aGlsZSB0aGUgb2xkIGxheWVyIGlzIHNpbXBseSBkaXNjYXJkZWQgZm9yXG4vLyBnYXJiYWdlIGNvbGxlY2lvbi5cbi8vXG4vKiBlc2xpbnQtZGlzYWJsZSBuby10cnktY2F0Y2ggKi9cbmltcG9ydCBMYXllciBmcm9tICcuL2xheWVyJztcbmltcG9ydCB7bG9nfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7ZHJhd0xheWVycywgcGlja0xheWVyc30gZnJvbSAnLi9kcmF3LWFuZC1waWNrJztcbmltcG9ydCB7Vmlld3BvcnR9IGZyb20gJ3ZpZXdwb3J0LW1lcmNhdG9yLXByb2plY3QnO1xuaW1wb3J0IHtGcmFtZWJ1ZmZlck9iamVjdH0gZnJvbSAnbHVtYS5nbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExheWVyTWFuYWdlciB7XG4gIGNvbnN0cnVjdG9yKHtnbH0pIHtcbiAgICB0aGlzLnByZXZMYXllcnMgPSBbXTtcbiAgICB0aGlzLmxheWVycyA9IFtdO1xuICAgIC8vIFRyYWNrcyBpZiBhbnkgbGF5ZXJzIHdlcmUgZHJhd24gbGFzdCB1cGRhdGVcbiAgICAvLyBOZWVkZWQgdG8gZW5zdXJlIHRoYXQgc2NyZWVuIGlzIGNsZWFyZWQgd2hlbiBubyBsYXllcnMgYXJlIHNob3duXG4gICAgdGhpcy5kcmV3TGF5ZXJzID0gZmFsc2U7XG4gICAgdGhpcy5vbGRDb250ZXh0ID0ge307XG4gICAgdGhpcy5jb250ZXh0ID0ge1xuICAgICAgZ2wsXG4gICAgICB1bmlmb3Jtczoge30sXG4gICAgICB2aWV3cG9ydDogbnVsbCxcbiAgICAgIHZpZXdwb3J0Q2hhbmdlZDogdHJ1ZSxcbiAgICAgIHBpY2tpbmdGQk86IG51bGxcbiAgICB9O1xuICAgIHRoaXMucmVkcmF3TmVlZGVkID0gdHJ1ZTtcbiAgICBPYmplY3Quc2VhbCh0aGlzLmNvbnRleHQpO1xuICB9XG5cbiAgc2V0Vmlld3BvcnQodmlld3BvcnQpIHtcbiAgICBhc3NlcnQodmlld3BvcnQgaW5zdGFuY2VvZiBWaWV3cG9ydCwgJ0ludmFsaWQgdmlld3BvcnQnKTtcbiAgICBjb25zdCBvbGRWaWV3cG9ydCA9IHRoaXMuY29udGV4dC52aWV3cG9ydDtcbiAgICBjb25zdCB2aWV3cG9ydENoYW5nZWQgPSAhb2xkVmlld3BvcnQgfHwgIXZpZXdwb3J0LmVxdWFscyhvbGRWaWV3cG9ydCk7XG5cbiAgICBpZiAodmlld3BvcnRDaGFuZ2VkKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMub2xkQ29udGV4dCwgdGhpcy5jb250ZXh0KTtcbiAgICAgIHRoaXMuY29udGV4dC52aWV3cG9ydCA9IHZpZXdwb3J0O1xuICAgICAgdGhpcy5jb250ZXh0LnZpZXdwb3J0Q2hhbmdlZCA9IHRydWU7XG4gICAgICB0aGlzLmNvbnRleHQudW5pZm9ybXMgPSB7fTtcbiAgICAgIGxvZyg0LCB2aWV3cG9ydCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVMYXllcnMoe25ld0xheWVyc30pIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIGFzc2VydCh0aGlzLmNvbnRleHQudmlld3BvcnQsXG4gICAgICAnTGF5ZXJNYW5hZ2VyLnVwZGF0ZUxheWVyczogdmlld3BvcnQgbm90IHNldCcpO1xuXG4gICAgLy8gRmlsdGVyIG91dCBhbnkgbnVsbCBsYXllcnNcbiAgICBuZXdMYXllcnMgPSBuZXdMYXllcnMuZmlsdGVyKG5ld0xheWVyID0+IG5ld0xheWVyICE9PSBudWxsKTtcblxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbmV3TGF5ZXJzKSB7XG4gICAgICBsYXllci5jb250ZXh0ID0gdGhpcy5jb250ZXh0O1xuICAgIH1cblxuICAgIHRoaXMucHJldkxheWVycyA9IHRoaXMubGF5ZXJzO1xuICAgIGNvbnN0IHtlcnJvciwgZ2VuZXJhdGVkTGF5ZXJzfSA9IHRoaXMuX3VwZGF0ZUxheWVycyh7XG4gICAgICBvbGRMYXllcnM6IHRoaXMucHJldkxheWVycyxcbiAgICAgIG5ld0xheWVyc1xuICAgIH0pO1xuXG4gICAgdGhpcy5sYXllcnMgPSBnZW5lcmF0ZWRMYXllcnM7XG4gICAgLy8gVGhyb3cgZmlyc3QgZXJyb3IgZm91bmQsIGlmIGFueVxuICAgIGlmIChlcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZHJhd0xheWVycygpIHtcbiAgICBhc3NlcnQodGhpcy5jb250ZXh0LnZpZXdwb3J0LCAnTGF5ZXJNYW5hZ2VyLmRyYXdMYXllcnM6IHZpZXdwb3J0IG5vdCBzZXQnKTtcblxuICAgIGRyYXdMYXllcnMoe2xheWVyczogdGhpcy5sYXllcnN9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcGlja0xheWVyKHt4LCB5LCBtb2RlfSkge1xuICAgIGNvbnN0IHtnbCwgdW5pZm9ybXN9ID0gdGhpcy5jb250ZXh0O1xuXG4gICAgLy8gU2V0IHVwIGEgZnJhbWUgYnVmZmVyIGlmIG5lZWRlZFxuICAgIGlmICh0aGlzLmNvbnRleHQucGlja2luZ0ZCTyA9PT0gbnVsbCB8fFxuICAgICAgZ2wuY2FudmFzLndpZHRoICE9PSB0aGlzLmNvbnRleHQucGlja2luZ0ZCTy53aWR0aCB8fFxuICAgICAgZ2wuY2FudmFzLmhlaWdodCAhPT0gdGhpcy5jb250ZXh0LnBpY2tpbmdGQk8uaGVpZ2h0KSB7XG4gICAgICB0aGlzLmNvbnRleHQucGlja2luZ0ZCTyA9IG5ldyBGcmFtZWJ1ZmZlck9iamVjdChnbCwge1xuICAgICAgICB3aWR0aDogZ2wuY2FudmFzLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGdsLmNhbnZhcy5oZWlnaHRcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcGlja0xheWVycyhnbCwge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICB1bmlmb3Jtczoge1xuICAgICAgICByZW5kZXJQaWNraW5nQnVmZmVyOiB0cnVlLFxuICAgICAgICBwaWNraW5nX3VFbmFibGU6IHRydWVcbiAgICAgIH0sXG4gICAgICBsYXllcnM6IHRoaXMubGF5ZXJzLFxuICAgICAgbW9kZSxcbiAgICAgIHBpY2tpbmdGQk86IHRoaXMuY29udGV4dC5waWNraW5nRkJPXG4gICAgfSk7XG4gIH1cblxuICBuZWVkc1JlZHJhdyh7Y2xlYXJSZWRyYXdGbGFncyA9IGZhbHNlfSA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQudmlld3BvcnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcmVkcmF3ID0gZmFsc2U7XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhhdCBidWZmZXIgaXMgY2xlYXJlZCBvbmNlIHdoZW4gbGF5ZXIgbGlzdCBiZWNvbWVzIGVtcHR5XG4gICAgaWYgKHRoaXMubGF5ZXJzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmRyZXdMYXllcnMpIHtcbiAgICAgIHJlZHJhdyA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZWRyYXdOZWVkZWQpIHtcbiAgICAgIHRoaXMucmVkcmF3TmVlZGVkID0gZmFsc2U7XG4gICAgICByZWRyYXcgPSB0cnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5sYXllcnMpIHtcbiAgICAgIHJlZHJhdyA9IHJlZHJhdyB8fCBsYXllci5nZXROZWVkc1JlZHJhdyh7Y2xlYXJSZWRyYXdGbGFnc30pO1xuICAgICAgdGhpcy5kcmV3TGF5ZXJzID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZHJhdztcbiAgfVxuXG4gIC8vIFBSSVZBVEUgTUVUSE9EU1xuXG4gIC8vIE1hdGNoIGFsbCBsYXllcnMsIGNoZWNraW5nIGZvciBjYXVnaHQgZXJyb3JzXG4gIC8vIFRvIGF2b2lkIGhhdmluZyBhbiBleGNlcHRpb24gaW4gb25lIGxheWVyIGRpc3J1cHQgb3RoZXIgbGF5ZXJzXG4gIF91cGRhdGVMYXllcnMoe29sZExheWVycywgbmV3TGF5ZXJzfSkge1xuICAgIC8vIENyZWF0ZSBvbGQgbGF5ZXIgbWFwXG4gICAgY29uc3Qgb2xkTGF5ZXJNYXAgPSB7fTtcbiAgICBmb3IgKGNvbnN0IG9sZExheWVyIG9mIG9sZExheWVycykge1xuICAgICAgaWYgKG9sZExheWVyTWFwW29sZExheWVyLmlkXSkge1xuICAgICAgICBsb2cub25jZSgwLCBgTXVsdGlwZSBvbGQgbGF5ZXJzIHdpdGggc2FtZSBpZCAke2xheWVyTmFtZShvbGRMYXllcil9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMYXllck1hcFtvbGRMYXllci5pZF0gPSBvbGRMYXllcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGxvY2F0ZSBhcnJheSBmb3IgZ2VuZXJhdGVkIGxheWVyc1xuICAgIGNvbnN0IGdlbmVyYXRlZExheWVycyA9IFtdO1xuXG4gICAgLy8gTWF0Y2ggc3VibGF5ZXJzXG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLl9tYXRjaFN1YmxheWVycyh7XG4gICAgICBuZXdMYXllcnMsIG9sZExheWVyTWFwLCBnZW5lcmF0ZWRMYXllcnNcbiAgICB9KTtcblxuICAgIGNvbnN0IGVycm9yMiA9IHRoaXMuX2ZpbmFsaXplT2xkTGF5ZXJzKG9sZExheWVycyk7XG4gICAgY29uc3QgZmlyc3RFcnJvciA9IGVycm9yIHx8IGVycm9yMjtcbiAgICByZXR1cm4ge2Vycm9yOiBmaXJzdEVycm9yLCBnZW5lcmF0ZWRMYXllcnN9O1xuICB9XG5cbiAgLyogZXNsaW50LWRpc2FibGUgbWF4LXN0YXRlbWVudHMgKi9cbiAgX21hdGNoU3VibGF5ZXJzKHtuZXdMYXllcnMsIG9sZExheWVyTWFwLCBnZW5lcmF0ZWRMYXllcnN9KSB7XG4gICAgLy8gRmlsdGVyIG91dCBhbnkgbnVsbCBsYXllcnNcbiAgICBuZXdMYXllcnMgPSBuZXdMYXllcnMuZmlsdGVyKG5ld0xheWVyID0+IG5ld0xheWVyICE9PSBudWxsKTtcblxuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgZm9yIChjb25zdCBuZXdMYXllciBvZiBuZXdMYXllcnMpIHtcbiAgICAgIG5ld0xheWVyLmNvbnRleHQgPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIDEuIGdpdmVuIGEgbmV3IGNvbWluZyBsYXllciwgZmluZCBpdHMgbWF0Y2hpbmcgbGF5ZXJcbiAgICAgICAgY29uc3Qgb2xkTGF5ZXIgPSBvbGRMYXllck1hcFtuZXdMYXllci5pZF07XG4gICAgICAgIG9sZExheWVyTWFwW25ld0xheWVyLmlkXSA9IG51bGw7XG5cbiAgICAgICAgaWYgKG9sZExheWVyID09PSBudWxsKSB7XG4gICAgICAgICAgbG9nLm9uY2UoMCwgYE11bHRpcGUgbmV3IGxheWVycyB3aXRoIHNhbWUgaWQgJHtsYXllck5hbWUobmV3TGF5ZXIpfWApO1xuICAgICAgICB9XG5cblxuICAgICAgICAvLyBPbmx5IHRyYW5zZmVyIHN0YXRlIGF0IHRoaXMgc3RhZ2UuIFdlIG11c3Qgbm90IGdlbmVyYXRlIGV4Y2VwdGlvbnNcbiAgICAgICAgLy8gdW50aWwgYWxsIGxheWVycycgc3RhdGUgaGF2ZSBiZWVuIHRyYW5zZmVycmVkXG4gICAgICAgIGlmIChvbGRMYXllcikge1xuICAgICAgICAgIGxvZygzLCBgbWF0Y2hlZCAke2xheWVyTmFtZShuZXdMYXllcil9YCwgb2xkTGF5ZXIsICc9PicsIG5ld0xheWVyKTtcbiAgICAgICAgICB0aGlzLl90cmFuc2ZlckxheWVyU3RhdGUob2xkTGF5ZXIsIG5ld0xheWVyKTtcbiAgICAgICAgICB0aGlzLl91cGRhdGVMYXllcihuZXdMYXllcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZU5ld0xheWVyKG5ld0xheWVyKTtcbiAgICAgICAgfVxuICAgICAgICBnZW5lcmF0ZWRMYXllcnMucHVzaChuZXdMYXllcik7XG5cbiAgICAgICAgLy8gQ2FsbCBsYXllciBsaWZlY3ljbGUgbWV0aG9kOiByZW5kZXIgc3VibGF5ZXJzXG4gICAgICAgIGxldCBzdWJsYXllcnMgPSBuZXdMYXllci5yZW5kZXJMYXllcnMoKTtcbiAgICAgICAgLy8gRW5kIGxheWVyIGxpZmVjeWNsZSBtZXRob2Q6IHJlbmRlciBzdWJsYXllcnNcblxuICAgICAgICBpZiAoc3VibGF5ZXJzKSB7XG4gICAgICAgICAgc3VibGF5ZXJzID0gQXJyYXkuaXNBcnJheShzdWJsYXllcnMpID8gc3VibGF5ZXJzIDogW3N1YmxheWVyc107XG4gICAgICAgICAgdGhpcy5fbWF0Y2hTdWJsYXllcnMoe1xuICAgICAgICAgICAgbmV3TGF5ZXJzOiBzdWJsYXllcnMsXG4gICAgICAgICAgICBvbGRMYXllck1hcCxcbiAgICAgICAgICAgIGdlbmVyYXRlZExheWVyc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nLm9uY2UoMCxcbiAgICAgICAgICBgZGVjay5nbCBlcnJvciBkdXJpbmcgbWF0Y2hpbmcgb2YgJHtsYXllck5hbWUobmV3TGF5ZXIpfSAke2Vycn1gLCBlcnIpO1xuICAgICAgICAvLyBTYXZlIGZpcnN0IGVycm9yXG4gICAgICAgIGVycm9yID0gZXJyb3IgfHwgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cblxuICBfdHJhbnNmZXJMYXllclN0YXRlKG9sZExheWVyLCBuZXdMYXllcikge1xuICAgIGNvbnN0IHtzdGF0ZSwgcHJvcHN9ID0gb2xkTGF5ZXI7XG5cbiAgICAvLyBzYW5pdHkgY2hlY2tcbiAgICBhc3NlcnQoc3RhdGUsICdkZWNrLmdsIHNhbml0eSBjaGVjayAtIE1hdGNoaW5nIGxheWVyIGhhcyBubyBzdGF0ZScpO1xuICAgIGFzc2VydChvbGRMYXllciAhPT0gbmV3TGF5ZXIsICdkZWNrLmdsIHNhbml0eSBjaGVjayAtIE1hdGNoaW5nIGxheWVyIGlzIHNhbWUnKTtcblxuICAgIC8vIE1vdmUgc3RhdGVcbiAgICBuZXdMYXllci5zdGF0ZSA9IHN0YXRlO1xuICAgIHN0YXRlLmxheWVyID0gbmV3TGF5ZXI7XG5cbiAgICAvLyBVcGRhdGUgbW9kZWwgbGF5ZXIgcmVmZXJlbmNlXG4gICAgaWYgKHN0YXRlLm1vZGVsKSB7XG4gICAgICBzdGF0ZS5tb2RlbC51c2VyRGF0YS5sYXllciA9IG5ld0xheWVyO1xuICAgIH1cbiAgICAvLyBLZWVwIGEgdGVtcG9yYXJ5IHJlZiB0byB0aGUgb2xkIHByb3BzLCBmb3IgcHJvcCBjb21wYXJpc29uXG4gICAgbmV3TGF5ZXIub2xkUHJvcHMgPSBwcm9wcztcbiAgICBvbGRMYXllci5zdGF0ZSA9IG51bGw7XG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIG9sZCBsYXllcnMgdGhhdCB3ZXJlIG5vdCBtYXRjaGVkXG4gIF9maW5hbGl6ZU9sZExheWVycyhvbGRMYXllcnMpIHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIC8vIFVubWF0Y2hlZCBsYXllcnMgc3RpbGwgaGF2ZSBzdGF0ZSwgaXQgd2lsbCBiZSBkaXNjYXJkZWRcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIG9sZExheWVycykge1xuICAgICAgaWYgKGxheWVyLnN0YXRlKSB7XG4gICAgICAgIGVycm9yID0gZXJyb3IgfHwgdGhpcy5fZmluYWxpemVMYXllcihsYXllcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuXG4gIC8vIEluaXRpYWxpemVzIGEgc2luZ2xlIGxheWVyLCBjYWxsaW5nIGxheWVyIG1ldGhvZHNcbiAgX2luaXRpYWxpemVOZXdMYXllcihsYXllcikge1xuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgLy8gQ2hlY2sgaWYgbmV3IGxheWVyLCBhbmQgaW5pdGlhbGl6ZSBpdCdzIHN0YXRlXG4gICAgaWYgKCFsYXllci5zdGF0ZSkge1xuICAgICAgbG9nKDEsIGBpbml0aWFsaXppbmcgJHtsYXllck5hbWUobGF5ZXIpfWApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbGF5ZXIuaW5pdGlhbGl6ZUxheWVyKHtcbiAgICAgICAgICBvbGRQcm9wczoge30sXG4gICAgICAgICAgcHJvcHM6IGxheWVyLnByb3BzLFxuICAgICAgICAgIG9sZENvbnRleHQ6IHRoaXMub2xkQ29udGV4dCxcbiAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHQsXG4gICAgICAgICAgY2hhbmdlRmxhZ3M6IGxheWVyLmRpZmZQcm9wcyh7fSwgbGF5ZXIucHJvcHMsIHRoaXMuY29udGV4dClcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nLm9uY2UoMCwgYGRlY2suZ2wgZXJyb3IgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9mICR7bGF5ZXJOYW1lKGxheWVyKX0gJHtlcnJ9YCwgZXJyKTtcbiAgICAgICAgLy8gU2F2ZSBmaXJzdCBlcnJvclxuICAgICAgICBlcnJvciA9IGVycm9yIHx8IGVycjtcbiAgICAgIH1cbiAgICAgIC8vIFNldCBiYWNrIHBvaW50ZXIgKHVzZWQgaW4gcGlja2luZylcbiAgICAgIGlmIChsYXllci5zdGF0ZSkge1xuICAgICAgICBsYXllci5zdGF0ZS5sYXllciA9IGxheWVyO1xuICAgICAgICAvLyBTYXZlIGxheWVyIG9uIG1vZGVsIGZvciBwaWNraW5nIHB1cnBvc2VzXG4gICAgICAgIC8vIFRPRE8gLSBzdG9yZSBvbiBtb2RlbC51c2VyRGF0YSByYXRoZXIgdGhhbiBkaXJlY3RseSBvbiBtb2RlbFxuICAgICAgfVxuICAgICAgaWYgKGxheWVyLnN0YXRlICYmIGxheWVyLnN0YXRlLm1vZGVsKSB7XG4gICAgICAgIGxheWVyLnN0YXRlLm1vZGVsLnVzZXJEYXRhLmxheWVyID0gbGF5ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuXG4gIC8vIFVwZGF0ZXMgYSBzaW5nbGUgbGF5ZXIsIGNhbGxpbmcgbGF5ZXIgbWV0aG9kc1xuICBfdXBkYXRlTGF5ZXIobGF5ZXIpIHtcbiAgICBjb25zdCB7b2xkUHJvcHMsIHByb3BzfSA9IGxheWVyO1xuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgaWYgKG9sZFByb3BzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsYXllci51cGRhdGVMYXllcih7XG4gICAgICAgICAgb2xkUHJvcHMsXG4gICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LFxuICAgICAgICAgIG9sZENvbnRleHQ6IHRoaXMub2xkQ29udGV4dCxcbiAgICAgICAgICBjaGFuZ2VGbGFnczogbGF5ZXIuZGlmZlByb3BzKG9sZFByb3BzLCBsYXllci5wcm9wcywgdGhpcy5jb250ZXh0KVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2cub25jZSgwLCBgZGVjay5nbCBlcnJvciBkdXJpbmcgdXBkYXRlIG9mICR7bGF5ZXJOYW1lKGxheWVyKX1gLCBlcnIpO1xuICAgICAgICAvLyBTYXZlIGZpcnN0IGVycm9yXG4gICAgICAgIGVycm9yID0gZXJyO1xuICAgICAgfVxuICAgICAgbG9nKDIsIGB1cGRhdGluZyAke2xheWVyTmFtZShsYXllcil9YCk7XG4gICAgfVxuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuXG4gIC8vIEZpbmFsaXplcyBhIHNpbmdsZSBsYXllclxuICBfZmluYWxpemVMYXllcihsYXllcikge1xuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgY29uc3Qge3N0YXRlfSA9IGxheWVyO1xuICAgIGlmIChzdGF0ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbGF5ZXIuZmluYWxpemVMYXllcigpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZy5vbmNlKDAsXG4gICAgICAgICAgYGRlY2suZ2wgZXJyb3IgZHVyaW5nIGZpbmFsaXphdGlvbiBvZiAke2xheWVyTmFtZShsYXllcil9YCwgZXJyKTtcbiAgICAgICAgLy8gU2F2ZSBmaXJzdCBlcnJvclxuICAgICAgICBlcnJvciA9IGVycjtcbiAgICAgIH1cbiAgICAgIGxheWVyLnN0YXRlID0gbnVsbDtcbiAgICAgIGxvZygxLCBgZmluYWxpemluZyAke2xheWVyTmFtZShsYXllcil9YCk7XG4gICAgfVxuICAgIHJldHVybiBlcnJvcjtcbiAgfVxufVxuXG5mdW5jdGlvbiBsYXllck5hbWUobGF5ZXIpIHtcbiAgaWYgKGxheWVyIGluc3RhbmNlb2YgTGF5ZXIpIHtcbiAgICByZXR1cm4gYCR7bGF5ZXJ9YDtcbiAgfVxuICByZXR1cm4gIWxheWVyID8gJ251bGwgbGF5ZXInIDogJ2ludmFsaWQgbGF5ZXInO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbGF5ZXItbWFuYWdlci5qcyJdLCJuYW1lcyI6WyJMYXllck1hbmFnZXIiLCJnbCIsInByZXZMYXllcnMiLCJsYXllcnMiLCJkcmV3TGF5ZXJzIiwib2xkQ29udGV4dCIsImNvbnRleHQiLCJ1bmlmb3JtcyIsInZpZXdwb3J0Iiwidmlld3BvcnRDaGFuZ2VkIiwicGlja2luZ0ZCTyIsInJlZHJhd05lZWRlZCIsIk9iamVjdCIsInNlYWwiLCJhc3NpZ24iLCJuZXdMYXllcnMiLCJmaWx0ZXIiLCJuZXdMYXllciIsImxheWVyIiwiX3VwZGF0ZUxheWVycyIsIm9sZExheWVycyIsImVycm9yIiwiZ2VuZXJhdGVkTGF5ZXJzIiwieCIsInkiLCJtb2RlIiwiY2FudmFzIiwid2lkdGgiLCJoZWlnaHQiLCJyZW5kZXJQaWNraW5nQnVmZmVyIiwicGlja2luZ191RW5hYmxlIiwiY2xlYXJSZWRyYXdGbGFncyIsInJlZHJhdyIsImxlbmd0aCIsImdldE5lZWRzUmVkcmF3Iiwib2xkTGF5ZXJNYXAiLCJvbGRMYXllciIsImlkIiwib25jZSIsImxheWVyTmFtZSIsIl9tYXRjaFN1YmxheWVycyIsImVycm9yMiIsIl9maW5hbGl6ZU9sZExheWVycyIsImZpcnN0RXJyb3IiLCJfdHJhbnNmZXJMYXllclN0YXRlIiwiX3VwZGF0ZUxheWVyIiwiX2luaXRpYWxpemVOZXdMYXllciIsInB1c2giLCJzdWJsYXllcnMiLCJyZW5kZXJMYXllcnMiLCJBcnJheSIsImlzQXJyYXkiLCJlcnIiLCJzdGF0ZSIsInByb3BzIiwibW9kZWwiLCJ1c2VyRGF0YSIsIm9sZFByb3BzIiwiX2ZpbmFsaXplTGF5ZXIiLCJpbml0aWFsaXplTGF5ZXIiLCJjaGFuZ2VGbGFncyIsImRpZmZQcm9wcyIsInVwZGF0ZUxheWVyIiwiZmluYWxpemVMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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cUJkLFVBQVVyQixLQUFWLENBQXJCO0FBQ0Q7QUFDRCxhQUFPRyxLQUFQO0FBQ0Q7Ozs7OztrQkFuVGtCckIsWTs7O0FBc1RyQixTQUFTdUMsU0FBVCxDQUFtQnJCLEtBQW5CLEVBQTBCO0FBQ3hCLE1BQUlBLGdDQUFKLEVBQTRCO0FBQzFCLGdCQUFVQSxLQUFWO0FBQ0Q7QUFDRCxTQUFPLENBQUNBLEtBQUQsR0FBUyxZQUFULEdBQXdCLGVBQS9CO0FBQ0QiLCJmaWxlIjoibGF5ZXItbWFuYWdlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gSU1MRU1FTlRBVElPTiBOT1RFUzogV2h5IG5ldyBsYXllcnMgYXJlIGNyZWF0ZWQgb24gZXZlcnkgcmVuZGVyXG4vL1xuLy8gVGhlIGtleSBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlY2xhcmF0aXZlIC8gZnVuY3Rpb25hbFxuLy8gcHJvZ3JhbW1pbmcgbmF0dXJlIG9mIFwicmVhY3RpdmVcIiBhcHBsaWNhdGlvbnMuXG4vL1xuLy8gLSBJbiBhIHJlYWN0aXZlIGFwcGxpY2F0aW9uLCB0aGUgZW50aXJlIFwiVUkgdHJlZVwiXG4vLyAgIGlzIHJlLXJlbmRlcmVkIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIGluIHRoZSBhcHBsaWNhdGlvbiBjaGFuZ2VzLlxuLy9cbi8vIC0gVGhlIFVJIGZyYW1ld29yayAoc3VjaCBhcyBSZWFjdCBvciBkZWNrLmdsKSB0aGVuIGRpZmZzIHRoZSByZW5kZXJlZFxuLy8gICB0cmVlIG9mIFVJIGVsZW1lbnRzIChSZWFjdCBFbGVtZW50cyBvciBkZWNrLmdsIExheWVycykgYWdhaW5zdCB0aGVcbi8vICAgcHJldmlvdXNseSB0cmVlIGFuZCBtYWtlcyBvcHRpbWl6ZWQgY2hhbmdlcyAodG8gdGhlIERPTSBvciB0byBXZWJHTCBzdGF0ZSkuXG4vL1xuLy8gLSBEZWNrLmdsIGxheWVycyBhcmUgbm90IGJhc2VkIG9uIFJlYWN0LlxuLy8gICBCdXQgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHdyYXAgZGVjay5nbCBsYXllcnMgaW4gUmVhY3QgY29tcG9uZW50cyB0b1xuLy8gICBlbmFibGUgdXNlIG9mIEpTWC5cbi8vXG4vLyBUaGUgZGVjay5nbCBtb2RlbCB0aGF0IGZvciB0aGUgYXBwIGNyZWF0ZXMgYSBuZXcgc2V0IG9mIG9uIGxheWVycyBvbiBldmVyeVxuLy8gcmVuZGVyLlxuLy8gSW50ZXJuYWxseSwgdGhlIG5ldyBsYXllcnMgYXJlIGVmZmljaWVudGx5IG1hdGNoZWQgYWdhaW5zdCBleGlzdGluZyBsYXllcnNcbi8vIHVzaW5nIGxheWVyIGlkcy5cbi8vXG4vLyBBbGwgY2FsY3VsYXRlZCBzdGF0ZSAocHJvZ3JhbXMsIGF0dHJpYnV0ZXMgZXRjKSBhcmUgc3RvcmVkIGluIGEgc3RhdGUgb2JqZWN0XG4vLyBhbmQgdGhpcyBzdGF0ZSBvYmplY3QgaXMgbW92ZWQgZm9yd2FyZCB0byB0aGUgbWF0Y2ggbGF5ZXIgb24gZXZlcnkgcmVuZGVyXG4vLyBjeWNsZS4gIFRoZSBuZXcgbGF5ZXIgZW5kcyB1cCB3aXRoIHRoZSBzdGF0ZSBvZiB0aGUgb2xkIGxheWVyIChhbmQgdGhlXG4vLyBwcm9wcyBvZiB0aGUgbmV3IGxheWVyKSwgd2hpbGUgdGhlIG9sZCBsYXllciBpcyBzaW1wbHkgZGlzY2FyZGVkIGZvclxuLy8gZ2FyYmFnZSBjb2xsZWNpb24uXG4vL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdHJ5LWNhdGNoICovXG5pbXBvcnQgTGF5ZXIgZnJvbSAnLi9sYXllcic7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge2RyYXdMYXllcnMsIHBpY2tMYXllcnN9IGZyb20gJy4vZHJhdy1hbmQtcGljayc7XG5pbXBvcnQge1ZpZXdwb3J0fSBmcm9tICd2aWV3cG9ydC1tZXJjYXRvci1wcm9qZWN0JztcbmltcG9ydCB7RnJhbWVidWZmZXJPYmplY3R9IGZyb20gJ2x1bWEuZ2wnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMYXllck1hbmFnZXIge1xuICBjb25zdHJ1Y3Rvcih7Z2x9KSB7XG4gICAgdGhpcy5wcmV2TGF5ZXJzID0gW107XG4gICAgdGhpcy5sYXllcnMgPSBbXTtcbiAgICAvLyBUcmFja3MgaWYgYW55IGxheWVycyB3ZXJlIGRyYXduIGxhc3QgdXBkYXRlXG4gICAgLy8gTmVlZGVkIHRvIGVuc3VyZSB0aGF0IHNjcmVlbiBpcyBjbGVhcmVkIHdoZW4gbm8gbGF5ZXJzIGFyZSBzaG93blxuICAgIHRoaXMuZHJld0xheWVycyA9IGZhbHNlO1xuICAgIHRoaXMub2xkQ29udGV4dCA9IHt9O1xuICAgIHRoaXMuY29udGV4dCA9IHtcbiAgICAgIGdsLFxuICAgICAgdW5pZm9ybXM6IHt9LFxuICAgICAgdmlld3BvcnQ6IG51bGwsXG4gICAgICB2aWV3cG9ydENoYW5nZWQ6IHRydWUsXG4gICAgICBwaWNraW5nRkJPOiBudWxsXG4gICAgfTtcbiAgICB0aGlzLnJlZHJhd05lZWRlZCA9IHRydWU7XG4gICAgT2JqZWN0LnNlYWwodGhpcy5jb250ZXh0KTtcbiAgfVxuXG4gIHNldFZpZXdwb3J0KHZpZXdwb3J0KSB7XG4gICAgYXNzZXJ0KHZpZXdwb3J0IGluc3RhbmNlb2YgVmlld3BvcnQsICdJbnZhbGlkIHZpZXdwb3J0Jyk7XG5cbiAgICAvLyBUT0RPIC0gdmlld3BvcnQgY2hhbmdlIGRldGVjdGlvbiBicmVha3MgTUVURVJfT0ZGU0VUUyBtb2RlXG4gICAgLy8gY29uc3Qgb2xkVmlld3BvcnQgPSB0aGlzLmNvbnRleHQudmlld3BvcnQ7XG4gICAgLy8gY29uc3Qgdmlld3BvcnRDaGFuZ2VkID0gIW9sZFZpZXdwb3J0IHx8ICF2aWV3cG9ydC5lcXVhbHMob2xkVmlld3BvcnQpO1xuXG4gICAgY29uc3Qgdmlld3BvcnRDaGFuZ2VkID0gdHJ1ZTtcblxuICAgIGlmICh2aWV3cG9ydENoYW5nZWQpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vbGRDb250ZXh0LCB0aGlzLmNvbnRleHQpO1xuICAgICAgdGhpcy5jb250ZXh0LnZpZXdwb3J0ID0gdmlld3BvcnQ7XG4gICAgICB0aGlzLmNvbnRleHQudmlld3BvcnRDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY29udGV4dC51bmlmb3JtcyA9IHt9O1xuICAgICAgbG9nKDQsIHZpZXdwb3J0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZUxheWVycyh7bmV3TGF5ZXJzfSkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgYXNzZXJ0KHRoaXMuY29udGV4dC52aWV3cG9ydCxcbiAgICAgICdMYXllck1hbmFnZXIudXBkYXRlTGF5ZXJzOiB2aWV3cG9ydCBub3Qgc2V0Jyk7XG5cbiAgICAvLyBGaWx0ZXIgb3V0IGFueSBudWxsIGxheWVyc1xuICAgIG5ld0xheWVycyA9IG5ld0xheWVycy5maWx0ZXIobmV3TGF5ZXIgPT4gbmV3TGF5ZXIgIT09IG51bGwpO1xuXG4gICAgZm9yIChjb25zdCBsYXllciBvZiBuZXdMYXllcnMpIHtcbiAgICAgIGxheWVyLmNvbnRleHQgPSB0aGlzLmNvbnRleHQ7XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2TGF5ZXJzID0gdGhpcy5sYXllcnM7XG4gICAgY29uc3Qge2Vycm9yLCBnZW5lcmF0ZWRMYXllcnN9ID0gdGhpcy5fdXBkYXRlTGF5ZXJzKHtcbiAgICAgIG9sZExheWVyczogdGhpcy5wcmV2TGF5ZXJzLFxuICAgICAgbmV3TGF5ZXJzXG4gICAgfSk7XG5cbiAgICB0aGlzLmxheWVycyA9IGdlbmVyYXRlZExheWVycztcbiAgICAvLyBUaHJvdyBmaXJzdCBlcnJvciBmb3VuZCwgaWYgYW55XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkcmF3TGF5ZXJzKCkge1xuICAgIGFzc2VydCh0aGlzLmNvbnRleHQudmlld3BvcnQsICdMYXllck1hbmFnZXIuZHJhd0xheWVyczogdmlld3BvcnQgbm90IHNldCcpO1xuXG4gICAgZHJhd0xheWVycyh7bGF5ZXJzOiB0aGlzLmxheWVyc30pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwaWNrTGF5ZXIoe3gsIHksIG1vZGV9KSB7XG4gICAgY29uc3Qge2dsLCB1bmlmb3Jtc30gPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAvLyBTZXQgdXAgYSBmcmFtZSBidWZmZXIgaWYgbmVlZGVkXG4gICAgaWYgKHRoaXMuY29udGV4dC5waWNraW5nRkJPID09PSBudWxsIHx8XG4gICAgICBnbC5jYW52YXMud2lkdGggIT09IHRoaXMuY29udGV4dC5waWNraW5nRkJPLndpZHRoIHx8XG4gICAgICBnbC5jYW52YXMuaGVpZ2h0ICE9PSB0aGlzLmNvbnRleHQucGlja2luZ0ZCTy5oZWlnaHQpIHtcbiAgICAgIHRoaXMuY29udGV4dC5waWNraW5nRkJPID0gbmV3IEZyYW1lYnVmZmVyT2JqZWN0KGdsLCB7XG4gICAgICAgIHdpZHRoOiBnbC5jYW52YXMud2lkdGgsXG4gICAgICAgIGhlaWdodDogZ2wuY2FudmFzLmhlaWdodFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBwaWNrTGF5ZXJzKGdsLCB7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIHJlbmRlclBpY2tpbmdCdWZmZXI6IHRydWUsXG4gICAgICAgIHBpY2tpbmdfdUVuYWJsZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGxheWVyczogdGhpcy5sYXllcnMsXG4gICAgICBtb2RlLFxuICAgICAgcGlja2luZ0ZCTzogdGhpcy5jb250ZXh0LnBpY2tpbmdGQk9cbiAgICB9KTtcbiAgfVxuXG4gIG5lZWRzUmVkcmF3KHtjbGVhclJlZHJhd0ZsYWdzID0gZmFsc2V9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dC52aWV3cG9ydCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCByZWRyYXcgPSBmYWxzZTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGJ1ZmZlciBpcyBjbGVhcmVkIG9uY2Ugd2hlbiBsYXllciBsaXN0IGJlY29tZXMgZW1wdHlcbiAgICBpZiAodGhpcy5sYXllcnMubGVuZ3RoID09PSAwICYmIHRoaXMuZHJld0xheWVycykge1xuICAgICAgcmVkcmF3ID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlZHJhd05lZWRlZCkge1xuICAgICAgdGhpcy5yZWRyYXdOZWVkZWQgPSBmYWxzZTtcbiAgICAgIHJlZHJhdyA9IHRydWU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xuICAgICAgcmVkcmF3ID0gcmVkcmF3IHx8IGxheWVyLmdldE5lZWRzUmVkcmF3KHtjbGVhclJlZHJhd0ZsYWdzfSk7XG4gICAgICB0aGlzLmRyZXdMYXllcnMgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVkcmF3O1xuICB9XG5cbiAgLy8gUFJJVkFURSBNRVRIT0RTXG5cbiAgLy8gTWF0Y2ggYWxsIGxheWVycywgY2hlY2tpbmcgZm9yIGNhdWdodCBlcnJvcnNcbiAgLy8gVG8gYXZvaWQgaGF2aW5nIGFuIGV4Y2VwdGlvbiBpbiBvbmUgbGF5ZXIgZGlzcnVwdCBvdGhlciBsYXllcnNcbiAgX3VwZGF0ZUxheWVycyh7b2xkTGF5ZXJzLCBuZXdMYXllcnN9KSB7XG4gICAgLy8gQ3JlYXRlIG9sZCBsYXllciBtYXBcbiAgICBjb25zdCBvbGRMYXllck1hcCA9IHt9O1xuICAgIGZvciAoY29uc3Qgb2xkTGF5ZXIgb2Ygb2xkTGF5ZXJzKSB7XG4gICAgICBpZiAob2xkTGF5ZXJNYXBbb2xkTGF5ZXIuaWRdKSB7XG4gICAgICAgIGxvZy5vbmNlKDAsIGBNdWx0aXBlIG9sZCBsYXllcnMgd2l0aCBzYW1lIGlkICR7bGF5ZXJOYW1lKG9sZExheWVyKX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9sZExheWVyTWFwW29sZExheWVyLmlkXSA9IG9sZExheWVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG9jYXRlIGFycmF5IGZvciBnZW5lcmF0ZWQgbGF5ZXJzXG4gICAgY29uc3QgZ2VuZXJhdGVkTGF5ZXJzID0gW107XG5cbiAgICAvLyBNYXRjaCBzdWJsYXllcnNcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuX21hdGNoU3VibGF5ZXJzKHtcbiAgICAgIG5ld0xheWVycywgb2xkTGF5ZXJNYXAsIGdlbmVyYXRlZExheWVyc1xuICAgIH0pO1xuXG4gICAgY29uc3QgZXJyb3IyID0gdGhpcy5fZmluYWxpemVPbGRMYXllcnMob2xkTGF5ZXJzKTtcbiAgICBjb25zdCBmaXJzdEVycm9yID0gZXJyb3IgfHwgZXJyb3IyO1xuICAgIHJldHVybiB7ZXJyb3I6IGZpcnN0RXJyb3IsIGdlbmVyYXRlZExheWVyc307XG4gIH1cblxuICAvKiBlc2xpbnQtZGlzYWJsZSBtYXgtc3RhdGVtZW50cyAqL1xuICBfbWF0Y2hTdWJsYXllcnMoe25ld0xheWVycywgb2xkTGF5ZXJNYXAsIGdlbmVyYXRlZExheWVyc30pIHtcbiAgICAvLyBGaWx0ZXIgb3V0IGFueSBudWxsIGxheWVyc1xuICAgIG5ld0xheWVycyA9IG5ld0xheWVycy5maWx0ZXIobmV3TGF5ZXIgPT4gbmV3TGF5ZXIgIT09IG51bGwpO1xuXG4gICAgbGV0IGVycm9yID0gbnVsbDtcbiAgICBmb3IgKGNvbnN0IG5ld0xheWVyIG9mIG5ld0xheWVycykge1xuICAgICAgbmV3TGF5ZXIuY29udGV4dCA9IHRoaXMuY29udGV4dDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gMS4gZ2l2ZW4gYSBuZXcgY29taW5nIGxheWVyLCBmaW5kIGl0cyBtYXRjaGluZyBsYXllclxuICAgICAgICBjb25zdCBvbGRMYXllciA9IG9sZExheWVyTWFwW25ld0xheWVyLmlkXTtcbiAgICAgICAgb2xkTGF5ZXJNYXBbbmV3TGF5ZXIuaWRdID0gbnVsbDtcblxuICAgICAgICBpZiAob2xkTGF5ZXIgPT09IG51bGwpIHtcbiAgICAgICAgICBsb2cub25jZSgwLCBgTXVsdGlwZSBuZXcgbGF5ZXJzIHdpdGggc2FtZSBpZCAke2xheWVyTmFtZShuZXdMYXllcil9YCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIE9ubHkgdHJhbnNmZXIgc3RhdGUgYXQgdGhpcyBzdGFnZS4gV2UgbXVzdCBub3QgZ2VuZXJhdGUgZXhjZXB0aW9uc1xuICAgICAgICAvLyB1bnRpbCBhbGwgbGF5ZXJzJyBzdGF0ZSBoYXZlIGJlZW4gdHJhbnNmZXJyZWRcbiAgICAgICAgaWYgKG9sZExheWVyKSB7XG4gICAgICAgICAgbG9nKDMsIGBtYXRjaGVkICR7bGF5ZXJOYW1lKG5ld0xheWVyKX1gLCBvbGRMYXllciwgJz0+JywgbmV3TGF5ZXIpO1xuICAgICAgICAgIHRoaXMuX3RyYW5zZmVyTGF5ZXJTdGF0ZShvbGRMYXllciwgbmV3TGF5ZXIpO1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZUxheWVyKG5ld0xheWVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9pbml0aWFsaXplTmV3TGF5ZXIobmV3TGF5ZXIpO1xuICAgICAgICB9XG4gICAgICAgIGdlbmVyYXRlZExheWVycy5wdXNoKG5ld0xheWVyKTtcblxuICAgICAgICAvLyBDYWxsIGxheWVyIGxpZmVjeWNsZSBtZXRob2Q6IHJlbmRlciBzdWJsYXllcnNcbiAgICAgICAgbGV0IHN1YmxheWVycyA9IG5ld0xheWVyLnJlbmRlckxheWVycygpO1xuICAgICAgICAvLyBFbmQgbGF5ZXIgbGlmZWN5Y2xlIG1ldGhvZDogcmVuZGVyIHN1YmxheWVyc1xuXG4gICAgICAgIGlmIChzdWJsYXllcnMpIHtcbiAgICAgICAgICBzdWJsYXllcnMgPSBBcnJheS5pc0FycmF5KHN1YmxheWVycykgPyBzdWJsYXllcnMgOiBbc3VibGF5ZXJzXTtcbiAgICAgICAgICB0aGlzLl9tYXRjaFN1YmxheWVycyh7XG4gICAgICAgICAgICBuZXdMYXllcnM6IHN1YmxheWVycyxcbiAgICAgICAgICAgIG9sZExheWVyTWFwLFxuICAgICAgICAgICAgZ2VuZXJhdGVkTGF5ZXJzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2cub25jZSgwLFxuICAgICAgICAgIGBkZWNrLmdsIGVycm9yIGR1cmluZyBtYXRjaGluZyBvZiAke2xheWVyTmFtZShuZXdMYXllcil9ICR7ZXJyfWAsIGVycik7XG4gICAgICAgIC8vIFNhdmUgZmlyc3QgZXJyb3JcbiAgICAgICAgZXJyb3IgPSBlcnJvciB8fCBlcnI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuXG4gIF90cmFuc2ZlckxheWVyU3RhdGUob2xkTGF5ZXIsIG5ld0xheWVyKSB7XG4gICAgY29uc3Qge3N0YXRlLCBwcm9wc30gPSBvbGRMYXllcjtcblxuICAgIC8vIHNhbml0eSBjaGVja1xuICAgIGFzc2VydChzdGF0ZSwgJ2RlY2suZ2wgc2FuaXR5IGNoZWNrIC0gTWF0Y2hpbmcgbGF5ZXIgaGFzIG5vIHN0YXRlJyk7XG4gICAgYXNzZXJ0KG9sZExheWVyICE9PSBuZXdMYXllciwgJ2RlY2suZ2wgc2FuaXR5IGNoZWNrIC0gTWF0Y2hpbmcgbGF5ZXIgaXMgc2FtZScpO1xuXG4gICAgLy8gTW92ZSBzdGF0ZVxuICAgIG5ld0xheWVyLnN0YXRlID0gc3RhdGU7XG4gICAgc3RhdGUubGF5ZXIgPSBuZXdMYXllcjtcblxuICAgIC8vIFVwZGF0ZSBtb2RlbCBsYXllciByZWZlcmVuY2VcbiAgICBpZiAoc3RhdGUubW9kZWwpIHtcbiAgICAgIHN0YXRlLm1vZGVsLnVzZXJEYXRhLmxheWVyID0gbmV3TGF5ZXI7XG4gICAgfVxuICAgIC8vIEtlZXAgYSB0ZW1wb3JhcnkgcmVmIHRvIHRoZSBvbGQgcHJvcHMsIGZvciBwcm9wIGNvbXBhcmlzb25cbiAgICBuZXdMYXllci5vbGRQcm9wcyA9IHByb3BzO1xuICAgIG9sZExheWVyLnN0YXRlID0gbnVsbDtcbiAgfVxuXG4gIC8vIFVwZGF0ZSB0aGUgb2xkIGxheWVycyB0aGF0IHdlcmUgbm90IG1hdGNoZWRcbiAgX2ZpbmFsaXplT2xkTGF5ZXJzKG9sZExheWVycykge1xuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgLy8gVW5tYXRjaGVkIGxheWVycyBzdGlsbCBoYXZlIHN0YXRlLCBpdCB3aWxsIGJlIGRpc2NhcmRlZFxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2Ygb2xkTGF5ZXJzKSB7XG4gICAgICBpZiAobGF5ZXIuc3RhdGUpIHtcbiAgICAgICAgZXJyb3IgPSBlcnJvciB8fCB0aGlzLl9maW5hbGl6ZUxheWVyKGxheWVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG5cbiAgLy8gSW5pdGlhbGl6ZXMgYSBzaW5nbGUgbGF5ZXIsIGNhbGxpbmcgbGF5ZXIgbWV0aG9kc1xuICBfaW5pdGlhbGl6ZU5ld0xheWVyKGxheWVyKSB7XG4gICAgbGV0IGVycm9yID0gbnVsbDtcbiAgICAvLyBDaGVjayBpZiBuZXcgbGF5ZXIsIGFuZCBpbml0aWFsaXplIGl0J3Mgc3RhdGVcbiAgICBpZiAoIWxheWVyLnN0YXRlKSB7XG4gICAgICBsb2coMSwgYGluaXRpYWxpemluZyAke2xheWVyTmFtZShsYXllcil9YCk7XG4gICAgICB0cnkge1xuICAgICAgICBsYXllci5pbml0aWFsaXplTGF5ZXIoe1xuICAgICAgICAgIG9sZFByb3BzOiB7fSxcbiAgICAgICAgICBwcm9wczogbGF5ZXIucHJvcHMsXG4gICAgICAgICAgb2xkQ29udGV4dDogdGhpcy5vbGRDb250ZXh0LFxuICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dCxcbiAgICAgICAgICBjaGFuZ2VGbGFnczogbGF5ZXIuZGlmZlByb3BzKHt9LCBsYXllci5wcm9wcywgdGhpcy5jb250ZXh0KVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2cub25jZSgwLCBgZGVjay5nbCBlcnJvciBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgJHtsYXllck5hbWUobGF5ZXIpfSAke2Vycn1gLCBlcnIpO1xuICAgICAgICAvLyBTYXZlIGZpcnN0IGVycm9yXG4gICAgICAgIGVycm9yID0gZXJyb3IgfHwgZXJyO1xuICAgICAgfVxuICAgICAgLy8gU2V0IGJhY2sgcG9pbnRlciAodXNlZCBpbiBwaWNraW5nKVxuICAgICAgaWYgKGxheWVyLnN0YXRlKSB7XG4gICAgICAgIGxheWVyLnN0YXRlLmxheWVyID0gbGF5ZXI7XG4gICAgICAgIC8vIFNhdmUgbGF5ZXIgb24gbW9kZWwgZm9yIHBpY2tpbmcgcHVycG9zZXNcbiAgICAgICAgLy8gVE9ETyAtIHN0b3JlIG9uIG1vZGVsLnVzZXJEYXRhIHJhdGhlciB0aGFuIGRpcmVjdGx5IG9uIG1vZGVsXG4gICAgICB9XG4gICAgICBpZiAobGF5ZXIuc3RhdGUgJiYgbGF5ZXIuc3RhdGUubW9kZWwpIHtcbiAgICAgICAgbGF5ZXIuc3RhdGUubW9kZWwudXNlckRhdGEubGF5ZXIgPSBsYXllcjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBhIHNpbmdsZSBsYXllciwgY2FsbGluZyBsYXllciBtZXRob2RzXG4gIF91cGRhdGVMYXllcihsYXllcikge1xuICAgIGNvbnN0IHtvbGRQcm9wcywgcHJvcHN9ID0gbGF5ZXI7XG4gICAgbGV0IGVycm9yID0gbnVsbDtcbiAgICBpZiAob2xkUHJvcHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxheWVyLnVwZGF0ZUxheWVyKHtcbiAgICAgICAgICBvbGRQcm9wcyxcbiAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHQsXG4gICAgICAgICAgb2xkQ29udGV4dDogdGhpcy5vbGRDb250ZXh0LFxuICAgICAgICAgIGNoYW5nZUZsYWdzOiBsYXllci5kaWZmUHJvcHMob2xkUHJvcHMsIGxheWVyLnByb3BzLCB0aGlzLmNvbnRleHQpXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZy5vbmNlKDAsIGBkZWNrLmdsIGVycm9yIGR1cmluZyB1cGRhdGUgb2YgJHtsYXllck5hbWUobGF5ZXIpfWAsIGVycik7XG4gICAgICAgIC8vIFNhdmUgZmlyc3QgZXJyb3JcbiAgICAgICAgZXJyb3IgPSBlcnI7XG4gICAgICB9XG4gICAgICBsb2coMiwgYHVwZGF0aW5nICR7bGF5ZXJOYW1lKGxheWVyKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG5cbiAgLy8gRmluYWxpemVzIGEgc2luZ2xlIGxheWVyXG4gIF9maW5hbGl6ZUxheWVyKGxheWVyKSB7XG4gICAgbGV0IGVycm9yID0gbnVsbDtcbiAgICBjb25zdCB7c3RhdGV9ID0gbGF5ZXI7XG4gICAgaWYgKHN0YXRlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsYXllci5maW5hbGl6ZUxheWVyKCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nLm9uY2UoMCxcbiAgICAgICAgICBgZGVjay5nbCBlcnJvciBkdXJpbmcgZmluYWxpemF0aW9uIG9mICR7bGF5ZXJOYW1lKGxheWVyKX1gLCBlcnIpO1xuICAgICAgICAvLyBTYXZlIGZpcnN0IGVycm9yXG4gICAgICAgIGVycm9yID0gZXJyO1xuICAgICAgfVxuICAgICAgbGF5ZXIuc3RhdGUgPSBudWxsO1xuICAgICAgbG9nKDEsIGBmaW5hbGl6aW5nICR7bGF5ZXJOYW1lKGxheWVyKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxheWVyTmFtZShsYXllcikge1xuICBpZiAobGF5ZXIgaW5zdGFuY2VvZiBMYXllcikge1xuICAgIHJldHVybiBgJHtsYXllcn1gO1xuICB9XG4gIHJldHVybiAhbGF5ZXIgPyAnbnVsbCBsYXllcicgOiAnaW52YWxpZCBsYXllcic7XG59XG4iXX0=

@@ -81,2 +81,4 @@ 'use strict';

console.log(viewport, projectedPositionOrigin, projectionCenter); // eslint-disable-line
return {

@@ -95,2 +97,2 @@ // Projection mode values

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdmlld3BvcnQtdW5pZm9ybXMuanMiXSwibmFtZXMiOlsiZ2V0VW5pZm9ybXNGcm9tVmlld3BvcnQiLCJmcDY0aWZ5IiwiYSIsImhpUGFydCIsIk1hdGgiLCJmcm91bmQiLCJsb1BhcnQiLCJ2aWV3cG9ydCIsIm1vZGVsTWF0cml4IiwicHJvamVjdGlvbk1vZGUiLCJMTkdMQVQiLCJwb3NpdGlvbk9yaWdpbiIsInBvc2l0aW9uT3JpZ2luUGl4ZWxzIiwicHJvamVjdEZsYXQiLCJwcm9qZWN0ZWRQb3NpdGlvbk9yaWdpbiIsIm1hdHJpY2VzIiwiZ2V0TWF0cmljZXMiLCJtb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Iiwic2NhbGUiLCJwaXhlbHNQZXJNZXRlciIsImdsUHJvamVjdGlvbk1hdHJpeCIsIkZsb2F0MzJBcnJheSIsImdsUHJvamVjdGlvbk1hdHJpeEZQNjQiLCJpIiwiaiIsInByb2plY3Rpb25DZW50ZXIiLCJ0cmFuc2Zvcm1NYXQ0IiwicHJvamVjdGlvbk1hdHJpeCIsInByb2plY3Rpb25GUDY0IiwicHJvamVjdGlvblBpeGVsc1BlclVuaXQiLCJwcm9qZWN0aW9uU2NhbGUiLCJwcm9qZWN0aW9uU2NhbGVGUDY0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztRQW1CZ0JBLHVCLEdBQUFBLHVCOztBQW5CaEI7O0FBQ0E7Ozs7QUFDQTs7OztBQUVBLFNBQVNDLE9BQVQsQ0FBaUJDLENBQWpCLEVBQW9CO0FBQ2xCLE1BQU1DLFNBQVNDLEtBQUtDLE1BQUwsQ0FBWUgsQ0FBWixDQUFmO0FBQ0EsTUFBTUksU0FBU0osSUFBSUUsS0FBS0MsTUFBTCxDQUFZSCxDQUFaLENBQW5CO0FBQ0EsU0FBTyxDQUFDQyxNQUFELEVBQVNHLE1BQVQsQ0FBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7QUFTTyxTQUFTTix1QkFBVCxDQUFpQ08sUUFBakMsRUFJQztBQUFBLGlGQUFKLEVBQUk7QUFBQSw4QkFITkMsV0FHTTtBQUFBLE1BSE5BLFdBR00sb0NBSFEsSUFHUjtBQUFBLGlDQUZOQyxjQUVNO0FBQUEsTUFGTkEsY0FFTSx1Q0FGVyw2QkFBa0JDLE1BRTdCO0FBQUEsaUNBRE5DLGNBQ007QUFBQSxNQUROQSxjQUNNLHVDQURXLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FDWDs7QUFDTjtBQUNBLE1BQU1DLHVCQUF1QkwsU0FBU00sV0FBVCxDQUFxQkYsY0FBckIsQ0FBN0I7O0FBRUEsTUFBTUcsMEJBQTBCLENBQUNGLHFCQUFxQixDQUFyQixDQUFELEVBQTBCQSxxQkFBcUIsQ0FBckIsQ0FBMUIsRUFBbUQsR0FBbkQsRUFBd0QsR0FBeEQsQ0FBaEM7O0FBRUE7QUFDQTtBQUNBLE1BQU1HLFdBQVdSLFNBQVNTLFdBQVQsQ0FBcUIsRUFBQ1Isd0JBQUQsRUFBckIsQ0FBakI7O0FBUk0sTUFVQ1MseUJBVkQsR0FVcURGLFFBVnJELENBVUNFLHlCQVZEO0FBQUEsTUFVNEJDLEtBVjVCLEdBVXFESCxRQVZyRCxDQVU0QkcsS0FWNUI7QUFBQSxNQVVtQ0MsY0FWbkMsR0FVcURKLFFBVnJELENBVW1DSSxjQVZuQzs7QUFXTix3QkFBT0YseUJBQVAsRUFBa0MsNENBQWxDO0FBQ0Esd0JBQU9DLEtBQVAsRUFBYyx3QkFBZDtBQUNBLHdCQUFPQyxjQUFQLEVBQXVCLGlDQUF2Qjs7QUFFQTtBQUNBLE1BQU1DLHFCQUFxQixJQUFJQyxZQUFKLENBQWlCSix5QkFBakIsQ0FBM0I7O0FBRUE7QUFDQSxNQUFNSyx5QkFBeUIsSUFBSUQsWUFBSixDQUFpQixFQUFqQixDQUEvQjtBQUNBO0FBQ0EsT0FBSyxJQUFJRSxJQUFJLENBQWIsRUFBZ0JBLElBQUksQ0FBcEIsRUFBdUIsRUFBRUEsQ0FBekIsRUFBNEI7QUFDMUIsU0FBSyxJQUFJQyxJQUFJLENBQWIsRUFBZ0JBLElBQUksQ0FBcEIsRUFBdUIsRUFBRUEsQ0FBekIsRUFBNEI7QUFBQSxxQkFJdEJ2QixRQUFRZ0IsMEJBQTBCTyxJQUFJLENBQUosR0FBUUQsQ0FBbEMsQ0FBUixDQUpzQjs7QUFBQTs7QUFFeEJELDZCQUF1QixDQUFDQyxJQUFJLENBQUosR0FBUUMsQ0FBVCxJQUFjLENBQXJDLENBRndCO0FBR3hCRiw2QkFBdUIsQ0FBQ0MsSUFBSSxDQUFKLEdBQVFDLENBQVQsSUFBYyxDQUFkLEdBQWtCLENBQXpDLENBSHdCO0FBSzNCO0FBQ0Y7O0FBRUQsTUFBTUMsbUJBQ0osZUFBS0MsYUFBTCxDQUFtQixFQUFuQixFQUF1QlosdUJBQXZCLEVBQWdERyx5QkFBaEQsQ0FERjs7QUFHQSxTQUFPO0FBQ0w7QUFDQVIsa0NBRks7QUFHTGdCLHNDQUhLOztBQUtMO0FBQ0FFLHNCQUFrQlAsa0JBTmI7QUFPTFEsb0JBQWdCTixzQkFQWDtBQVFMTyw2QkFBeUJkLFNBQVNJLGNBUjdCO0FBU0xXLHFCQUFpQmYsU0FBU0csS0FUckI7QUFVTGEseUJBQXFCOUIsUUFBUWMsU0FBU0csS0FBakI7QUFWaEIsR0FBUDtBQVlEIiwiZmlsZSI6InZpZXdwb3J0LXVuaWZvcm1zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt2ZWM0fSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHtDT09SRElOQVRFX1NZU1RFTX0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5mdW5jdGlvbiBmcDY0aWZ5KGEpIHtcbiAgY29uc3QgaGlQYXJ0ID0gTWF0aC5mcm91bmQoYSk7XG4gIGNvbnN0IGxvUGFydCA9IGEgLSBNYXRoLmZyb3VuZChhKTtcbiAgcmV0dXJuIFtoaVBhcnQsIGxvUGFydF07XG59XG5cbi8qKlxuICogUmV0dXJucyB1bmlmb3JtcyBmb3Igc2hhZGVycyBiYXNlZCBvbiBjdXJyZW50IHByb2plY3Rpb25cbiAqIGluY2x1ZGVzOiBwcm9qZWN0aW9uIG1hdHJpeCBzdWl0YWJsZSBmb3Igc2hhZGVyc1xuICpcbiAqIFRPRE8gLSBFbnN1cmUgdGhpcyB3b3JrcyB3aXRoIGFueSB2aWV3cG9ydCwgbm90IGp1c3QgV2ViTWVyY2F0b3JWaWV3cG9ydHNcbiAqXG4gKiBAcGFyYW0ge1dlYk1lcmNhdG9yVmlld3BvcnR9IHZpZXdwb3J0IC1cbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gLSA0eDQgcHJvamVjdGlvbiBtYXRyaXggdGhhdCBjYW4gYmUgdXNlZCBpbiBzaGFkZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmlmb3Jtc0Zyb21WaWV3cG9ydCh2aWV3cG9ydCwge1xuICBtb2RlbE1hdHJpeCA9IG51bGwsXG4gIHByb2plY3Rpb25Nb2RlID0gQ09PUkRJTkFURV9TWVNURU0uTE5HTEFULFxuICBwb3NpdGlvbk9yaWdpbiA9IFswLCAwXVxufSA9IHt9KSB7XG4gIC8vIFRPRE86IG1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIHRvIGluaXRpYWxpemF0aW9uIHNvIHRoYXQgaXQncyBkb25lIG9ubHkgb25jZVxuICBjb25zdCBwb3NpdGlvbk9yaWdpblBpeGVscyA9IHZpZXdwb3J0LnByb2plY3RGbGF0KHBvc2l0aW9uT3JpZ2luKTtcblxuICBjb25zdCBwcm9qZWN0ZWRQb3NpdGlvbk9yaWdpbiA9IFtwb3NpdGlvbk9yaWdpblBpeGVsc1swXSwgcG9zaXRpb25PcmlnaW5QaXhlbHNbMV0sIDAuMCwgMS4wXTtcblxuICAvLyBjYWxjdWxhdGUgV2ViR0wgbWF0cmljZXNcbiAgLy8gVE9ETyAtIGNvdWxkIGJlIGNhY2hlZCBmb3IgZS5nLiBtb2RlbE1hdHJpeCA9PT0gbnVsbFxuICBjb25zdCBtYXRyaWNlcyA9IHZpZXdwb3J0LmdldE1hdHJpY2VzKHttb2RlbE1hdHJpeH0pO1xuXG4gIGNvbnN0IHttb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4LCBzY2FsZSwgcGl4ZWxzUGVyTWV0ZXJ9ID0gbWF0cmljZXM7XG4gIGFzc2VydChtb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4LCAnVmlld3BvcnQgbWlzc2luZyBtb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Jyk7XG4gIGFzc2VydChzY2FsZSwgJ1ZpZXdwb3J0IHNjYWxlIG1pc3NpbmcnKTtcbiAgYXNzZXJ0KHBpeGVsc1Blck1ldGVyLCAnVmlld3BvcnQgbWlzc2luZyBwaXhlbHNQZXJNZXRlcicpO1xuXG4gIC8vIENvbnZlcnQgdG8gRmxvYXQzMlxuICBjb25zdCBnbFByb2plY3Rpb25NYXRyaXggPSBuZXcgRmxvYXQzMkFycmF5KG1vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgpO1xuXG4gIC8vIGR5NjRpZnlcbiAgY29uc3QgZ2xQcm9qZWN0aW9uTWF0cml4RlA2NCA9IG5ldyBGbG9hdDMyQXJyYXkoMzIpO1xuICAvLyBUcmFuc3Bvc2UgdGhlIHByb2plY3Rpb24gbWF0cml4IHRvIGNvbHVtbiBtYWpvciBmb3IgR0xTTC5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IDQ7ICsraikge1xuICAgICAgW1xuICAgICAgICBnbFByb2plY3Rpb25NYXRyaXhGUDY0WyhpICogNCArIGopICogMl0sXG4gICAgICAgIGdsUHJvamVjdGlvbk1hdHJpeEZQNjRbKGkgKiA0ICsgaikgKiAyICsgMV1cbiAgICAgIF0gPSBmcDY0aWZ5KG1vZGVsVmlld1Byb2plY3Rpb25NYXRyaXhbaiAqIDQgKyBpXSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJvamVjdGlvbkNlbnRlciA9XG4gICAgdmVjNC50cmFuc2Zvcm1NYXQ0KFtdLCBwcm9qZWN0ZWRQb3NpdGlvbk9yaWdpbiwgbW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBQcm9qZWN0aW9uIG1vZGUgdmFsdWVzXG4gICAgcHJvamVjdGlvbk1vZGUsXG4gICAgcHJvamVjdGlvbkNlbnRlcixcblxuICAgIC8vIE1haW4gcHJvamVjdGlvbiBtYXRyaWNlc1xuICAgIHByb2plY3Rpb25NYXRyaXg6IGdsUHJvamVjdGlvbk1hdHJpeCxcbiAgICBwcm9qZWN0aW9uRlA2NDogZ2xQcm9qZWN0aW9uTWF0cml4RlA2NCxcbiAgICBwcm9qZWN0aW9uUGl4ZWxzUGVyVW5pdDogbWF0cmljZXMucGl4ZWxzUGVyTWV0ZXIsXG4gICAgcHJvamVjdGlvblNjYWxlOiBtYXRyaWNlcy5zY2FsZSxcbiAgICBwcm9qZWN0aW9uU2NhbGVGUDY0OiBmcDY0aWZ5KG1hdHJpY2VzLnNjYWxlKVxuICB9O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdmlld3BvcnQtdW5pZm9ybXMuanMiXSwibmFtZXMiOlsiZ2V0VW5pZm9ybXNGcm9tVmlld3BvcnQiLCJmcDY0aWZ5IiwiYSIsImhpUGFydCIsIk1hdGgiLCJmcm91bmQiLCJsb1BhcnQiLCJ2aWV3cG9ydCIsIm1vZGVsTWF0cml4IiwicHJvamVjdGlvbk1vZGUiLCJMTkdMQVQiLCJwb3NpdGlvbk9yaWdpbiIsInBvc2l0aW9uT3JpZ2luUGl4ZWxzIiwicHJvamVjdEZsYXQiLCJwcm9qZWN0ZWRQb3NpdGlvbk9yaWdpbiIsIm1hdHJpY2VzIiwiZ2V0TWF0cmljZXMiLCJtb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Iiwic2NhbGUiLCJwaXhlbHNQZXJNZXRlciIsImdsUHJvamVjdGlvbk1hdHJpeCIsIkZsb2F0MzJBcnJheSIsImdsUHJvamVjdGlvbk1hdHJpeEZQNjQiLCJpIiwiaiIsInByb2plY3Rpb25DZW50ZXIiLCJ0cmFuc2Zvcm1NYXQ0IiwiY29uc29sZSIsImxvZyIsInByb2plY3Rpb25NYXRyaXgiLCJwcm9qZWN0aW9uRlA2NCIsInByb2plY3Rpb25QaXhlbHNQZXJVbml0IiwicHJvamVjdGlvblNjYWxlIiwicHJvamVjdGlvblNjYWxlRlA2NCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7UUFtQmdCQSx1QixHQUFBQSx1Qjs7QUFuQmhCOztBQUNBOzs7O0FBQ0E7Ozs7QUFFQSxTQUFTQyxPQUFULENBQWlCQyxDQUFqQixFQUFvQjtBQUNsQixNQUFNQyxTQUFTQyxLQUFLQyxNQUFMLENBQVlILENBQVosQ0FBZjtBQUNBLE1BQU1JLFNBQVNKLElBQUlFLEtBQUtDLE1BQUwsQ0FBWUgsQ0FBWixDQUFuQjtBQUNBLFNBQU8sQ0FBQ0MsTUFBRCxFQUFTRyxNQUFULENBQVA7QUFDRDs7QUFFRDs7Ozs7Ozs7O0FBU08sU0FBU04sdUJBQVQsQ0FBaUNPLFFBQWpDLEVBSUM7QUFBQSxpRkFBSixFQUFJO0FBQUEsOEJBSE5DLFdBR007QUFBQSxNQUhOQSxXQUdNLG9DQUhRLElBR1I7QUFBQSxpQ0FGTkMsY0FFTTtBQUFBLE1BRk5BLGNBRU0sdUNBRlcsNkJBQWtCQyxNQUU3QjtBQUFBLGlDQUROQyxjQUNNO0FBQUEsTUFETkEsY0FDTSx1Q0FEVyxDQUFDLENBQUQsRUFBSSxDQUFKLENBQ1g7O0FBQ047QUFDQSxNQUFNQyx1QkFBdUJMLFNBQVNNLFdBQVQsQ0FBcUJGLGNBQXJCLENBQTdCOztBQUVBLE1BQU1HLDBCQUEwQixDQUFDRixxQkFBcUIsQ0FBckIsQ0FBRCxFQUEwQkEscUJBQXFCLENBQXJCLENBQTFCLEVBQW1ELEdBQW5ELEVBQXdELEdBQXhELENBQWhDOztBQUVBO0FBQ0E7QUFDQSxNQUFNRyxXQUFXUixTQUFTUyxXQUFULENBQXFCLEVBQUNSLHdCQUFELEVBQXJCLENBQWpCOztBQVJNLE1BVUNTLHlCQVZELEdBVXFERixRQVZyRCxDQVVDRSx5QkFWRDtBQUFBLE1BVTRCQyxLQVY1QixHQVVxREgsUUFWckQsQ0FVNEJHLEtBVjVCO0FBQUEsTUFVbUNDLGNBVm5DLEdBVXFESixRQVZyRCxDQVVtQ0ksY0FWbkM7O0FBV04sd0JBQU9GLHlCQUFQLEVBQWtDLDRDQUFsQztBQUNBLHdCQUFPQyxLQUFQLEVBQWMsd0JBQWQ7QUFDQSx3QkFBT0MsY0FBUCxFQUF1QixpQ0FBdkI7O0FBRUE7QUFDQSxNQUFNQyxxQkFBcUIsSUFBSUMsWUFBSixDQUFpQkoseUJBQWpCLENBQTNCOztBQUVBO0FBQ0EsTUFBTUsseUJBQXlCLElBQUlELFlBQUosQ0FBaUIsRUFBakIsQ0FBL0I7QUFDQTtBQUNBLE9BQUssSUFBSUUsSUFBSSxDQUFiLEVBQWdCQSxJQUFJLENBQXBCLEVBQXVCLEVBQUVBLENBQXpCLEVBQTRCO0FBQzFCLFNBQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJLENBQXBCLEVBQXVCLEVBQUVBLENBQXpCLEVBQTRCO0FBQUEscUJBSXRCdkIsUUFBUWdCLDBCQUEwQk8sSUFBSSxDQUFKLEdBQVFELENBQWxDLENBQVIsQ0FKc0I7O0FBQUE7O0FBRXhCRCw2QkFBdUIsQ0FBQ0MsSUFBSSxDQUFKLEdBQVFDLENBQVQsSUFBYyxDQUFyQyxDQUZ3QjtBQUd4QkYsNkJBQXVCLENBQUNDLElBQUksQ0FBSixHQUFRQyxDQUFULElBQWMsQ0FBZCxHQUFrQixDQUF6QyxDQUh3QjtBQUszQjtBQUNGOztBQUVELE1BQU1DLG1CQUNKLGVBQUtDLGFBQUwsQ0FBbUIsRUFBbkIsRUFBdUJaLHVCQUF2QixFQUFnREcseUJBQWhELENBREY7O0FBR0FVLFVBQVFDLEdBQVIsQ0FBWXJCLFFBQVosRUFBc0JPLHVCQUF0QixFQUErQ1csZ0JBQS9DLEVBakNNLENBaUM0RDs7QUFFbEUsU0FBTztBQUNMO0FBQ0FoQixrQ0FGSztBQUdMZ0Isc0NBSEs7O0FBS0w7QUFDQUksc0JBQWtCVCxrQkFOYjtBQU9MVSxvQkFBZ0JSLHNCQVBYO0FBUUxTLDZCQUF5QmhCLFNBQVNJLGNBUjdCO0FBU0xhLHFCQUFpQmpCLFNBQVNHLEtBVHJCO0FBVUxlLHlCQUFxQmhDLFFBQVFjLFNBQVNHLEtBQWpCO0FBVmhCLEdBQVA7QUFZRCIsImZpbGUiOiJ2aWV3cG9ydC11bmlmb3Jtcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dmVjNH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7Q09PUkRJTkFURV9TWVNURU19IGZyb20gJy4vY29uc3RhbnRzJztcblxuZnVuY3Rpb24gZnA2NGlmeShhKSB7XG4gIGNvbnN0IGhpUGFydCA9IE1hdGguZnJvdW5kKGEpO1xuICBjb25zdCBsb1BhcnQgPSBhIC0gTWF0aC5mcm91bmQoYSk7XG4gIHJldHVybiBbaGlQYXJ0LCBsb1BhcnRdO1xufVxuXG4vKipcbiAqIFJldHVybnMgdW5pZm9ybXMgZm9yIHNoYWRlcnMgYmFzZWQgb24gY3VycmVudCBwcm9qZWN0aW9uXG4gKiBpbmNsdWRlczogcHJvamVjdGlvbiBtYXRyaXggc3VpdGFibGUgZm9yIHNoYWRlcnNcbiAqXG4gKiBUT0RPIC0gRW5zdXJlIHRoaXMgd29ya3Mgd2l0aCBhbnkgdmlld3BvcnQsIG5vdCBqdXN0IFdlYk1lcmNhdG9yVmlld3BvcnRzXG4gKlxuICogQHBhcmFtIHtXZWJNZXJjYXRvclZpZXdwb3J0fSB2aWV3cG9ydCAtXG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IC0gNHg0IHByb2plY3Rpb24gbWF0cml4IHRoYXQgY2FuIGJlIHVzZWQgaW4gc2hhZGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pZm9ybXNGcm9tVmlld3BvcnQodmlld3BvcnQsIHtcbiAgbW9kZWxNYXRyaXggPSBudWxsLFxuICBwcm9qZWN0aW9uTW9kZSA9IENPT1JESU5BVEVfU1lTVEVNLkxOR0xBVCxcbiAgcG9zaXRpb25PcmlnaW4gPSBbMCwgMF1cbn0gPSB7fSkge1xuICAvLyBUT0RPOiBtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSB0byBpbml0aWFsaXphdGlvbiBzbyB0aGF0IGl0J3MgZG9uZSBvbmx5IG9uY2VcbiAgY29uc3QgcG9zaXRpb25PcmlnaW5QaXhlbHMgPSB2aWV3cG9ydC5wcm9qZWN0RmxhdChwb3NpdGlvbk9yaWdpbik7XG5cbiAgY29uc3QgcHJvamVjdGVkUG9zaXRpb25PcmlnaW4gPSBbcG9zaXRpb25PcmlnaW5QaXhlbHNbMF0sIHBvc2l0aW9uT3JpZ2luUGl4ZWxzWzFdLCAwLjAsIDEuMF07XG5cbiAgLy8gY2FsY3VsYXRlIFdlYkdMIG1hdHJpY2VzXG4gIC8vIFRPRE8gLSBjb3VsZCBiZSBjYWNoZWQgZm9yIGUuZy4gbW9kZWxNYXRyaXggPT09IG51bGxcbiAgY29uc3QgbWF0cmljZXMgPSB2aWV3cG9ydC5nZXRNYXRyaWNlcyh7bW9kZWxNYXRyaXh9KTtcblxuICBjb25zdCB7bW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCwgc2NhbGUsIHBpeGVsc1Blck1ldGVyfSA9IG1hdHJpY2VzO1xuICBhc3NlcnQobW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCwgJ1ZpZXdwb3J0IG1pc3NpbmcgbW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCcpO1xuICBhc3NlcnQoc2NhbGUsICdWaWV3cG9ydCBzY2FsZSBtaXNzaW5nJyk7XG4gIGFzc2VydChwaXhlbHNQZXJNZXRlciwgJ1ZpZXdwb3J0IG1pc3NpbmcgcGl4ZWxzUGVyTWV0ZXInKTtcblxuICAvLyBDb252ZXJ0IHRvIEZsb2F0MzJcbiAgY29uc3QgZ2xQcm9qZWN0aW9uTWF0cml4ID0gbmV3IEZsb2F0MzJBcnJheShtb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4KTtcblxuICAvLyBkeTY0aWZ5XG4gIGNvbnN0IGdsUHJvamVjdGlvbk1hdHJpeEZQNjQgPSBuZXcgRmxvYXQzMkFycmF5KDMyKTtcbiAgLy8gVHJhbnNwb3NlIHRoZSBwcm9qZWN0aW9uIG1hdHJpeCB0byBjb2x1bW4gbWFqb3IgZm9yIEdMU0wuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCA0OyArK2opIHtcbiAgICAgIFtcbiAgICAgICAgZ2xQcm9qZWN0aW9uTWF0cml4RlA2NFsoaSAqIDQgKyBqKSAqIDJdLFxuICAgICAgICBnbFByb2plY3Rpb25NYXRyaXhGUDY0WyhpICogNCArIGopICogMiArIDFdXG4gICAgICBdID0gZnA2NGlmeShtb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4W2ogKiA0ICsgaV0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHByb2plY3Rpb25DZW50ZXIgPVxuICAgIHZlYzQudHJhbnNmb3JtTWF0NChbXSwgcHJvamVjdGVkUG9zaXRpb25PcmlnaW4sIG1vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgpO1xuXG4gIGNvbnNvbGUubG9nKHZpZXdwb3J0LCBwcm9qZWN0ZWRQb3NpdGlvbk9yaWdpbiwgcHJvamVjdGlvbkNlbnRlcik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICByZXR1cm4ge1xuICAgIC8vIFByb2plY3Rpb24gbW9kZSB2YWx1ZXNcbiAgICBwcm9qZWN0aW9uTW9kZSxcbiAgICBwcm9qZWN0aW9uQ2VudGVyLFxuXG4gICAgLy8gTWFpbiBwcm9qZWN0aW9uIG1hdHJpY2VzXG4gICAgcHJvamVjdGlvbk1hdHJpeDogZ2xQcm9qZWN0aW9uTWF0cml4LFxuICAgIHByb2plY3Rpb25GUDY0OiBnbFByb2plY3Rpb25NYXRyaXhGUDY0LFxuICAgIHByb2plY3Rpb25QaXhlbHNQZXJVbml0OiBtYXRyaWNlcy5waXhlbHNQZXJNZXRlcixcbiAgICBwcm9qZWN0aW9uU2NhbGU6IG1hdHJpY2VzLnNjYWxlLFxuICAgIHByb2plY3Rpb25TY2FsZUZQNjQ6IGZwNjRpZnkobWF0cmljZXMuc2NhbGUpXG4gIH07XG59XG4iXX0=

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

var _desc, _value, _class, _class2, _temp; // Copyright (c) 2015 Uber Technologies, Inc.
var _class, _temp; // Copyright (c) 2015 Uber Technologies, Inc.
//

@@ -38,5 +38,5 @@ // Permission is hereby granted, free of charge, to any person obtaining a copy

var _autobindDecorator = require('autobind-decorator');
var _autobind = require('./autobind');
var _autobindDecorator2 = _interopRequireDefault(_autobindDecorator);
var _autobind2 = _interopRequireDefault(_autobind);

@@ -67,34 +67,5 @@ var _webglRenderer = require('./webgl-renderer');

function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
var desc = {};
Object['ke' + 'ys'](descriptor).forEach(function (key) {
desc[key] = descriptor[key];
});
desc.enumerable = !!desc.enumerable;
desc.configurable = !!desc.configurable;
if ('value' in desc || desc.initializer) {
desc.writable = true;
}
desc = decorators.slice().reverse().reduce(function (desc, decorator) {
return decorator(target, property, desc) || desc;
}, desc);
if (context && desc.initializer !== void 0) {
desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
desc.initializer = undefined;
}
if (desc.initializer === void 0) {
Object['define' + 'Property'](target, property, desc);
desc = null;
}
return desc;
}
function noop() {}
var DeckGL = (_class = (_temp = _class2 = function (_React$Component) {
var DeckGL = (_temp = _class = function (_React$Component) {
_inherits(DeckGL, _React$Component);

@@ -111,2 +82,3 @@

_this.effectManager = null;
(0, _autobind2.default)(_this);
return _this;

@@ -278,3 +250,3 @@ }

return DeckGL;
}(_react2.default.Component), _class2.propTypes = {
}(_react2.default.Component), _class.propTypes = {
id: _react.PropTypes.string,

@@ -291,3 +263,3 @@ width: _react.PropTypes.number.isRequired,

onLayerHover: _react.PropTypes.func
}, _class2.defaultProps = {
}, _class.defaultProps = {
id: 'deckgl-overlay',

@@ -300,4 +272,4 @@ debug: false,

onLayerHover: noop
}, _temp), (_applyDecoratedDescriptor(_class.prototype, '_onRendererInitialized', [_autobindDecorator2.default], Object.getOwnPropertyDescriptor(_class.prototype, '_onRendererInitialized'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, '_onClick', [_autobindDecorator2.default], Object.getOwnPropertyDescriptor(_class.prototype, '_onClick'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, '_onMouseMove', [_autobindDecorator2.default], Object.getOwnPropertyDescriptor(_class.prototype, '_onMouseMove'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, '_onRenderFrame', [_autobindDecorator2.default], Object.getOwnPropertyDescriptor(_class.prototype, '_onRenderFrame'), _class.prototype)), _class);
}, _temp);
exports.default = DeckGL;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWFjdC9kZWNrZ2wuanMiXSwibmFtZXMiOlsibm9vcCIsIkRlY2tHTCIsInByb3BzIiwic3RhdGUiLCJuZWVkc1JlZHJhdyIsImxheWVyTWFuYWdlciIsImVmZmVjdE1hbmFnZXIiLCJuZXh0UHJvcHMiLCJfdXBkYXRlTGF5ZXJzIiwid2lkdGgiLCJoZWlnaHQiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsInpvb20iLCJwaXRjaCIsImJlYXJpbmciLCJhbHRpdHVkZSIsInZpZXdwb3J0Iiwic2V0Vmlld3BvcnQiLCJ1cGRhdGVMYXllcnMiLCJuZXdMYXllcnMiLCJsYXllcnMiLCJnbCIsImNhbnZhcyIsImVuYWJsZSIsIkJMRU5EIiwiYmxlbmRGdW5jIiwiU1JDX0FMUEhBIiwiT05FX01JTlVTX1NSQ19BTFBIQSIsIm9uV2ViR0xJbml0aWFsaXplZCIsImVmZmVjdHMiLCJlZmZlY3QiLCJhZGRFZmZlY3QiLCJoYXNFdmVudCIsIm9uTGF5ZXJDbGljayIsIm9uTGF5ZXJIb3ZlciIsImhhc1BpY2thYmxlTGF5ZXIiLCJtYXAiLCJsIiwicGlja2FibGUiLCJpbmNsdWRlcyIsIm9uY2UiLCJldmVudHMiLCJjYWNoZVNpemUiLCJjYWNoZVBvc2l0aW9uIiwiY2VudGVyT3JpZ2luIiwib25DbGljayIsIl9vbkNsaWNrIiwib25Nb3VzZU1vdmUiLCJfb25Nb3VzZU1vdmUiLCJldmVudCIsIngiLCJ5Iiwic2VsZWN0ZWRJbmZvcyIsInBpY2tMYXllciIsIm1vZGUiLCJmaXJzdEluZm8iLCJmaW5kIiwiaW5mbyIsImluZGV4IiwiY2xlYXJSZWRyYXdGbGFncyIsImNsZWFyIiwiQ09MT1JfQlVGRkVSX0JJVCIsIkRFUFRIX0JVRkZFUl9CSVQiLCJwcmVEcmF3IiwiZHJhd0xheWVycyIsImRyYXciLCJkZWJ1ZyIsIm90aGVyUHJvcHMiLCJfb25SZW5kZXJlckluaXRpYWxpemVkIiwiX29uTmVlZFJlZHJhdyIsIl9vblJlbmRlckZyYW1lIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiaWQiLCJzdHJpbmciLCJudW1iZXIiLCJpc1JlcXVpcmVkIiwiYXJyYXlPZiIsImluc3RhbmNlT2YiLCJvYmplY3QiLCJib29sIiwiZnVuYyIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7MkNBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNBLElBQVQsR0FBZ0IsQ0FBRTs7SUFFR0MsTTs7O0FBMEJuQixrQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBLGdIQUNYQSxLQURXOztBQUVqQixVQUFLQyxLQUFMLEdBQWEsRUFBYjtBQUNBLFVBQUtDLFdBQUwsR0FBbUIsSUFBbkI7QUFDQSxVQUFLQyxZQUFMLEdBQW9CLElBQXBCO0FBQ0EsVUFBS0MsYUFBTCxHQUFxQixJQUFyQjtBQUxpQjtBQU1sQjs7Ozs4Q0FFeUJDLFMsRUFBVztBQUNuQyxXQUFLQyxhQUFMLENBQW1CRCxTQUFuQjtBQUNEOzs7a0NBRWFBLFMsRUFBVztBQUFBLFVBQ2hCRSxLQURnQixHQUNzREYsU0FEdEQsQ0FDaEJFLEtBRGdCO0FBQUEsVUFDVEMsTUFEUyxHQUNzREgsU0FEdEQsQ0FDVEcsTUFEUztBQUFBLFVBQ0RDLFFBREMsR0FDc0RKLFNBRHRELENBQ0RJLFFBREM7QUFBQSxVQUNTQyxTQURULEdBQ3NETCxTQUR0RCxDQUNTSyxTQURUO0FBQUEsVUFDb0JDLElBRHBCLEdBQ3NETixTQUR0RCxDQUNvQk0sSUFEcEI7QUFBQSxVQUMwQkMsS0FEMUIsR0FDc0RQLFNBRHRELENBQzBCTyxLQUQxQjtBQUFBLFVBQ2lDQyxPQURqQyxHQUNzRFIsU0FEdEQsQ0FDaUNRLE9B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QUFJWSxFQU5OO0FBT0UsZUFBTzZDLEtBUFQ7QUFRRSxrQkFBVSxFQUFDaEIsR0FBRyxDQUFKLEVBQU9DLEdBQUcsQ0FBVixFQUFhM0MsWUFBYixFQUFvQkMsY0FBcEIsRUFSWjs7QUFVRSwrQkFBdUIsS0FBSzJELHNCQVY5QjtBQVdFLHNCQUFjLEtBQUtDLGFBWHJCO0FBWUUsdUJBQWUsS0FBS0MsY0FadEI7QUFhRSxxQkFBYSxLQUFLdEIsWUFicEI7QUFjRSxpQkFBUyxLQUFLRixRQWRoQixJQURGO0FBaUJEOzs7O0VBM0lpQyxnQkFBTXlCLFMsV0FFakNDLFMsR0FBWTtBQUNqQkMsTUFBSSxpQkFBVUMsTUFERztBQUVqQmxFLFNBQU8saUJBQVVtRSxNQUFWLENBQWlCQyxVQUZQO0FBR2pCbkUsVUFBUSxpQkFBVWtFLE1BQVYsQ0FBaUJDLFVBSFI7QUFJakJ4RCxVQUFRLGlCQUFVeUQsT0FBVixDQUFrQixpQkFBVUMsVUFBVixZQUFsQixFQUErQ0YsVUFKdEM7QUFLakIvQyxXQUFTLGlCQUFVZ0QsT0FBVixDQUFrQixpQkFBVUMsVUFBVixzQkFBbEIsQ0FMUTtBQU1qQnpELE1BQUksaUJBQVUwRCxNQU5HO0FBT2pCYixTQUFPLGlCQUFVYyxJQVBBO0FBUWpCaEUsWUFBVSxpQkFBVThELFVBQVYsbUNBUk87QUFTakJsRCxzQkFBb0IsaUJBQVVxRCxJQVRiO0FBVWpCaEQsZ0JBQWMsaUJBQVVnRCxJQVZQO0FBV2pCL0MsZ0JBQWMsaUJBQVUrQztBQVhQLEMsVUFjWkMsWSxHQUFlO0FBQ3BCVCxNQUFJLGdCQURnQjtBQUVwQlAsU0FBTyxLQUZhO0FBR3BCN0MsTUFBSSxJQUhnQjtBQUlwQlEsV0FBUyxFQUpXO0FBS3BCRCxzQkFBb0I3QixJQUxBO0FBTXBCa0MsZ0JBQWNsQyxJQU5NO0FBT3BCbUMsZ0JBQWNuQztBQVBNLEM7a0JBaEJIQyxNIiwiZmlsZSI6ImRlY2tnbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxNSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5pbXBvcnQgUmVhY3QsIHtQcm9wVHlwZXN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBhdXRvYmluZCBmcm9tICdhdXRvYmluZC1kZWNvcmF0b3InO1xuaW1wb3J0IFdlYkdMUmVuZGVyZXIgZnJvbSAnLi93ZWJnbC1yZW5kZXJlcic7XG5pbXBvcnQge0xheWVyTWFuYWdlciwgTGF5ZXJ9IGZyb20gJy4uL2xpYic7XG5pbXBvcnQge0VmZmVjdE1hbmFnZXIsIEVmZmVjdH0gZnJvbSAnLi4vZXhwZXJpbWVudGFsJztcbmltcG9ydCB7R0wsIGFkZEV2ZW50c30gZnJvbSAnbHVtYS5nbCc7XG5pbXBvcnQge1ZpZXdwb3J0LCBXZWJNZXJjYXRvclZpZXdwb3J0fSBmcm9tICd2aWV3cG9ydC1tZXJjYXRvci1wcm9qZWN0JztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi9saWIvdXRpbHMnO1xuXG5mdW5jdGlvbiBub29wKCkge31cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVja0dMIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcblxuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgaGVpZ2h0OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgbGF5ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuaW5zdGFuY2VPZihMYXllcikpLmlzUmVxdWlyZWQsXG4gICAgZWZmZWN0czogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmluc3RhbmNlT2YoRWZmZWN0KSksXG4gICAgZ2w6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZGVidWc6IFByb3BUeXBlcy5ib29sLFxuICAgIHZpZXdwb3J0OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihWaWV3cG9ydCksXG4gICAgb25XZWJHTEluaXRpYWxpemVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkxheWVyQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uTGF5ZXJIb3ZlcjogUHJvcFR5cGVzLmZ1bmNcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGlkOiAnZGVja2dsLW92ZXJsYXknLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICBnbDogbnVsbCxcbiAgICBlZmZlY3RzOiBbXSxcbiAgICBvbldlYkdMSW5pdGlhbGl6ZWQ6IG5vb3AsXG4gICAgb25MYXllckNsaWNrOiBub29wLFxuICAgIG9uTGF5ZXJIb3Zlcjogbm9vcFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7fTtcbiAgICB0aGlzLm5lZWRzUmVkcmF3ID0gdHJ1ZTtcbiAgICB0aGlzLmxheWVyTWFuYWdlciA9IG51bGw7XG4gICAgdGhpcy5lZmZlY3RNYW5hZ2VyID0gbnVsbDtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgdGhpcy5fdXBkYXRlTGF5ZXJzKG5leHRQcm9wcyk7XG4gIH1cblxuICBfdXBkYXRlTGF5ZXJzKG5leHRQcm9wcykge1xuICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0LCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCB6b29tLCBwaXRjaCwgYmVhcmluZywgYWx0aXR1ZGV9ID0gbmV4dFByb3BzO1xuICAgIGxldCB7dmlld3BvcnR9ID0gbmV4dFByb3BzO1xuXG4gICAgLy8gSWYgVmlld3BvcnQgaXMgbm90IHN1cHBsaWVkLCBjcmVhdGUgb25lIGZyb20gbWVyY2F0b3IgcHJvcHNcbiAgICB2aWV3cG9ydCA9IHZpZXdwb3J0IHx8IG5ldyBXZWJNZXJjYXRvclZpZXdwb3J0KHtcbiAgICAgIHdpZHRoLCBoZWlnaHQsIGxhdGl0dWRlLCBsb25naXR1ZGUsIHpvb20sIHBpdGNoLCBiZWFyaW5nLCBhbHRpdHVkZVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMubGF5ZXJNYW5hZ2VyKSB7XG4gICAgICB0aGlzLmxheWVyTWFuYWdlclxuICAgICAgICAuc2V0Vmlld3BvcnQodmlld3BvcnQpXG4gICAgICAgIC51cGRhdGVMYXllcnMoe25ld0xheWVyczogbmV4dFByb3BzLmxheWVyc30pO1xuICAgIH1cbiAgfVxuXG4gIEBhdXRvYmluZCBfb25SZW5kZXJlckluaXRpYWxpemVkKHtnbCwgY2FudmFzfSkge1xuICAgIGdsLmVuYWJsZShHTC5CTEVORCk7XG4gICAgZ2wuYmxlbmRGdW5jKEdMLlNSQ19BTFBIQSwgR0wuT05FX01JTlVTX1NSQ19BTFBIQSk7XG5cbiAgICB0aGlzLnByb3BzLm9uV2ViR0xJbml0aWFsaXplZChnbCk7XG5cbiAgICAvLyBOb3RlOiBhdm9pZCBSZWFjdCBzZXRTdGF0ZSBkdWUgR0wgYW5pbWF0aW9uIGxvb3AgLyBzZXRTdGF0ZSB0aW1pbmcgaXNzdWVcbiAgICB0aGlzLmxheWVyTWFuYWdlciA9IG5ldyBMYXllck1hbmFnZXIoe2dsfSk7XG4gICAgdGhpcy5lZmZlY3RNYW5hZ2VyID0gbmV3IEVmZmVjdE1hbmFnZXIoe2dsLCBsYXllck1hbmFnZXI6IHRoaXMubGF5ZXJNYW5hZ2VyfSk7XG4gICAgZm9yIChjb25zdCBlZmZlY3Qgb2YgdGhpcy5wcm9wcy5lZmZlY3RzKSB7XG4gICAgICB0aGlzLmVmZmVjdE1hbmFnZXIuYWRkRWZmZWN0KGVmZmVjdCk7XG4gICAgfVxuICAgIHRoaXMuX3VwZGF0ZUxheWVycyh0aGlzLnByb3BzKTtcblxuICAgIC8vIENoZWNrIGlmIGEgbW91c2UgZXZlbnQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGUgbGF5ZXJzIGlzIHBpY2thYmxlXG4gICAgY29uc3QgaGFzRXZlbnQgPSB0aGlzLnByb3BzLm9uTGF5ZXJDbGljayAhPT0gbm9vcCB8fCB0aGlzLnByb3BzLm9uTGF5ZXJIb3ZlciAhPT0gbm9vcDtcbiAgICBjb25zdCBoYXNQaWNrYWJsZUxheWVyID0gdGhpcy5sYXllck1hbmFnZXIubGF5ZXJzLm1hcChsID0+IGwucHJvcHMucGlja2FibGUpLmluY2x1ZGVzKHRydWUpO1xuICAgIGlmIChoYXNFdmVudCAmJiAhaGFzUGlja2FibGVMYXllcikge1xuICAgICAgbG9nLm9uY2UoXG4gICAgICAgIDAsXG4gICAgICAgICdZb3UgaGF2ZSBzdXBwbGllZCBhIG1vdXNlIGV2ZW50IGhhbmRsZXIgYnV0IG5vbmUgb2YgeW91ciBsYXllcnMgZ290IHRoZSBgcGlja2FibGVgIGZsYWcuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmV2ZW50cyA9IGFkZEV2ZW50cyhjYW52YXMsIHtcbiAgICAgIGNhY2hlU2l6ZTogZmFsc2UsXG4gICAgICBjYWNoZVBvc2l0aW9uOiBmYWxzZSxcbiAgICAgIGNlbnRlck9yaWdpbjogZmFsc2UsXG4gICAgICBvbkNsaWNrOiB0aGlzLl9vbkNsaWNrLFxuICAgICAgb25Nb3VzZU1vdmU6IHRoaXMuX29uTW91c2VNb3ZlXG4gICAgfSk7XG4gIH1cblxuICAvLyBSb3V0ZSBldmVudHMgdG8gbGF5ZXJzXG4gIEBhdXRvYmluZCBfb25DbGljayhldmVudCkge1xuICAgIGNvbnN0IHt4LCB5fSA9IGV2ZW50O1xuICAgIGNvbnN0IHNlbGVjdGVkSW5mb3MgPSB0aGlzLmxheWVyTWFuYWdlci5waWNrTGF5ZXIoe3gsIHksIG1vZGU6ICdjbGljayd9KTtcbiAgICBjb25zdCBmaXJzdEluZm8gPSBzZWxlY3RlZEluZm9zLmZpbmQoaW5mbyA9PiBpbmZvLmluZGV4ID49IDApO1xuICAgIC8vIEV2ZW50LmV2ZW50IGhvbGRzIHRoZSBvcmlnaW5hbCBNb3VzZUV2ZW50IG9iamVjdFxuICAgIHRoaXMucHJvcHMub25MYXllckNsaWNrKGZpcnN0SW5mbywgc2VsZWN0ZWRJbmZvcywgZXZlbnQuZXZlbnQpO1xuICB9XG5cbiAgLy8gUm91dGUgZXZlbnRzIHRvIGxheWVyc1xuICBAYXV0b2JpbmQgX29uTW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgY29uc3Qge3gsIHl9ID0gZXZlbnQ7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmZvcyA9IHRoaXMubGF5ZXJNYW5hZ2VyLnBpY2tMYXllcih7eCwgeSwgbW9kZTogJ2hvdmVyJ30pO1xuICAgIGNvbnN0IGZpcnN0SW5mbyA9IHNlbGVjdGVkSW5mb3MuZmluZChpbmZvID0+IGluZm8uaW5kZXggPj0gMCk7XG4gICAgLy8gRXZlbnQuZXZlbnQgaG9sZHMgdGhlIG9yaWdpbmFsIE1vdXNlRXZlbnQgb2JqZWN0XG4gICAgdGhpcy5wcm9wcy5vbkxheWVySG92ZXIoZmlyc3RJbmZvLCBzZWxlY3RlZEluZm9zLCBldmVudC5ldmVudCk7XG4gIH1cblxuICBAYXV0b2JpbmQgX29uUmVuZGVyRnJhbWUoe2dsfSkge1xuICAgIGlmICghdGhpcy5sYXllck1hbmFnZXIubmVlZHNSZWRyYXcoe2NsZWFyUmVkcmF3RmxhZ3M6IHRydWV9KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBjbGVhciBkZXB0aCBhbmQgY29sb3IgYnVmZmVyc1xuICAgIGdsLmNsZWFyKEdMLkNPTE9SX0JVRkZFUl9CSVQgfCBHTC5ERVBUSF9CVUZGRVJfQklUKTtcblxuICAgIHRoaXMuZWZmZWN0TWFuYWdlci5wcmVEcmF3KCk7XG5cbiAgICB0aGlzLmxheWVyTWFuYWdlci5kcmF3TGF5ZXJzKCk7XG5cbiAgICB0aGlzLmVmZmVjdE1hbmFnZXIuZHJhdygpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0LCBnbCwgZGVidWcsIC4uLm90aGVyUHJvcHN9ID0gdGhpcy5wcm9wcztcblxuICAgIHJldHVybiAoXG4gICAgICA8V2ViR0xSZW5kZXJlclxuICAgICAgICB7Li4ub3RoZXJQcm9wc31cblxuICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgIGhlaWdodD17aGVpZ2h0fVxuXG4gICAgICAgIGdsPXtnbH1cbiAgICAgICAgZGVidWc9e2RlYnVnfVxuICAgICAgICB2aWV3cG9ydD17e3g6IDAsIHk6IDAsIHdpZHRoLCBoZWlnaHR9fVxuXG4gICAgICAgIG9uUmVuZGVyZXJJbml0aWFsaXplZD17dGhpcy5fb25SZW5kZXJlckluaXRpYWxpemVkfVxuICAgICAgICBvbk5lZWRSZWRyYXc9e3RoaXMuX29uTmVlZFJlZHJhd31cbiAgICAgICAgb25SZW5kZXJGcmFtZT17dGhpcy5fb25SZW5kZXJGcmFtZX1cbiAgICAgICAgb25Nb3VzZU1vdmU9e3RoaXMuX29uTW91c2VNb3ZlfVxuICAgICAgICBvbkNsaWNrPXt0aGlzLl9vbkNsaWNrfS8+XG4gICAgKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWFjdC9kZWNrZ2wuanMiXSwibmFtZXMiOlsibm9vcCIsIkRlY2tHTCIsInByb3BzIiwic3RhdGUiLCJuZWVkc1JlZHJhdyIsImxheWVyTWFuYWdlciIsImVmZmVjdE1hbmFnZXIiLCJuZXh0UHJvcHMiLCJfdXBkYXRlTGF5ZXJzIiwid2lkdGgiLCJoZWlnaHQiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsInpvb20iLCJwaXRjaCIsImJlYXJpbmciLCJhbHRpdHVkZSIsInZpZXdwb3J0Iiwic2V0Vmlld3BvcnQiLCJ1cGRhdGVMYXllcnMiLCJuZXdMYXllcnMiLCJsYXllcnMiLCJnbCIsImNhbnZhcyIsImVuYWJsZSIsIkJMRU5EIiwiYmxlbmRGdW5jIiwiU1JDX0FMUEhBIiwiT05FX01JTlVTX1NSQ19BTFBIQSIsIm9uV2ViR0xJbml0aWFsaXplZCIsImVmZmVjdHMiLCJlZmZlY3QiLCJhZGRFZmZlY3QiLCJoYXNFdmVudCIsIm9uTGF5ZXJDbGljayIsIm9uTGF5ZXJIb3ZlciIsImhhc1BpY2thYmxlTGF5ZXIiLCJtYXAiLCJsIiwicGlja2FibGUiLCJpbmNsdWRlcyIsIm9uY2UiLCJldmVudHMiLCJjYWNoZVNpemUiLCJjYWNoZVBvc2l0aW9uIiwiY2VudGVyT3JpZ2luIiwib25DbGljayIsIl9vbkNsaWNrIiwib25Nb3VzZU1vdmUiLCJfb25Nb3VzZU1vdmUiLCJldmVudCIsIngiLCJ5Iiwic2VsZWN0ZWRJbmZvcyIsInBpY2tMYXllciIsIm1vZGUiLCJmaXJzdEluZm8iLCJmaW5kIiwiaW5mbyIsImluZGV4IiwiY2xlYXJSZWRyYXdGbGFncyIsImNsZWFyIiwiQ09MT1JfQlVGRkVSX0JJVCIsIkRFUFRIX0JVRkZFUl9CSVQiLCJwcmVEcmF3IiwiZHJhd0xheWVycyIsImRyYXciLCJkZWJ1ZyIsIm90aGVyUHJvcHMiLCJfb25SZW5kZXJlckluaXRpYWxpemVkIiwiX29uTmVlZFJlZHJhdyIsIl9vblJlbmRlckZyYW1lIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiaWQiLCJzdHJpbmciLCJudW1iZXIiLCJpc1JlcXVpcmVkIiwiYXJyYXlPZiIsImluc3RhbmNlT2YiLCJvYmplY3QiLCJib29sIiwiZnVuYyIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7bUJBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQSxTQUFTQSxJQUFULEdBQWdCLENBQUU7O0lBRUdDLE07OztBQTBCbkIsa0JBQVlDLEtBQVosRUFBbUI7QUFBQTs7QUFBQSxnSEFDWEEsS0FEVzs7QUFFakIsVUFBS0MsS0FBTCxHQUFhLEVBQWI7QUFDQSxVQUFLQyxXQUFMLEdBQW1CLElBQW5CO0FBQ0EsVUFBS0MsWUFBTCxHQUFvQixJQUFwQjtBQUNBLFVBQUtDLGFBQUwsR0FBcUIsSUFBckI7QUFDQTtBQU5pQjtBQU9sQjs7Ozs4Q0FFeUJDLFMsRUFBVztBQUNuQyxXQUFLQyxhQUFMLENBQW1CRCxTQUFuQjtBQUNEOzs7a0NBRWFBLFMsRUFBVztBQUFBLFVBQ2hCRSxLQURnQixHQUNzREYsU0FEdEQsQ0FDaEJFLEtBRGdCO0FBQUEsVUFDVEMsTUFEUyxHQUNzREgsU0FEdEQsQ0FDVEcsTUFEUztBQUFBLFVBQ0RDLFFBREMsR0FDc0RKLFNBRHRELENBQ0RJLFFBREM7QUFBQSxVQUNTQyxTQURULEdBQ3NETCxTQUR0RCxDQUNTSyxTQURUO0FBQUEsVUFDb0JDLElBRHBCLEdBQ3NETixTQUR0RCxDQUNvQk0sSUFEcEI7QUFBQSxVQUMwQkMsS0FEMUIsR0FDc0RQLFNBRHRELENBQzBCTyxLQUQxQjtBQUFBLFVBQ2lDQyxPQURqQyxHQUNzRFIsU0FEdEQsQ0FDaUNRLE9BRGpDO0FBQUEsVUFDMENDLFFBRDFDLEdB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QUFDaEIsR0FBRyxDQUFKLEVBQU9DLEdBQUcsQ0FBVixFQUFhM0MsWUFBYixFQUFvQkMsY0FBcEIsRUFSWjs7QUFVRSwrQkFBdUIsS0FBSzJELHNCQVY5QjtBQVdFLHNCQUFjLEtBQUtDLGFBWHJCO0FBWUUsdUJBQWUsS0FBS0MsY0FadEI7QUFhRSxxQkFBYSxLQUFLdEIsWUFicEI7QUFjRSxpQkFBUyxLQUFLRixRQWRoQixJQURGO0FBaUJEOzs7O0VBNUlpQyxnQkFBTXlCLFMsVUFFakNDLFMsR0FBWTtBQUNqQkMsTUFBSSxpQkFBVUMsTUFERztBQUVqQmxFLFNBQU8saUJBQVVtRSxNQUFWLENBQWlCQyxVQUZQO0FBR2pCbkUsVUFBUSxpQkFBVWtFLE1BQVYsQ0FBaUJDLFVBSFI7QUFJakJ4RCxVQUFRLGlCQUFVeUQsT0FBVixDQUFrQixpQkFBVUMsVUFBVixZQUFsQixFQUErQ0YsVUFKdEM7QUFLakIvQyxXQUFTLGlCQUFVZ0QsT0FBVixDQUFrQixpQkFBVUMsVUFBVixzQkFBbEIsQ0FMUTtBQU1qQnpELE1BQUksaUJBQVUwRCxNQU5HO0FBT2pCYixTQUFPLGlCQUFVYyxJQVBBO0FBUWpCaEUsWUFBVSxpQkFBVThELFVBQVYsbUNBUk87QUFTakJsRCxzQkFBb0IsaUJBQVVxRCxJQVRiO0FBVWpCaEQsZ0JBQWMsaUJBQVVnRCxJQVZQO0FBV2pCL0MsZ0JBQWMsaUJBQVUrQztBQVhQLEMsU0FjWkMsWSxHQUFlO0FBQ3BCVCxNQUFJLGdCQURnQjtBQUVwQlAsU0FBTyxLQUZhO0FBR3BCN0MsTUFBSSxJQUhnQjtBQUlwQlEsV0FBUyxFQUpXO0FBS3BCRCxzQkFBb0I3QixJQUxBO0FBTXBCa0MsZ0JBQWNsQyxJQU5NO0FBT3BCbUMsZ0JBQWNuQztBQVBNLEM7a0JBaEJIQyxNIiwiZmlsZSI6ImRlY2tnbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxNSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5pbXBvcnQgUmVhY3QsIHtQcm9wVHlwZXN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBhdXRvYmluZCBmcm9tICcuL2F1dG9iaW5kJztcbmltcG9ydCBXZWJHTFJlbmRlcmVyIGZyb20gJy4vd2ViZ2wtcmVuZGVyZXInO1xuaW1wb3J0IHtMYXllck1hbmFnZXIsIExheWVyfSBmcm9tICcuLi9saWInO1xuaW1wb3J0IHtFZmZlY3RNYW5hZ2VyLCBFZmZlY3R9IGZyb20gJy4uL2V4cGVyaW1lbnRhbCc7XG5pbXBvcnQge0dMLCBhZGRFdmVudHN9IGZyb20gJ2x1bWEuZ2wnO1xuaW1wb3J0IHtWaWV3cG9ydCwgV2ViTWVyY2F0b3JWaWV3cG9ydH0gZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vbGliL3V0aWxzJztcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlY2tHTCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB3aWR0aDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIGhlaWdodDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIGxheWVyczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmluc3RhbmNlT2YoTGF5ZXIpKS5pc1JlcXVpcmVkLFxuICAgIGVmZmVjdHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5pbnN0YW5jZU9mKEVmZmVjdCkpLFxuICAgIGdsOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRlYnVnOiBQcm9wVHlwZXMuYm9vbCxcbiAgICB2aWV3cG9ydDogUHJvcFR5cGVzLmluc3RhbmNlT2YoVmlld3BvcnQpLFxuICAgIG9uV2ViR0xJbml0aWFsaXplZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25MYXllckNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkxheWVySG92ZXI6IFByb3BUeXBlcy5mdW5jXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBpZDogJ2RlY2tnbC1vdmVybGF5JyxcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgZ2w6IG51bGwsXG4gICAgZWZmZWN0czogW10sXG4gICAgb25XZWJHTEluaXRpYWxpemVkOiBub29wLFxuICAgIG9uTGF5ZXJDbGljazogbm9vcCxcbiAgICBvbkxheWVySG92ZXI6IG5vb3BcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge307XG4gICAgdGhpcy5uZWVkc1JlZHJhdyA9IHRydWU7XG4gICAgdGhpcy5sYXllck1hbmFnZXIgPSBudWxsO1xuICAgIHRoaXMuZWZmZWN0TWFuYWdlciA9IG51bGw7XG4gICAgYXV0b2JpbmQodGhpcyk7XG4gIH1cblxuICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIHRoaXMuX3VwZGF0ZUxheWVycyhuZXh0UHJvcHMpO1xuICB9XG5cbiAgX3VwZGF0ZUxheWVycyhuZXh0UHJvcHMpIHtcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgem9vbSwgcGl0Y2gsIGJlYXJpbmcsIGFsdGl0dWRlfSA9IG5leHRQcm9wcztcbiAgICBsZXQge3ZpZXdwb3J0fSA9IG5leHRQcm9wcztcblxuICAgIC8vIElmIFZpZXdwb3J0IGlzIG5vdCBzdXBwbGllZCwgY3JlYXRlIG9uZSBmcm9tIG1lcmNhdG9yIHByb3BzXG4gICAgdmlld3BvcnQgPSB2aWV3cG9ydCB8fCBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydCh7XG4gICAgICB3aWR0aCwgaGVpZ2h0LCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCB6b29tLCBwaXRjaCwgYmVhcmluZywgYWx0aXR1ZGVcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmxheWVyTWFuYWdlcikge1xuICAgICAgdGhpcy5sYXllck1hbmFnZXJcbiAgICAgICAgLnNldFZpZXdwb3J0KHZpZXdwb3J0KVxuICAgICAgICAudXBkYXRlTGF5ZXJzKHtuZXdMYXllcnM6IG5leHRQcm9wcy5sYXllcnN9KTtcbiAgICB9XG4gIH1cblxuICBfb25SZW5kZXJlckluaXRpYWxpemVkKHtnbCwgY2FudmFzfSkge1xuICAgIGdsLmVuYWJsZShHTC5CTEVORCk7XG4gICAgZ2wuYmxlbmRGdW5jKEdMLlNSQ19BTFBIQSwgR0wuT05FX01JTlVTX1NSQ19BTFBIQSk7XG5cbiAgICB0aGlzLnByb3BzLm9uV2ViR0xJbml0aWFsaXplZChnbCk7XG5cbiAgICAvLyBOb3RlOiBhdm9pZCBSZWFjdCBzZXRTdGF0ZSBkdWUgR0wgYW5pbWF0aW9uIGxvb3AgLyBzZXRTdGF0ZSB0aW1pbmcgaXNzdWVcbiAgICB0aGlzLmxheWVyTWFuYWdlciA9IG5ldyBMYXllck1hbmFnZXIoe2dsfSk7XG4gICAgdGhpcy5lZmZlY3RNYW5hZ2VyID0gbmV3IEVmZmVjdE1hbmFnZXIoe2dsLCBsYXllck1hbmFnZXI6IHRoaXMubGF5ZXJNYW5hZ2VyfSk7XG4gICAgZm9yIChjb25zdCBlZmZlY3Qgb2YgdGhpcy5wcm9wcy5lZmZlY3RzKSB7XG4gICAgICB0aGlzLmVmZmVjdE1hbmFnZXIuYWRkRWZmZWN0KGVmZmVjdCk7XG4gICAgfVxuICAgIHRoaXMuX3VwZGF0ZUxheWVycyh0aGlzLnByb3BzKTtcblxuICAgIC8vIENoZWNrIGlmIGEgbW91c2UgZXZlbnQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGUgbGF5ZXJzIGlzIHBpY2thYmxlXG4gICAgY29uc3QgaGFzRXZlbnQgPSB0aGlzLnByb3BzLm9uTGF5ZXJDbGljayAhPT0gbm9vcCB8fCB0aGlzLnByb3BzLm9uTGF5ZXJIb3ZlciAhPT0gbm9vcDtcbiAgICBjb25zdCBoYXNQaWNrYWJsZUxheWVyID0gdGhpcy5sYXllck1hbmFnZXIubGF5ZXJzLm1hcChsID0+IGwucHJvcHMucGlja2FibGUpLmluY2x1ZGVzKHRydWUpO1xuICAgIGlmIChoYXNFdmVudCAmJiAhaGFzUGlja2FibGVMYXllcikge1xuICAgICAgbG9nLm9uY2UoXG4gICAgICAgIDAsXG4gICAgICAgICdZb3UgaGF2ZSBzdXBwbGllZCBhIG1vdXNlIGV2ZW50IGhhbmRsZXIgYnV0IG5vbmUgb2YgeW91ciBsYXllcnMgZ290IHRoZSBgcGlja2FibGVgIGZsYWcuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmV2ZW50cyA9IGFkZEV2ZW50cyhjYW52YXMsIHtcbiAgICAgIGNhY2hlU2l6ZTogZmFsc2UsXG4gICAgICBjYWNoZVBvc2l0aW9uOiBmYWxzZSxcbiAgICAgIGNlbnRlck9yaWdpbjogZmFsc2UsXG4gICAgICBvbkNsaWNrOiB0aGlzLl9vbkNsaWNrLFxuICAgICAgb25Nb3VzZU1vdmU6IHRoaXMuX29uTW91c2VNb3ZlXG4gICAgfSk7XG4gIH1cblxuICAvLyBSb3V0ZSBldmVudHMgdG8gbGF5ZXJzXG4gIF9vbkNsaWNrKGV2ZW50KSB7XG4gICAgY29uc3Qge3gsIHl9ID0gZXZlbnQ7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmZvcyA9IHRoaXMubGF5ZXJNYW5hZ2VyLnBpY2tMYXllcih7eCwgeSwgbW9kZTogJ2NsaWNrJ30pO1xuICAgIGNvbnN0IGZpcnN0SW5mbyA9IHNlbGVjdGVkSW5mb3MuZmluZChpbmZvID0+IGluZm8uaW5kZXggPj0gMCk7XG4gICAgLy8gRXZlbnQuZXZlbnQgaG9sZHMgdGhlIG9yaWdpbmFsIE1vdXNlRXZlbnQgb2JqZWN0XG4gICAgdGhpcy5wcm9wcy5vbkxheWVyQ2xpY2soZmlyc3RJbmZvLCBzZWxlY3RlZEluZm9zLCBldmVudC5ldmVudCk7XG4gIH1cblxuICAvLyBSb3V0ZSBldmVudHMgdG8gbGF5ZXJzXG4gIF9vbk1vdXNlTW92ZShldmVudCkge1xuICAgIGNvbnN0IHt4LCB5fSA9IGV2ZW50O1xuICAgIGNvbnN0IHNlbGVjdGVkSW5mb3MgPSB0aGlzLmxheWVyTWFuYWdlci5waWNrTGF5ZXIoe3gsIHksIG1vZGU6ICdob3Zlcid9KTtcbiAgICBjb25zdCBmaXJzdEluZm8gPSBzZWxlY3RlZEluZm9zLmZpbmQoaW5mbyA9PiBpbmZvLmluZGV4ID49IDApO1xuICAgIC8vIEV2ZW50LmV2ZW50IGhvbGRzIHRoZSBvcmlnaW5hbCBNb3VzZUV2ZW50IG9iamVjdFxuICAgIHRoaXMucHJvcHMub25MYXllckhvdmVyKGZpcnN0SW5mbywgc2VsZWN0ZWRJbmZvcywgZXZlbnQuZXZlbnQpO1xuICB9XG5cbiAgX29uUmVuZGVyRnJhbWUoe2dsfSkge1xuICAgIGlmICghdGhpcy5sYXllck1hbmFnZXIubmVlZHNSZWRyYXcoe2NsZWFyUmVkcmF3RmxhZ3M6IHRydWV9KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBjbGVhciBkZXB0aCBhbmQgY29sb3IgYnVmZmVyc1xuICAgIGdsLmNsZWFyKEdMLkNPTE9SX0JVRkZFUl9CSVQgfCBHTC5ERVBUSF9CVUZGRVJfQklUKTtcblxuICAgIHRoaXMuZWZmZWN0TWFuYWdlci5wcmVEcmF3KCk7XG5cbiAgICB0aGlzLmxheWVyTWFuYWdlci5kcmF3TGF5ZXJzKCk7XG5cbiAgICB0aGlzLmVmZmVjdE1hbmFnZXIuZHJhdygpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0LCBnbCwgZGVidWcsIC4uLm90aGVyUHJvcHN9ID0gdGhpcy5wcm9wcztcblxuICAgIHJldHVybiAoXG4gICAgICA8V2ViR0xSZW5kZXJlclxuICAgICAgICB7Li4ub3RoZXJQcm9wc31cblxuICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgIGhlaWdodD17aGVpZ2h0fVxuXG4gICAgICAgIGdsPXtnbH1cbiAgICAgICAgZGVidWc9e2RlYnVnfVxuICAgICAgICB2aWV3cG9ydD17e3g6IDAsIHk6IDAsIHdpZHRoLCBoZWlnaHR9fVxuXG4gICAgICAgIG9uUmVuZGVyZXJJbml0aWFsaXplZD17dGhpcy5fb25SZW5kZXJlckluaXRpYWxpemVkfVxuICAgICAgICBvbk5lZWRSZWRyYXc9e3RoaXMuX29uTmVlZFJlZHJhd31cbiAgICAgICAgb25SZW5kZXJGcmFtZT17dGhpcy5fb25SZW5kZXJGcmFtZX1cbiAgICAgICAgb25Nb3VzZU1vdmU9e3RoaXMuX29uTW91c2VNb3ZlfVxuICAgICAgICBvbkNsaWNrPXt0aGlzLl9vbkNsaWNrfS8+XG4gICAgKTtcbiAgfVxufVxuIl19

@@ -7,2 +7,11 @@ 'use strict';

var _autobind = require('./autobind');
Object.defineProperty(exports, 'autobind', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_autobind).default;
}
});
var _deckgl = require('./deckgl');

@@ -18,2 +27,2 @@

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWFjdC9pbmRleC5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OzsyQ0FBUUEsTyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBkZWZhdWx0fSBmcm9tICcuL2RlY2tnbCc7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWFjdC9pbmRleC5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs2Q0FBUUEsTzs7Ozs7Ozs7OzJDQUNBQSxPIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGF1dG9iaW5kfSBmcm9tICcuL2F1dG9iaW5kJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkZWZhdWx0fSBmcm9tICcuL2RlY2tnbCc7XG4iXX0=

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

var _desc, _value, _class, _class2, _temp; // Copyright (c) 2015 Uber Technologies, Inc.
var _class, _temp; // Copyright (c) 2015 Uber Technologies, Inc.
//

@@ -40,5 +40,5 @@ // Permission is hereby granted, free of charge, to any person obtaining a copy

var _autobindDecorator = require('autobind-decorator');
var _autobind = require('./autobind');
var _autobindDecorator2 = _interopRequireDefault(_autobindDecorator);
var _autobind2 = _interopRequireDefault(_autobind);

@@ -55,31 +55,2 @@ var _luma = require('luma.gl');

function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
var desc = {};
Object['ke' + 'ys'](descriptor).forEach(function (key) {
desc[key] = descriptor[key];
});
desc.enumerable = !!desc.enumerable;
desc.configurable = !!desc.configurable;
if ('value' in desc || desc.initializer) {
desc.writable = true;
}
desc = decorators.slice().reverse().reduce(function (desc, decorator) {
return decorator(target, property, desc) || desc;
}, desc);
if (context && desc.initializer !== void 0) {
desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
desc.initializer = undefined;
}
if (desc.initializer === void 0) {
Object['define' + 'Property'](target, property, desc);
desc = null;
}
return desc;
}
/* global requestAnimationFrame, cancelAnimationFrame */

@@ -89,3 +60,3 @@

var WebGLRenderer = (_class = (_temp = _class2 = function (_React$Component) {
var WebGLRenderer = (_temp = _class = function (_React$Component) {
_inherits(WebGLRenderer, _React$Component);

@@ -111,2 +82,3 @@

_this.gl = null;
(0, _autobind2.default)(_this);
return _this;

@@ -247,3 +219,3 @@ }

return WebGLRenderer;
}(_react2.default.Component), _class2.propTypes = {
}(_react2.default.Component), _class.propTypes = {
id: _react.PropTypes.string.isRequired,

@@ -262,10 +234,8 @@

onInitializationFailed: _react.PropTypes.func,
onRendererInitialized: _react.PropTypes.func.isRequired,
onInitializationFailed: _react.PropTypes.func,
onError: _react.PropTypes.func,
onRenderFrame: _react.PropTypes.func,
onMouseMove: _react.PropTypes.func,
onClick: _react.PropTypes.func
}, _class2.defaultProps = {
}, _class.defaultProps = {
style: {},

@@ -277,12 +247,9 @@ gl: null,

onRendererInitialized: function onRendererInitialized() {},
onInitializationFailed: function onInitializationFailed(error) {
throw error;
},
onError: function onError(error) {
throw error;
},
onRendererInitialized: function onRendererInitialized() {},
onRenderFrame: function onRenderFrame() {}
}, _temp), (_applyDecoratedDescriptor(_class.prototype, '_animationLoop', [_autobindDecorator2.default], Object.getOwnPropertyDescriptor(_class.prototype, '_animationLoop'), _class.prototype)), _class);
}, _temp);
exports.default = WebGLRenderer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWFjdC93ZWJnbC1yZW5kZXJlci5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX1BJWEVMX1JBVElPIiwid2luZG93IiwiZGV2aWNlUGl4ZWxSYXRpbyIsIldlYkdMUmVuZGVyZXIiLCJwcm9wcyIsInN0YXRlIiwiX2FuaW1hdGlvbkZyYW1lIiwiZ2wiLCJjYW52YXMiLCJyZWZzIiwib3ZlcmxheSIsIl9pbml0V2ViR0wiLCJfYW5pbWF0aW9uTG9vcCIsIl9jYW5jZWxBbmltYXRpb25Mb29wIiwiZGVidWciLCJnbE9wdGlvbnMiLCJlcnJvciIsIm9uSW5pdGlhbGl6YXRpb25GYWlsZWQiLCJvblJlbmRlcmVySW5pdGlhbGl6ZWQiLCJfcmVuZGVyRnJhbWUiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInZpZXdwb3J0IiwieCIsInkiLCJ3Iiwid2lkdGgiLCJoIiwiaGVpZ2h0IiwiZHByIiwicGl4ZWxSYXRpbyIsIl91cGRhdGVHTFZpZXdwb3J0Iiwib25SZW5kZXJGcmFtZSIsImlkIiwic3R5bGUiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwib2JqZWN0IiwiZXZlbnRzIiwiYm9vbCIsImZ1bmMiLCJvbkVycm9yIiwib25Nb3VzZU1vdmUiLCJvbkNsaWNrIiwiZGVmYXVsdFByb3BzIiwicHJlc2VydmVEcmF3aW5nQnVmZmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OzsyQ0FBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFFQSxJQUFNQSxzQkFDSCxPQUFPQyxNQUFQLEtBQWtCLFdBQWxCLElB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a0JqQlgsaUJBQWUsaUJBQVVXLElBbEJSO0FBbUJqQkUsZUFBYSxpQkFBVUYsSUFuQk47QUFvQmpCRyxXQUFTLGlCQUFVSDtBQXBCRixDLFVBdUJaSSxZLEdBQWU7QUFDcEJiLFNBQU8sRUFEYTtBQUVwQjNCLE1BQUksSUFGZ0I7QUFHcEJRLGFBQVcsRUFBQ2lDLHVCQUF1QixJQUF4QixFQUhTO0FBSXBCbEMsU0FBTyxLQUphO0FBS3BCZ0IsY0FBWTlCLG1CQUxROztBQU9wQmtCLHlCQUF1QixpQ0FBTSxDQUFFLENBUFg7QUFRcEJELDBCQUF3Qix1Q0FBUztBQUMvQixVQUFNRCxLQUFOO0FBQ0QsR0FWbUI7QUFXcEI0QixXQUFTLHdCQUFTO0FBQ2hCLFVBQU01QixLQUFOO0FBQ0QsR0FibUI7QUFjcEJnQixpQkFBZSx5QkFBTSxDQUFFO0FBZEgsQztrQkF6Qkg3QixhIiwiZmlsZSI6IndlYmdsLXJlbmRlcmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDE1IFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLyogZ2xvYmFsIHdpbmRvdyAqL1xuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgYXV0b2JpbmQgZnJvbSAnYXV0b2JpbmQtZGVjb3JhdG9yJztcbmltcG9ydCB7Y3JlYXRlR0xDb250ZXh0fSBmcm9tICdsdW1hLmdsJztcbi8qIGdsb2JhbCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGNhbmNlbEFuaW1hdGlvbkZyYW1lICovXG5cbmNvbnN0IERFRkFVTFRfUElYRUxfUkFUSU8gPVxuICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRldmljZVBpeGVsUmF0aW8pIHx8IDE7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYkdMUmVuZGVyZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcblxuICAgIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgaGVpZ2h0OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgICBwaXhlbFJhdGlvOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHZpZXdwb3J0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgZXZlbnRzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGdsOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGdsT3B0aW9uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBkZWJ1ZzogUHJvcFR5cGVzLmJvb2wsXG5cbiAgICBvblJlbmRlcmVySW5pdGlhbGl6ZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25Jbml0aWFsaXphdGlvbkZhaWxlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICBvblJlbmRlckZyYW1lOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbk1vdXNlTW92ZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmNcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHN0eWxlOiB7fSxcbiAgICBnbDogbnVsbCxcbiAgICBnbE9wdGlvbnM6IHtwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWV9LFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICBwaXhlbFJhdGlvOiBERUZBVUxUX1BJWEVMX1JBVElPLFxuXG4gICAgb25SZW5kZXJlckluaXRpYWxpemVkOiAoKSA9PiB7fSxcbiAgICBvbkluaXRpYWxpemF0aW9uRmFpbGVkOiBlcnJvciA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9LFxuICAgIG9uRXJyb3I6IGVycm9yID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0sXG4gICAgb25SZW5kZXJGcmFtZTogKCkgPT4ge31cbiAgfTtcblxuICAvKipcbiAgICogQGNsYXNzZGVzY1xuICAgKiBTbWFsbCByZWFjdCBjb21wb25lbnQgdGhhdCB1c2VzIEx1bWEuR0wgdG8gaW5pdGlhbGl6ZSBhIFdlYkdMIGNvbnRleHQuXG4gICAqXG4gICAqIFJldHVybnMgYSBjYW52YXMsIGNyZWF0ZXMgYSBiYXNpYyBXZWJHTCBjb250ZXh0XG4gICAqIHNldHMgdXAgYSByZW5kZXJsb29wLCBhbmQgcmVnaXN0ZXJzIHNvbWUgYmFzaWMgZXZlbnQgaGFuZGxlcnNcbiAgICpcbiAgICogQGNsYXNzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIHNlZSBwcm9wVHlwZXMgZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHt9O1xuICAgIHRoaXMuX2FuaW1hdGlvbkZyYW1lID0gbnVsbDtcbiAgICB0aGlzLmdsID0gbnVsbDtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMucmVmcy5vdmVybGF5O1xuICAgIHRoaXMuX2luaXRXZWJHTChjYW52YXMpO1xuICAgIHRoaXMuX2FuaW1hdGlvbkxvb3AoKTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuX2NhbmNlbEFuaW1hdGlvbkxvb3AoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIEx1bWFHTCBsaWJyYXJ5IGFuZCB0aHJvdWdoIGl0IFdlYkdMXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYW52YXNcbiAgICovXG4gIF9pbml0V2ViR0woY2FudmFzKSB7XG4gICAgY29uc3Qge2RlYnVnLCBnbE9wdGlvbnN9ID0gdGhpcy5wcm9wcztcblxuICAgIC8vIENyZWF0ZSBjb250ZXh0IGlmIG5vdCBzdXBwbGllZFxuICAgIGxldCBnbCA9IHRoaXMucHJvcHMuZ2w7XG4gICAgaWYgKCFnbCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZ2wgPSBjcmVhdGVHTENvbnRleHQoe2NhbnZhcywgZGVidWcsIC4uLmdsT3B0aW9uc30pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkluaXRpYWxpemF0aW9uRmFpbGVkKGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZ2wgPSBnbDtcblxuICAgIC8vIENhbGwgY2FsbGJhY2sgbGFzdCwgaW4gY2FzZSBpdCB0aHJvd3NcbiAgICB0aGlzLnByb3BzLm9uUmVuZGVyZXJJbml0aWFsaXplZCh7Y2FudmFzLCBnbH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1haW4gV2ViR0wgYW5pbWF0aW9uIGxvb3BcbiAgICovXG4gIEBhdXRvYmluZFxuICBfYW5pbWF0aW9uTG9vcCgpIHtcbiAgICB0aGlzLl9yZW5kZXJGcmFtZSgpO1xuICAgIC8vIEtlZXAgcmVnaXN0ZXJpbmcgb3Vyc2VsdmVzIGZvciB0aGUgbmV4dCBhbmltYXRpb24gZnJhbWVcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuX2FuaW1hdGlvbkZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2FuaW1hdGlvbkxvb3ApO1xuICAgIH1cbiAgfVxuXG4gIF9jYW5jZWxBbmltYXRpb25Mb29wKCkge1xuICAgIGlmICh0aGlzLl9hbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9uRnJhbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFVwZGF0ZXMgV2ViR0wgdmlld3BvcnQgdG8gbGF0ZXN0IHByb3BzXG4gIC8vIGZvciBjbGVhbiBsb2dnaW5nLCBvbmx5IGNhbGxzIGdsLnZpZXdwb3J0IGlmIHByb3BzIGhhdmUgY2hhbmdlZFxuICBfdXBkYXRlR0xWaWV3cG9ydCgpIHtcbiAgICBsZXQge3ZpZXdwb3J0OiB7eCwgeSwgd2lkdGg6IHcsIGhlaWdodDogaH19ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7cGl4ZWxSYXRpbzogZHByfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge2dsfSA9IHRoaXM7XG5cbiAgICB4ID0geCAqIGRwcjtcbiAgICB5ID0geSAqIGRwcjtcbiAgICB3ID0gdyAqIGRwcjtcbiAgICBoID0gaCAqIGRwcjtcblxuICAgIGlmICh4ICE9PSB0aGlzLnggfHwgeSAhPT0gdGhpcy55IHx8IHcgIT09IHRoaXMudyB8fCBoICE9PSB0aGlzLmgpIHtcbiAgICAgIGdsLnZpZXdwb3J0KHgsIHksIHcsIGgpO1xuICAgICAgdGhpcy54ID0geDtcbiAgICAgIHRoaXMueSA9IHk7XG4gICAgICB0aGlzLncgPSB3O1xuICAgICAgdGhpcy5oID0gaDtcbiAgICB9XG4gIH1cblxuICBfcmVuZGVyRnJhbWUoKSB7XG4gICAgY29uc3Qge3ZpZXdwb3J0OiB7d2lkdGgsIGhlaWdodH19ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7Z2x9ID0gdGhpcztcblxuICAgIC8vIENoZWNrIGZvciByZWFzb25zIG5vdCB0byBkcmF3XG4gICAgaWYgKCFnbCB8fCAhKHdpZHRoID4gMCkgfHwgIShoZWlnaHQgPiAwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUdMVmlld3BvcnQoKTtcblxuICAgIC8vIENhbGwgcmVuZGVyIGNhbGxiYWNrXG4gICAgdGhpcy5wcm9wcy5vblJlbmRlckZyYW1lKHtnbH0pO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtpZCwgd2lkdGgsIGhlaWdodCwgcGl4ZWxSYXRpbywgc3R5bGV9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgPGNhbnZhc1xuICAgICAgICByZWY9eydvdmVybGF5J31cbiAgICAgICAga2V5PXsnb3ZlcmxheSd9XG4gICAgICAgIGlkPXtpZH1cbiAgICAgICAgd2lkdGg9e3dpZHRoICogcGl4ZWxSYXRpb31cbiAgICAgICAgaGVpZ2h0PXtoZWlnaHQgKiBwaXhlbFJhdGlvfVxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCB3aWR0aCwgaGVpZ2h0fX0vPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWFjdC93ZWJnbC1yZW5kZXJlci5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX1BJWEVMX1JBVElPIiwid2luZG93IiwiZGV2aWNlUGl4ZWxSYXRpbyIsIldlYkdMUmVuZGVyZXIiLCJwcm9wcyIsInN0YXRlIiwiX2FuaW1hdGlvbkZyYW1lIiwiZ2wiLCJjYW52YXMiLCJyZWZzIiwib3ZlcmxheSIsIl9pbml0V2ViR0wiLCJfYW5pbWF0aW9uTG9vcCIsIl9jYW5jZWxBbmltYXRpb25Mb29wIiwiZGVidWciLCJnbE9wdGlvbnMiLCJlcnJvciIsIm9uSW5pdGlhbGl6YXRpb25GYWlsZWQiLCJvblJlbmRlcmVySW5pdGlhbGl6ZWQiLCJfcmVuZGVyRnJhbWUiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInZpZXdwb3J0IiwieCIsInkiLCJ3Iiwid2lkdGgiLCJoIiwiaGVpZ2h0IiwiZHByIiwicGl4ZWxSYXRpbyIsIl91cGRhdGVHTFZpZXdwb3J0Iiwib25SZW5kZXJGcmFtZSIsImlkIiwic3R5bGUiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwib2JqZWN0IiwiZXZlbnRzIiwiYm9vbCIsImZ1bmMiLCJvbk1vdXNlTW92ZSIsIm9uQ2xpY2siLCJkZWZhdWx0UHJvcHMiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O21CQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7QUFDQTs7QUFFQSxJQUFNQSxzQkFDSCxPQUFPQyxNQUFQLEtBQWtCLFdBQWxCLElBQWlDQSxPQUFPQyxnQkFBekMsSUFBOEQsQ0FEaEU7O0lBR3FCQyxh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QVMsaUJBQVVGO0FBbEJGLEMsU0FxQlpHLFksR0FBZTtBQUNwQlosU0FBTyxFQURhO0FBRXBCM0IsTUFBSSxJQUZnQjtBQUdwQlEsYUFBVyxFQUFDZ0MsdUJBQXVCLElBQXhCLEVBSFM7QUFJcEJqQyxTQUFPLEtBSmE7QUFLcEJnQixjQUFZOUIsbUJBTFE7O0FBT3BCaUIsMEJBQXdCLHVDQUFTO0FBQy9CLFVBQU1ELEtBQU47QUFDRCxHQVRtQjtBQVVwQkUseUJBQXVCLGlDQUFNLENBQUUsQ0FWWDtBQVdwQmMsaUJBQWUseUJBQU0sQ0FBRTtBQVhILEM7a0JBdkJIN0IsYSIsImZpbGUiOiJ3ZWJnbC1yZW5kZXJlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxNSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8qIGdsb2JhbCB3aW5kb3cgKi9cbmltcG9ydCBSZWFjdCwge1Byb3BUeXBlc30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGF1dG9iaW5kIGZyb20gJy4vYXV0b2JpbmQnO1xuaW1wb3J0IHtjcmVhdGVHTENvbnRleHR9IGZyb20gJ2x1bWEuZ2wnO1xuLyogZ2xvYmFsIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgY2FuY2VsQW5pbWF0aW9uRnJhbWUgKi9cblxuY29uc3QgREVGQVVMVF9QSVhFTF9SQVRJTyA9XG4gICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykgfHwgMTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2ViR0xSZW5kZXJlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuXG4gICAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBoZWlnaHQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcblxuICAgIHBpeGVsUmF0aW86IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdmlld3BvcnQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBldmVudHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZ2w6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZ2xPcHRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRlYnVnOiBQcm9wVHlwZXMuYm9vbCxcblxuICAgIG9uSW5pdGlhbGl6YXRpb25GYWlsZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uUmVuZGVyZXJJbml0aWFsaXplZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvblJlbmRlckZyYW1lOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbk1vdXNlTW92ZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmNcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHN0eWxlOiB7fSxcbiAgICBnbDogbnVsbCxcbiAgICBnbE9wdGlvbnM6IHtwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWV9LFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICBwaXhlbFJhdGlvOiBERUZBVUxUX1BJWEVMX1JBVElPLFxuXG4gICAgb25Jbml0aWFsaXphdGlvbkZhaWxlZDogZXJyb3IgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSxcbiAgICBvblJlbmRlcmVySW5pdGlhbGl6ZWQ6ICgpID0+IHt9LFxuICAgIG9uUmVuZGVyRnJhbWU6ICgpID0+IHt9XG4gIH07XG5cbiAgLyoqXG4gICAqIEBjbGFzc2Rlc2NcbiAgICogU21hbGwgcmVhY3QgY29tcG9uZW50IHRoYXQgdXNlcyBMdW1hLkdMIHRvIGluaXRpYWxpemUgYSBXZWJHTCBjb250ZXh0LlxuICAgKlxuICAgKiBSZXR1cm5zIGEgY2FudmFzLCBjcmVhdGVzIGEgYmFzaWMgV2ViR0wgY29udGV4dFxuICAgKiBzZXRzIHVwIGEgcmVuZGVybG9vcCwgYW5kIHJlZ2lzdGVycyBzb21lIGJhc2ljIGV2ZW50IGhhbmRsZXJzXG4gICAqXG4gICAqIEBjbGFzc1xuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBzZWUgcHJvcFR5cGVzIGRvY3VtZW50YXRpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7fTtcbiAgICB0aGlzLl9hbmltYXRpb25GcmFtZSA9IG51bGw7XG4gICAgdGhpcy5nbCA9IG51bGw7XG4gICAgYXV0b2JpbmQodGhpcyk7XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCBjYW52YXMgPSB0aGlzLnJlZnMub3ZlcmxheTtcbiAgICB0aGlzLl9pbml0V2ViR0woY2FudmFzKTtcbiAgICB0aGlzLl9hbmltYXRpb25Mb29wKCk7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl9jYW5jZWxBbmltYXRpb25Mb29wKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBMdW1hR0wgbGlicmFyeSBhbmQgdGhyb3VnaCBpdCBXZWJHTFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FudmFzXG4gICAqL1xuICBfaW5pdFdlYkdMKGNhbnZhcykge1xuICAgIGNvbnN0IHtkZWJ1ZywgZ2xPcHRpb25zfSA9IHRoaXMucHJvcHM7XG5cbiAgICAvLyBDcmVhdGUgY29udGV4dCBpZiBub3Qgc3VwcGxpZWRcbiAgICBsZXQgZ2wgPSB0aGlzLnByb3BzLmdsO1xuICAgIGlmICghZ2wpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGdsID0gY3JlYXRlR0xDb250ZXh0KHtjYW52YXMsIGRlYnVnLCAuLi5nbE9wdGlvbnN9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25Jbml0aWFsaXphdGlvbkZhaWxlZChlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmdsID0gZ2w7XG5cbiAgICAvLyBDYWxsIGNhbGxiYWNrIGxhc3QsIGluIGNhc2UgaXQgdGhyb3dzXG4gICAgdGhpcy5wcm9wcy5vblJlbmRlcmVySW5pdGlhbGl6ZWQoe2NhbnZhcywgZ2x9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWluIFdlYkdMIGFuaW1hdGlvbiBsb29wXG4gICAqL1xuICBfYW5pbWF0aW9uTG9vcCgpIHtcbiAgICB0aGlzLl9yZW5kZXJGcmFtZSgpO1xuICAgIC8vIEtlZXAgcmVnaXN0ZXJpbmcgb3Vyc2VsdmVzIGZvciB0aGUgbmV4dCBhbmltYXRpb24gZnJhbWVcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuX2FuaW1hdGlvbkZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2FuaW1hdGlvbkxvb3ApO1xuICAgIH1cbiAgfVxuXG4gIF9jYW5jZWxBbmltYXRpb25Mb29wKCkge1xuICAgIGlmICh0aGlzLl9hbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9uRnJhbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFVwZGF0ZXMgV2ViR0wgdmlld3BvcnQgdG8gbGF0ZXN0IHByb3BzXG4gIC8vIGZvciBjbGVhbiBsb2dnaW5nLCBvbmx5IGNhbGxzIGdsLnZpZXdwb3J0IGlmIHByb3BzIGhhdmUgY2hhbmdlZFxuICBfdXBkYXRlR0xWaWV3cG9ydCgpIHtcbiAgICBsZXQge3ZpZXdwb3J0OiB7eCwgeSwgd2lkdGg6IHcsIGhlaWdodDogaH19ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7cGl4ZWxSYXRpbzogZHByfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge2dsfSA9IHRoaXM7XG5cbiAgICB4ID0geCAqIGRwcjtcbiAgICB5ID0geSAqIGRwcjtcbiAgICB3ID0gdyAqIGRwcjtcbiAgICBoID0gaCAqIGRwcjtcblxuICAgIGlmICh4ICE9PSB0aGlzLnggfHwgeSAhPT0gdGhpcy55IHx8IHcgIT09IHRoaXMudyB8fCBoICE9PSB0aGlzLmgpIHtcbiAgICAgIGdsLnZpZXdwb3J0KHgsIHksIHcsIGgpO1xuICAgICAgdGhpcy54ID0geDtcbiAgICAgIHRoaXMueSA9IHk7XG4gICAgICB0aGlzLncgPSB3O1xuICAgICAgdGhpcy5oID0gaDtcbiAgICB9XG4gIH1cblxuICBfcmVuZGVyRnJhbWUoKSB7XG4gICAgY29uc3Qge3ZpZXdwb3J0OiB7d2lkdGgsIGhlaWdodH19ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7Z2x9ID0gdGhpcztcblxuICAgIC8vIENoZWNrIGZvciByZWFzb25zIG5vdCB0byBkcmF3XG4gICAgaWYgKCFnbCB8fCAhKHdpZHRoID4gMCkgfHwgIShoZWlnaHQgPiAwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUdMVmlld3BvcnQoKTtcblxuICAgIC8vIENhbGwgcmVuZGVyIGNhbGxiYWNrXG4gICAgdGhpcy5wcm9wcy5vblJlbmRlckZyYW1lKHtnbH0pO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtpZCwgd2lkdGgsIGhlaWdodCwgcGl4ZWxSYXRpbywgc3R5bGV9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgPGNhbnZhc1xuICAgICAgICByZWY9eydvdmVybGF5J31cbiAgICAgICAga2V5PXsnb3ZlcmxheSd9XG4gICAgICAgIGlkPXtpZH1cbiAgICAgICAgd2lkdGg9e3dpZHRoICogcGl4ZWxSYXRpb31cbiAgICAgICAgaGVpZ2h0PXtoZWlnaHQgKiBwaXhlbFJhdGlvfVxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCB3aWR0aCwgaGVpZ2h0fX0vPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==

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

"license": "MIT",
"version": "3.1.0-beta4",
"version": "3.1.0-beta5",
"keywords": [

@@ -36,3 +36,3 @@ "webgl",

"lodash.flattendeep": "^4.4.0",
"react-autobind": "^1.0.6",
"react": "^15.4.1",
"viewport-mercator-project": "3.0.0-beta4"

@@ -43,3 +43,3 @@ },

"babel-core": "^6.7.7",
"babel-eslint": "^6.0.0",
"babel-eslint": "^7.0.0",
"babel-plugin-static-fs": "^1.1.0",

@@ -68,6 +68,6 @@ "babel-plugin-transform-decorators-legacy": "^1.3.4",

"highlight.js": "^9.7.0",
"husky": "^0.12.0",
"immutable": "^3.7.5",
"luma.gl": "3.0.0-alpha2",
"marked": "^0.3.6",
"react": "^15.3.2",
"react-addons-test-utils": "^15.0.2",

@@ -111,3 +111,3 @@ "react-dom": "^15.3.2",

"lint": "eslint src exhibits/app.js",
"precommit": "npm test",
"precommit": "node --version && npm test",
"publish-prod": "npm run build && npm run test-fast && npm publish",

@@ -119,8 +119,8 @@ "publish-beta": "npm run build && npm run test-fast && npm publish --tag beta",

"test-headless-src": "babel-node --only=deck.gl/test,deck.gl/src,deck.gl/shaderlib src/test/headless.js",
"test-browser": "mkdir -p build && budo src/test/browser.js:build/test-bundle.js --dir test --live --open --port 3001 --watch-glob '**/*.{html,css,scss,js,glsl}' -- -t babelify -t brfs-babel",
"test-browser": "mkdir -p build && budo dist/test/browser.js --dir test --live --open --port 3001 --watch-glob '**/*.{html,css,scss,js,glsl}' -- --include=''",
"test-electron": "browserify dist/test/electron.js | testron | faucet",
"test-shader": "npm run build-dist && budo src/test/fp64-shader.spec.js:build/test-bundle.js --dir test --live --open --port 3001 --watch-glob '**/*.{html,css,scss,js,glsl}' -- -t babelify -t brfs-babel",
"profile-disc": "browserify src/bundle.js --full-paths -t babelify -t brfs-babel | uglifyjs | discify --open",
"start": "budo example/app.js --live --open --port 3000 --css example/main.css --title 'deck.gl' --watch-glob '**/*.{html,css,js,glsl}' -- -t babelify -t brfs-babel"
"start": "npm run build && (cd example && yarn && npm start)"
}
}

@@ -0,8 +1,22 @@

// Note: The numeric values here are matched by shader code in the
// "project" and "project64" shader modules. Both places need to be
// updated.
// TODO: Maybe "POSITIONS" would be a better name?
export const COORDINATE_SYSTEM = {
// Positions are interpreted as [lng,lat,elevation], distances as meters
// Positions are interpreted as [lng, lat, elevation]
// lng lat are degrees, elevation is meters. distances as meters.
LNGLAT: 1.0,
// Positions are interpreted as lng lat offsets: [deltaLng, deltaLat, elevation]
// deltaLng, deltaLat are delta degrees, elevation is meters.
// distances as meters.
LNGLAT_OFFSETS: 3.0,
// Positions are interpreted as meter offsets, distances as meters
METER_OFFSETS: 2.0,
METERS: 2.0,
// Positions and distances are not transformed
// Positions and distances are not transformed: [x, y, z] in unit coordinates
IDENTITY: 0.0
};

@@ -58,5 +58,9 @@

assert(viewport instanceof Viewport, 'Invalid viewport');
const oldViewport = this.context.viewport;
const viewportChanged = !oldViewport || !viewport.equals(oldViewport);
// TODO - viewport change detection breaks METER_OFFSETS mode
// const oldViewport = this.context.viewport;
// const viewportChanged = !oldViewport || !viewport.equals(oldViewport);
const viewportChanged = true;
if (viewportChanged) {

@@ -63,0 +67,0 @@ Object.assign(this.oldContext, this.context);

@@ -57,2 +57,4 @@ import {vec4} from 'gl-matrix';

console.log(viewport, projectedPositionOrigin, projectionCenter); // eslint-disable-line
return {

@@ -59,0 +61,0 @@ // Projection mode values

@@ -21,3 +21,3 @@ // Copyright (c) 2015 Uber Technologies, Inc.

import React, {PropTypes} from 'react';
import autobind from 'autobind-decorator';
import autobind from './autobind';
import WebGLRenderer from './webgl-renderer';

@@ -64,2 +64,3 @@ import {LayerManager, Layer} from '../lib';

this.effectManager = null;
autobind(this);
}

@@ -87,3 +88,3 @@

@autobind _onRendererInitialized({gl, canvas}) {
_onRendererInitialized({gl, canvas}) {
gl.enable(GL.BLEND);

@@ -122,3 +123,3 @@ gl.blendFunc(GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA);

// Route events to layers
@autobind _onClick(event) {
_onClick(event) {
const {x, y} = event;

@@ -132,3 +133,3 @@ const selectedInfos = this.layerManager.pickLayer({x, y, mode: 'click'});

// Route events to layers
@autobind _onMouseMove(event) {
_onMouseMove(event) {
const {x, y} = event;

@@ -141,3 +142,3 @@ const selectedInfos = this.layerManager.pickLayer({x, y, mode: 'hover'});

@autobind _onRenderFrame({gl}) {
_onRenderFrame({gl}) {
if (!this.layerManager.needsRedraw({clearRedrawFlags: true})) {

@@ -144,0 +145,0 @@ return;

@@ -0,1 +1,2 @@

export {default as autobind} from './autobind';
export {default as default} from './deckgl';

@@ -23,3 +23,3 @@ // Copyright (c) 2015 Uber Technologies, Inc.

import React, {PropTypes} from 'react';
import autobind from 'autobind-decorator';
import autobind from './autobind';
import {createGLContext} from 'luma.gl';

@@ -47,6 +47,4 @@ /* global requestAnimationFrame, cancelAnimationFrame */

onInitializationFailed: PropTypes.func,
onRendererInitialized: PropTypes.func.isRequired,
onInitializationFailed: PropTypes.func,
onError: PropTypes.func,
onRenderFrame: PropTypes.func,

@@ -64,9 +62,6 @@ onMouseMove: PropTypes.func,

onRendererInitialized: () => {},
onInitializationFailed: error => {
throw error;
},
onError: error => {
throw error;
},
onRendererInitialized: () => {},
onRenderFrame: () => {}

@@ -90,2 +85,3 @@ };

this.gl = null;
autobind(this);
}

@@ -130,3 +126,2 @@

*/
@autobind
_animationLoop() {

@@ -133,0 +128,0 @@ this._renderFrame();

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

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