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

collider2d

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

collider2d - npm Package Compare versions

Comparing version 1.1.0 to 1.1.1

2

build/collision_details.js

@@ -110,2 +110,2 @@ 'use strict';

exports["default"] = CollisionDetails;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsaXNpb25fZGV0YWlscy50cyJdLCJuYW1lcyI6WyJDb2xsaXNpb25EZXRhaWxzIiwiVmVjdG9yIiwiTnVtYmVyIiwiTUFYX1ZBTFVFIiwiY2xlYXIiLCJhSW5CIiwiYkluQSIsIm92ZXJsYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7OztBQUlBOzs7Ozs7SUFNcUJBLGdCO0FBQ25COzs7Ozs7QUFPQTs7Ozs7O0FBT0E7Ozs7OztBQU9BOzs7Ozs7QUFPQTs7Ozs7O0FBT0E7Ozs7OztBQU9BOzs7OztBQU9BLDhCQUFjO0FBQUE7O0FBQUE7O0FBQUE7O0FBQUEsc0NBOUJLLElBQUlDLGtCQUFKLEVBOEJMOztBQUFBLHNDQXZCSyxJQUFJQSxrQkFBSixFQXVCTDs7QUFBQSxxQ0FoQklDLE1BQU0sQ0FBQ0MsU0FnQlg7O0FBQUEsa0NBVEUsSUFTRjs7QUFBQSxrQ0FGRSxJQUVGOztBQUNaLFNBQUtDLEtBQUw7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs0QkFPMEI7QUFDeEIsV0FBS0MsSUFBTCxHQUFZLElBQVo7QUFDQSxXQUFLQyxJQUFMLEdBQVksSUFBWjtBQUVBLFdBQUtDLE9BQUwsR0FBZUwsTUFBTSxDQUFDQyxTQUF0QjtBQUVBLGFBQU8sSUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXHJcblxyXG5pbXBvcnQgVmVjdG9yIGZyb20gJy4vZ2VvbWV0cnkvdmVjdG9yJztcclxuaW1wb3J0IENpcmNsZSBmcm9tICcuL2dlb21ldHJ5L2NpcmNsZSc7XHJcbmltcG9ydCBQb2x5Z29uIGZyb20gJy4vZ2VvbWV0cnkvcG9seWdvbic7XHJcblxyXG4vKipcclxuICogQW4gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG9mIGFuIGludGVyc2VjdGlvbiBjb250YWluaW5nOlxyXG4gKiAtIFRoZSB0d28gb2JqZWN0cyBwYXJ0aWNpcGF0aW5nIGluIHRoZSBpbnRlcnNlY3Rpb25cclxuICogLSBUaGUgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgbWluaW11bSBjaGFuZ2UgbmVjZXNzYXJ5IHRvIGV4dHJhY3QgdGhlIGZpcnN0IG9iamVjdCBmcm9tIHRoZSBzZWNvbmQgb25lIChhcyB3ZWxsIGFzIGEgdW5pdCB2ZWN0b3IgaW4gdGhhdCBkaXJlY3Rpb24gYW5kIHRoZSBtYWduaXR1ZGUgb2YgdGhlIG92ZXJsYXApXHJcbiAqIC0gV2hldGhlciB0aGUgZmlyc3Qgb2JqZWN0IGlzIGVudGlyZWx5IGluc2lkZSB0aGUgc2Vjb25kLCBhbmQgdmljZSB2ZXJzYS5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbGxpc2lvbkRldGFpbHMge1xyXG4gIC8qKlxyXG4gICAqIFRoZSBmaXJzdCBjb2xsaXNpb24gb2JqZWN0LlxyXG4gICAqIFxyXG4gICAqIEBwcm9wZXJ0eSB7Q2lyY2xlfFBvbHlnb259XHJcbiAgICovXHJcbiAgYSE6IChDaXJjbGV8UG9seWdvbik7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBzZWNvbmQgY29sbGlzaW9uIG9iamVjdC5cclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge0NpcmNsZXxQb2x5Z29ufVxyXG4gICAqL1xyXG4gIGIhOiAoQ2lyY2xlfFBvbHlnb24pO1xyXG5cclxuICAvKipcclxuICAgKiBBIHVuaXQgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgZGlyZWN0aW9uIGFuZCBtYWduaXR1ZGUgb2YgdGhlIG92ZXJsYXAuXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtWZWN0b3J9XHJcbiAgICovXHJcbiAgb3ZlcmxhcE46IFZlY3RvciA9IG5ldyBWZWN0b3IoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQSB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBtaW5pbXVtIGNoYW5nZSBuZWNlc3NhcnkgdG8gZXh0cmFjdCB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gdGhlIHNlY29uZCBvbmUuXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtWZWN0b3J9XHJcbiAgICovXHJcbiAgb3ZlcmxhcFY6IFZlY3RvciA9IG5ldyBWZWN0b3IoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGFtb3VudCB0aGF0IGlzIG92ZXJsYXBwaW5nLlxyXG4gICAqIFxyXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfVxyXG4gICAqL1xyXG4gIG92ZXJsYXA6IG51bWJlciA9IE51bWJlci5NQVhfVkFMVUU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgY29sbGlzaW9uIG9iamVjdCBpcyBjb21wbGV0ZWx5IGluIHRoZSBzZWNvbmQgY29sbGlzaW9uIG9iamVjdC5cclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59XHJcbiAgICovXHJcbiAgYUluQjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2Vjb25kIGNvbGxpc2lvbiBvYmplY3QgaXMgY29tcGxldGVseSBpbiB0aGUgZmlyc3QgY29sbGlzaW9uIG9iamVjdC5cclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59XHJcbiAgICovXHJcbiAgYkluQTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHNvbWUgdmFsdWVzIG9mIHRoZSByZXNwb25zZSBiYWNrIHRvIHRoZWlyIGRlZmF1bHRzLlxyXG4gICAqIFxyXG4gICAqIENhbGwgdGhpcyBiZXR3ZWVuIHRlc3RzIGlmIHlvdSBhcmUgZ29pbmcgdG8gcmV1c2UgYSBzaW5nbGUgQ29sbGlzaW9uRGV0YWlscyBvYmplY3QgZm9yIG11bHRpcGxlIGludGVyc2VjdGlvbiB0ZXN0cyAocmVjb21tZW5kZWQgYXMgaXQgd2lsbCBhdm9pZCBhbGxjYXRpbmcgZXh0cmEgbWVtb3J5KVxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtDb2xsaXNpb25EZXRhaWxzfSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIGNsZWFyKCk6IENvbGxpc2lvbkRldGFpbHMge1xyXG4gICAgdGhpcy5hSW5CID0gdHJ1ZTtcclxuICAgIHRoaXMuYkluQSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5vdmVybGFwID0gTnVtYmVyLk1BWF9WQUxVRTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsaXNpb25fZGV0YWlscy50cyJdLCJuYW1lcyI6WyJDb2xsaXNpb25EZXRhaWxzIiwiVmVjdG9yIiwiTnVtYmVyIiwiTUFYX1ZBTFVFIiwiY2xlYXIiLCJhSW5CIiwiYkluQSIsIm92ZXJsYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNxQkEsZ0I7QUFDbkI7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztBQUdFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBR0U7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztBQUdFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBR0U7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUdFLDhCQUFjO0FBQUE7O0FBQUE7O0FBQUE7O0FBQUEsc0NBOUJLLElBQUlDLGtCQUFKLEVBOEJMOztBQUFBLHNDQXZCSyxJQUFJQSxrQkFBSixFQXVCTDs7QUFBQSxxQ0FoQklDLE1BQU0sQ0FBQ0MsU0FnQlg7O0FBQUEsa0NBVEUsSUFTRjs7QUFBQSxrQ0FGRSxJQUVGOztBQUNaLFNBQUtDLEtBQUw7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztXQUNFLGlCQUEwQjtBQUN4QixXQUFLQyxJQUFMLEdBQVksSUFBWjtBQUNBLFdBQUtDLElBQUwsR0FBWSxJQUFaO0FBRUEsV0FBS0MsT0FBTCxHQUFlTCxNQUFNLENBQUNDLFNBQXRCO0FBRUEsYUFBTyxJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcclxuXHJcbmltcG9ydCBWZWN0b3IgZnJvbSAnLi9nZW9tZXRyeS92ZWN0b3InO1xyXG5pbXBvcnQgQ2lyY2xlIGZyb20gJy4vZ2VvbWV0cnkvY2lyY2xlJztcclxuaW1wb3J0IFBvbHlnb24gZnJvbSAnLi9nZW9tZXRyeS9wb2x5Z29uJztcclxuXHJcbi8qKlxyXG4gKiBBbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgb2YgYW4gaW50ZXJzZWN0aW9uIGNvbnRhaW5pbmc6XHJcbiAqIC0gVGhlIHR3byBvYmplY3RzIHBhcnRpY2lwYXRpbmcgaW4gdGhlIGludGVyc2VjdGlvblxyXG4gKiAtIFRoZSB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBtaW5pbXVtIGNoYW5nZSBuZWNlc3NhcnkgdG8gZXh0cmFjdCB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gdGhlIHNlY29uZCBvbmUgKGFzIHdlbGwgYXMgYSB1bml0IHZlY3RvciBpbiB0aGF0IGRpcmVjdGlvbiBhbmQgdGhlIG1hZ25pdHVkZSBvZiB0aGUgb3ZlcmxhcClcclxuICogLSBXaGV0aGVyIHRoZSBmaXJzdCBvYmplY3QgaXMgZW50aXJlbHkgaW5zaWRlIHRoZSBzZWNvbmQsIGFuZCB2aWNlIHZlcnNhLlxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGlzaW9uRGV0YWlscyB7XHJcbiAgLyoqXHJcbiAgICogVGhlIGZpcnN0IGNvbGxpc2lvbiBvYmplY3QuXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtDaXJjbGV8UG9seWdvbn1cclxuICAgKi9cclxuICBhITogKENpcmNsZXxQb2x5Z29uKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHNlY29uZCBjb2xsaXNpb24gb2JqZWN0LlxyXG4gICAqIFxyXG4gICAqIEBwcm9wZXJ0eSB7Q2lyY2xlfFBvbHlnb259XHJcbiAgICovXHJcbiAgYiE6IChDaXJjbGV8UG9seWdvbik7XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgdW5pdCB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBkaXJlY3Rpb24gYW5kIG1hZ25pdHVkZSBvZiB0aGUgb3ZlcmxhcC5cclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge1ZlY3Rvcn1cclxuICAgKi9cclxuICBvdmVybGFwTjogVmVjdG9yID0gbmV3IFZlY3RvcigpO1xyXG5cclxuICAvKipcclxuICAgKiBBIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIG1pbmltdW0gY2hhbmdlIG5lY2Vzc2FyeSB0byBleHRyYWN0IHRoZSBmaXJzdCBvYmplY3QgZnJvbSB0aGUgc2Vjb25kIG9uZS5cclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge1ZlY3Rvcn1cclxuICAgKi9cclxuICBvdmVybGFwVjogVmVjdG9yID0gbmV3IFZlY3RvcigpO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgYW1vdW50IHRoYXQgaXMgb3ZlcmxhcHBpbmcuXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9XHJcbiAgICovXHJcbiAgb3ZlcmxhcDogbnVtYmVyID0gTnVtYmVyLk1BWF9WQUxVRTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBmaXJzdCBjb2xsaXNpb24gb2JqZWN0IGlzIGNvbXBsZXRlbHkgaW4gdGhlIHNlY29uZCBjb2xsaXNpb24gb2JqZWN0LlxyXG4gICAqIFxyXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn1cclxuICAgKi9cclxuICBhSW5COiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBzZWNvbmQgY29sbGlzaW9uIG9iamVjdCBpcyBjb21wbGV0ZWx5IGluIHRoZSBmaXJzdCBjb2xsaXNpb24gb2JqZWN0LlxyXG4gICAqIFxyXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn1cclxuICAgKi9cclxuICBiSW5BOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgc29tZSB2YWx1ZXMgb2YgdGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlaXIgZGVmYXVsdHMuXHJcbiAgICogXHJcbiAgICogQ2FsbCB0aGlzIGJldHdlZW4gdGVzdHMgaWYgeW91IGFyZSBnb2luZyB0byByZXVzZSBhIHNpbmdsZSBDb2xsaXNpb25EZXRhaWxzIG9iamVjdCBmb3IgbXVsdGlwbGUgaW50ZXJzZWN0aW9uIHRlc3RzIChyZWNvbW1lbmRlZCBhcyBpdCB3aWxsIGF2b2lkIGFsbGNhdGluZyBleHRyYSBtZW1vcnkpXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge0NvbGxpc2lvbkRldGFpbHN9IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgY2xlYXIoKTogQ29sbGlzaW9uRGV0YWlscyB7XHJcbiAgICB0aGlzLmFJbkIgPSB0cnVlO1xyXG4gICAgdGhpcy5iSW5BID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLm92ZXJsYXAgPSBOdW1iZXIuTUFYX1ZBTFVFO1xyXG5cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxufSJdfQ==

@@ -94,2 +94,2 @@ 'use strict';

exports["default"] = Box;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9tZXRyeS9ib3gudHMiXSwibmFtZXMiOlsiQm94IiwicG9zaXRpb24iLCJWZWN0b3IiLCJ3aWR0aCIsImhlaWdodCIsIl9wb3NpdGlvbiIsIl93aWR0aCIsIl9oZWlnaHQiLCJQb2x5Z29uIiwieCIsInkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBOzs7SUFHcUJBLEc7QUFDbkI7Ozs7Ozs7O0FBU0E7Ozs7Ozs7O0FBU0E7Ozs7Ozs7O0FBU0E7Ozs7Ozs7OztBQVNBLGlCQUFvRjtBQUFBLFFBQXhFQyxRQUF3RSx1RUFBckQsSUFBSUMsa0JBQUosRUFBcUQ7QUFBQSxRQUF2Q0MsS0FBdUMsdUVBQXZCLENBQXVCO0FBQUEsUUFBcEJDLE1BQW9CLHVFQUFILENBQUc7O0FBQUE7O0FBQUEsdUNBN0J4RCxJQUFJRixrQkFBSixFQTZCd0Q7O0FBQUEsb0NBcEIzRCxDQW9CMkQ7O0FBQUEscUNBWDFELENBVzBEOztBQUNsRixTQUFLRyxTQUFMLEdBQWlCSixRQUFqQjtBQUNBLFNBQUtLLE1BQUwsR0FBY0gsS0FBZDtBQUNBLFNBQUtJLE9BQUwsR0FBZUgsTUFBZjtBQUNEO0FBRUQ7Ozs7Ozs7OztnQ0FLcUI7QUFDbkIsYUFBTyxJQUFJSSxtQkFBSixDQUFZLElBQUlOLGtCQUFKLENBQVcsS0FBS0csU0FBTCxDQUFlSSxDQUExQixFQUE2QixLQUFLSixTQUFMLENBQWVLLENBQTVDLENBQVosRUFBNEQsQ0FDakUsSUFBSVIsa0JBQUosRUFEaUUsRUFDbkQsSUFBSUEsa0JBQUosQ0FBVyxLQUFLSSxNQUFoQixFQUF3QixDQUF4QixDQURtRCxFQUVqRSxJQUFJSixrQkFBSixDQUFXLEtBQUtJLE1BQWhCLEVBQXdCLEtBQUtDLE9BQTdCLENBRmlFLEVBRTFCLElBQUlMLGtCQUFKLENBQVcsQ0FBWCxFQUFjLEtBQUtLLE9BQW5CLENBRjBCLENBQTVELENBQVA7QUFJRCIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xyXG5cclxuaW1wb3J0IFZlY3RvciBmcm9tICcuL3ZlY3Rvcic7XHJcbmltcG9ydCBQb2x5Z29uIGZyb20gJy4vcG9seWdvbic7XHJcblxyXG4vKipcclxuICogQSBib3ggcmVwcmVzZW50cyBhbiBheGlzLWFsaWduZWQgYm94IHdpdGggYSB3aWR0aCBhbmQgaGVpZ2h0LlxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm94IHtcclxuICAvKipcclxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhpcyBib3ggYXMgYSBWZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge1ZlY3Rvcn1cclxuICAgKi9cclxuICBwcml2YXRlIF9wb3NpdGlvbjogVmVjdG9yID0gbmV3IFZlY3RvcigpO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgd2lkdGggb2YgdGhpcyBib3guXHJcbiAgICogXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge251bWJlcn1cclxuICAgKi9cclxuICBwcml2YXRlIF93aWR0aDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGhlaWdodCBvZiB0aGlzIGJveC5cclxuICAgKiBcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIFxyXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2hlaWdodDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBCb3gsIHdpdGggdGhlIHNwZWNpZmllZCBwb3NpdGlvbiwgd2lkdGgsIGFuZCBoZWlnaHQuXHJcbiAgICogXHJcbiAgICogSWYgbm8gcG9zaXRpb24gaXMgZ2l2ZW4sIHRoZSBwb3NpdGlvbiB3aWxsIGJlIGAoMCwgMClgLiBJZiBubyB3aWR0aCBvciBoZWlnaHQgYXJlIGdpdmVuLCB0aGV5IHdpbGwgYmUgc2V0IHRvIGAwYC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1ZlY3Rvcn0gW3Bvc2l0aW9uPW5ldyBWZWN0b3IoKV0gVGhlIHBvc2l0aW9uIG9mIHRoaXMgYm94IGFzIGEgVmVjdG9yLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbd2lkdGg9MF0gVGhlIHdpZHRoIG9mIHRoaXMgYm94LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbaGVpZ2h0PTBdIFRoZSBoZWlnaHQgb2YgdGhpcyBib3guXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocG9zaXRpb246IFZlY3RvciA9IG5ldyBWZWN0b3IoKSwgd2lkdGg6IG51bWJlciA9IDAsIGhlaWdodDogbnVtYmVyID0gMCkge1xyXG4gICAgdGhpcy5fcG9zaXRpb24gPSBwb3NpdGlvbjtcclxuICAgIHRoaXMuX3dpZHRoID0gd2lkdGg7XHJcbiAgICB0aGlzLl9oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgUG9seWdvbiB3aG9zZSBlZGdlcyBhcmUgdGhlIHNhbWUgYXMgdGhpcyBCb3guXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1BvbHlnb259IEEgbmV3IFBvbHlnb24gdGhhdCByZXByZXNlbnRzIHRoaXMgQm94LlxyXG4gICAqL1xyXG4gIHRvUG9seWdvbigpOiBQb2x5Z29uIHtcclxuICAgIHJldHVybiBuZXcgUG9seWdvbihuZXcgVmVjdG9yKHRoaXMuX3Bvc2l0aW9uLngsIHRoaXMuX3Bvc2l0aW9uLnkpLCBbXHJcbiAgICAgIG5ldyBWZWN0b3IoKSwgbmV3IFZlY3Rvcih0aGlzLl93aWR0aCwgMCksXHJcbiAgICAgIG5ldyBWZWN0b3IodGhpcy5fd2lkdGgsIHRoaXMuX2hlaWdodCksIG5ldyBWZWN0b3IoMCwgdGhpcy5faGVpZ2h0KVxyXG4gICAgXSk7XHJcbiAgfVxyXG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9tZXRyeS9ib3gudHMiXSwibmFtZXMiOlsiQm94IiwicG9zaXRpb24iLCJWZWN0b3IiLCJ3aWR0aCIsImhlaWdodCIsIl9wb3NpdGlvbiIsIl93aWR0aCIsIl9oZWlnaHQiLCJQb2x5Z29uIiwieCIsInkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBO0FBQ0E7QUFDQTtJQUNxQkEsRztBQUNuQjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRSxpQkFBb0Y7QUFBQSxRQUF4RUMsUUFBd0UsdUVBQXJELElBQUlDLGtCQUFKLEVBQXFEO0FBQUEsUUFBdkNDLEtBQXVDLHVFQUF2QixDQUF1QjtBQUFBLFFBQXBCQyxNQUFvQix1RUFBSCxDQUFHOztBQUFBOztBQUFBLHVDQTdCeEQsSUFBSUYsa0JBQUosRUE2QndEOztBQUFBLG9DQXBCM0QsQ0FvQjJEOztBQUFBLHFDQVgxRCxDQVcwRDs7QUFDbEYsU0FBS0csU0FBTCxHQUFpQkosUUFBakI7QUFDQSxTQUFLSyxNQUFMLEdBQWNILEtBQWQ7QUFDQSxTQUFLSSxPQUFMLEdBQWVILE1BQWY7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7O1dBQ0UscUJBQXFCO0FBQ25CLGFBQU8sSUFBSUksbUJBQUosQ0FBWSxJQUFJTixrQkFBSixDQUFXLEtBQUtHLFNBQUwsQ0FBZUksQ0FBMUIsRUFBNkIsS0FBS0osU0FBTCxDQUFlSyxDQUE1QyxDQUFaLEVBQTRELENBQ2pFLElBQUlSLGtCQUFKLEVBRGlFLEVBQ25ELElBQUlBLGtCQUFKLENBQVcsS0FBS0ksTUFBaEIsRUFBd0IsQ0FBeEIsQ0FEbUQsRUFFakUsSUFBSUosa0JBQUosQ0FBVyxLQUFLSSxNQUFoQixFQUF3QixLQUFLQyxPQUE3QixDQUZpRSxFQUUxQixJQUFJTCxrQkFBSixDQUFXLENBQVgsRUFBYyxLQUFLSyxPQUFuQixDQUYwQixDQUE1RCxDQUFQO0FBSUQiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcclxuXHJcbmltcG9ydCBWZWN0b3IgZnJvbSAnLi92ZWN0b3InO1xyXG5pbXBvcnQgUG9seWdvbiBmcm9tICcuL3BvbHlnb24nO1xyXG5cclxuLyoqXHJcbiAqIEEgYm94IHJlcHJlc2VudHMgYW4gYXhpcy1hbGlnbmVkIGJveCB3aXRoIGEgd2lkdGggYW5kIGhlaWdodC5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJveCB7XHJcbiAgLyoqXHJcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoaXMgYm94IGFzIGEgVmVjdG9yLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtWZWN0b3J9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcG9zaXRpb246IFZlY3RvciA9IG5ldyBWZWN0b3IoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHdpZHRoIG9mIHRoaXMgYm94LlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfd2lkdGg6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBoZWlnaHQgb2YgdGhpcyBib3guXHJcbiAgICogXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge251bWJlcn1cclxuICAgKi9cclxuICBwcml2YXRlIF9oZWlnaHQ6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgQm94LCB3aXRoIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24sIHdpZHRoLCBhbmQgaGVpZ2h0LlxyXG4gICAqIFxyXG4gICAqIElmIG5vIHBvc2l0aW9uIGlzIGdpdmVuLCB0aGUgcG9zaXRpb24gd2lsbCBiZSBgKDAsIDApYC4gSWYgbm8gd2lkdGggb3IgaGVpZ2h0IGFyZSBnaXZlbiwgdGhleSB3aWxsIGJlIHNldCB0byBgMGAuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IFtwb3NpdGlvbj1uZXcgVmVjdG9yKCldIFRoZSBwb3NpdGlvbiBvZiB0aGlzIGJveCBhcyBhIFZlY3Rvci5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gW3dpZHRoPTBdIFRoZSB3aWR0aCBvZiB0aGlzIGJveC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gW2hlaWdodD0wXSBUaGUgaGVpZ2h0IG9mIHRoaXMgYm94LlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHBvc2l0aW9uOiBWZWN0b3IgPSBuZXcgVmVjdG9yKCksIHdpZHRoOiBudW1iZXIgPSAwLCBoZWlnaHQ6IG51bWJlciA9IDApIHtcclxuICAgIHRoaXMuX3Bvc2l0aW9uID0gcG9zaXRpb247XHJcbiAgICB0aGlzLl93aWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5faGVpZ2h0ID0gaGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIFBvbHlnb24gd2hvc2UgZWRnZXMgYXJlIHRoZSBzYW1lIGFzIHRoaXMgQm94LlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQb2x5Z29ufSBBIG5ldyBQb2x5Z29uIHRoYXQgcmVwcmVzZW50cyB0aGlzIEJveC5cclxuICAgKi9cclxuICB0b1BvbHlnb24oKTogUG9seWdvbiB7XHJcbiAgICByZXR1cm4gbmV3IFBvbHlnb24obmV3IFZlY3Rvcih0aGlzLl9wb3NpdGlvbi54LCB0aGlzLl9wb3NpdGlvbi55KSwgW1xyXG4gICAgICBuZXcgVmVjdG9yKCksIG5ldyBWZWN0b3IodGhpcy5fd2lkdGgsIDApLFxyXG4gICAgICBuZXcgVmVjdG9yKHRoaXMuX3dpZHRoLCB0aGlzLl9oZWlnaHQpLCBuZXcgVmVjdG9yKDAsIHRoaXMuX2hlaWdodClcclxuICAgIF0pO1xyXG4gIH1cclxufSJdfQ==

@@ -81,5 +81,38 @@ 'use strict';

_createClass(Circle, [{
key: "translate",
key: "position",
get: function get() {
return this._position;
}
/**
* Returns the radius of this circle.
*
* @returns {number}
*/
}, {
key: "radius",
get: function get() {
return this._radius;
}
/**
* Returns the offset of this circle.
*
* @returns {Vector}
*/
}, {
key: "offset",
get: function get() {
return this._offset;
}
/**
* Set a new offset for this circle.
*
* @param {Vector} offset The new offset for this circle.
*/
,
set: function set(offset) {
this._offset = offset;
}
/**
* Translate the center of the cirlc.e

@@ -89,2 +122,5 @@ *

*/
}, {
key: "translate",
value: function translate(x, y) {

@@ -123,38 +159,2 @@ this._position.x += x;

}
}, {
key: "position",
get: function get() {
return this._position;
}
/**
* Returns the radius of this circle.
*
* @returns {number}
*/
}, {
key: "radius",
get: function get() {
return this._radius;
}
/**
* Returns the offset of this circle.
*
* @returns {Vector}
*/
}, {
key: "offset",
get: function get() {
return this._offset;
}
/**
* Set a new offset for this circle.
*
* @param {Vector} offset The new offset for this circle.
*/
,
set: function set(offset) {
this._offset = offset;
}
}]);

@@ -166,2 +166,2 @@

exports["default"] = Circle;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9tZXRyeS9jaXJjbGUudHMiXSwibmFtZXMiOlsiQ2lyY2xlIiwicG9zaXRpb24iLCJWZWN0b3IiLCJyYWRpdXMiLCJfcG9zaXRpb24iLCJfcmFkaXVzIiwieCIsInkiLCJjb3JuZXIiLCJjbG9uZSIsImFkZCIsIl9vZmZzZXQiLCJzdWIiLCJCb3giLCJ0b1BvbHlnb24iLCJvZmZzZXQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUdBOzs7Ozs7O0lBT3FCQSxNO0FBQ25COzs7Ozs7OztBQVNBOzs7Ozs7OztBQVNBOzs7Ozs7OztBQVNBOzs7O0FBSUEsb0JBQWlFO0FBQUEsUUFBckRDLFFBQXFELHVFQUFsQyxJQUFJQyxrQkFBSixFQUFrQztBQUFBLFFBQXBCQyxNQUFvQix1RUFBSCxDQUFHOztBQUFBOztBQUFBLHVDQXhCckMsSUFBSUQsa0JBQUosRUF3QnFDOztBQUFBLHFDQWZ2QyxDQWV1Qzs7QUFBQSxxQ0FOdkMsSUFBSUEsa0JBQUosRUFNdUM7O0FBQy9ELFNBQUtFLFNBQUwsR0FBaUJILFFBQWpCO0FBRUEsU0FBS0ksT0FBTCxHQUFlRixNQUFmO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztBQTRCQTs7Ozs7OEJBS1VHLEMsRUFBV0MsQyxFQUFXO0FBQzlCLFdBQUtILFNBQUwsQ0FBZUUsQ0FBZixJQUFvQkEsQ0FBcEI7QUFDQSxXQUFLRixTQUFMLENBQWVHLENBQWYsSUFBb0JBLENBQXBCO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs4QkFPbUI7QUFDakIsVUFBTUMsTUFBTSxHQUFHLEtBQUtKLFNBQUwsQ0FBZUssS0FBZixHQUF1QkMsR0FBdkIsQ0FBMkIsS0FBS0MsT0FBaEMsRUFBeUNDLEdBQXpDLENBQTZDLElBQUlWLGtCQUFKLENBQVcsS0FBS0csT0FBaEIsRUFBeUIsS0FBS0EsT0FBOUIsQ0FBN0MsQ0FBZjs7QUFDQSxhQUFPLElBQUlRLGVBQUosQ0FBUUwsTUFBUixFQUFnQixLQUFLSCxPQUFMLEdBQWUsQ0FBL0IsRUFBa0MsS0FBS0EsT0FBTCxHQUFlLENBQWpELEVBQW9EUyxTQUFwRCxFQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs4QkFPVUMsTSxFQUF3QjtBQUNoQyxXQUFLSixPQUFMLEdBQWVJLE1BQWY7QUFDQSxhQUFPLElBQVA7QUFDRDs7O3dCQXZEc0I7QUFBRSxhQUFPLEtBQUtYLFNBQVo7QUFBd0I7QUFFakQ7Ozs7Ozs7O3dCQUtxQjtBQUFFLGFBQU8sS0FBS0MsT0FBWjtBQUFzQjtBQUU3Qzs7Ozs7Ozs7d0JBS3FCO0FBQUUsYUFBTyxLQUFLTSxPQUFaO0FBQXNCO0FBRTdDOzs7Ozs7c0JBS1dJLE0sRUFBZ0I7QUFBRSxXQUFLSixPQUFMLEdBQWVJLE1BQWY7QUFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcclxuXHJcbmltcG9ydCBCb3ggZnJvbSAnLi9ib3gnO1xyXG5pbXBvcnQgVmVjdG9yIGZyb20gJy4vdmVjdG9yJztcclxuaW1wb3J0IFBvbHlnb24gZnJvbSAnLi9wb2x5Z29uJztcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIGEgY2lyY2xlIHdpdGggYSBwb3NpdGlvbiBhbmQgYSByYWRpdXMuXHJcbiAqIFxyXG4gKiBDcmVhdGVzIGEgbmV3IENpcmNsZSwgb3B0aW9uYWxseSBwYXNzaW5nIGluIGEgcG9zaXRpb24gYW5kL29yIHJhZGl1cy4gSWYgbm8gcG9zaXRpb24gaXMgZ2l2ZW4sIHRoZSBDaXJjbGUgd2lsbCBiZSBhdCBgKDAsMClgLiBcclxuICogXHJcbiAqIElmIG5vIHJhZGl1cyBpcyBwcm92aWRlZCB0aGUgY2lyY2xlIHdpbGwgaGF2ZSBhIHJhZGl1cyBvZiBgMGAuXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaXJjbGUge1xyXG4gIC8qKlxyXG4gICAqIEEgVmVjdG9yIHJlcHJlc2VudGluZyB0aGUgY2VudGVyIHBvaW50IG9mIHRoaXMgY2lyY2xlLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtWZWN0b3J9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcG9zaXRpb246IFZlY3RvciA9IG5ldyBWZWN0b3IoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHJhZGl1cyBvZiB0aGlzIGNpcmNsZS5cclxuICAgKiBcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIFxyXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3JhZGl1czogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBWZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgb2YgdGhpcyBjaXJjbGUuXHJcbiAgICogXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge1ZlY3Rvcn1cclxuICAgKi9cclxuICBwcml2YXRlIF9vZmZzZXQ6IFZlY3RvciA9IG5ldyBWZWN0b3IoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IHBvc2l0aW9uIEEgVmVjdG9yIHJlcHJlc2VudGluZyB0aGUgY2VudGVyIG9mIHRoaXMgQ2lyY2xlLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpdXMgVGhlIHJhZGl1cyBvZiB0aGlzIENpcmNsZS4gXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocG9zaXRpb246IFZlY3RvciA9IG5ldyBWZWN0b3IoKSwgcmFkaXVzOiBudW1iZXIgPSAwKSB7XHJcbiAgICB0aGlzLl9wb3NpdGlvbiA9IHBvc2l0aW9uO1xyXG5cclxuICAgIHRoaXMuX3JhZGl1cyA9IHJhZGl1cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoaXMgY2lyY2xlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9XHJcbiAgICovXHJcbiAgZ2V0IHBvc2l0aW9uKCk6IFZlY3RvciB7IHJldHVybiB0aGlzLl9wb3NpdGlvbjsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSByYWRpdXMgb2YgdGhpcyBjaXJjbGUuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge251bWJlcn1cclxuICAgKi9cclxuICBnZXQgcmFkaXVzKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl9yYWRpdXM7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgb2Zmc2V0IG9mIHRoaXMgY2lyY2xlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9XHJcbiAgICovXHJcbiAgZ2V0IG9mZnNldCgpOiBWZWN0b3IgeyByZXR1cm4gdGhpcy5fb2Zmc2V0OyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBhIG5ldyBvZmZzZXQgZm9yIHRoaXMgY2lyY2xlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yfSBvZmZzZXQgVGhlIG5ldyBvZmZzZXQgZm9yIHRoaXMgY2lyY2xlLlxyXG4gICAqL1xyXG4gIHNldCBvZmZzZXQob2Zmc2V0OiBWZWN0b3IpIHsgdGhpcy5fb2Zmc2V0ID0gb2Zmc2V0OyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYW5zbGF0ZSB0aGUgY2VudGVyIG9mIHRoZSBjaXJsYy5lXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IHBvc2l0aW9uIEEgVmVjdG9yIHJlcHJlc2VudGluZyB0aGUgbmV3IGNlbnRlciBvZiB0aGlzIGNpcmNsZS5cclxuICAgKi9cclxuICB0cmFuc2xhdGUoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3Bvc2l0aW9uLnggKz0geDtcclxuICAgIHRoaXMuX3Bvc2l0aW9uLnkgKz0geTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXB1dGUgdGhlIGF4aXMtYWxpZ25lZCBib3VuZGluZyBib3ggKEFBQkIpIG9mIHRoaXMgQ2lyY2xlLlxyXG4gICAqIFxyXG4gICAqIE5vdGU6IFJldHVybnMgYSBuZXcgYFBvbHlnb25gIGVhY2ggdGltZSB0aGlzIGlzIGNhbGxlZC5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7UG9seWdvbn0gUmV0dXJucyB0aGUgQUFCQiBvZiB0aGlzIGNpcmNsZS5cclxuICAgKi9cclxuICBnZXRBQUJCKCk6IFBvbHlnb24ge1xyXG4gICAgY29uc3QgY29ybmVyID0gdGhpcy5fcG9zaXRpb24uY2xvbmUoKS5hZGQodGhpcy5fb2Zmc2V0KS5zdWIobmV3IFZlY3Rvcih0aGlzLl9yYWRpdXMsIHRoaXMuX3JhZGl1cykpO1xyXG4gICAgcmV0dXJuIG5ldyBCb3goY29ybmVyLCB0aGlzLl9yYWRpdXMgKiAyLCB0aGlzLl9yYWRpdXMgKiAyKS50b1BvbHlnb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgY3VycmVudCBvZmZzZXQgdG8gYXBwbHkgdG8gdGhlIHJhZGl1cy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1ZlY3Rvcn0gb2Zmc2V0IFRoZSBuZXcgb2Zmc2V0IFZlY3Rvci5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7Q2lyY2xlfSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHNldE9mZnNldChvZmZzZXQ6IFZlY3Rvcik6IENpcmNsZSB7XHJcbiAgICB0aGlzLl9vZmZzZXQgPSBvZmZzZXQ7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9tZXRyeS9jaXJjbGUudHMiXSwibmFtZXMiOlsiQ2lyY2xlIiwicG9zaXRpb24iLCJWZWN0b3IiLCJyYWRpdXMiLCJfcG9zaXRpb24iLCJfcmFkaXVzIiwiX29mZnNldCIsIm9mZnNldCIsIngiLCJ5IiwiY29ybmVyIiwiY2xvbmUiLCJhZGQiLCJzdWIiLCJCb3giLCJ0b1BvbHlnb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ3FCQSxNO0FBQ25CO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0Usb0JBQWlFO0FBQUEsUUFBckRDLFFBQXFELHVFQUFsQyxJQUFJQyxrQkFBSixFQUFrQztBQUFBLFFBQXBCQyxNQUFvQix1RUFBSCxDQUFHOztBQUFBOztBQUFBLHVDQXhCckMsSUFBSUQsa0JBQUosRUF3QnFDOztBQUFBLHFDQWZ2QyxDQWV1Qzs7QUFBQSxxQ0FOdkMsSUFBSUEsa0JBQUosRUFNdUM7O0FBQy9ELFNBQUtFLFNBQUwsR0FBaUJILFFBQWpCO0FBRUEsU0FBS0ksT0FBTCxHQUFlRixNQUFmO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7OztTQUNFLGVBQXVCO0FBQUUsYUFBTyxLQUFLQyxTQUFaO0FBQXdCO0FBRWpEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7U0FDRSxlQUFxQjtBQUFFLGFBQU8sS0FBS0MsT0FBWjtBQUFzQjtBQUU3QztBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7O1NBQ0UsZUFBcUI7QUFBRSxhQUFPLEtBQUtDLE9BQVo7QUFBc0I7QUFFN0M7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7U0FDRSxhQUFXQyxNQUFYLEVBQTJCO0FBQUUsV0FBS0QsT0FBTCxHQUFlQyxNQUFmO0FBQXdCO0FBRXJEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7V0FDRSxtQkFBVUMsQ0FBVixFQUFxQkMsQ0FBckIsRUFBZ0M7QUFDOUIsV0FBS0wsU0FBTCxDQUFlSSxDQUFmLElBQW9CQSxDQUFwQjtBQUNBLFdBQUtKLFNBQUwsQ0FBZUssQ0FBZixJQUFvQkEsQ0FBcEI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O1dBQ0UsbUJBQW1CO0FBQ2pCLFVBQU1DLE1BQU0sR0FBRyxLQUFLTixTQUFMLENBQWVPLEtBQWYsR0FBdUJDLEdBQXZCLENBQTJCLEtBQUtOLE9BQWhDLEVBQXlDTyxHQUF6QyxDQUE2QyxJQUFJWCxrQkFBSixDQUFXLEtBQUtHLE9BQWhCLEVBQXlCLEtBQUtBLE9BQTlCLENBQTdDLENBQWY7O0FBQ0EsYUFBTyxJQUFJUyxlQUFKLENBQVFKLE1BQVIsRUFBZ0IsS0FBS0wsT0FBTCxHQUFlLENBQS9CLEVBQWtDLEtBQUtBLE9BQUwsR0FBZSxDQUFqRCxFQUFvRFUsU0FBcEQsRUFBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7V0FDRSxtQkFBVVIsTUFBVixFQUFrQztBQUNoQyxXQUFLRCxPQUFMLEdBQWVDLE1BQWY7QUFDQSxhQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xyXG5cclxuaW1wb3J0IEJveCBmcm9tICcuL2JveCc7XHJcbmltcG9ydCBWZWN0b3IgZnJvbSAnLi92ZWN0b3InO1xyXG5pbXBvcnQgUG9seWdvbiBmcm9tICcuL3BvbHlnb24nO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBjaXJjbGUgd2l0aCBhIHBvc2l0aW9uIGFuZCBhIHJhZGl1cy5cclxuICogXHJcbiAqIENyZWF0ZXMgYSBuZXcgQ2lyY2xlLCBvcHRpb25hbGx5IHBhc3NpbmcgaW4gYSBwb3NpdGlvbiBhbmQvb3IgcmFkaXVzLiBJZiBubyBwb3NpdGlvbiBpcyBnaXZlbiwgdGhlIENpcmNsZSB3aWxsIGJlIGF0IGAoMCwwKWAuIFxyXG4gKiBcclxuICogSWYgbm8gcmFkaXVzIGlzIHByb3ZpZGVkIHRoZSBjaXJjbGUgd2lsbCBoYXZlIGEgcmFkaXVzIG9mIGAwYC5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENpcmNsZSB7XHJcbiAgLyoqXHJcbiAgICogQSBWZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBjZW50ZXIgcG9pbnQgb2YgdGhpcyBjaXJjbGUuXHJcbiAgICogXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge1ZlY3Rvcn1cclxuICAgKi9cclxuICBwcml2YXRlIF9wb3NpdGlvbjogVmVjdG9yID0gbmV3IFZlY3RvcigpO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgcmFkaXVzIG9mIHRoaXMgY2lyY2xlLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcmFkaXVzOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBBIFZlY3RvciByZXByZXNlbnRpbmcgdGhlIG9mZnNldCBvZiB0aGlzIGNpcmNsZS5cclxuICAgKiBcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIFxyXG4gICAqIEBwcm9wZXJ0eSB7VmVjdG9yfVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX29mZnNldDogVmVjdG9yID0gbmV3IFZlY3RvcigpO1xyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0ge1ZlY3Rvcn0gcG9zaXRpb24gQSBWZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBjZW50ZXIgb2YgdGhpcyBDaXJjbGUuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJhZGl1cyBUaGUgcmFkaXVzIG9mIHRoaXMgQ2lyY2xlLiBcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwb3NpdGlvbjogVmVjdG9yID0gbmV3IFZlY3RvcigpLCByYWRpdXM6IG51bWJlciA9IDApIHtcclxuICAgIHRoaXMuX3Bvc2l0aW9uID0gcG9zaXRpb247XHJcblxyXG4gICAgdGhpcy5fcmFkaXVzID0gcmFkaXVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhpcyBjaXJjbGUuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn1cclxuICAgKi9cclxuICBnZXQgcG9zaXRpb24oKTogVmVjdG9yIHsgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHJhZGl1cyBvZiB0aGlzIGNpcmNsZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxyXG4gICAqL1xyXG4gIGdldCByYWRpdXMoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3JhZGl1czsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhpcyBjaXJjbGUuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn1cclxuICAgKi9cclxuICBnZXQgb2Zmc2V0KCk6IFZlY3RvciB7IHJldHVybiB0aGlzLl9vZmZzZXQ7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGEgbmV3IG9mZnNldCBmb3IgdGhpcyBjaXJjbGUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IG9mZnNldCBUaGUgbmV3IG9mZnNldCBmb3IgdGhpcyBjaXJjbGUuXHJcbiAgICovXHJcbiAgc2V0IG9mZnNldChvZmZzZXQ6IFZlY3RvcikgeyB0aGlzLl9vZmZzZXQgPSBvZmZzZXQ7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhbnNsYXRlIHRoZSBjZW50ZXIgb2YgdGhlIGNpcmxjLmVcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1ZlY3Rvcn0gcG9zaXRpb24gQSBWZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBuZXcgY2VudGVyIG9mIHRoaXMgY2lyY2xlLlxyXG4gICAqL1xyXG4gIHRyYW5zbGF0ZSh4OiBudW1iZXIsIHk6IG51bWJlcikge1xyXG4gICAgdGhpcy5fcG9zaXRpb24ueCArPSB4O1xyXG4gICAgdGhpcy5fcG9zaXRpb24ueSArPSB5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcHV0ZSB0aGUgYXhpcy1hbGlnbmVkIGJvdW5kaW5nIGJveCAoQUFCQikgb2YgdGhpcyBDaXJjbGUuXHJcbiAgICogXHJcbiAgICogTm90ZTogUmV0dXJucyBhIG5ldyBgUG9seWdvbmAgZWFjaCB0aW1lIHRoaXMgaXMgY2FsbGVkLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQb2x5Z29ufSBSZXR1cm5zIHRoZSBBQUJCIG9mIHRoaXMgY2lyY2xlLlxyXG4gICAqL1xyXG4gIGdldEFBQkIoKTogUG9seWdvbiB7XHJcbiAgICBjb25zdCBjb3JuZXIgPSB0aGlzLl9wb3NpdGlvbi5jbG9uZSgpLmFkZCh0aGlzLl9vZmZzZXQpLnN1YihuZXcgVmVjdG9yKHRoaXMuX3JhZGl1cywgdGhpcy5fcmFkaXVzKSk7XHJcbiAgICByZXR1cm4gbmV3IEJveChjb3JuZXIsIHRoaXMuX3JhZGl1cyAqIDIsIHRoaXMuX3JhZGl1cyAqIDIpLnRvUG9seWdvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBjdXJyZW50IG9mZnNldCB0byBhcHBseSB0byB0aGUgcmFkaXVzLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yfSBvZmZzZXQgVGhlIG5ldyBvZmZzZXQgVmVjdG9yLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtDaXJjbGV9IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgc2V0T2Zmc2V0KG9mZnNldDogVmVjdG9yKTogQ2lyY2xlIHtcclxuICAgIHRoaXMuX29mZnNldCA9IG9mZnNldDtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxufSJdfQ==

@@ -133,5 +133,106 @@ 'use strict';

_createClass(Polygon, [{
key: "setPoints",
key: "position",
get: function get() {
return this._position;
}
/**
* **Note:** Not sure if this will be kept or not but for now it's disabled.
*
* Sets a new position for this polygon and recalculates the points.
*
* @param {Vector} position A Vector representing the new position of this polygon.
*/
// set position(position: Vector) {
// const diffX: number = -(this._position.x - position.x);
// const diffY: number = -(this._position.y - position.y);
// const diffPoint: Vector = new Vector(diffX, diffY);
// const points: Array<Vector> = [];
// this._points.map((point: Vector) => {
// const tempX: number = point.x;
// const tempY: number = point.y;
// const tempPoint: Vector = new Vector(tempX, tempY);
// const calculatedPoint: Vector = tempPoint.add(diffPoint);
// points.push(calculatedPoint);
// });
// this.setPoints(points, true);
// }
/**
* Returns the points of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "points",
get: function get() {
return this._points;
}
/**
* Returns the points of this polygon as numbers instead of Vectors.
*
* @returns {Array<number>}
*/
}, {
key: "pointsGeneric",
get: function get() {
return this._pointsGeneric;
}
/**
* Returns the calculated points of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "calcPoints",
get: function get() {
return this._calcPoints;
}
/**
* Returns the offset of this polygon.
*
* @returns {Vector}
*/
}, {
key: "offset",
get: function get() {
return this._offset;
}
/**
* Returns the angle of this polygon.
*
* @returns {number}
*/
}, {
key: "angle",
get: function get() {
return this._angle;
}
/**
* Returns the edges of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "edges",
get: function get() {
return this._edges;
}
/**
* Returns the normals of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "normals",
get: function get() {
return this._normals;
}
/**
* Set the points of the polygon. Any consecutive duplicate points will be combined.

@@ -147,2 +248,5 @@ *

*/
}, {
key: "setPoints",
value: function setPoints(points) {

@@ -380,106 +484,2 @@ // Only re-allocate if this is a new polygon or the number of points has changed.

}
}, {
key: "position",
get: function get() {
return this._position;
}
/**
* **Note:** Not sure if this will be kept or not but for now it's disabled.
*
* Sets a new position for this polygon and recalculates the points.
*
* @param {Vector} position A Vector representing the new position of this polygon.
*/
// set position(position: Vector) {
// const diffX: number = -(this._position.x - position.x);
// const diffY: number = -(this._position.y - position.y);
// const diffPoint: Vector = new Vector(diffX, diffY);
// const points: Array<Vector> = [];
// this._points.map((point: Vector) => {
// const tempX: number = point.x;
// const tempY: number = point.y;
// const tempPoint: Vector = new Vector(tempX, tempY);
// const calculatedPoint: Vector = tempPoint.add(diffPoint);
// points.push(calculatedPoint);
// });
// this.setPoints(points, true);
// }
/**
* Returns the points of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "points",
get: function get() {
return this._points;
}
/**
* Returns the points of this polygon as numbers instead of Vectors.
*
* @returns {Array<number>}
*/
}, {
key: "pointsGeneric",
get: function get() {
return this._pointsGeneric;
}
/**
* Returns the calculated points of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "calcPoints",
get: function get() {
return this._calcPoints;
}
/**
* Returns the offset of this polygon.
*
* @returns {Vector}
*/
}, {
key: "offset",
get: function get() {
return this._offset;
}
/**
* Returns the angle of this polygon.
*
* @returns {number}
*/
}, {
key: "angle",
get: function get() {
return this._angle;
}
/**
* Returns the edges of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "edges",
get: function get() {
return this._edges;
}
/**
* Returns the normals of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "normals",
get: function get() {
return this._normals;
}
}]);

@@ -491,2 +491,2 @@

exports["default"] = Polygon;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9tZXRyeS9wb2x5Z29uLnRzIl0sIm5hbWVzIjpbIlBvbHlnb24iLCJwb3NpdGlvbiIsIlZlY3RvciIsInBvaW50cyIsIl9wb3NpdGlvbiIsInNldFBvaW50cyIsImxlbmd0aENoYW5nZWQiLCJsZW5ndGgiLCJpIiwiY2FsY1BvaW50cyIsIl9jYWxjUG9pbnRzIiwiZWRnZXMiLCJfZWRnZXMiLCJub3JtYWxzIiwiX25vcm1hbHMiLCJwMSIsInAyIiwiX3BvaW50c0dlbmVyaWMiLCJwdXNoIiwieCIsInkiLCJzcGxpY2UiLCJfcG9pbnRzIiwiX3JlY2FsYyIsImFuZ2xlIiwiX2FuZ2xlIiwib2Zmc2V0IiwiX29mZnNldCIsImxlbiIsInJvdGF0ZSIsImNhbGNQb2ludCIsImNvcHkiLCJlIiwic3ViIiwicGVycCIsIm5vcm1hbGl6ZSIsInhNaW4iLCJ5TWluIiwieE1heCIsInlNYXgiLCJwb2ludCIsImNsb25lIiwiYWRkIiwiY3giLCJjeSIsImFyIiwiYSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7O0lBUXFCQSxPO0FBQ25COzs7Ozs7OztBQVNBOzs7Ozs7OztBQVNBOzs7Ozs7OztBQVNBOzs7Ozs7OztBQVNBOzs7Ozs7OztBQVNBOzs7Ozs7OztBQVNBOzs7Ozs7OztBQVNBOzs7Ozs7OztBQVNBOzs7Ozs7O0FBT0EscUJBQXlFO0FBQUEsUUFBN0RDLFFBQTZELHVFQUExQyxJQUFJQyxrQkFBSixFQUEwQztBQUFBLFFBQTVCQyxNQUE0Qix1RUFBSixFQUFJOztBQUFBOztBQUFBLHVDQXhFN0MsSUFBSUQsa0JBQUosRUF3RTZDOztBQUFBLHFDQS9EeEMsRUErRHdDOztBQUFBLDRDQXREakMsRUFzRGlDOztBQUFBLG9DQTdDaEQsQ0E2Q2dEOztBQUFBLHFDQXBDL0MsSUFBSUEsa0JBQUosRUFvQytDOztBQUFBLHlDQTNCcEMsRUEyQm9DOztBQUFBLG9DQWxCekMsRUFrQnlDOztBQUFBLHND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Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBOztBQUVBOzs7Ozs7Ozt3QkFLNEI7QUFBRSxhQUFPLEtBQUtrQixPQUFaO0FBQXNCO0FBRXBEOzs7Ozs7Ozt3QkFLbUM7QUFBRSxhQUFPLEtBQUtMLGNBQVo7QUFBNkI7QUFFbEU7Ozs7Ozs7O3dCQUtnQztBQUFFLGFBQU8sS0FBS1AsV0FBWjtBQUEwQjtBQUU1RDs7Ozs7Ozs7d0JBS3FCO0FBQUUsYUFBTyxLQUFLaUIsT0FBWjtBQUFzQjtBQUU3Qzs7Ozs7Ozs7d0JBS29CO0FBQUUsYUFBTyxLQUFLRixNQUFaO0FBQXFCO0FBRTNDOzs7Ozs7Ozt3QkFLMkI7QUFBRSxhQUFPLEtBQUtiLE1BQVo7QUFBcUI7QUFFbEQ7Ozs7Ozs7O3dCQUs2QjtBQUFFLGFBQU8sS0FBS0UsUUFBWjtBQUF1QiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xyXG5cclxuaW1wb3J0IFZlY3RvciBmcm9tICcuL3ZlY3Rvcic7XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhICpjb252ZXgqIHBvbHlnb24gd2l0aCBhbnkgbnVtYmVyIG9mIHBvaW50cyAoc3BlY2lmaWVkIGluIGNvdW50ZXItY2xvY2t3aXNlIG9yZGVyKS5cclxuICogXHJcbiAqIE5vdGU6IERvIF9ub3RfIG1hbnVhbGx5IGNoYW5nZSB0aGUgYHBvaW50c2AsIGBhbmdsZWAsIG9yIGBvZmZzZXRgIHByb3BlcnRpZXMuIFVzZSB0aGUgcHJvdmlkZWQgIHNldHRlcnMuIFxyXG4gKiBPdGhlcndpc2UgdGhlIGNhbGN1bGF0ZWQgcHJvcGVydGllcyB3aWxsIG5vdCBiZSB1cGRhdGVkIGNvcnJlY3RseS5cclxuICogXHJcbiAqIFRoZSBgcG9zYCBwcm9wZXJ0eSBjYW4gYmUgY2hhbmdlZCBkaXJlY3RseS5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvbHlnb24ge1xyXG4gIC8qKlxyXG4gICAqIEEgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgb3JpZ2luIG9mIHRoaXMgcG9seWdvbiAoYWxsIG90aGVyIHBvaW50cyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBvbmUpLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtWZWN0b3J9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcG9zaXRpb246IFZlY3RvciA9IG5ldyBWZWN0b3IoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXJyYXkgb2YgdmVjdG9ycyByZXByZXNlbnRpbmcgdGhlIHBvaW50cyBpbiB0aGUgcG9seWdvbiwgaW4gY291bnRlci1jbG9ja3dpc2Ugb3JkZXIuXHJcbiAgICogXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge0FycmF5PFZlY3Rvcj59XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcG9pbnRzOiBBcnJheTxWZWN0b3I+ID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuIEFycmF5IG9mIHRoZSBwb2ludHMgb2YgdGhpcyBwb2x5Z29uIGFzIG51bWJlcnMgaW5zdGVhZCBvZiBWZWN0b3JzLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtBcnJheTxudW1iZXI+fVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3BvaW50c0dlbmVyaWM6IEFycmF5PG51bWJlcj4gPSBbXVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgYW5nbGUgb2YgdGhpcyBwb2x5Z29uLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfYW5nbGU6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBvZmZzZXQgb2YgdGhpcyBwb2x5Z29uLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtWZWN0b3J9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfb2Zmc2V0OiBWZWN0b3IgPSBuZXcgVmVjdG9yKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBjYWxjdWxhdGVkIHBvaW50cyBvZiB0aGlzIHBvbHlnb24uXHJcbiAgICogXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge0FycmF5PFZlY3Rvcj59XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfY2FsY1BvaW50czogQXJyYXk8VmVjdG9yPiA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgZWRnZXMgb2YgdGhpcyBwb2x5Z29uLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtBcnJheTxWZWN0b3I+fVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2VkZ2VzOiBBcnJheTxWZWN0b3I+ID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBub3JtYWxzIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIFxyXG4gICAqIEBwcm9wZXJ0eSB7QXJyYXk8VmVjdG9yPn1cclxuICAgKi9cclxuICBwcml2YXRlIF9ub3JtYWxzOiBBcnJheTxWZWN0b3I+ID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIG5ldyBwb2x5Z29uLCBwYXNzaW5nIGluIGEgcG9zaXRpb24gdmVjdG9yLCBhbmQgYW4gYXJyYXkgb2YgcG9pbnRzIChyZXByZXNlbnRlZCBieSB2ZWN0b3JzIFxyXG4gICAqIHJlbGF0aXZlIHRvIHRoZSBwb3NpdGlvbiB2ZWN0b3IpLiBJZiBubyBwb3NpdGlvbiBpcyBwYXNzZWQgaW4sIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9seWdvbiB3aWxsIGJlIGAoMCwwKWAuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IFtwb3NpdGlvbj1WZWN0b3JdIEEgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgb3JpZ2luIG9mIHRoZSBwb2x5Z29uIChhbGwgb3RoZXIgcG9pbnRzIGFyZSByZWxhdGl2ZSB0byB0aGlzIG9uZSlcclxuICAgKiBAcGFyYW0ge0FycmF5PFZlY3Rvcj59IFtwb2ludHM9W11dIEFuIGFycmF5IG9mIHZlY3RvcnMgcmVwcmVzZW50aW5nIHRoZSBwb2ludHMgaW4gdGhlIHBvbHlnb24sIGluIGNvdW50ZXItY2xvY2t3aXNlIG9yZGVyLlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHBvc2l0aW9uOiBWZWN0b3IgPSBuZXcgVmVjdG9yKCksIHBvaW50czogQXJyYXk8VmVjdG9yPiA9IFtdKSB7XHJcbiAgICB0aGlzLl9wb3NpdGlvbiA9IHBvc2l0aW9uO1xyXG4gICAgdGhpcy5zZXRQb2ludHMocG9pbnRzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfVxyXG4gICAqL1xyXG4gIGdldCBwb3NpdGlvbigpOiBWZWN0b3IgeyByZXR1cm4gdGhpcy5fcG9zaXRpb247IH1cclxuXHJcbiAgLyoqXHJcbiAgICogKipOb3RlOioqIE5vdCBzdXJlIGlmIHRoaXMgd2lsbCBiZSBrZXB0IG9yIG5vdCBidXQgZm9yIG5vdyBpdCdzIGRpc2FibGVkLlxyXG4gICAqIFxyXG4gICAqIFNldHMgYSBuZXcgcG9zaXRpb24gZm9yIHRoaXMgcG9seWdvbiBhbmQgcmVjYWxjdWxhdGVzIHRoZSBwb2ludHMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IHBvc2l0aW9uIEEgVmVjdG9yIHJlcHJlc2VudGluZyB0aGUgbmV3IHBvc2l0aW9uIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKi9cclxuICAvLyBzZXQgcG9zaXRpb24ocG9zaXRpb246IFZlY3Rvcikge1xyXG4gIC8vICAgY29uc3QgZGlmZlg6IG51bWJlciA9IC0odGhpcy5fcG9zaXRpb24ueCAtIHBvc2l0aW9uLngpO1xyXG4gIC8vICAgY29uc3QgZGlmZlk6IG51bWJlciA9IC0odGhpcy5fcG9zaXRpb24ueSAtIHBvc2l0aW9uLnkpO1xyXG5cclxuICAvLyAgIGNvbnN0IGRpZmZQb2ludDogVmVjdG9yID0gbmV3IFZlY3RvcihkaWZmWCwgZGlmZlkpO1xyXG5cclxuICAvLyAgIGNvbnN0IHBvaW50czogQXJyYXk8VmVjdG9yPiA9IFtdO1xyXG5cclxuICAvLyAgIHRoaXMuX3BvaW50cy5tYXAoKHBvaW50OiBWZWN0b3IpID0+IHtcclxuICAvLyAgICAgY29uc3QgdGVtcFg6IG51bWJlciA9IHBvaW50Lng7XHJcbiAgLy8gICAgIGNvbnN0IHRlbXBZOiBudW1iZXIgPSBwb2ludC55O1xyXG5cclxuICAvLyAgICAgY29uc3QgdGVtcFBvaW50OiBWZWN0b3IgPSBuZXcgVmVjdG9yKHRlbXBYLCB0ZW1wWSk7XHJcblxyXG4gIC8vICAgICBjb25zdCBjYWxjdWxhdGVkUG9pbnQ6IFZlY3RvciA9IHRlbXBQb2ludC5hZGQoZGlmZlBvaW50KTtcclxuXHJcbiAgLy8gICAgIHBvaW50cy5wdXNoKGNhbGN1bGF0ZWRQb2ludCk7XHJcbiAgLy8gICB9KTtcclxuXHJcbiAgLy8gICB0aGlzLnNldFBvaW50cyhwb2ludHMsIHRydWUpO1xyXG4gIC8vIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgcG9pbnRzIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7QXJyYXk8VmVjdG9yPn1cclxuICAgKi9cclxuICBnZXQgcG9pbnRzKCk6IEFycmF5PFZlY3Rvcj4geyByZXR1cm4gdGhpcy5fcG9pbnRzOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHBvaW50cyBvZiB0aGlzIHBvbHlnb24gYXMgbnVtYmVycyBpbnN0ZWFkIG9mIFZlY3RvcnMuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge0FycmF5PG51bWJlcj59XHJcbiAgICovXHJcbiAgZ2V0IHBvaW50c0dlbmVyaWMoKTogQXJyYXk8bnVtYmVyPiB7IHJldHVybiB0aGlzLl9wb2ludHNHZW5lcmljOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGNhbGN1bGF0ZWQgcG9pbnRzIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7QXJyYXk8VmVjdG9yPn1cclxuICAgKi9cclxuICBnZXQgY2FsY1BvaW50cygpOiBBcnJheTxWZWN0b3I+IHsgcmV0dXJuIHRoaXMuX2NhbGNQb2ludHM7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgb2Zmc2V0IG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfVxyXG4gICAqL1xyXG4gIGdldCBvZmZzZXQoKTogVmVjdG9yIHsgcmV0dXJuIHRoaXMuX29mZnNldDsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBhbmdsZSBvZiB0aGlzIHBvbHlnb24uXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge251bWJlcn1cclxuICAgKi9cclxuICBnZXQgYW5nbGUoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX2FuZ2xlOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGVkZ2VzIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7QXJyYXk8VmVjdG9yPn1cclxuICAgKi9cclxuICBnZXQgZWRnZXMoKTogQXJyYXk8VmVjdG9yPiB7IHJldHVybiB0aGlzLl9lZGdlczsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBub3JtYWxzIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7QXJyYXk8VmVjdG9yPn1cclxuICAgKi9cclxuICBnZXQgbm9ybWFscygpOiBBcnJheTxWZWN0b3I+IHsgcmV0dXJuIHRoaXMuX25vcm1hbHM7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBwb2ludHMgb2YgdGhlIHBvbHlnb24uIEFueSBjb25zZWN1dGl2ZSBkdXBsaWNhdGUgcG9pbnRzIHdpbGwgYmUgY29tYmluZWQuXHJcbiAgICogXHJcbiAgICogTm90ZTogVGhlIHBvaW50cyBhcmUgY291bnRlci1jbG9ja3dpc2UgKndpdGggcmVzcGVjdCB0byB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0qLiBJZiB5b3UgZGlyZWN0bHkgZHJhdyB0aGUgcG9pbnRzIG9uIGEgc2NyZWVuIFxyXG4gICAqIHRoYXQgaGFzIHRoZSBvcmlnaW4gYXQgdGhlIHRvcC1sZWZ0IGNvcm5lciBpdCB3aWxsIF9hcHBlYXJfIHZpc3VhbGx5IHRoYXQgdGhlIHBvaW50cyBhcmUgYmVpbmcgc3BlY2lmaWVkIGNsb2Nrd2lzZS4gVGhpcyBpcyBcclxuICAgKiBqdXN0IGJlY2F1c2Ugb2YgdGhlIGludmVyc2lvbiBvZiB0aGUgWS1heGlzIHdoZW4gYmVpbmcgZGlzcGxheWVkLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7QXJyYXk8VmVjdG9yPn0gcG9pbnRzIEFuIGFycmF5IG9mIHZlY3RvcnMgcmVwcmVzZW50aW5nIHRoZSBwb2ludHMgaW4gdGhlIHBvbHlnb24sIGluIGNvdW50ZXItY2xvY2t3aXNlIG9yZGVyLlxyXG4gICAqICAgICogXHJcbiAgICogQHJldHVybnMge1BvbHlnb259IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgc2V0UG9pbnRzKHBvaW50czogQXJyYXk8VmVjdG9yPik6IFBvbHlnb24ge1xyXG4gICAgLy8gT25seSByZS1hbGxvY2F0ZSBpZiB0aGlzIGlzIGEgbmV3IHBvbHlnb24gb3IgdGhlIG51bWJlciBvZiBwb2ludHMgaGFzIGNoYW5nZWQuXHJcbiAgICBjb25zdCBsZW5ndGhDaGFuZ2VkOiBib29sZWFuID0gIXRoaXMucG9pbnRzIHx8IHRoaXMucG9pbnRzLmxlbmd0aCAhPT0gcG9pbnRzLmxlbmd0aDtcclxuXHJcbiAgICBpZiAobGVuZ3RoQ2hhbmdlZCkge1xyXG4gICAgICBsZXQgaTogbnVtYmVyO1xyXG5cclxuICAgICAgY29uc3QgY2FsY1BvaW50czogQXJyYXk8VmVjdG9yPiA9IHRoaXMuX2NhbGNQb2ludHMgPSBbXTtcclxuICAgICAgY29uc3QgZWRnZXM6IEFycmF5PFZlY3Rvcj4gPSB0aGlzLl9lZGdlcyA9IFtdO1xyXG4gICAgICBjb25zdCBub3JtYWxzOiBBcnJheTxWZWN0b3I+ID0gdGhpcy5fbm9ybWFscyA9IFtdO1xyXG5cclxuICAgICAgLy8gQWxsb2NhdGUgdGhlIHZlY3RvciBhcnJheXMgZm9yIHRoZSBjYWxjdWxhdGVkIHByb3BlcnRpZXNcclxuICAgICAgZm9yIChpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIC8vIFJlbW92ZSBjb25zZWN1dGl2ZSBkdXBsaWNhdGUgcG9pbnRzXHJcbiAgICAgICAgY29uc3QgcDE6IFZlY3RvciA9IHBvaW50c1tpXTtcclxuICAgICAgICBjb25zdCBwMjogVmVjdG9yID0gaSA8IHBvaW50cy5sZW5ndGggLSAxID8gcG9pbnRzW2kgKyAxXSA6IHBvaW50c1swXTtcclxuXHJcbiAgICAgICAgLy8gUHVzaCB0aGUgcG9pbnRzIHRvIHRoZSBnZW5lcmljIHBvaW50cyBBcnJheS5cclxuICAgICAgICB0aGlzLl9wb2ludHNHZW5lcmljLnB1c2gocG9pbnRzW2ldLngsIHBvaW50c1tpXS55KTtcclxuXHJcbiAgICAgICAgaWYgKHAxICE9PSBwMiAmJiBwMS54ID09PSBwMi54ICYmIHAxLnkgPT09IHAyLnkpIHtcclxuICAgICAgICAgIHBvaW50cy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICBpIC09IDE7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhbGNQb2ludHMucHVzaChuZXcgVmVjdG9yKCkpO1xyXG4gICAgICAgIGVkZ2VzLnB1c2gobmV3IFZlY3RvcigpKTtcclxuICAgICAgICBub3JtYWxzLnB1c2gobmV3IFZlY3RvcigpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3BvaW50cyA9IHBvaW50cztcclxuXHJcbiAgICB0aGlzLl9yZWNhbGMoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgY3VycmVudCByb3RhdGlvbiBhbmdsZSBvZiB0aGUgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge251bWJlcn0gYW5nbGUgVGhlIGN1cnJlbnQgcm90YXRpb24gYW5nbGUgKGluIHJhZGlhbnMpLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQb2x5Z29ufSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHNldEFuZ2xlKGFuZ2xlOiBudW1iZXIpOiBQb2x5Z29uIHtcclxuICAgIHRoaXMuX2FuZ2xlID0gYW5nbGU7XHJcblxyXG4gICAgdGhpcy5fcmVjYWxjKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIGN1cnJlbnQgb2Zmc2V0IHRvIGFwcGx5IHRvIHRoZSBgcG9pbnRzYCBiZWZvcmUgYXBwbHlpbmcgdGhlIGBhbmdsZWAgcm90YXRpb24uXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IG9mZnNldCBUaGUgbmV3IG9mZnNldCBWZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1BvbHlnb259IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgc2V0T2Zmc2V0KG9mZnNldDogVmVjdG9yKTogUG9seWdvbiB7XHJcbiAgICB0aGlzLl9vZmZzZXQgPSBvZmZzZXQ7XHJcblxyXG4gICAgdGhpcy5fcmVjYWxjKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSb3RhdGVzIHRoaXMgUG9seWdvbiBjb3VudGVyLWNsb2Nrd2lzZSBhcm91bmQgdGhlIG9yaWdpbiBvZiAqaXRzIGxvY2FsIGNvb3JkaW5hdGUgc3lzdGVtKiAoaS5lLiBgcG9zaXRpb25gKS5cclxuICAgKiBcclxuICAgKiBOb3RlOiBUaGlzIGNoYW5nZXMgdGhlICoqb3JpZ2luYWwqKiBwb2ludHMgKHNvIGFueSBgYW5nbGVgIHdpbGwgYmUgYXBwbGllZCBvbiB0b3Agb2YgdGhpcyByb3RhdGlvbikuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGFuZ2xlIFRoZSBhbmdsZSB0byByb3RhdGUgKGluIHJhZGlhbnMpLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQb2x5Z29ufSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHJvdGF0ZShhbmdsZTogbnVtYmVyKTogUG9seWdvbiB7XHJcbiAgICBjb25zdCBwb2ludHM6IEFycmF5PFZlY3Rvcj4gPSB0aGlzLnBvaW50cztcclxuICAgIGNvbnN0IGxlbjogbnVtYmVyID0gcG9pbnRzLmxlbmd0aDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSBwb2ludHNbaV0ucm90YXRlKGFuZ2xlKTtcclxuXHJcbiAgICB0aGlzLl9yZWNhbGMoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYW5zbGF0ZXMgdGhlIHBvaW50cyBvZiB0aGlzIHBvbHlnb24gYnkgYSBzcGVjaWZpZWQgYW1vdW50IHJlbGF0aXZlIHRvIHRoZSBvcmlnaW4gb2YgKml0cyBvd24gY29vcmRpbmF0ZSBzeXN0ZW0qIChpLmUuIGBwb3NpdGlvbmApLlxyXG4gICAqIFxyXG4gICAqIE5vdGU6IFRoaXMgY2hhbmdlcyB0aGUgKipvcmlnaW5hbCoqIHBvaW50cyAoc28gYW55IGBvZmZzZXRgIHdpbGwgYmUgYXBwbGllZCBvbiB0b3Agb2YgdGhpcyB0cmFuc2xhdGlvbilcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge251bWJlcn0geCBUaGUgaG9yaXpvbnRhbCBhbW91bnQgdG8gdHJhbnNsYXRlLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IFRoZSB2ZXJ0aWNhbCBhbW91bnQgdG8gdHJhbnNsYXRlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQb2x5Z29ufSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHRyYW5zbGF0ZSh4OiBudW1iZXIsIHk6IG51bWJlcik6IFBvbHlnb24ge1xyXG4gICAgY29uc3QgcG9pbnRzOiBBcnJheTxWZWN0b3I+ID0gdGhpcy5wb2ludHM7XHJcbiAgICBjb25zdCBsZW46IG51bWJlciA9IHBvaW50cy5sZW5ndGg7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIHBvaW50c1tpXS54ICs9IHg7XHJcbiAgICAgIHBvaW50c1tpXS55ICs9IHk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcmVjYWxjKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb21wdXRlcyB0aGUgY2FsY3VsYXRlZCBjb2xsaXNpb24gUG9seWdvbi5cclxuICAgKiBcclxuICAgKiBUaGlzIGFwcGxpZXMgdGhlIGBhbmdsZWAgYW5kIGBvZmZzZXRgIHRvIHRoZSBvcmlnaW5hbCBwb2ludHMgdGhlbiByZWNhbGN1bGF0ZXMgdGhlIGVkZ2VzIGFuZCBub3JtYWxzIG9mIHRoZSBjb2xsaXNpb24gUG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQb2x5Z29ufSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3JlY2FsYygpOiBQb2x5Z29uIHtcclxuICAgIC8vIENhbGN1bGF0ZWQgcG9pbnRzIC0gdGhpcyBpcyB3aGF0IGlzIHVzZWQgZm9yIHVuZGVybHlpbmcgY29sbGlzaW9ucyBhbmQgdGFrZXMgaW50byBhY2NvdW50XHJcbiAgICAvLyB0aGUgYW5nbGUvb2Zmc2V0IHNldCBvbiB0aGUgcG9seWdvbi5cclxuICAgIGNvbnN0IGNhbGNQb2ludHM6IEFycmF5PFZlY3Rvcj4gPSB0aGlzLmNhbGNQb2ludHM7XHJcblxyXG4gICAgLy8gVGhlIGVkZ2VzIGhlcmUgYXJlIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGBuYHRoIGVkZ2Ugb2YgdGhlIHBvbHlnb24sIHJlbGF0aXZlIHRvXHJcbiAgICAvLyB0aGUgYG5gdGggcG9pbnQuIElmIHlvdSB3YW50IHRvIGRyYXcgYSBnaXZlbiBlZGdlIGZyb20gdGhlIGVkZ2UgdmFsdWUsIHlvdSBtdXN0XHJcbiAgICAvLyBmaXJzdCB0cmFuc2xhdGUgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSBzdGFydGluZyBwb2ludC5cclxuICAgIGNvbnN0IGVkZ2VzOiBBcnJheTxWZWN0b3I+ID0gdGhpcy5fZWRnZXM7XHJcblxyXG4gICAgLy8gVGhlIG5vcm1hbHMgaGVyZSBhcmUgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbm9ybWFsIGZvciB0aGUgYG5gdGggZWRnZSBvZiB0aGUgcG9seWdvbiwgcmVsYXRpdmVcclxuICAgIC8vIHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgYG5gdGggcG9pbnQuIElmIHlvdSB3YW50IHRvIGRyYXcgYW4gZWRnZSBub3JtYWwsIHlvdSBtdXN0IGZpcnN0XHJcbiAgICAvLyB0cmFuc2xhdGUgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSBzdGFydGluZyBwb2ludC5cclxuICAgIGNvbnN0IG5vcm1hbHM6IEFycmF5PFZlY3Rvcj4gPSB0aGlzLl9ub3JtYWxzO1xyXG5cclxuICAgIC8vIENvcHkgdGhlIG9yaWdpbmFsIHBvaW50cyBhcnJheSBhbmQgYXBwbHkgdGhlIG9mZnNldC9hbmdsZVxyXG4gICAgY29uc3QgcG9pbnRzOiBBcnJheTxWZWN0b3I+ID0gdGhpcy5wb2ludHM7XHJcbiAgICBjb25zdCBvZmZzZXQ6IFZlY3RvciA9IHRoaXMub2Zmc2V0O1xyXG4gICAgY29uc3QgYW5nbGU6IG51bWJlciA9IHRoaXMuYW5nbGU7XHJcblxyXG4gICAgY29uc3QgbGVuOiBudW1iZXIgPSBwb2ludHMubGVuZ3RoO1xyXG4gICAgbGV0IGk6IG51bWJlcjtcclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgY29uc3QgY2FsY1BvaW50OiBWZWN0b3IgPSBjYWxjUG9pbnRzW2ldLmNvcHkocG9pbnRzW2ldKTtcclxuXHJcbiAgICAgIGNhbGNQb2ludC54ICs9IG9mZnNldC54O1xyXG4gICAgICBjYWxjUG9pbnQueSArPSBvZmZzZXQueTtcclxuXHJcbiAgICAgIGlmIChhbmdsZSAhPT0gMCkgY2FsY1BvaW50LnJvdGF0ZShhbmdsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBlZGdlcy9ub3JtYWxzXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgY29uc3QgcDE6IFZlY3RvciA9IGNhbGNQb2ludHNbaV07XHJcbiAgICAgIGNvbnN0IHAyOiBWZWN0b3IgPSBpIDwgbGVuIC0gMSA/IGNhbGNQb2ludHNbaSArIDFdIDogY2FsY1BvaW50c1swXTtcclxuXHJcbiAgICAgIGNvbnN0IGU6IFZlY3RvciA9IGVkZ2VzW2ldLmNvcHkocDIpLnN1YihwMSk7XHJcblxyXG4gICAgICBub3JtYWxzW2ldLmNvcHkoZSkucGVycCgpLm5vcm1hbGl6ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcHV0ZSB0aGUgYXhpcy1hbGlnbmVkIGJvdW5kaW5nIGJveC5cclxuICAgKiBcclxuICAgKiBBbnkgY3VycmVudCBzdGF0ZSAodHJhbnNsYXRpb25zL3JvdGF0aW9ucykgd2lsbCBiZSBhcHBsaWVkIGJlZm9yZSBjb25zdHJ1Y3RpbmcgdGhlIEFBQkIuXHJcbiAgICogXHJcbiAgICogTm90ZTogUmV0dXJucyBhIF9uZXdfIGBQb2x5Z29uYCBlYWNoIHRpbWUgeW91IGNhbGwgdGhpcy5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7UG9seWdvbn0gUmV0dXJucyB0aGlzIGZvciBjaGFpbmluZy5cclxuICAgKi9cclxuICBnZXRBQUJCKCk6IFBvbHlnb24ge1xyXG4gICAgY29uc3QgcG9pbnRzOiBBcnJheTxWZWN0b3I+ID0gdGhpcy5jYWxjUG9pbnRzO1xyXG4gICAgY29uc3QgbGVuOiBudW1iZXIgPSBwb2ludHMubGVuZ3RoO1xyXG5cclxuICAgIGxldCB4TWluOiBudW1iZXIgPSBwb2ludHNbMF0ueDtcclxuICAgIGxldCB5TWluOiBudW1iZXIgPSBwb2ludHNbMF0ueTtcclxuXHJcbiAgICBsZXQgeE1heDogbnVtYmVyID0gcG9pbnRzWzBdLng7XHJcbiAgICBsZXQgeU1heDogbnVtYmVyID0gcG9pbnRzWzBdLnk7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMTsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHBvaW50OiBWZWN0b3IgPSBwb2ludHNbaV07XHJcblxyXG4gICAgICBpZiAocG9pbnRbXCJ4XCJdIDwgeE1pbikgeE1pbiA9IHBvaW50W1wieFwiXTtcclxuICAgICAgZWxzZSBpZiAocG9pbnRbXCJ4XCJdID4geE1heCkgeE1heCA9IHBvaW50W1wieFwiXTtcclxuXHJcbiAgICAgIGlmIChwb2ludFtcInlcIl0gPCB5TWluKSB5TWluID0gcG9pbnRbXCJ5XCJdO1xyXG4gICAgICBlbHNlIGlmIChwb2ludFtcInlcIl0gPiB5TWF4KSB5TWF4ID0gcG9pbnRbXCJ5XCJdO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IFBvbHlnb24odGhpcy5fcG9zaXRpb24uY2xvbmUoKS5hZGQobmV3IFZlY3Rvcih4TWluLCB5TWluKSksIFtcclxuICAgICAgbmV3IFZlY3RvcigpLCBuZXcgVmVjdG9yKHhNYXggLSB4TWluLCAwKSxcclxuICAgICAgbmV3IFZlY3Rvcih4TWF4IC0geE1pbiwgeU1heCAtIHlNaW4pLCBuZXcgVmVjdG9yKDAsIHlNYXggLSB5TWluKVxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb21wdXRlIHRoZSBjZW50cm9pZCAoZ2VvbWV0cmljIGNlbnRlcikgb2YgdGhlIFBvbHlnb24uXHJcbiAgICogXHJcbiAgICogQW55IGN1cnJlbnQgc3RhdGUgKHRyYW5zbGF0aW9ucy9yb3RhdGlvbnMpIHdpbGwgYmUgYXBwbGllZCBiZWZvcmUgY29tcHV0aW5nIHRoZSBjZW50cm9pZC5cclxuICAgKiBcclxuICAgKiBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2VudHJvaWQjQ2VudHJvaWRfb2ZfYV9wb2x5Z29uXHJcbiAgICogXHJcbiAgICogTm90ZTogUmV0dXJucyBhIF9uZXdfIGBWZWN0b3JgIGVhY2ggdGltZSB5b3UgY2FsbCB0aGlzLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9IFJldHVybnMgYSBWZWN0b3IgdGhhdCBjb250YWlucyB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGNlbnRyb2lkLlxyXG4gICAqL1xyXG4gIGdldENlbnRyb2lkKCk6IFZlY3RvciB7XHJcbiAgICBjb25zdCBwb2ludHM6IEFycmF5PFZlY3Rvcj4gPSB0aGlzLmNhbGNQb2ludHM7XHJcbiAgICBjb25zdCBsZW46IG51bWJlciA9IHBvaW50cy5sZW5ndGg7XHJcblxyXG4gICAgbGV0IGN4OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGN5OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGFyOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGZvciAodmFyIGk6IG51bWJlciA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBjb25zdCBwMTogVmVjdG9yID0gcG9pbnRzW2ldO1xyXG4gICAgICBjb25zdCBwMjogVmVjdG9yID0gaSA9PT0gbGVuIC0gMSA/IHBvaW50c1swXSA6IHBvaW50c1tpICsgMV07IC8vIExvb3AgYXJvdW5kIGlmIGxhc3QgcG9pbnRcclxuXHJcbiAgICAgIGNvbnN0IGE6IG51bWJlciA9IHAxW1wieFwiXSAqIHAyW1wieVwiXSAtIHAyW1wieFwiXSAqIHAxW1wieVwiXTtcclxuXHJcbiAgICAgIGN4ICs9IChwMVtcInhcIl0gKyBwMltcInhcIl0pICogYTtcclxuICAgICAgY3kgKz0gKHAxW1wieVwiXSArIHAyW1wieVwiXSkgKiBhO1xyXG4gICAgICBhciArPSBhO1xyXG4gICAgfVxyXG5cclxuICAgIGFyID0gYXIgKiAzOyAvLyB3ZSB3YW50IDEgLyA2IHRoZSBhcmVhIGFuZCB3ZSBjdXJyZW50bHkgaGF2ZSAyKmFyZWFcclxuICAgIGN4ID0gY3ggLyBhcjtcclxuICAgIGN5ID0gY3kgLyBhcjtcclxuXHJcbiAgICByZXR1cm4gbmV3IFZlY3RvcihjeCwgY3kpO1xyXG4gIH1cclxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9tZXRyeS9wb2x5Z29uLnRzIl0sIm5hbWVzIjpbIlBvbHlnb24iLCJwb3NpdGlvbiIsIlZlY3RvciIsInBvaW50cyIsIl9wb3NpdGlvbiIsInNldFBvaW50cyIsIl9wb2ludHMiLCJfcG9pbnRzR2VuZXJpYyIsIl9jYWxjUG9pbnRzIiwiX29mZnNldCIsIl9hbmdsZSIsIl9lZGdlcyIsIl9ub3JtYWxzIiwibGVuZ3RoQ2hhbmdlZCIsImxlbmd0aCIsImkiLCJjYWxjUG9pbnRzIiwiZWRnZXMiLCJub3JtYWxzIiwicDEiLCJwMiIsInB1c2giLCJ4IiwieSIsInNwbGljZSIsIl9yZWNhbGMiLCJhbmdsZSIsIm9mZnNldCIsImxlbiIsInJvdGF0ZSIsImNhbGNQb2ludCIsImNvcHkiLCJlIiwic3ViIiwicGVycCIsIm5vcm1hbGl6ZSIsInhNaW4iLCJ5TWluIiwieE1heCIsInlNYXgiLCJwb2ludCIsImNsb25lIiwiYWRkIiwiY3giLCJjeSIsImFyIiwiYSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNxQkEsTztBQUNuQjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFLHFCQUF5RTtBQUFBLFFBQTdEQyxR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QjBCLENBQTVCO0FBQ0FELFFBQUFBLEVBQUUsSUFBSUMsQ0FBTjtBQUNEOztBQUVERCxNQUFBQSxFQUFFLEdBQUdBLEVBQUUsR0FBRyxDQUFWLENBbkJvQixDQW1CUDs7QUFDYkYsTUFBQUEsRUFBRSxHQUFHQSxFQUFFLEdBQUdFLEVBQVY7QUFDQUQsTUFBQUEsRUFBRSxHQUFHQSxFQUFFLEdBQUdDLEVBQVY7QUFFQSxhQUFPLElBQUkzQyxrQkFBSixDQUFXeUMsRUFBWCxFQUFlQyxFQUFmLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xyXG5cclxuaW1wb3J0IFZlY3RvciBmcm9tICcuL3ZlY3Rvcic7XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhICpjb252ZXgqIHBvbHlnb24gd2l0aCBhbnkgbnVtYmVyIG9mIHBvaW50cyAoc3BlY2lmaWVkIGluIGNvdW50ZXItY2xvY2t3aXNlIG9yZGVyKS5cclxuICogXHJcbiAqIE5vdGU6IERvIF9ub3RfIG1hbnVhbGx5IGNoYW5nZSB0aGUgYHBvaW50c2AsIGBhbmdsZWAsIG9yIGBvZmZzZXRgIHByb3BlcnRpZXMuIFVzZSB0aGUgcHJvdmlkZWQgIHNldHRlcnMuIFxyXG4gKiBPdGhlcndpc2UgdGhlIGNhbGN1bGF0ZWQgcHJvcGVydGllcyB3aWxsIG5vdCBiZSB1cGRhdGVkIGNvcnJlY3RseS5cclxuICogXHJcbiAqIFRoZSBgcG9zYCBwcm9wZXJ0eSBjYW4gYmUgY2hhbmdlZCBkaXJlY3RseS5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvbHlnb24ge1xyXG4gIC8qKlxyXG4gICAqIEEgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgb3JpZ2luIG9mIHRoaXMgcG9seWdvbiAoYWxsIG90aGVyIHBvaW50cyBhcmUgcmVsYXRpdmUgdG8gdGhpcyBvbmUpLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtWZWN0b3J9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcG9zaXRpb246IFZlY3RvciA9IG5ldyBWZWN0b3IoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXJyYXkgb2YgdmVjdG9ycyByZXByZXNlbnRpbmcgdGhlIHBvaW50cyBpbiB0aGUgcG9seWdvbiwgaW4gY291bnRlci1jbG9ja3dpc2Ugb3JkZXIuXHJcbiAgICogXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge0FycmF5PFZlY3Rvcj59XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcG9pbnRzOiBBcnJheTxWZWN0b3I+ID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuIEFycmF5IG9mIHRoZSBwb2ludHMgb2YgdGhpcyBwb2x5Z29uIGFzIG51bWJlcnMgaW5zdGVhZCBvZiBWZWN0b3JzLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtBcnJheTxudW1iZXI+fVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3BvaW50c0dlbmVyaWM6IEFycmF5PG51bWJlcj4gPSBbXVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgYW5nbGUgb2YgdGhpcyBwb2x5Z29uLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfYW5nbGU6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBvZmZzZXQgb2YgdGhpcyBwb2x5Z29uLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtWZWN0b3J9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfb2Zmc2V0OiBWZWN0b3IgPSBuZXcgVmVjdG9yKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBjYWxjdWxhdGVkIHBvaW50cyBvZiB0aGlzIHBvbHlnb24uXHJcbiAgICogXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge0FycmF5PFZlY3Rvcj59XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfY2FsY1BvaW50czogQXJyYXk8VmVjdG9yPiA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgZWRnZXMgb2YgdGhpcyBwb2x5Z29uLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtBcnJheTxWZWN0b3I+fVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2VkZ2VzOiBBcnJheTxWZWN0b3I+ID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBub3JtYWxzIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIFxyXG4gICAqIEBwcm9wZXJ0eSB7QXJyYXk8VmVjdG9yPn1cclxuICAgKi9cclxuICBwcml2YXRlIF9ub3JtYWxzOiBBcnJheTxWZWN0b3I+ID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIG5ldyBwb2x5Z29uLCBwYXNzaW5nIGluIGEgcG9zaXRpb24gdmVjdG9yLCBhbmQgYW4gYXJyYXkgb2YgcG9pbnRzIChyZXByZXNlbnRlZCBieSB2ZWN0b3JzIFxyXG4gICAqIHJlbGF0aXZlIHRvIHRoZSBwb3NpdGlvbiB2ZWN0b3IpLiBJZiBubyBwb3NpdGlvbiBpcyBwYXNzZWQgaW4sIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9seWdvbiB3aWxsIGJlIGAoMCwwKWAuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IFtwb3NpdGlvbj1WZWN0b3JdIEEgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgb3JpZ2luIG9mIHRoZSBwb2x5Z29uIChhbGwgb3RoZXIgcG9pbnRzIGFyZSByZWxhdGl2ZSB0byB0aGlzIG9uZSlcclxuICAgKiBAcGFyYW0ge0FycmF5PFZlY3Rvcj59IFtwb2ludHM9W11dIEFuIGFycmF5IG9mIHZlY3RvcnMgcmVwcmVzZW50aW5nIHRoZSBwb2ludHMgaW4gdGhlIHBvbHlnb24sIGluIGNvdW50ZXItY2xvY2t3aXNlIG9yZGVyLlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHBvc2l0aW9uOiBWZWN0b3IgPSBuZXcgVmVjdG9yKCksIHBvaW50czogQXJyYXk8VmVjdG9yPiA9IFtdKSB7XHJcbiAgICB0aGlzLl9wb3NpdGlvbiA9IHBvc2l0aW9uO1xyXG4gICAgdGhpcy5zZXRQb2ludHMocG9pbnRzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfVxyXG4gICAqL1xyXG4gIGdldCBwb3NpdGlvbigpOiBWZWN0b3IgeyByZXR1cm4gdGhpcy5fcG9zaXRpb247IH1cclxuXHJcbiAgLyoqXHJcbiAgICogKipOb3RlOioqIE5vdCBzdXJlIGlmIHRoaXMgd2lsbCBiZSBrZXB0IG9yIG5vdCBidXQgZm9yIG5vdyBpdCdzIGRpc2FibGVkLlxyXG4gICAqIFxyXG4gICAqIFNldHMgYSBuZXcgcG9zaXRpb24gZm9yIHRoaXMgcG9seWdvbiBhbmQgcmVjYWxjdWxhdGVzIHRoZSBwb2ludHMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IHBvc2l0aW9uIEEgVmVjdG9yIHJlcHJlc2VudGluZyB0aGUgbmV3IHBvc2l0aW9uIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKi9cclxuICAvLyBzZXQgcG9zaXRpb24ocG9zaXRpb246IFZlY3Rvcikge1xyXG4gIC8vICAgY29uc3QgZGlmZlg6IG51bWJlciA9IC0odGhpcy5fcG9zaXRpb24ueCAtIHBvc2l0aW9uLngpO1xyXG4gIC8vICAgY29uc3QgZGlmZlk6IG51bWJlciA9IC0odGhpcy5fcG9zaXRpb24ueSAtIHBvc2l0aW9uLnkpO1xyXG5cclxuICAvLyAgIGNvbnN0IGRpZmZQb2ludDogVmVjdG9yID0gbmV3IFZlY3RvcihkaWZmWCwgZGlmZlkpO1xyXG5cclxuICAvLyAgIGNvbnN0IHBvaW50czogQXJyYXk8VmVjdG9yPiA9IFtdO1xyXG5cclxuICAvLyAgIHRoaXMuX3BvaW50cy5tYXAoKHBvaW50OiBWZWN0b3IpID0+IHtcclxuICAvLyAgICAgY29uc3QgdGVtcFg6IG51bWJlciA9IHBvaW50Lng7XHJcbiAgLy8gICAgIGNvbnN0IHRlbXBZOiBudW1iZXIgPSBwb2ludC55O1xyXG5cclxuICAvLyAgICAgY29uc3QgdGVtcFBvaW50OiBWZWN0b3IgPSBuZXcgVmVjdG9yKHRlbXBYLCB0ZW1wWSk7XHJcblxyXG4gIC8vICAgICBjb25zdCBjYWxjdWxhdGVkUG9pbnQ6IFZlY3RvciA9IHRlbXBQb2ludC5hZGQoZGlmZlBvaW50KTtcclxuXHJcbiAgLy8gICAgIHBvaW50cy5wdXNoKGNhbGN1bGF0ZWRQb2ludCk7XHJcbiAgLy8gICB9KTtcclxuXHJcbiAgLy8gICB0aGlzLnNldFBvaW50cyhwb2ludHMsIHRydWUpO1xyXG4gIC8vIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgcG9pbnRzIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7QXJyYXk8VmVjdG9yPn1cclxuICAgKi9cclxuICBnZXQgcG9pbnRzKCk6IEFycmF5PFZlY3Rvcj4geyByZXR1cm4gdGhpcy5fcG9pbnRzOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHBvaW50cyBvZiB0aGlzIHBvbHlnb24gYXMgbnVtYmVycyBpbnN0ZWFkIG9mIFZlY3RvcnMuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge0FycmF5PG51bWJlcj59XHJcbiAgICovXHJcbiAgZ2V0IHBvaW50c0dlbmVyaWMoKTogQXJyYXk8bnVtYmVyPiB7IHJldHVybiB0aGlzLl9wb2ludHNHZW5lcmljOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGNhbGN1bGF0ZWQgcG9pbnRzIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7QXJyYXk8VmVjdG9yPn1cclxuICAgKi9cclxuICBnZXQgY2FsY1BvaW50cygpOiBBcnJheTxWZWN0b3I+IHsgcmV0dXJuIHRoaXMuX2NhbGNQb2ludHM7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgb2Zmc2V0IG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfVxyXG4gICAqL1xyXG4gIGdldCBvZmZzZXQoKTogVmVjdG9yIHsgcmV0dXJuIHRoaXMuX29mZnNldDsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBhbmdsZSBvZiB0aGlzIHBvbHlnb24uXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge251bWJlcn1cclxuICAgKi9cclxuICBnZXQgYW5nbGUoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX2FuZ2xlOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGVkZ2VzIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7QXJyYXk8VmVjdG9yPn1cclxuICAgKi9cclxuICBnZXQgZWRnZXMoKTogQXJyYXk8VmVjdG9yPiB7IHJldHVybiB0aGlzLl9lZGdlczsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBub3JtYWxzIG9mIHRoaXMgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7QXJyYXk8VmVjdG9yPn1cclxuICAgKi9cclxuICBnZXQgbm9ybWFscygpOiBBcnJheTxWZWN0b3I+IHsgcmV0dXJuIHRoaXMuX25vcm1hbHM7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBwb2ludHMgb2YgdGhlIHBvbHlnb24uIEFueSBjb25zZWN1dGl2ZSBkdXBsaWNhdGUgcG9pbnRzIHdpbGwgYmUgY29tYmluZWQuXHJcbiAgICogXHJcbiAgICogTm90ZTogVGhlIHBvaW50cyBhcmUgY291bnRlci1jbG9ja3dpc2UgKndpdGggcmVzcGVjdCB0byB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0qLiBJZiB5b3UgZGlyZWN0bHkgZHJhdyB0aGUgcG9pbnRzIG9uIGEgc2NyZWVuIFxyXG4gICAqIHRoYXQgaGFzIHRoZSBvcmlnaW4gYXQgdGhlIHRvcC1sZWZ0IGNvcm5lciBpdCB3aWxsIF9hcHBlYXJfIHZpc3VhbGx5IHRoYXQgdGhlIHBvaW50cyBhcmUgYmVpbmcgc3BlY2lmaWVkIGNsb2Nrd2lzZS4gVGhpcyBpcyBcclxuICAgKiBqdXN0IGJlY2F1c2Ugb2YgdGhlIGludmVyc2lvbiBvZiB0aGUgWS1heGlzIHdoZW4gYmVpbmcgZGlzcGxheWVkLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7QXJyYXk8VmVjdG9yPn0gcG9pbnRzIEFuIGFycmF5IG9mIHZlY3RvcnMgcmVwcmVzZW50aW5nIHRoZSBwb2ludHMgaW4gdGhlIHBvbHlnb24sIGluIGNvdW50ZXItY2xvY2t3aXNlIG9yZGVyLlxyXG4gICAqICAgICogXHJcbiAgICogQHJldHVybnMge1BvbHlnb259IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgc2V0UG9pbnRzKHBvaW50czogQXJyYXk8VmVjdG9yPik6IFBvbHlnb24ge1xyXG4gICAgLy8gT25seSByZS1hbGxvY2F0ZSBpZiB0aGlzIGlzIGEgbmV3IHBvbHlnb24gb3IgdGhlIG51bWJlciBvZiBwb2ludHMgaGFzIGNoYW5nZWQuXHJcbiAgICBjb25zdCBsZW5ndGhDaGFuZ2VkOiBib29sZWFuID0gIXRoaXMucG9pbnRzIHx8IHRoaXMucG9pbnRzLmxlbmd0aCAhPT0gcG9pbnRzLmxlbmd0aDtcclxuXHJcbiAgICBpZiAobGVuZ3RoQ2hhbmdlZCkge1xyXG4gICAgICBsZXQgaTogbnVtYmVyO1xyXG5cclxuICAgICAgY29uc3QgY2FsY1BvaW50czogQXJyYXk8VmVjdG9yPiA9IHRoaXMuX2NhbGNQb2ludHMgPSBbXTtcclxuICAgICAgY29uc3QgZWRnZXM6IEFycmF5PFZlY3Rvcj4gPSB0aGlzLl9lZGdlcyA9IFtdO1xyXG4gICAgICBjb25zdCBub3JtYWxzOiBBcnJheTxWZWN0b3I+ID0gdGhpcy5fbm9ybWFscyA9IFtdO1xyXG5cclxuICAgICAgLy8gQWxsb2NhdGUgdGhlIHZlY3RvciBhcnJheXMgZm9yIHRoZSBjYWxjdWxhdGVkIHByb3BlcnRpZXNcclxuICAgICAgZm9yIChpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIC8vIFJlbW92ZSBjb25zZWN1dGl2ZSBkdXBsaWNhdGUgcG9pbnRzXHJcbiAgICAgICAgY29uc3QgcDE6IFZlY3RvciA9IHBvaW50c1tpXTtcclxuICAgICAgICBjb25zdCBwMjogVmVjdG9yID0gaSA8IHBvaW50cy5sZW5ndGggLSAxID8gcG9pbnRzW2kgKyAxXSA6IHBvaW50c1swXTtcclxuXHJcbiAgICAgICAgLy8gUHVzaCB0aGUgcG9pbnRzIHRvIHRoZSBnZW5lcmljIHBvaW50cyBBcnJheS5cclxuICAgICAgICB0aGlzLl9wb2ludHNHZW5lcmljLnB1c2gocG9pbnRzW2ldLngsIHBvaW50c1tpXS55KTtcclxuXHJcbiAgICAgICAgaWYgKHAxICE9PSBwMiAmJiBwMS54ID09PSBwMi54ICYmIHAxLnkgPT09IHAyLnkpIHtcclxuICAgICAgICAgIHBvaW50cy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICBpIC09IDE7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhbGNQb2ludHMucHVzaChuZXcgVmVjdG9yKCkpO1xyXG4gICAgICAgIGVkZ2VzLnB1c2gobmV3IFZlY3RvcigpKTtcclxuICAgICAgICBub3JtYWxzLnB1c2gobmV3IFZlY3RvcigpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3BvaW50cyA9IHBvaW50cztcclxuXHJcbiAgICB0aGlzLl9yZWNhbGMoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgY3VycmVudCByb3RhdGlvbiBhbmdsZSBvZiB0aGUgcG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge251bWJlcn0gYW5nbGUgVGhlIGN1cnJlbnQgcm90YXRpb24gYW5nbGUgKGluIHJhZGlhbnMpLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQb2x5Z29ufSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHNldEFuZ2xlKGFuZ2xlOiBudW1iZXIpOiBQb2x5Z29uIHtcclxuICAgIHRoaXMuX2FuZ2xlID0gYW5nbGU7XHJcblxyXG4gICAgdGhpcy5fcmVjYWxjKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIGN1cnJlbnQgb2Zmc2V0IHRvIGFwcGx5IHRvIHRoZSBgcG9pbnRzYCBiZWZvcmUgYXBwbHlpbmcgdGhlIGBhbmdsZWAgcm90YXRpb24uXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IG9mZnNldCBUaGUgbmV3IG9mZnNldCBWZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1BvbHlnb259IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgc2V0T2Zmc2V0KG9mZnNldDogVmVjdG9yKTogUG9seWdvbiB7XHJcbiAgICB0aGlzLl9vZmZzZXQgPSBvZmZzZXQ7XHJcblxyXG4gICAgdGhpcy5fcmVjYWxjKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSb3RhdGVzIHRoaXMgUG9seWdvbiBjb3VudGVyLWNsb2Nrd2lzZSBhcm91bmQgdGhlIG9yaWdpbiBvZiAqaXRzIGxvY2FsIGNvb3JkaW5hdGUgc3lzdGVtKiAoaS5lLiBgcG9zaXRpb25gKS5cclxuICAgKiBcclxuICAgKiBOb3RlOiBUaGlzIGNoYW5nZXMgdGhlICoqb3JpZ2luYWwqKiBwb2ludHMgKHNvIGFueSBgYW5nbGVgIHdpbGwgYmUgYXBwbGllZCBvbiB0b3Agb2YgdGhpcyByb3RhdGlvbikuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGFuZ2xlIFRoZSBhbmdsZSB0byByb3RhdGUgKGluIHJhZGlhbnMpLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQb2x5Z29ufSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHJvdGF0ZShhbmdsZTogbnVtYmVyKTogUG9seWdvbiB7XHJcbiAgICBjb25zdCBwb2ludHM6IEFycmF5PFZlY3Rvcj4gPSB0aGlzLnBvaW50cztcclxuICAgIGNvbnN0IGxlbjogbnVtYmVyID0gcG9pbnRzLmxlbmd0aDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSBwb2ludHNbaV0ucm90YXRlKGFuZ2xlKTtcclxuXHJcbiAgICB0aGlzLl9yZWNhbGMoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYW5zbGF0ZXMgdGhlIHBvaW50cyBvZiB0aGlzIHBvbHlnb24gYnkgYSBzcGVjaWZpZWQgYW1vdW50IHJlbGF0aXZlIHRvIHRoZSBvcmlnaW4gb2YgKml0cyBvd24gY29vcmRpbmF0ZSBzeXN0ZW0qIChpLmUuIGBwb3NpdGlvbmApLlxyXG4gICAqIFxyXG4gICAqIE5vdGU6IFRoaXMgY2hhbmdlcyB0aGUgKipvcmlnaW5hbCoqIHBvaW50cyAoc28gYW55IGBvZmZzZXRgIHdpbGwgYmUgYXBwbGllZCBvbiB0b3Agb2YgdGhpcyB0cmFuc2xhdGlvbilcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge251bWJlcn0geCBUaGUgaG9yaXpvbnRhbCBhbW91bnQgdG8gdHJhbnNsYXRlLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IFRoZSB2ZXJ0aWNhbCBhbW91bnQgdG8gdHJhbnNsYXRlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQb2x5Z29ufSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHRyYW5zbGF0ZSh4OiBudW1iZXIsIHk6IG51bWJlcik6IFBvbHlnb24ge1xyXG4gICAgY29uc3QgcG9pbnRzOiBBcnJheTxWZWN0b3I+ID0gdGhpcy5wb2ludHM7XHJcbiAgICBjb25zdCBsZW46IG51bWJlciA9IHBvaW50cy5sZW5ndGg7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIHBvaW50c1tpXS54ICs9IHg7XHJcbiAgICAgIHBvaW50c1tpXS55ICs9IHk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcmVjYWxjKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb21wdXRlcyB0aGUgY2FsY3VsYXRlZCBjb2xsaXNpb24gUG9seWdvbi5cclxuICAgKiBcclxuICAgKiBUaGlzIGFwcGxpZXMgdGhlIGBhbmdsZWAgYW5kIGBvZmZzZXRgIHRvIHRoZSBvcmlnaW5hbCBwb2ludHMgdGhlbiByZWNhbGN1bGF0ZXMgdGhlIGVkZ2VzIGFuZCBub3JtYWxzIG9mIHRoZSBjb2xsaXNpb24gUG9seWdvbi5cclxuICAgKiBcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQb2x5Z29ufSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3JlY2FsYygpOiBQb2x5Z29uIHtcclxuICAgIC8vIENhbGN1bGF0ZWQgcG9pbnRzIC0gdGhpcyBpcyB3aGF0IGlzIHVzZWQgZm9yIHVuZGVybHlpbmcgY29sbGlzaW9ucyBhbmQgdGFrZXMgaW50byBhY2NvdW50XHJcbiAgICAvLyB0aGUgYW5nbGUvb2Zmc2V0IHNldCBvbiB0aGUgcG9seWdvbi5cclxuICAgIGNvbnN0IGNhbGNQb2ludHM6IEFycmF5PFZlY3Rvcj4gPSB0aGlzLmNhbGNQb2ludHM7XHJcblxyXG4gICAgLy8gVGhlIGVkZ2VzIGhlcmUgYXJlIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGBuYHRoIGVkZ2Ugb2YgdGhlIHBvbHlnb24sIHJlbGF0aXZlIHRvXHJcbiAgICAvLyB0aGUgYG5gdGggcG9pbnQuIElmIHlvdSB3YW50IHRvIGRyYXcgYSBnaXZlbiBlZGdlIGZyb20gdGhlIGVkZ2UgdmFsdWUsIHlvdSBtdXN0XHJcbiAgICAvLyBmaXJzdCB0cmFuc2xhdGUgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSBzdGFydGluZyBwb2ludC5cclxuICAgIGNvbnN0IGVkZ2VzOiBBcnJheTxWZWN0b3I+ID0gdGhpcy5fZWRnZXM7XHJcblxyXG4gICAgLy8gVGhlIG5vcm1hbHMgaGVyZSBhcmUgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbm9ybWFsIGZvciB0aGUgYG5gdGggZWRnZSBvZiB0aGUgcG9seWdvbiwgcmVsYXRpdmVcclxuICAgIC8vIHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgYG5gdGggcG9pbnQuIElmIHlvdSB3YW50IHRvIGRyYXcgYW4gZWRnZSBub3JtYWwsIHlvdSBtdXN0IGZpcnN0XHJcbiAgICAvLyB0cmFuc2xhdGUgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSBzdGFydGluZyBwb2ludC5cclxuICAgIGNvbnN0IG5vcm1hbHM6IEFycmF5PFZlY3Rvcj4gPSB0aGlzLl9ub3JtYWxzO1xyXG5cclxuICAgIC8vIENvcHkgdGhlIG9yaWdpbmFsIHBvaW50cyBhcnJheSBhbmQgYXBwbHkgdGhlIG9mZnNldC9hbmdsZVxyXG4gICAgY29uc3QgcG9pbnRzOiBBcnJheTxWZWN0b3I+ID0gdGhpcy5wb2ludHM7XHJcbiAgICBjb25zdCBvZmZzZXQ6IFZlY3RvciA9IHRoaXMub2Zmc2V0O1xyXG4gICAgY29uc3QgYW5nbGU6IG51bWJlciA9IHRoaXMuYW5nbGU7XHJcblxyXG4gICAgY29uc3QgbGVuOiBudW1iZXIgPSBwb2ludHMubGVuZ3RoO1xyXG4gICAgbGV0IGk6IG51bWJlcjtcclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgY29uc3QgY2FsY1BvaW50OiBWZWN0b3IgPSBjYWxjUG9pbnRzW2ldLmNvcHkocG9pbnRzW2ldKTtcclxuXHJcbiAgICAgIGNhbGNQb2ludC54ICs9IG9mZnNldC54O1xyXG4gICAgICBjYWxjUG9pbnQueSArPSBvZmZzZXQueTtcclxuXHJcbiAgICAgIGlmIChhbmdsZSAhPT0gMCkgY2FsY1BvaW50LnJvdGF0ZShhbmdsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBlZGdlcy9ub3JtYWxzXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgY29uc3QgcDE6IFZlY3RvciA9IGNhbGNQb2ludHNbaV07XHJcbiAgICAgIGNvbnN0IHAyOiBWZWN0b3IgPSBpIDwgbGVuIC0gMSA/IGNhbGNQb2ludHNbaSArIDFdIDogY2FsY1BvaW50c1swXTtcclxuXHJcbiAgICAgIGNvbnN0IGU6IFZlY3RvciA9IGVkZ2VzW2ldLmNvcHkocDIpLnN1YihwMSk7XHJcblxyXG4gICAgICBub3JtYWxzW2ldLmNvcHkoZSkucGVycCgpLm5vcm1hbGl6ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcHV0ZSB0aGUgYXhpcy1hbGlnbmVkIGJvdW5kaW5nIGJveC5cclxuICAgKiBcclxuICAgKiBBbnkgY3VycmVudCBzdGF0ZSAodHJhbnNsYXRpb25zL3JvdGF0aW9ucykgd2lsbCBiZSBhcHBsaWVkIGJlZm9yZSBjb25zdHJ1Y3RpbmcgdGhlIEFBQkIuXHJcbiAgICogXHJcbiAgICogTm90ZTogUmV0dXJucyBhIF9uZXdfIGBQb2x5Z29uYCBlYWNoIHRpbWUgeW91IGNhbGwgdGhpcy5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7UG9seWdvbn0gUmV0dXJucyB0aGlzIGZvciBjaGFpbmluZy5cclxuICAgKi9cclxuICBnZXRBQUJCKCk6IFBvbHlnb24ge1xyXG4gICAgY29uc3QgcG9pbnRzOiBBcnJheTxWZWN0b3I+ID0gdGhpcy5jYWxjUG9pbnRzO1xyXG4gICAgY29uc3QgbGVuOiBudW1iZXIgPSBwb2ludHMubGVuZ3RoO1xyXG5cclxuICAgIGxldCB4TWluOiBudW1iZXIgPSBwb2ludHNbMF0ueDtcclxuICAgIGxldCB5TWluOiBudW1iZXIgPSBwb2ludHNbMF0ueTtcclxuXHJcbiAgICBsZXQgeE1heDogbnVtYmVyID0gcG9pbnRzWzBdLng7XHJcbiAgICBsZXQgeU1heDogbnVtYmVyID0gcG9pbnRzWzBdLnk7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMTsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHBvaW50OiBWZWN0b3IgPSBwb2ludHNbaV07XHJcblxyXG4gICAgICBpZiAocG9pbnRbXCJ4XCJdIDwgeE1pbikgeE1pbiA9IHBvaW50W1wieFwiXTtcclxuICAgICAgZWxzZSBpZiAocG9pbnRbXCJ4XCJdID4geE1heCkgeE1heCA9IHBvaW50W1wieFwiXTtcclxuXHJcbiAgICAgIGlmIChwb2ludFtcInlcIl0gPCB5TWluKSB5TWluID0gcG9pbnRbXCJ5XCJdO1xyXG4gICAgICBlbHNlIGlmIChwb2ludFtcInlcIl0gPiB5TWF4KSB5TWF4ID0gcG9pbnRbXCJ5XCJdO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IFBvbHlnb24odGhpcy5fcG9zaXRpb24uY2xvbmUoKS5hZGQobmV3IFZlY3Rvcih4TWluLCB5TWluKSksIFtcclxuICAgICAgbmV3IFZlY3RvcigpLCBuZXcgVmVjdG9yKHhNYXggLSB4TWluLCAwKSxcclxuICAgICAgbmV3IFZlY3Rvcih4TWF4IC0geE1pbiwgeU1heCAtIHlNaW4pLCBuZXcgVmVjdG9yKDAsIHlNYXggLSB5TWluKVxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb21wdXRlIHRoZSBjZW50cm9pZCAoZ2VvbWV0cmljIGNlbnRlcikgb2YgdGhlIFBvbHlnb24uXHJcbiAgICogXHJcbiAgICogQW55IGN1cnJlbnQgc3RhdGUgKHRyYW5zbGF0aW9ucy9yb3RhdGlvbnMpIHdpbGwgYmUgYXBwbGllZCBiZWZvcmUgY29tcHV0aW5nIHRoZSBjZW50cm9pZC5cclxuICAgKiBcclxuICAgKiBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2VudHJvaWQjQ2VudHJvaWRfb2ZfYV9wb2x5Z29uXHJcbiAgICogXHJcbiAgICogTm90ZTogUmV0dXJucyBhIF9uZXdfIGBWZWN0b3JgIGVhY2ggdGltZSB5b3UgY2FsbCB0aGlzLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9IFJldHVybnMgYSBWZWN0b3IgdGhhdCBjb250YWlucyB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGNlbnRyb2lkLlxyXG4gICAqL1xyXG4gIGdldENlbnRyb2lkKCk6IFZlY3RvciB7XHJcbiAgICBjb25zdCBwb2ludHM6IEFycmF5PFZlY3Rvcj4gPSB0aGlzLmNhbGNQb2ludHM7XHJcbiAgICBjb25zdCBsZW46IG51bWJlciA9IHBvaW50cy5sZW5ndGg7XHJcblxyXG4gICAgbGV0IGN4OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGN5OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGFyOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGZvciAodmFyIGk6IG51bWJlciA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBjb25zdCBwMTogVmVjdG9yID0gcG9pbnRzW2ldO1xyXG4gICAgICBjb25zdCBwMjogVmVjdG9yID0gaSA9PT0gbGVuIC0gMSA/IHBvaW50c1swXSA6IHBvaW50c1tpICsgMV07IC8vIExvb3AgYXJvdW5kIGlmIGxhc3QgcG9pbnRcclxuXHJcbiAgICAgIGNvbnN0IGE6IG51bWJlciA9IHAxW1wieFwiXSAqIHAyW1wieVwiXSAtIHAyW1wieFwiXSAqIHAxW1wieVwiXTtcclxuXHJcbiAgICAgIGN4ICs9IChwMVtcInhcIl0gKyBwMltcInhcIl0pICogYTtcclxuICAgICAgY3kgKz0gKHAxW1wieVwiXSArIHAyW1wieVwiXSkgKiBhO1xyXG4gICAgICBhciArPSBhO1xyXG4gICAgfVxyXG5cclxuICAgIGFyID0gYXIgKiAzOyAvLyB3ZSB3YW50IDEgLyA2IHRoZSBhcmVhIGFuZCB3ZSBjdXJyZW50bHkgaGF2ZSAyKmFyZWFcclxuICAgIGN4ID0gY3ggLyBhcjtcclxuICAgIGN5ID0gY3kgLyBhcjtcclxuXHJcbiAgICByZXR1cm4gbmV3IFZlY3RvcihjeCwgY3kpO1xyXG4gIH1cclxufSJdfQ==

@@ -63,4 +63,35 @@ 'use strict';

_createClass(Vector, [{
key: "copy",
key: "x",
get: function get() {
return this._x;
}
/**
* Returns the y value of this vector.
*
* @returns {number}
*/
,
set:
/**
* Sets a new x value for this vector.
*
* @param {number} x The new x value for this vector.
*/
function set(x) {
this._x = x;
}
/**
* Sets a new y value for this vector.
*
* @param {number} y The new y value for this vector.
*/
}, {
key: "y",
get: function get() {
return this._y;
},
set: function set(y) {
this._y = y;
}
/**

@@ -73,2 +104,5 @@ * Copy the values of another Vector into this one.

*/
}, {
key: "copy",
value: function copy(other) {

@@ -309,36 +343,2 @@ this._x = other.x;

}
}, {
key: "x",
get: function get() {
return this._x;
}
/**
* Returns the y value of this vector.
*
* @returns {number}
*/
,
/**
* Sets a new x value for this vector.
*
* @param {number} x The new x value for this vector.
*/
set: function set(x) {
this._x = x;
}
/**
* Sets a new y value for this vector.
*
* @param {number} y The new y value for this vector.
*/
}, {
key: "y",
get: function get() {
return this._y;
},
set: function set(y) {
this._y = y;
}
}]);

@@ -350,2 +350,2 @@

exports["default"] = Vector;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9tZXRyeS92ZWN0b3IudHMiXSwibmFtZXMiOlsiVmVjdG9yIiwieCIsInkiLCJfeCIsIl95Iiwib3RoZXIiLCJhbmdsZSIsIk1hdGgiLCJjb3MiLCJzaW4iLCJkIiwibGVuIiwiYW10IiwiZG90IiwibGVuMiIsImF4aXMiLCJwcm9qZWN0Iiwic2NhbGUiLCJwcm9qZWN0TiIsInNxcnQiXSwibWFwcGluZ3MiOiJBQUFBO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLcUJBLE07QUFDbkI7Ozs7Ozs7O0FBU0E7Ozs7Ozs7O0FBU0E7Ozs7QUFJQSxvQkFBMEM7QUFBQSxRQUE5QkMsQ0FBOEIsdUVBQWxCLENBQWtCO0FBQUEsUUFBZkMsQ0FBZSx1RUFBSCxDQUFHOztBQUFBOztBQUFBLGdDQWZyQixDQWVxQjs7QUFBQSxnQ0FOckIsQ0FNcUI7O0FBQ3hDLFNBQUtDLEVBQUwsR0FBVUYsQ0FBVjtBQUVBLFNBQUtHLEVBQUwsR0FBVUYsQ0FBVjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7QUE0QkE7Ozs7Ozs7eUJBT0tHLEssRUFBdUI7QUFDMUIsV0FBS0YsRUFBTCxHQUFVRSxLQUFLLENBQUNKLENBQWhCO0FBQ0EsV0FBS0csRUFBTCxHQUFVQyxLQUFLLENBQUNILENBQWhCO0FBRUEsYUFBTyxJQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7NEJBS2dCO0FBQ2QsYUFBTyxJQUFJRixNQUFKLENBQVcsS0FBS0MsQ0FBaEIsRUFBbUIsS0FBS0MsQ0FBeEIsQ0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7MkJBT2U7QUFDYixVQUFNRCxDQUFTLEdBQUcsS0FBS0EsQ0FBdkI7QUFFQSxXQUFLRSxFQUFMLEdBQVUsS0FBS0QsQ0FBZjtBQUNBLFdBQUtFLEVBQUwsR0FBVSxDQUFDSCxDQUFYO0FBRUEsYUFBTyxJQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7OzsyQkFPT0ssSyxFQUF1QjtBQUM1QixVQUFNTCxDQUFTLEdBQUcsS0FBS0EsQ0FBdkI7QUFDQSxVQUFNQyxDQUFTLEdB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V0FBS2QsRUFBTCxJQUFXRixDQUFYO0FBQ0EsV0FBS0csRUFBTCxJQUFXRixDQUFYO0FBRUEsYUFBTyxJQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozt3QkFPSUcsSyxFQUF1QjtBQUN6QixhQUFPLEtBQUtKLENBQUwsR0FBU0ksS0FBSyxDQUFDSixDQUFmLEdBQW1CLEtBQUtDLENBQUwsR0FBU0csS0FBSyxDQUFDSCxDQUF6QztBQUNEO0FBRUQ7Ozs7Ozs7OzJCQUtlO0FBQ2IsYUFBTyxLQUFLVyxHQUFMLENBQVMsSUFBVCxDQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7MEJBS2M7QUFDWixhQUFPTixJQUFJLENBQUNZLElBQUwsQ0FBVSxLQUFLTCxJQUFMLEVBQVYsQ0FBUDtBQUNEOzs7d0JBN1BlO0FBQUUsYUFBTyxLQUFLWCxFQUFaO0FBQWlCO0FBRW5DOzs7Ozs7O0FBT0E7Ozs7O3NCQUtNRixDLEVBQVc7QUFBRSxXQUFLRSxFQUFMLEdBQVVGLENBQVY7QUFBYztBQUVqQzs7Ozs7Ozs7d0JBVGdCO0FBQUUsYUFBTyxLQUFLRyxFQUFaO0FBQWlCLEs7c0JBYzdCRixDLEVBQVc7QUFBRSxXQUFLRSxFQUFMLEdBQVVGLENBQVY7QUFBYyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSB2ZWN0b3IgaW4gdHdvIGRpbWVuc2lvbnMgd2l0aCBgeGAgYW5kIGB5YCBwcm9wZXJ0aWVzLlxyXG4gKiBcclxuICogQ3JlYXRlIGEgbmV3IFZlY3Rvciwgb3B0aW9uYWxseSBwYXNzaW5nIGluIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcy4gSWYgYSBjb29yZGluYXRlIGlzIG5vdCBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgc2V0IHRvIGAwYC5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlY3RvciB7XHJcbiAgLyoqXHJcbiAgICogVGhlIHggY29vcmRpbmF0ZSBvZiB0aGlzIHZlY3Rvci5cclxuICAgKiBcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIFxyXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3g6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSB5IGNvb3JkaW5hdGUgb2YgdGhpcyB2ZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge251bWJlcn1cclxuICAgKi9cclxuICBwcml2YXRlIF95OiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0ge251bWJlcn0gW3g9MF0gVGhlIHggY29vcmRpbmF0ZSBvZiB0aGlzIHZlY3Rvci5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gW3k9MF0gVGhlIHkgY29vcmRpbmF0ZSBvZiB0aGlzIHZlY3Rvci5cclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcih4OiBudW1iZXIgPSAwLCB5OiBudW1iZXIgPSAwKSB7XHJcbiAgICB0aGlzLl94ID0geDtcclxuXHJcbiAgICB0aGlzLl95ID0geTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHggdmFsdWUgb2YgdGhpcyB2ZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge251bWJlcn1cclxuICAgKi9cclxuICBnZXQgeCgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5feDsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB5IHZhbHVlIG9mIHRoaXMgdmVjdG9yLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XHJcbiAgICovXHJcbiAgZ2V0IHkoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3k7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBhIG5ldyB4IHZhbHVlIGZvciB0aGlzIHZlY3Rvci5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge251bWJlcn0geCBUaGUgbmV3IHggdmFsdWUgZm9yIHRoaXMgdmVjdG9yLlxyXG4gICAqL1xyXG4gIHNldCB4KHg6IG51bWJlcikgeyB0aGlzLl94ID0geDsgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIGEgbmV3IHkgdmFsdWUgZm9yIHRoaXMgdmVjdG9yLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IFRoZSBuZXcgeSB2YWx1ZSBmb3IgdGhpcyB2ZWN0b3IuXHJcbiAgICovXHJcbiAgc2V0IHkoeTogbnVtYmVyKSB7IHRoaXMuX3kgPSB5OyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvcHkgdGhlIHZhbHVlcyBvZiBhbm90aGVyIFZlY3RvciBpbnRvIHRoaXMgb25lLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yfSBvdGhlciBUaGUgb3RoZXIgVmVjdG9yLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgY29weShvdGhlcjogVmVjdG9yKTogVmVjdG9yIHtcclxuICAgIHRoaXMuX3ggPSBvdGhlci54O1xyXG4gICAgdGhpcy5feSA9IG90aGVyLnk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBuZXcgVmVjdG9yIHdpdGggdGhlIHNhbWUgY29vcmRpbmF0ZXMgYXMgdGhlIG9uZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfSBUaGUgbmV3IGNsb25lZCBWZWN0b3IuXHJcbiAgICovXHJcbiAgY2xvbmUoKTogVmVjdG9yIHtcclxuICAgIHJldHVybiBuZXcgVmVjdG9yKHRoaXMueCwgdGhpcy55KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZSB0aGlzIFZlY3RvciB0byBiZSBwZXJwZW5kaWN1bGFyIHRvIHdoYXQgaXQgd2FzIGJlZm9yZS5cclxuICAgKiBcclxuICAgKiBFZmZlY3RpdmVseSB0aGlzIHJvdGF0ZXMgaXQgOTAgZGVncmVlcyBpbiBhIGNsb2Nrd2lzZSBkaXJlY3Rpb24uXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn0gUmV0dXJucyB0aGlzIGZvciBjaGFpbmluZy5cclxuICAgKi9cclxuICBwZXJwKCk6IFZlY3RvciB7XHJcbiAgICBjb25zdCB4OiBudW1iZXIgPSB0aGlzLng7XHJcblxyXG4gICAgdGhpcy5feCA9IHRoaXMueTtcclxuICAgIHRoaXMuX3kgPSAteDtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJvdGF0ZSB0aGlzIFZlY3RvciAoY291bnRlci1jbG9ja3dpc2UpIGJ5IHRoZSBzcGVjaWZpZWQgYW5nbGUgKGluIHJhZGlhbnMpLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhbmdsZSBUaGUgYW5nbGUgdG8gcm90YXRlIChpbiByYWRpYW5zKS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHJvdGF0ZShhbmdsZTogbnVtYmVyKTogVmVjdG9yIHtcclxuICAgIGNvbnN0IHg6IG51bWJlciA9IHRoaXMueDtcclxuICAgIGNvbnN0IHk6IG51bWJlciA9IHRoaXMueTtcclxuXHJcbiAgICB0aGlzLl94ID0geCAqIE1hdGguY29zKGFuZ2xlKSAtIHkgKiBNYXRoLnNpbihhbmdsZSk7XHJcbiAgICB0aGlzLl95ID0geCAqIE1hdGguc2luKGFuZ2xlKSArIHkgKiBNYXRoLmNvcyhhbmdsZSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXZlcnNlIHRoaXMgVmVjdG9yLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgcmV2ZXJzZSgpOiBWZWN0b3Ige1xyXG4gICAgdGhpcy5feCA9IC10aGlzLng7XHJcbiAgICB0aGlzLl95ID0gLXRoaXMueTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5vcm1hbGl6ZSB0aGlzIHZlY3RvciAobWFrZSBpdCBoYXZlIGEgbGVuZ3RoIG9mIGAxYCkuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn0gUmV0dXJucyB0aGlzIGZvciBjaGFpbmluZy5cclxuICAgKi9cclxuICBub3JtYWxpemUoKTogVmVjdG9yIHtcclxuICAgIGNvbnN0IGQ6IG51bWJlciA9IHRoaXMubGVuKCk7XHJcblxyXG4gICAgaWYgKGQgPiAwKSB7XHJcbiAgICAgIHRoaXMuX3ggPSB0aGlzLnggLyBkO1xyXG4gICAgICB0aGlzLl95ID0gdGhpcy55IC8gZDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBhbm90aGVyIFZlY3RvciB0byB0aGlzIG9uZS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1ZlY3Rvcn0gb3RoZXIgVGhlIG90aGVyIFZlY3Rvci5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIGFkZChvdGhlcjogVmVjdG9yKTogVmVjdG9yIHtcclxuICAgIHRoaXMuX3ggKz0gb3RoZXIueDtcclxuICAgIHRoaXMuX3kgKz0gb3RoZXIueTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnRyYWN0IGFub3RoZXIgVmVjdG9yIGZyb20gdGhpcyBvbmUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IG90aGVyIFRoZSBvdGhlciBWZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn0gUmV0dXJucyB0aGlzIGZvciBjaGFpbmluZy5cclxuICAgKi9cclxuICBzdWIob3RoZXI6IFZlY3Rvcik6IFZlY3RvciB7XHJcbiAgICB0aGlzLl94IC09IG90aGVyLng7XHJcbiAgICB0aGlzLl95IC09IG90aGVyLnk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTY2FsZSB0aGlzIFZlY3Rvci5cclxuICAgKiBcclxuICAgKiBBbiBpbmRlcGVuZGVudCBzY2FsaW5nIGZhY3RvciBjYW4gYmUgcHJvdmlkZWQgZm9yIGVhY2ggYXhpcywgb3IgYSBzaW5nbGUgc2NhbGluZyBmYWN0b3Igd2lsbCBzY2FsZSBib3RoIGB4YCBhbmQgYHlgLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IFRoZSBzY2FsaW5nIGZhY3RvciBpbiB0aGUgeCBkaXJlY3Rpb24uXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt5XSBUaGUgc2NhbGluZyBmYWN0b3IgaW4gdGhlIHkgZGlyZWN0aW9uLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgc2NhbGUoeDogbnVtYmVyLCB5PzogbnVtYmVyKTogVmVjdG9yIHtcclxuICAgIHRoaXMuX3ggKj0geDtcclxuICAgIHRoaXMuX3kgKj0gdHlwZW9mIHkgIT0gJ3VuZGVmaW5lZCcgPyB5IDogeDtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2plY3QgdGhpcyBWZWN0b3Igb250byBhbm90aGVyIFZlY3Rvci5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1ZlY3Rvcn0gb3RoZXIgVGhlIFZlY3RvciB0byBwcm9qZWN0IG9udG8uXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn0gUmV0dXJucyB0aGlzIGZvciBjaGFpbmluZy5cclxuICAgKi9cclxuICBwcm9qZWN0KG90aGVyOiBWZWN0b3IpOiBWZWN0b3Ige1xyXG4gICAgY29uc3QgYW10OiBudW1iZXIgPSB0aGlzLmRvdChvdGhlcikgLyBvdGhlci5sZW4yKCk7XHJcblxyXG4gICAgdGhpcy5feCA9IGFtdCAqIG90aGVyLng7XHJcbiAgICB0aGlzLl95ID0gYW10ICogb3RoZXIueTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2plY3QgdGhpcyBWZWN0b3Igb250byBhIFZlY3RvciBvZiB1bml0IGxlbmd0aC5cclxuICAgKiBcclxuICAgKiBUaGlzIGlzIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IHRoYW4gYHByb2plY3RgIHdoZW4gZGVhbGluZyB3aXRoIHVuaXQgdmVjdG9ycy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1ZlY3Rvcn0gb3RoZXIgVGhlIHVuaXQgdmVjdG9yIHRvIHByb2plY3Qgb250by5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHByb2plY3ROKG90aGVyOiBWZWN0b3IpOiBWZWN0b3Ige1xyXG4gICAgY29uc3QgYW10OiBudW1iZXIgPSB0aGlzLmRvdChvdGhlcik7XHJcblxyXG4gICAgdGhpcy5feCA9IGFtdCAqIG90aGVyLng7XHJcbiAgICB0aGlzLl95ID0gYW10ICogb3RoZXIueTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZmxlY3QgdGhpcyBWZWN0b3Igb24gYW4gYXJiaXRyYXJ5IGF4aXMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IGF4aXMgVGhlIFZlY3RvciByZXByZXNlbnRpbmcgdGhlIGF4aXMuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn0gUmV0dXJucyB0aGlzIGZvciBjaGFpbmluZy5cclxuICAgKi9cclxuICByZWZsZWN0KGF4aXM6IFZlY3Rvcik6IFZlY3RvciB7XHJcbiAgICBjb25zdCB4OiBudW1iZXIgPSB0aGlzLng7XHJcbiAgICBjb25zdCB5OiBudW1iZXIgPSB0aGlzLnk7XHJcblxyXG4gICAgdGhpcy5wcm9qZWN0KGF4aXMpLnNjYWxlKDIpO1xyXG5cclxuICAgIHRoaXMuX3ggLT0geDtcclxuICAgIHRoaXMuX3kgLT0geTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZmxlY3QgdGhpcyBWZWN0b3Igb24gYW4gYXJiaXRyYXJ5IGF4aXMuXHJcbiAgICogXHJcbiAgICogVGhpcyBpcyBzbGlnaHRseSBtb3JlIGVmZmljaWVudCB0aGFuIGByZWZsZWN0YCB3aGVuIGRlYWxpbmcgd2l0aCBhbiBheGlzIHRoYXQgaXMgYSB1bml0IHZlY3Rvci5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1ZlY3Rvcn0gYXhpcyBUaGUgVmVjdG9yIHJlcHJlc2VudGluZyB0aGUgYXhpcy5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHJlZmxlY3ROKGF4aXM6IFZlY3Rvcik6IFZlY3RvciB7XHJcbiAgICBjb25zdCB4OiBudW1iZXIgPSB0aGlzLng7XHJcbiAgICBjb25zdCB5OiBudW1iZXIgPSB0aGlzLnk7XHJcblxyXG4gICAgdGhpcy5wcm9qZWN0TihheGlzKS5zY2FsZSgyKTtcclxuXHJcbiAgICB0aGlzLl94IC09IHg7XHJcbiAgICB0aGlzLl95IC09IHk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGRvdCBwcm9kdWN0IG9mIHRoaXMgVmVjdG9yIGFuZCBhbm90aGVyLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yfSBvdGhlciBUaGUgVmVjdG9yIHRvIGRvdCB0aGlzIG9uZSBhZ2FpbnN0LlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGRvdCBwcm9kdWN0IG9mIHRoaXMgdmVjdG9yLlxyXG4gICAqL1xyXG4gIGRvdChvdGhlcjogVmVjdG9yKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnggKiBvdGhlci54ICsgdGhpcy55ICogb3RoZXIueTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgc3F1YXJlZCBsZW5ndGggb2YgdGhpcyBWZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3F1YXJlZCBsZW5ndGggb2YgdGhpcyB2ZWN0b3IuXHJcbiAgICovXHJcbiAgbGVuMigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZG90KHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBsZW5ndGggb2YgdGhpcyBWZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoaXMgdmVjdG9yLlxyXG4gICAqL1xyXG4gIGxlbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguc3FydCh0aGlzLmxlbjIoKSk7XHJcbiAgfVxyXG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9tZXRyeS92ZWN0b3IudHMiXSwibmFtZXMiOlsiVmVjdG9yIiwieCIsInkiLCJfeCIsIl95Iiwib3RoZXIiLCJhbmdsZSIsIk1hdGgiLCJjb3MiLCJzaW4iLCJkIiwibGVuIiwiYW10IiwiZG90IiwibGVuMiIsImF4aXMiLCJwcm9qZWN0Iiwic2NhbGUiLCJwcm9qZWN0TiIsInNxcnQiXSwibWFwcGluZ3MiOiJBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0lBQ3FCQSxNO0FBQ25CO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0Usb0JBQTBDO0FBQUEsUUFBOUJDLENBQThCLHVFQUFsQixDQUFrQjtBQUFBLFFBQWZDLENBQWUsdUVBQUgsQ0FBRzs7QUFBQTs7QUFBQSxnQ0FmckIsQ0FlcUI7O0FBQUEsZ0NBTnJCLENBTXFCOztBQUN4QyxTQUFLQyxFQUFMLEdBQVVGLENBQVY7QUFFQSxTQUFLRyxFQUFMLEdBQVVGLENBQVY7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7O1NBQ0UsZUFBZ0I7QUFBRSxhQUFPLEtBQUtDLEVBQVo7QUFBaUI7QUFFbkM7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7O0FBR0U7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNFLGlCQUFNRixDQUFOLEVBQWlCO0FBQUUsV0FBS0UsRUFBTCxHQUFVRixDQUFWO0FBQWM7QUFFakM7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OztTQWJFLGVBQWdCO0FBQUUsYUFBTyxLQUFLRyxFQUFaO0FBQWlCLEs7U0FjbkMsYUFBTUYsQ0FBTixFQUFpQjtBQUFFLFdBQUtFLEVBQUwsR0FBVUYsQ0FBVjtBQUFjO0FBRWpDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O1dBQ0UsY0FBS0csS0FBTCxFQUE0QjtBQUMxQixX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QjtBQUN6QixhQUFPLEtBQUtKLENBQUwsR0FBU0ksS0FBSyxDQUFDSixDQUFmLEdBQW1CLEtBQUtDLENBQUwsR0FBU0csS0FBSyxDQUFDSCxDQUF6QztBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OztXQUNFLGdCQUFlO0FBQ2IsYUFBTyxLQUFLVyxHQUFMLENBQVMsSUFBVCxDQUFQO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7O1dBQ0UsZUFBYztBQUNaLGFBQU9OLElBQUksQ0FBQ1ksSUFBTCxDQUFVLEtBQUtMLElBQUwsRUFBVixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIGEgdmVjdG9yIGluIHR3byBkaW1lbnNpb25zIHdpdGggYHhgIGFuZCBgeWAgcHJvcGVydGllcy5cclxuICogXHJcbiAqIENyZWF0ZSBhIG5ldyBWZWN0b3IsIG9wdGlvbmFsbHkgcGFzc2luZyBpbiB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMuIElmIGEgY29vcmRpbmF0ZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCB3aWxsIGJlIHNldCB0byBgMGAuXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWN0b3Ige1xyXG4gIC8qKlxyXG4gICAqIFRoZSB4IGNvb3JkaW5hdGUgb2YgdGhpcyB2ZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge251bWJlcn1cclxuICAgKi9cclxuICBwcml2YXRlIF94OiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgeSBjb29yZGluYXRlIG9mIHRoaXMgdmVjdG9yLlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfeTogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt4PTBdIFRoZSB4IGNvb3JkaW5hdGUgb2YgdGhpcyB2ZWN0b3IuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt5PTBdIFRoZSB5IGNvb3JkaW5hdGUgb2YgdGhpcyB2ZWN0b3IuXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoeDogbnVtYmVyID0gMCwgeTogbnVtYmVyID0gMCkge1xyXG4gICAgdGhpcy5feCA9IHg7XHJcblxyXG4gICAgdGhpcy5feSA9IHk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB4IHZhbHVlIG9mIHRoaXMgdmVjdG9yLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XHJcbiAgICovXHJcbiAgZ2V0IHgoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3g7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgeSB2YWx1ZSBvZiB0aGlzIHZlY3Rvci5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxyXG4gICAqL1xyXG4gIGdldCB5KCk6IG51bWJlciB7IHJldHVybiB0aGlzLl95OyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgYSBuZXcgeCB2YWx1ZSBmb3IgdGhpcyB2ZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHggVGhlIG5ldyB4IHZhbHVlIGZvciB0aGlzIHZlY3Rvci5cclxuICAgKi9cclxuICBzZXQgeCh4OiBudW1iZXIpIHsgdGhpcy5feCA9IHg7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBhIG5ldyB5IHZhbHVlIGZvciB0aGlzIHZlY3Rvci5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge251bWJlcn0geSBUaGUgbmV3IHkgdmFsdWUgZm9yIHRoaXMgdmVjdG9yLlxyXG4gICAqL1xyXG4gIHNldCB5KHk6IG51bWJlcikgeyB0aGlzLl95ID0geTsgfVxyXG5cclxuICAvKipcclxuICAgKiBDb3B5IHRoZSB2YWx1ZXMgb2YgYW5vdGhlciBWZWN0b3IgaW50byB0aGlzIG9uZS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1ZlY3Rvcn0gb3RoZXIgVGhlIG90aGVyIFZlY3Rvci5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIGNvcHkob3RoZXI6IFZlY3Rvcik6IFZlY3RvciB7XHJcbiAgICB0aGlzLl94ID0gb3RoZXIueDtcclxuICAgIHRoaXMuX3kgPSBvdGhlci55O1xyXG5cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgbmV3IFZlY3RvciB3aXRoIHRoZSBzYW1lIGNvb3JkaW5hdGVzIGFzIHRoZSBvbmUuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn0gVGhlIG5ldyBjbG9uZWQgVmVjdG9yLlxyXG4gICAqL1xyXG4gIGNsb25lKCk6IFZlY3RvciB7XHJcbiAgICByZXR1cm4gbmV3IFZlY3Rvcih0aGlzLngsIHRoaXMueSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGFuZ2UgdGhpcyBWZWN0b3IgdG8gYmUgcGVycGVuZGljdWxhciB0byB3aGF0IGl0IHdhcyBiZWZvcmUuXHJcbiAgICogXHJcbiAgICogRWZmZWN0aXZlbHkgdGhpcyByb3RhdGVzIGl0IDkwIGRlZ3JlZXMgaW4gYSBjbG9ja3dpc2UgZGlyZWN0aW9uLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgcGVycCgpOiBWZWN0b3Ige1xyXG4gICAgY29uc3QgeDogbnVtYmVyID0gdGhpcy54O1xyXG5cclxuICAgIHRoaXMuX3ggPSB0aGlzLnk7XHJcbiAgICB0aGlzLl95ID0gLXg7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSb3RhdGUgdGhpcyBWZWN0b3IgKGNvdW50ZXItY2xvY2t3aXNlKSBieSB0aGUgc3BlY2lmaWVkIGFuZ2xlIChpbiByYWRpYW5zKS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge251bWJlcn0gYW5nbGUgVGhlIGFuZ2xlIHRvIHJvdGF0ZSAoaW4gcmFkaWFucykuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn0gUmV0dXJucyB0aGlzIGZvciBjaGFpbmluZy5cclxuICAgKi9cclxuICByb3RhdGUoYW5nbGU6IG51bWJlcik6IFZlY3RvciB7XHJcbiAgICBjb25zdCB4OiBudW1iZXIgPSB0aGlzLng7XHJcbiAgICBjb25zdCB5OiBudW1iZXIgPSB0aGlzLnk7XHJcblxyXG4gICAgdGhpcy5feCA9IHggKiBNYXRoLmNvcyhhbmdsZSkgLSB5ICogTWF0aC5zaW4oYW5nbGUpO1xyXG4gICAgdGhpcy5feSA9IHggKiBNYXRoLnNpbihhbmdsZSkgKyB5ICogTWF0aC5jb3MoYW5nbGUpO1xyXG5cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV2ZXJzZSB0aGlzIFZlY3Rvci5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHJldmVyc2UoKTogVmVjdG9yIHtcclxuICAgIHRoaXMuX3ggPSAtdGhpcy54O1xyXG4gICAgdGhpcy5feSA9IC10aGlzLnk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOb3JtYWxpemUgdGhpcyB2ZWN0b3IgKG1ha2UgaXQgaGF2ZSBhIGxlbmd0aCBvZiBgMWApLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgbm9ybWFsaXplKCk6IFZlY3RvciB7XHJcbiAgICBjb25zdCBkOiBudW1iZXIgPSB0aGlzLmxlbigpO1xyXG5cclxuICAgIGlmIChkID4gMCkge1xyXG4gICAgICB0aGlzLl94ID0gdGhpcy54IC8gZDtcclxuICAgICAgdGhpcy5feSA9IHRoaXMueSAvIGQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYW5vdGhlciBWZWN0b3IgdG8gdGhpcyBvbmUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IG90aGVyIFRoZSBvdGhlciBWZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn0gUmV0dXJucyB0aGlzIGZvciBjaGFpbmluZy5cclxuICAgKi9cclxuICBhZGQob3RoZXI6IFZlY3Rvcik6IFZlY3RvciB7XHJcbiAgICB0aGlzLl94ICs9IG90aGVyLng7XHJcbiAgICB0aGlzLl95ICs9IG90aGVyLnk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJ0cmFjdCBhbm90aGVyIFZlY3RvciBmcm9tIHRoaXMgb25lLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yfSBvdGhlciBUaGUgb3RoZXIgVmVjdG9yLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgc3ViKG90aGVyOiBWZWN0b3IpOiBWZWN0b3Ige1xyXG4gICAgdGhpcy5feCAtPSBvdGhlci54O1xyXG4gICAgdGhpcy5feSAtPSBvdGhlci55O1xyXG5cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2NhbGUgdGhpcyBWZWN0b3IuXHJcbiAgICogXHJcbiAgICogQW4gaW5kZXBlbmRlbnQgc2NhbGluZyBmYWN0b3IgY2FuIGJlIHByb3ZpZGVkIGZvciBlYWNoIGF4aXMsIG9yIGEgc2luZ2xlIHNjYWxpbmcgZmFjdG9yIHdpbGwgc2NhbGUgYm90aCBgeGAgYW5kIGB5YC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge251bWJlcn0geCBUaGUgc2NhbGluZyBmYWN0b3IgaW4gdGhlIHggZGlyZWN0aW9uLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeV0gVGhlIHNjYWxpbmcgZmFjdG9yIGluIHRoZSB5IGRpcmVjdGlvbi5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VmVjdG9yfSBSZXR1cm5zIHRoaXMgZm9yIGNoYWluaW5nLlxyXG4gICAqL1xyXG4gIHNjYWxlKHg6IG51bWJlciwgeT86IG51bWJlcik6IFZlY3RvciB7XHJcbiAgICB0aGlzLl94ICo9IHg7XHJcbiAgICB0aGlzLl95ICo9IHR5cGVvZiB5ICE9ICd1bmRlZmluZWQnID8geSA6IHg7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9qZWN0IHRoaXMgVmVjdG9yIG9udG8gYW5vdGhlciBWZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IG90aGVyIFRoZSBWZWN0b3IgdG8gcHJvamVjdCBvbnRvLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgcHJvamVjdChvdGhlcjogVmVjdG9yKTogVmVjdG9yIHtcclxuICAgIGNvbnN0IGFtdDogbnVtYmVyID0gdGhpcy5kb3Qob3RoZXIpIC8gb3RoZXIubGVuMigpO1xyXG5cclxuICAgIHRoaXMuX3ggPSBhbXQgKiBvdGhlci54O1xyXG4gICAgdGhpcy5feSA9IGFtdCAqIG90aGVyLnk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9qZWN0IHRoaXMgVmVjdG9yIG9udG8gYSBWZWN0b3Igb2YgdW5pdCBsZW5ndGguXHJcbiAgICogXHJcbiAgICogVGhpcyBpcyBzbGlnaHRseSBtb3JlIGVmZmljaWVudCB0aGFuIGBwcm9qZWN0YCB3aGVuIGRlYWxpbmcgd2l0aCB1bml0IHZlY3RvcnMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IG90aGVyIFRoZSB1bml0IHZlY3RvciB0byBwcm9qZWN0IG9udG8uXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn0gUmV0dXJucyB0aGlzIGZvciBjaGFpbmluZy5cclxuICAgKi9cclxuICBwcm9qZWN0TihvdGhlcjogVmVjdG9yKTogVmVjdG9yIHtcclxuICAgIGNvbnN0IGFtdDogbnVtYmVyID0gdGhpcy5kb3Qob3RoZXIpO1xyXG5cclxuICAgIHRoaXMuX3ggPSBhbXQgKiBvdGhlci54O1xyXG4gICAgdGhpcy5feSA9IGFtdCAqIG90aGVyLnk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWZsZWN0IHRoaXMgVmVjdG9yIG9uIGFuIGFyYml0cmFyeSBheGlzLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yfSBheGlzIFRoZSBWZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBheGlzLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZWN0b3J9IFJldHVybnMgdGhpcyBmb3IgY2hhaW5pbmcuXHJcbiAgICovXHJcbiAgcmVmbGVjdChheGlzOiBWZWN0b3IpOiBWZWN0b3Ige1xyXG4gICAgY29uc3QgeDogbnVtYmVyID0gdGhpcy54O1xyXG4gICAgY29uc3QgeTogbnVtYmVyID0gdGhpcy55O1xyXG5cclxuICAgIHRoaXMucHJvamVjdChheGlzKS5zY2FsZSgyKTtcclxuXHJcbiAgICB0aGlzLl94IC09IHg7XHJcbiAgICB0aGlzLl95IC09IHk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWZsZWN0IHRoaXMgVmVjdG9yIG9uIGFuIGFyYml0cmFyeSBheGlzLlxyXG4gICAqIFxyXG4gICAqIFRoaXMgaXMgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQgdGhhbiBgcmVmbGVjdGAgd2hlbiBkZWFsaW5nIHdpdGggYW4gYXhpcyB0aGF0IGlzIGEgdW5pdCB2ZWN0b3IuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3J9IGF4aXMgVGhlIFZlY3RvciByZXByZXNlbnRpbmcgdGhlIGF4aXMuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1ZlY3Rvcn0gUmV0dXJucyB0aGlzIGZvciBjaGFpbmluZy5cclxuICAgKi9cclxuICByZWZsZWN0TihheGlzOiBWZWN0b3IpOiBWZWN0b3Ige1xyXG4gICAgY29uc3QgeDogbnVtYmVyID0gdGhpcy54O1xyXG4gICAgY29uc3QgeTogbnVtYmVyID0gdGhpcy55O1xyXG5cclxuICAgIHRoaXMucHJvamVjdE4oYXhpcykuc2NhbGUoMik7XHJcblxyXG4gICAgdGhpcy5feCAtPSB4O1xyXG4gICAgdGhpcy5feSAtPSB5O1xyXG5cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBkb3QgcHJvZHVjdCBvZiB0aGlzIFZlY3RvciBhbmQgYW5vdGhlci5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1ZlY3Rvcn0gb3RoZXIgVGhlIFZlY3RvciB0byBkb3QgdGhpcyBvbmUgYWdhaW5zdC5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBkb3QgcHJvZHVjdCBvZiB0aGlzIHZlY3Rvci5cclxuICAgKi9cclxuICBkb3Qob3RoZXI6IFZlY3Rvcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy54ICogb3RoZXIueCArIHRoaXMueSAqIG90aGVyLnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIHNxdWFyZWQgbGVuZ3RoIG9mIHRoaXMgVmVjdG9yLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNxdWFyZWQgbGVuZ3RoIG9mIHRoaXMgdmVjdG9yLlxyXG4gICAqL1xyXG4gIGxlbjIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRvdCh0aGlzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgbGVuZ3RoIG9mIHRoaXMgVmVjdG9yLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGlzIHZlY3Rvci5cclxuICAgKi9cclxuICBsZW4oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLnNxcnQodGhpcy5sZW4yKCkpO1xyXG4gIH1cclxufSJdfQ==

@@ -0,1 +1,4 @@

## 1.1.1 / 2021-02-20
- [MISC] Updated dependencies to their latest versions.
## 1.1.0 / 2020-09-30

@@ -2,0 +5,0 @@ - [FEATURE] Added `genericPoints` Array to Polygon which is an Array of all of the points in the Polygon as just numbers instead of Vectors. This is useful for creating triangles from Polygons.

@@ -80,4 +80,35 @@ function _classCallCheck(instance, Constructor) {

_createClass(Vector, [{
key: "copy",
key: "x",
get: function get() {
return this._x;
}
/**
* Returns the y value of this vector.
*
* @returns {number}
*/
,
set:
/**
* Sets a new x value for this vector.
*
* @param {number} x The new x value for this vector.
*/
function set(x) {
this._x = x;
}
/**
* Sets a new y value for this vector.
*
* @param {number} y The new y value for this vector.
*/
}, {
key: "y",
get: function get() {
return this._y;
},
set: function set(y) {
this._y = y;
}
/**

@@ -90,2 +121,5 @@ * Copy the values of another Vector into this one.

*/
}, {
key: "copy",
value: function copy(other) {

@@ -326,36 +360,2 @@ this._x = other.x;

}
}, {
key: "x",
get: function get() {
return this._x;
}
/**
* Returns the y value of this vector.
*
* @returns {number}
*/
,
/**
* Sets a new x value for this vector.
*
* @param {number} x The new x value for this vector.
*/
set: function set(x) {
this._x = x;
}
/**
* Sets a new y value for this vector.
*
* @param {number} y The new y value for this vector.
*/
}, {
key: "y",
get: function get() {
return this._y;
},
set: function set(y) {
this._y = y;
}
}]);

@@ -480,5 +480,106 @@

_createClass(Polygon, [{
key: "setPoints",
key: "position",
get: function get() {
return this._position;
}
/**
* **Note:** Not sure if this will be kept or not but for now it's disabled.
*
* Sets a new position for this polygon and recalculates the points.
*
* @param {Vector} position A Vector representing the new position of this polygon.
*/
// set position(position: Vector) {
// const diffX: number = -(this._position.x - position.x);
// const diffY: number = -(this._position.y - position.y);
// const diffPoint: Vector = new Vector(diffX, diffY);
// const points: Array<Vector> = [];
// this._points.map((point: Vector) => {
// const tempX: number = point.x;
// const tempY: number = point.y;
// const tempPoint: Vector = new Vector(tempX, tempY);
// const calculatedPoint: Vector = tempPoint.add(diffPoint);
// points.push(calculatedPoint);
// });
// this.setPoints(points, true);
// }
/**
* Returns the points of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "points",
get: function get() {
return this._points;
}
/**
* Returns the points of this polygon as numbers instead of Vectors.
*
* @returns {Array<number>}
*/
}, {
key: "pointsGeneric",
get: function get() {
return this._pointsGeneric;
}
/**
* Returns the calculated points of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "calcPoints",
get: function get() {
return this._calcPoints;
}
/**
* Returns the offset of this polygon.
*
* @returns {Vector}
*/
}, {
key: "offset",
get: function get() {
return this._offset;
}
/**
* Returns the angle of this polygon.
*
* @returns {number}
*/
}, {
key: "angle",
get: function get() {
return this._angle;
}
/**
* Returns the edges of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "edges",
get: function get() {
return this._edges;
}
/**
* Returns the normals of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "normals",
get: function get() {
return this._normals;
}
/**
* Set the points of the polygon. Any consecutive duplicate points will be combined.

@@ -494,2 +595,5 @@ *

*/
}, {
key: "setPoints",
value: function setPoints(points) {

@@ -727,106 +831,2 @@ // Only re-allocate if this is a new polygon or the number of points has changed.

}
}, {
key: "position",
get: function get() {
return this._position;
}
/**
* **Note:** Not sure if this will be kept or not but for now it's disabled.
*
* Sets a new position for this polygon and recalculates the points.
*
* @param {Vector} position A Vector representing the new position of this polygon.
*/
// set position(position: Vector) {
// const diffX: number = -(this._position.x - position.x);
// const diffY: number = -(this._position.y - position.y);
// const diffPoint: Vector = new Vector(diffX, diffY);
// const points: Array<Vector> = [];
// this._points.map((point: Vector) => {
// const tempX: number = point.x;
// const tempY: number = point.y;
// const tempPoint: Vector = new Vector(tempX, tempY);
// const calculatedPoint: Vector = tempPoint.add(diffPoint);
// points.push(calculatedPoint);
// });
// this.setPoints(points, true);
// }
/**
* Returns the points of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "points",
get: function get() {
return this._points;
}
/**
* Returns the points of this polygon as numbers instead of Vectors.
*
* @returns {Array<number>}
*/
}, {
key: "pointsGeneric",
get: function get() {
return this._pointsGeneric;
}
/**
* Returns the calculated points of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "calcPoints",
get: function get() {
return this._calcPoints;
}
/**
* Returns the offset of this polygon.
*
* @returns {Vector}
*/
}, {
key: "offset",
get: function get() {
return this._offset;
}
/**
* Returns the angle of this polygon.
*
* @returns {number}
*/
}, {
key: "angle",
get: function get() {
return this._angle;
}
/**
* Returns the edges of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "edges",
get: function get() {
return this._edges;
}
/**
* Returns the normals of this polygon.
*
* @returns {Array<Vector>}
*/
}, {
key: "normals",
get: function get() {
return this._normals;
}
}]);

@@ -968,5 +968,38 @@

_createClass(Circle, [{
key: "translate",
key: "position",
get: function get() {
return this._position;
}
/**
* Returns the radius of this circle.
*
* @returns {number}
*/
}, {
key: "radius",
get: function get() {
return this._radius;
}
/**
* Returns the offset of this circle.
*
* @returns {Vector}
*/
}, {
key: "offset",
get: function get() {
return this._offset;
}
/**
* Set a new offset for this circle.
*
* @param {Vector} offset The new offset for this circle.
*/
,
set: function set(offset) {
this._offset = offset;
}
/**
* Translate the center of the cirlc.e

@@ -976,2 +1009,5 @@ *

*/
}, {
key: "translate",
value: function translate(x, y) {

@@ -1010,38 +1046,2 @@ this._position.x += x;

}
}, {
key: "position",
get: function get() {
return this._position;
}
/**
* Returns the radius of this circle.
*
* @returns {number}
*/
}, {
key: "radius",
get: function get() {
return this._radius;
}
/**
* Returns the offset of this circle.
*
* @returns {Vector}
*/
}, {
key: "offset",
get: function get() {
return this._offset;
}
/**
* Set a new offset for this circle.
*
* @param {Vector} offset The new offset for this circle.
*/
,
set: function set(offset) {
this._offset = offset;
}
}]);

@@ -1048,0 +1048,0 @@

{
"name": "collider2d",
"version": "1.1.0",
"version": "1.1.1",
"description": "A 2D collision checker for modern JavaScript games.",

@@ -46,4 +46,4 @@ "main": "build/index.js",

"@babel/preset-typescript": "^7.10.4",
"@rollup/plugin-commonjs": "^15.1.0",
"@rollup/plugin-node-resolve": "^9.0.0",
"@rollup/plugin-commonjs": "^17.1.0",
"@rollup/plugin-node-resolve": "^11.2.0",
"chai": "^4.2.0",

@@ -50,0 +50,0 @@ "mocha": "^8.1.3",

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