three-nebula 10.0.3 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/rules/no-coauthor.md +4 -0
- package/CHANGELOG.md +23 -0
- package/build/cjs/behaviour/Rotate.js +2 -2
- package/build/cjs/core/System.js +2 -2
- package/build/cjs/core/constants.js +2 -2
- package/build/cjs/emitter/Emitter.js +10 -3
- package/build/cjs/initializer/Rotation.js +95 -0
- package/build/cjs/initializer/index.js +9 -1
- package/build/cjs/initializer/types.js +4 -2
- package/build/cjs/renderer/GPURenderer/Desktop/index.js +23 -2
- package/build/cjs/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +2 -2
- package/build/cjs/renderer/GPURenderer/Desktop/shaders/vertexShader.js +2 -2
- package/build/cjs/renderer/GPURenderer/Mobile/index.js +23 -2
- package/build/cjs/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +2 -2
- package/build/cjs/renderer/GPURenderer/Mobile/shaders/vertexShader.js +2 -2
- package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/constants.js +9 -4
- package/build/cjs/renderer/GPURenderer/common/stores/Target.js +3 -1
- package/build/cjs/renderer/MeshRenderer.js +8 -8
- package/build/cjs/renderer/SpriteRenderer.js +6 -1
- package/build/cjs/utils/uid.js +3 -5
- package/build/esm/behaviour/Rotate.js +2 -2
- package/build/esm/core/System.js +2 -2
- package/build/esm/core/constants.js +3 -3
- package/build/esm/emitter/Emitter.js +11 -4
- package/build/esm/initializer/Rotation.js +54 -0
- package/build/esm/initializer/index.js +2 -1
- package/build/esm/initializer/types.js +2 -1
- package/build/esm/renderer/GPURenderer/Desktop/index.js +28 -2
- package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +8 -1
- package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +4 -1
- package/build/esm/renderer/GPURenderer/Mobile/index.js +28 -2
- package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +8 -1
- package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +4 -1
- package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +6 -3
- package/build/esm/renderer/GPURenderer/common/stores/Target.js +3 -1
- package/build/esm/renderer/MeshRenderer.js +7 -8
- package/build/esm/renderer/SpriteRenderer.js +5 -1
- package/build/esm/utils/uid.js +2 -2
- package/build/three-nebula.js +1 -1
- package/build/three-nebula.js.map +1 -1
- package/package.json +12 -12
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,29 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## `v11.0.0` - 2026-07-14
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Upgraded supported `three` from r127 to r185. Rendered output differs on modern three (sRGB output, physically-correct lighting) — validate your scenes
|
|
13
|
+
- Upgraded `uuid` from v3 to v11
|
|
14
|
+
- CI now runs on Node 20 / 22 (dropped 12 / 14) and no longer depends on the unmaintained `bundlesize`
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- Deterministic visual-regression harness (`vr/`) that diffs the example renders against a committed golden master
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Ported the Snow example off three's removed `Geometry.vertices` API
|
|
23
|
+
|
|
24
|
+
## `v10.0.3` - 2021-11-05
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- All current security vulnerabilities in dependencies have been resolved
|
|
29
|
+
- Node v10 support dropped in dev due to webpack / babel upgrades, this version has been removed from CI
|
|
30
|
+
|
|
8
31
|
## `v10.0.2` - 2021-08-02
|
|
9
32
|
|
|
10
33
|
### Fixed
|
|
@@ -208,7 +208,7 @@ var Rotate = /*#__PURE__*/function (_Behaviour) {
|
|
|
208
208
|
particle.rotation = new _math.Vector3D();
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
-
particle.rotation.
|
|
211
|
+
particle.rotation.copy(particle.velocity);
|
|
212
212
|
break;
|
|
213
213
|
|
|
214
214
|
case 'set':
|
|
@@ -262,4 +262,4 @@ var Rotate = /*#__PURE__*/function (_Behaviour) {
|
|
|
262
262
|
}(_Behaviour2["default"]);
|
|
263
263
|
|
|
264
264
|
exports["default"] = Rotate;
|
|
265
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvUm90YXRlLmpzIl0sIm5hbWVzIjpbIlJvdGF0ZSIsIngiLCJ5IiwieiIsImxpZmUiLCJlYXNpbmciLCJpc0VuYWJsZWQiLCJ0eXBlIiwicmVzZXQiLCJ1bmRlZmluZWQiLCJyb3RhdGlvblR5cGUiLCJEUiIsInBhcnRpY2xlIiwiX3NldFJvdGF0aW9uIiwicm90YXRpb24iLCJ0cmFuc2Zvcm0iLCJmUiIsIlZlY3RvcjNEIiwidFIiLCJhZGRSIiwiZ2V0VmFsdWUiLCJwYXJ0aWNsZVJvdGF0aW9uIiwidmFsdWUiLCJNYXRoVXRpbHMiLCJyYW5kb21BVG9CIiwiUEkiLCJzZXQiLCJjb3B5IiwidGltZSIsImluZGV4IiwiZW5lcmdpemUiLCJldWxlckZyb21EaXIiLCJ2ZWxvY2l0eSIsImxlcnAiLCJlbmVyZ3kiLCJhZGQiLCJfcm90YXRpb25UeXBlIiwianNvbiIsIkJlaGF2aW91ciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBO0FBQ0E7QUFDQTtJQUNxQkEsTTs7Ozs7QUFDbkI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFLGtCQUFZQyxDQUFaLEVBQWVDLENBQWYsRUFBa0JDLENBQWxCLEVBQXFCQyxJQUFyQixFQUEyQkMsTUFBM0IsRUFBcUQ7QUFBQTs7QUFBQSxRQUFsQkMsU0FBa0IsdUVBQU4sSUFBTTtBQUFBO0FBQ25ELDhCQUFNRixJQUFOLEVBQVlDLE1BQVosRUFBb0JFLDRCQUFwQixFQUEwQkQsU0FBMUI7O0FBRUEsVUFBS0UsS0FBTCxDQUFXUCxDQUFYLEVBQWNDLENBQWQsRUFBaUJDLENBQWpCOztBQUhtRDtBQUlwRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQW1CRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsw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QUFvQkMsSUFBcEIsRUFBMEIsMkJBQWdCQyxNQUFoQixDQUExQixFQUFtREMsU0FBbkQsQ0FBUDtBQUNEOzs7RUEzTWlDZ0Msc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEUiwgUEkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTWF0aFV0aWxzLCBWZWN0b3IzRCwgY3JlYXRlU3BhbiB9IGZyb20gJy4uL21hdGgnO1xuXG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gJy4vQmVoYXZpb3VyJztcbmltcG9ydCB7IGdldEVhc2luZ0J5TmFtZSB9IGZyb20gJy4uL2Vhc2UnO1xuaW1wb3J0IHsgQkVIQVZJT1VSX1RZUEVfUk9UQVRFIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBCZWhhdmlvdXIgdGhhdCByb3RhdGVzIHBhcnRpY2xlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm90YXRlIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSb3RhdGUgYmVoYXZpb3VyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFggYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFkgYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0geiAtIFogYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIFRoZSBsaWZlIG9mIHRoZSBiZWhhdmlvdXJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZWFzaW5nIC0gVGhlIGVhc2luZyBlcXVhdGlvbiB0byB1c2UgZm9yIHRyYW5zZm9ybXNcbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNFbmFibGVkPXRydWVdIC0gRGV0ZXJtaW5lcyBpZiB0aGUgYmVoYXZpb3VyIHdpbGwgYmUgYXBwbGllZCBvciBub3RcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih4LCB5LCB6LCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcsIHR5cGUsIGlzRW5hYmxlZCk7XG5cbiAgICB0aGlzLnJlc2V0KHgsIHksIHopO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJvdGF0aW9uIHR5cGUuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIGdldCByb3RhdGlvblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdGF0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByb3RhdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ31cbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBzZXQgcm90YXRpb25UeXBlKHJvdGF0aW9uVHlwZSkge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSByb3RhdGlvbiB0eXBlLiBFTlVNIG9mIFsnc2FtZScsICdzZXQnLCAndG8nLCAnYWRkJ10uXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLl9yb3RhdGlvblR5cGUgPSByb3RhdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBiZWhhdmlvdXIgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBYIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBZIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHogLSBaIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpZmUgLSB0aGUgbGlmZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGVhc2luZyAtIHRoZSBlYXNpbmcgZXF1YXRpb24gdG8gdXNlIGZvciB0cmFuc2Zvcm1zXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgcmVzZXQoeCwgeSwgeiwgbGlmZSwgZWFzaW5nKSB7XG4gICAgLyoqXG4gICAgICogQGRlc2MgWCBheGlzIHJvdGF0aW9uLlxuICAgICAqIEB0eXBlIHtudW1iZXJ8U3Bhbn1cbiAgICAgKi9cbiAgICB0aGlzLnggPSB4IHx8IDA7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBZIGF4aXMgcm90YXRpb24uXG4gICAgICogQHR5cGUge251bWJlcnxTcGFufVxuICAgICAqL1xuICAgIHRoaXMueSA9IHkgfHwgMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFogYXhpcyByb3RhdGlvbi5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfFNwYW59XG4gICAgICovXG4gICAgdGhpcy56ID0geiB8fCAwO1xuXG4gICAgaWYgKHggPT09IHVuZGVmaW5lZCB8fCB4ID09ICdzYW1lJykge1xuICAgICAgdGhpcy5yb3RhdGlvblR5cGUgPSAnc2FtZSc7XG4gICAgfSBlbHNlIGlmICh5ID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3RhdGlvblR5cGUgPSAnc2V0JztcbiAgICB9IGVsc2UgaWYgKHogPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3RhdGlvblR5cGUgPSAndG8nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdGF0aW9uVHlwZSA9ICdhZGQnO1xuICAgICAgdGhpcy54ID0gY3JlYXRlU3Bhbih0aGlzLnggKiBEUik7XG4gICAgICB0aGlzLnkgPSBjcmVhdGVTcGFuKHRoaXMueSAqIERSKTtcbiAgICAgIHRoaXMueiA9IGNyZWF0ZVNwYW4odGhpcy56ICogRFIpO1xuICAgIH1cblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgYmVoYXZpb3VyIG9uIGEgcGFydGljbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIHRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplIHRoZSBiZWhhdmlvdXIgb25cbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgc3dpdGNoICh0aGlzLnJvdGF0aW9uVHlwZSkge1xuICAgICAgY2FzZSAnc2FtZSc6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzZXQnOlxuICAgICAgICB0aGlzLl9zZXRSb3RhdGlvbihwYXJ0aWNsZS5yb3RhdGlvbiwgdGhpcy54KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RvJzpcbiAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmZSID0gcGFydGljbGUudHJhbnNmb3JtLmZSIHx8IG5ldyBWZWN0b3IzRCgpO1xuICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0udFIgPSBwYXJ0aWNsZS50cmFuc2Zvcm0udFIgfHwgbmV3IFZlY3RvcjNEKCk7XG4gICAgICAgIHRoaXMuX3NldFJvdGF0aW9uKHBhcnRpY2xlLnRyYW5zZm9ybS5mUiwgdGhpcy54KTtcbiAgICAgICAgdGhpcy5fc2V0Um90YXRpb24ocGFydGljbGUudHJhbnNmb3JtLnRSLCB0aGlzLnkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmFkZFIgPSBuZXcgVmVjdG9yM0QoXG4gICAgICAgICAgdGhpcy54LmdldFZhbHVlKCksXG4gICAgICAgICAgdGhpcy55LmdldFZhbHVlKCksXG4gICAgICAgICAgdGhpcy56LmdldFZhbHVlKClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBhcnRpY2xlJ3Mgcm90YXRpb24gcHJpb3IgdG8gdGhlIGJlaGF2aW91ciBiZWluZyBhcHBsaWVkLlxuICAgKlxuICAgKiBOT1RFIEl0J3MgaGFyZCB0byBzZWUgaGVyZSwgYnV0IHRoaXMgaXMgbXV0YXRpbmcgdGhlIHBhcnRpY2xlJ3Mgcm90YXRpb25cbiAgICogZXZlbiB0aG91Z2ggdGhlIHBhcnRpY2xlIGlzIG5vdCBiZWluZyBwYXNzZWQgaW4gZGlyZWN0bHkuXG4gICAqXG4gICAqIE5PVEUgdGhlIGVsc2UgaWYgYmVsb3cgd2lsbCBuZXZlciBiZSByZWFjaGVkIGJlY2F1c2UgdGhlIHZhbHVlIGJlaW5nIHBhc3NlZCBpblxuICAgKiB3aWxsIG5ldmVyIGJlIG9mIHR5cGUgVmVjdG9yM0QuXG4gICAqXG4gICAqIEBwYXJhbSB7VmVjdG9yM0R9IHBhcnRpY2xlUm90YXRpb24gLSB0aGUgcGFydGljbGUncyByb3RhdGlvbiB2ZWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZSAtIHRoZSB2YWx1ZSB0byBzZXQgdGhlIHJvdGF0aW9uIHZhbHVlIHRvLCBpZiAncmFuZG9tJ1xuICAgKiByb3RhdGlvbiBpcyByYW5kb21pc2VkXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgX3NldFJvdGF0aW9uKHBhcnRpY2xlUm90YXRpb24sIHZhbHVlKSB7XG4gICAgcGFydGljbGVSb3RhdGlvbiA9IHBhcnRpY2xlUm90YXRpb24gfHwgbmV3IFZlY3RvcjNEKCk7XG4gICAgaWYgKHZhbHVlID09ICdyYW5kb20nKSB7XG4gICAgICB2YXIgeCA9IE1hdGhVdGlscy5yYW5kb21BVG9CKC1QSSwgUEkpO1xuICAgICAgdmFyIHkgPSBNYXRoVXRpbHMucmFuZG9tQVRvQigtUEksIFBJKTtcbiAgICAgIHZhciB6ID0gTWF0aFV0aWxzLnJhbmRvbUFUb0IoLVBJLCBQSSk7XG5cbiAgICAgIHBhcnRpY2xlUm90YXRpb24uc2V0KHgsIHksIHopO1xuICAgIH1cbiAgICAvLyB3ZSBjYW4ndCBldmVyIGdldCBoZXJlIGJlY2F1c2UgdmFsdWUgd2lsbCBuZXZlciBiZSBhIFZlY3RvcjNEIVxuICAgIC8vIGNvbnNpZGVyIHJlZmFjdG9yaW5nIHRvXG4gICAgLy8gIGlmICh2YWx1ZSBpbnN0YW5jZSBvZiBTcGFuKSB7IHZlYzMuYWRkKHZhbHVlLmdldFZhbHVlKCkpOyB9XG4gICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBWZWN0b3IzRCkge1xuICAgICAgcGFydGljbGVSb3RhdGlvbi5jb3B5KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTXV0YXRlcyB0aGUgcGFydGljbGUucm90YXRpb24gcHJvcGVydHkuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMTYyMjk1Ni9ob3ctdG8tY29udmVydC1kaXJlY3Rpb24tdmVjdG9yLXRvLWV1bGVyLWFuZ2xlc1xuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSB0aGUgcGFydGljbGUgdG8gYXBwbHkgdGhlIGJlaGF2aW91ciB0b1xuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIGVuZ2luZSB0aW1lXG4gICAqIEBwYXJhbSB7aW50ZWdlcn0gaW5kZXggLSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBtdXRhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5lbmVyZ2l6ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuXG4gICAgc3dpdGNoICh0aGlzLnJvdGF0aW9uVHlwZSkge1xuICAgICAgLy8gb3JpZW50cyB0aGUgcGFydGljbGUgaW4gdGhlIGRpcmVjdGlvbiBpdCBpcyBtb3ZpbmdcbiAgICAgIGNhc2UgJ3NhbWUnOlxuICAgICAgICBpZiAoIXBhcnRpY2xlLnJvdGF0aW9uKSB7XG4gICAgICAgICAgcGFydGljbGUucm90YXRpb24gPSBuZXcgVmVjdG9yM0QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLmV1bGVyRnJvbURpcihwYXJ0aWNsZS52ZWxvY2l0eSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzZXQnOlxuICAgICAgICAvL1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndG8nOlxuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbi54ID0gTWF0aFV0aWxzLmxlcnAoXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmZSLngsXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLnRSLngsXG4gICAgICAgICAgdGhpcy5lbmVyZ3lcbiAgICAgICAgKTtcbiAgICAgICAgcGFydGljbGUucm90YXRpb24ueSA9IE1hdGhVdGlscy5sZXJwKFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5mUi55LFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS50Ui55LFxuICAgICAgICAgIHRoaXMuZW5lcmd5XG4gICAgICAgICk7XG4gICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLnogPSBNYXRoVXRpbHMubGVycChcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uZlIueixcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0udFIueixcbiAgICAgICAgICB0aGlzLmVuZXJneVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgcGFydGljbGUucm90YXRpb24uYWRkKHBhcnRpY2xlLnRyYW5zZm9ybS5hZGRSKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICBjb25zdCB7IHgsIHksIHosIGxpZmUsIGVhc2luZywgaXNFbmFibGVkID0gdHJ1ZSB9ID0ganNvbjtcblxuICAgIHJldHVybiBuZXcgUm90YXRlKHgsIHksIHosIGxpZmUsIGdldEVhc2luZ0J5TmFtZShlYXNpbmcpLCBpc0VuYWJsZWQpO1xuICB9XG59XG4iXX0=
|
|
265
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvUm90YXRlLmpzIl0sIm5hbWVzIjpbIlJvdGF0ZSIsIngiLCJ5IiwieiIsImxpZmUiLCJlYXNpbmciLCJpc0VuYWJsZWQiLCJ0eXBlIiwicmVzZXQiLCJ1bmRlZmluZWQiLCJyb3RhdGlvblR5cGUiLCJEUiIsInBhcnRpY2xlIiwiX3NldFJvdGF0aW9uIiwicm90YXRpb24iLCJ0cmFuc2Zvcm0iLCJmUiIsIlZlY3RvcjNEIiwidFIiLCJhZGRSIiwiZ2V0VmFsdWUiLCJwYXJ0aWNsZVJvdGF0aW9uIiwidmFsdWUiLCJNYXRoVXRpbHMiLCJyYW5kb21BVG9CIiwiUEkiLCJzZXQiLCJjb3B5IiwidGltZSIsImluZGV4IiwiZW5lcmdpemUiLCJ2ZWxvY2l0eSIsImxlcnAiLCJlbmVyZ3kiLCJhZGQiLCJfcm90YXRpb25UeXBlIiwianNvbiIsIkJlaGF2aW91ciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBO0FBQ0E7QUFDQTtJQUNxQkEsTTs7Ozs7QUFDbkI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFLGtCQUFZQyxDQUFaLEVBQWVDLENBQWYsRUFBa0JDLENBQWxCLEVBQXFCQyxJQUFyQixFQUEyQkMsTUFBM0IsRUFBcUQ7QUFBQTs7QUFBQSxRQUFsQkMsU0FBa0IsdUVBQU4sSUFBTTtBQUFBO0FBQ25ELDhCQUFNRixJQUFOLEVBQVlDLE1BQVosRUFBb0JFLDRCQUFwQixFQUEwQkQsU0FBMUI7O0FBRUEsVUFBS0UsS0FBTCxDQUFXUCxDQUFYLEVBQWNDLENBQWQsRUFBaUJDLENBQWpCOztBQUhtRDtBQUlwRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQW1CRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTswQkFDUUYsQyxFQUFHQyxDLEVBQUdDLEMsRUFBR0MsSSxFQUFNQyxNLEVBQVE7QUFDM0I7QUFDSjtBQUNBO0FBQ0E7QUFDSSxXQUFLSixDQUFMLEdBQVNBLENBQUMsSUFBSSxDQUFkO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksV0FBS0MsQ0FBTCxHQUFTQSxDQUFDLElBQUksQ0FBZDtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFdBQUtDLENBQUwsR0FBU0EsQ0FBQyxJQUFJLENBQWQ7O0FBRUEsVUFBSUYsQ0FBQyxLQUFLUSxTQUFOLElBQW1CUixDQUFDLElBQUksTUFBNUIsRUFBb0M7QUFDbEMsYUFBS1MsWUFBTCxHQUFvQixNQUFwQjtBQUNELE9BRkQsTUFFTyxJQUFJUixDQUFDLElBQUlPLFNBQVQsRUFBb0I7QUFDekIsYUFBS0MsWUFBTCxHQUFvQixLQUFwQjtBQUNELE9BRk0sTUFFQSxJQUFJUCxDQUFDLEtBQUtNLFNBQVYsRUFBcUI7QUFDMUIsYUFBS0MsWUFBTCxHQUFvQixJQUFwQjtBQUNELE9BRk0sTUFFQTtBQUNMLGFBQUtBLFlBQUwsR0FBb0IsS0FBcEI7QUFDQSxhQUFLVCxDQUFMLEdBQVMsc0JBQVcsS0FBS0EsQ0FBTCxHQUFTVSxhQUFwQixDQUFUO0FBQ0EsYUFBS1QsQ0FBTCxHQUFTLHNCQUFXLEtBQUtBLENBQUwsR0FBU1MsYUFBcEIsQ0FBVDtBQUNBLGFBQUtSLENBQUwsR0FBUyxzQkFBVyxLQUFLQSxDQUFMLEdBQVNRLGFBQXBCLENBQVQ7QUFDRDs7QUFFRFAsTUFBQUEsSUFBSSx3R0FBZ0JBLElBQWhCLEVBQXNCQyxNQUF0QixDQUFKO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7K0JBQ2FPLFEsRUFBVTtBQUNuQixjQUFRLEtBQUtGLFlBQWI7QUFDRSxhQUFLLE1BQUw7QUFDRTs7QUFFRixhQUFLLEtBQUw7QUFDRSxlQUFLRyxZQUFMLENBQWtCRCxRQUFRLENBQUNFLFFBQTNCLEVBQXFDLEtBQUtiLENBQTFDOztBQUNBOztBQUVGLGFBQUssSUFBTDtBQUNFVyxVQUFBQSxRQUFRLENBQUNHLFNBQVQsQ0FBbUJDLEVBQW5CLEdBQXdCSixRQUFRLENBQUNHLFNBQVQsQ0FBbUJDLEVBQW5CLElBQXlCLElBQUlDLGNBQUosRUFBakQ7QUFDQUwsVUFBQUEsUUFBUSxDQUFDRyxTQUFULENBQW1CRyxFQUFuQixHQUF3Qk4sUUFBUSxDQUFDRyxTQUFULENBQW1CRyxFQUFuQixJQUF5QixJQUFJRCxjQUFKLEVBQWpEOztBQUNBLGVBQUtKLFlBQUwsQ0FBa0JELFFBQVEsQ0FBQ0csU0FBVCxDQUFtQkMsRUFBckMsRUFBeUMsS0FBS2YsQ0FBOUM7O0FBQ0EsZUFBS1ksWUFBTCxDQUFrQkQsUUFBUSxDQUFDRyxTQUFULENBQW1CRyxFQUFyQyxFQUF5QyxLQUFLaEIsQ0FBOUM7O0FBQ0E7O0FBRUYsYUFBSyxLQUFMO0FBQ0VVLFVBQUFBLFFBQVEsQ0FBQ0csU0FBVCxDQUFtQkksSUFBbkIsR0FBMEIsSUFBSUYsY0FBSixDQUN4QixLQUFLaEIsQ0FBTCxDQUFPbUIsUUFBUCxFQUR3QixFQUV4QixLQUFLbEIsQ0FBTCxDQUFPa0IsUUFBUCxFQUZ3QixFQUd4QixLQUFLakIsQ0FBTCxDQUFPaUIsUUFBUCxFQUh3QixDQUExQjtBQUtBO0FBckJKO0FBdUJEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztpQ0FDZUMsZ0IsRUFBa0JDLEssRUFBTztBQUNwQ0QsTUFBQUEsZ0JBQWdCLEdBQUdBLGdCQUFnQixJQUFJLElBQUlKLGNBQUosRUFBdkM7O0FBQ0EsVUFBSUssS0FBSyxJQUFJLFFBQWIsRUFBdUI7QUFDckIsWUFBSXJCLENBQUMsR0FBR3NCLGdCQUFVQyxVQUFWLENBQXFCLENBQUNDLGFBQXRCLEVBQTBCQSxhQUExQixDQUFSOztBQUNBLFlBQUl2QixDQUFDLEdBQUdxQixnQkFBVUMsVUFBVixDQUFxQixDQUFDQyxhQUF0QixFQUEwQkEsYUFBMUIsQ0FBUjs7QUFDQSxZQUFJdEIsQ0FBQyxHQUFHb0IsZ0JBQVVDLFVBQVYsQ0FBcUIsQ0FBQ0MsYUFBdEIsRUFBMEJBLGFBQTFCLENBQVI7O0FBRUFKLFFBQUFBLGdCQUFnQixDQUFDSyxHQUFqQixDQUFxQnpCLENBQXJCLEVBQXdCQyxDQUF4QixFQUEyQkMsQ0FBM0I7QUFDRCxPQU5ELENBT0E7QUFDQTtBQUNBO0FBVEEsV0FVSyxJQUFJbUIsS0FBSyxZQUFZTCxjQUFyQixFQUErQjtBQUNsQ0ksUUFBQUEsZ0JBQWdCLENBQUNNLElBQWpCLENBQXNCTCxLQUF0QjtBQUNEO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7MkJBQ1NWLFEsRUFBVWdCLEksRUFBTUMsSyxFQUFPO0FBQzVCLFdBQUtDLFFBQUwsQ0FBY2xCLFFBQWQsRUFBd0JnQixJQUF4QixFQUE4QkMsS0FBOUI7O0FBRUEsY0FBUSxLQUFLbkIsWUFBYjtBQUNFO0FBQ0EsYUFBSyxNQUFMO0FBQ0UsY0FBSSxDQUFDRSxRQUFRLENBQUNFLFFBQWQsRUFBd0I7QUFDdEJGLFlBQUFBLFFBQVEsQ0FBQ0UsUUFBVCxHQUFvQixJQUFJRyxjQUFKLEVBQXBCO0FBQ0Q7O0FBRURMLFVBQUFBLFFBQVEsQ0FBQ0UsUUFBVCxDQUFrQmEsSUFBbEIsQ0FBdUJmLFFBQVEsQ0FBQ21CLFFBQWhDO0FBQ0E7O0FBRUYsYUFBSyxLQUFMO0FBQ0U7QUFDQTs7QUFFRixhQUFLLElBQUw7QUFDRW5CLFVBQUFBLFFBQVEsQ0FBQ0UsUUFBVCxDQUFrQmIsQ0FBbEIsR0FBc0JzQixnQkFBVVMsSUFBVixDQUNwQnBCLFFBQVEsQ0FBQ0csU0FBVCxDQUFtQkMsRUFBbkIsQ0FBc0JmLENBREYsRUFFcEJXLFFBQVEsQ0FBQ0csU0FBVCxDQUFtQkcsRUFBbkIsQ0FBc0JqQixDQUZGLEVBR3BCLEtBQUtnQyxNQUhlLENBQXRCO0FBS0FyQixVQUFBQSxRQUFRLENBQUNFLFFBQVQsQ0FBa0JaLENBQWxCLEdBQXNCcUIsZ0JBQVVTLElBQVYsQ0FDcEJwQixRQUFRLENBQUNHLFNBQVQsQ0FBbUJDLEVBQW5CLENBQXNCZCxDQURGLEVBRXBCVSxRQUFRLENBQUNHLFNBQVQsQ0FBbUJHLEVBQW5CLENBQXNCaEIsQ0FGRixFQUdwQixLQUFLK0IsTUFIZSxDQUF0QjtBQUtBckIsVUFBQUEsUUFBUSxDQUFDRSxRQUFULENBQWtCWCxDQUFsQixHQUFzQm9CLGdCQUFVUyxJQUFWLENBQ3BCcEIsUUFBUSxDQUFDRyxTQUFULENBQW1CQyxFQUFuQixDQUFzQmIsQ0FERixFQUVwQlMsUUFBUSxDQUFDRyxTQUFULENBQW1CRyxFQUFuQixDQUFzQmYsQ0FGRixFQUdwQixLQUFLOEIsTUFIZSxDQUF0QjtBQUtBOztBQUVGLGFBQUssS0FBTDtBQUNFckIsVUFBQUEsUUFBUSxDQUFDRSxRQUFULENBQWtCb0IsR0FBbEIsQ0FBc0J0QixRQUFRLENBQUNHLFNBQVQsQ0FBbUJJLElBQXpDO0FBQ0E7QUFsQ0o7QUFvQ0Q7Ozt3QkE5S2tCO0FBQ2pCLGFBQU8sS0FBS2dCLGFBQVo7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7c0JBQ21CekIsWSxFQUFjO0FBQzdCO0FBQ0o7QUFDQTtBQUNBO0FBQ0ksV0FBS3lCLGFBQUwsR0FBcUJ6QixZQUFyQjtBQUNEOzs7NkJBZ0tlMEIsSSxFQUFNO0FBQUEsVUFDWm5DLENBRFksR0FDZ0NtQyxJQURoQyxDQUNabkMsQ0FEWTtBQUFBLFVBQ1RDLENBRFMsR0FDZ0NrQyxJQURoQyxDQUNUbEMsQ0FEUztBQUFBLFVBQ05DLENBRE0sR0FDZ0NpQyxJQURoQyxDQUNOakMsQ0FETTtBQUFBLFVBQ0hDLElBREcsR0FDZ0NnQyxJQURoQyxDQUNIaEMsSUFERztBQUFBLFVBQ0dDLE1BREgsR0FDZ0MrQixJQURoQyxDQUNHL0IsTUFESDtBQUFBLDRCQUNnQytCLElBRGhDLENBQ1c5QixTQURYO0FBQUEsVUFDV0EsU0FEWCxnQ0FDdUIsSUFEdkI7QUFHcEIsYUFBTyxJQUFJTixNQUFKLENBQVdDLENBQVgsRUFBY0MsQ0FBZCxFQUFpQkMsQ0FBakIsRUFBb0JDLElBQXBCLEVBQTBCLDJCQUFnQkMsTUFBaEIsQ0FBMUIsRUFBbURDLFNBQW5ELENBQVA7QUFDRDs7O0VBM01pQytCLHNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRFIsIFBJIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE1hdGhVdGlscywgVmVjdG9yM0QsIGNyZWF0ZVNwYW4gfSBmcm9tICcuLi9tYXRoJztcblxuaW1wb3J0IEJlaGF2aW91ciBmcm9tICcuL0JlaGF2aW91cic7XG5pbXBvcnQgeyBnZXRFYXNpbmdCeU5hbWUgfSBmcm9tICcuLi9lYXNlJztcbmltcG9ydCB7IEJFSEFWSU9VUl9UWVBFX1JPVEFURSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQmVoYXZpb3VyIHRoYXQgcm90YXRlcyBwYXJ0aWNsZXMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvdGF0ZSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgUm90YXRlIGJlaGF2aW91ciBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBYIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBZIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHogLSBaIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpZmUgLSBUaGUgbGlmZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGVhc2luZyAtIFRoZSBlYXNpbmcgZXF1YXRpb24gdG8gdXNlIGZvciB0cmFuc2Zvcm1zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRW5hYmxlZD10cnVlXSAtIERldGVybWluZXMgaWYgdGhlIGJlaGF2aW91ciB3aWxsIGJlIGFwcGxpZWQgb3Igbm90XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IoeCwgeSwgeiwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nLCB0eXBlLCBpc0VuYWJsZWQpO1xuXG4gICAgdGhpcy5yZXNldCh4LCB5LCB6KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByb3RhdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgcm90YXRpb25UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3RhdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcm90YXRpb24gdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgc2V0IHJvdGF0aW9uVHlwZShyb3RhdGlvblR5cGUpIHtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcm90YXRpb24gdHlwZS4gRU5VTSBvZiBbJ3NhbWUnLCAnc2V0JywgJ3RvJywgJ2FkZCddLlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5fcm90YXRpb25UeXBlID0gcm90YXRpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgYmVoYXZpb3VyIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gWCBheGlzIHJvdGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gWSBheGlzIHJvdGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB6IC0gWiBheGlzIHJvdGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaWZlIC0gdGhlIGxpZmUgb2YgdGhlIGJlaGF2aW91clxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlYXNpbmcgLSB0aGUgZWFzaW5nIGVxdWF0aW9uIHRvIHVzZSBmb3IgdHJhbnNmb3Jtc1xuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHJlc2V0KHgsIHksIHosIGxpZmUsIGVhc2luZykge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFggYXhpcyByb3RhdGlvbi5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfFNwYW59XG4gICAgICovXG4gICAgdGhpcy54ID0geCB8fCAwO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgWSBheGlzIHJvdGF0aW9uLlxuICAgICAqIEB0eXBlIHtudW1iZXJ8U3Bhbn1cbiAgICAgKi9cbiAgICB0aGlzLnkgPSB5IHx8IDA7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBaIGF4aXMgcm90YXRpb24uXG4gICAgICogQHR5cGUge251bWJlcnxTcGFufVxuICAgICAqL1xuICAgIHRoaXMueiA9IHogfHwgMDtcblxuICAgIGlmICh4ID09PSB1bmRlZmluZWQgfHwgeCA9PSAnc2FtZScpIHtcbiAgICAgIHRoaXMucm90YXRpb25UeXBlID0gJ3NhbWUnO1xuICAgIH0gZWxzZSBpZiAoeSA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm90YXRpb25UeXBlID0gJ3NldCc7XG4gICAgfSBlbHNlIGlmICh6ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm90YXRpb25UeXBlID0gJ3RvJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3RhdGlvblR5cGUgPSAnYWRkJztcbiAgICAgIHRoaXMueCA9IGNyZWF0ZVNwYW4odGhpcy54ICogRFIpO1xuICAgICAgdGhpcy55ID0gY3JlYXRlU3Bhbih0aGlzLnkgKiBEUik7XG4gICAgICB0aGlzLnogPSBjcmVhdGVTcGFuKHRoaXMueiAqIERSKTtcbiAgICB9XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJlaGF2aW91ciBvbiBhIHBhcnRpY2xlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSB0aGUgcGFydGljbGUgdG8gaW5pdGlhbGl6ZSB0aGUgYmVoYXZpb3VyIG9uXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHN3aXRjaCAodGhpcy5yb3RhdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgJ3NhbWUnOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgdGhpcy5fc2V0Um90YXRpb24ocGFydGljbGUucm90YXRpb24sIHRoaXMueCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd0byc6XG4gICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5mUiA9IHBhcnRpY2xlLnRyYW5zZm9ybS5mUiB8fCBuZXcgVmVjdG9yM0QoKTtcbiAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLnRSID0gcGFydGljbGUudHJhbnNmb3JtLnRSIHx8IG5ldyBWZWN0b3IzRCgpO1xuICAgICAgICB0aGlzLl9zZXRSb3RhdGlvbihwYXJ0aWNsZS50cmFuc2Zvcm0uZlIsIHRoaXMueCk7XG4gICAgICAgIHRoaXMuX3NldFJvdGF0aW9uKHBhcnRpY2xlLnRyYW5zZm9ybS50UiwgdGhpcy55KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5hZGRSID0gbmV3IFZlY3RvcjNEKFxuICAgICAgICAgIHRoaXMueC5nZXRWYWx1ZSgpLFxuICAgICAgICAgIHRoaXMueS5nZXRWYWx1ZSgpLFxuICAgICAgICAgIHRoaXMuei5nZXRWYWx1ZSgpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXJ0aWNsZSdzIHJvdGF0aW9uIHByaW9yIHRvIHRoZSBiZWhhdmlvdXIgYmVpbmcgYXBwbGllZC5cbiAgICpcbiAgICogTk9URSBJdCdzIGhhcmQgdG8gc2VlIGhlcmUsIGJ1dCB0aGlzIGlzIG11dGF0aW5nIHRoZSBwYXJ0aWNsZSdzIHJvdGF0aW9uXG4gICAqIGV2ZW4gdGhvdWdoIHRoZSBwYXJ0aWNsZSBpcyBub3QgYmVpbmcgcGFzc2VkIGluIGRpcmVjdGx5LlxuICAgKlxuICAgKiBOT1RFIHRoZSBlbHNlIGlmIGJlbG93IHdpbGwgbmV2ZXIgYmUgcmVhY2hlZCBiZWNhdXNlIHRoZSB2YWx1ZSBiZWluZyBwYXNzZWQgaW5cbiAgICogd2lsbCBuZXZlciBiZSBvZiB0eXBlIFZlY3RvcjNELlxuICAgKlxuICAgKiBAcGFyYW0ge1ZlY3RvcjNEfSBwYXJ0aWNsZVJvdGF0aW9uIC0gdGhlIHBhcnRpY2xlJ3Mgcm90YXRpb24gdmVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gdmFsdWUgLSB0aGUgdmFsdWUgdG8gc2V0IHRoZSByb3RhdGlvbiB2YWx1ZSB0bywgaWYgJ3JhbmRvbSdcbiAgICogcm90YXRpb24gaXMgcmFuZG9taXNlZFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIF9zZXRSb3RhdGlvbihwYXJ0aWNsZVJvdGF0aW9uLCB2YWx1ZSkge1xuICAgIHBhcnRpY2xlUm90YXRpb24gPSBwYXJ0aWNsZVJvdGF0aW9uIHx8IG5ldyBWZWN0b3IzRCgpO1xuICAgIGlmICh2YWx1ZSA9PSAncmFuZG9tJykge1xuICAgICAgdmFyIHggPSBNYXRoVXRpbHMucmFuZG9tQVRvQigtUEksIFBJKTtcbiAgICAgIHZhciB5ID0gTWF0aFV0aWxzLnJhbmRvbUFUb0IoLVBJLCBQSSk7XG4gICAgICB2YXIgeiA9IE1hdGhVdGlscy5yYW5kb21BVG9CKC1QSSwgUEkpO1xuXG4gICAgICBwYXJ0aWNsZVJvdGF0aW9uLnNldCh4LCB5LCB6KTtcbiAgICB9XG4gICAgLy8gd2UgY2FuJ3QgZXZlciBnZXQgaGVyZSBiZWNhdXNlIHZhbHVlIHdpbGwgbmV2ZXIgYmUgYSBWZWN0b3IzRCFcbiAgICAvLyBjb25zaWRlciByZWZhY3RvcmluZyB0b1xuICAgIC8vICBpZiAodmFsdWUgaW5zdGFuY2Ugb2YgU3BhbikgeyB2ZWMzLmFkZCh2YWx1ZS5nZXRWYWx1ZSgpKTsgfVxuICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgVmVjdG9yM0QpIHtcbiAgICAgIHBhcnRpY2xlUm90YXRpb24uY29weSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE11dGF0ZXMgdGhlIHBhcnRpY2xlLnJvdGF0aW9uIHByb3BlcnR5LlxuICAgKlxuICAgKiBAc2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjE2MjI5NTYvaG93LXRvLWNvbnZlcnQtZGlyZWN0aW9uLXZlY3Rvci10by1ldWxlci1hbmdsZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gdGhlIHBhcnRpY2xlIHRvIGFwcGx5IHRoZSBiZWhhdmlvdXIgdG9cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBlbmdpbmUgdGltZVxuICAgKiBAcGFyYW0ge2ludGVnZXJ9IGluZGV4IC0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgbXV0YXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuZW5lcmdpemUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIHN3aXRjaCAodGhpcy5yb3RhdGlvblR5cGUpIHtcbiAgICAgIC8vIG9yaWVudHMgdGhlIHBhcnRpY2xlIGluIHRoZSBkaXJlY3Rpb24gaXQgaXMgbW92aW5nXG4gICAgICBjYXNlICdzYW1lJzpcbiAgICAgICAgaWYgKCFwYXJ0aWNsZS5yb3RhdGlvbikge1xuICAgICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uID0gbmV3IFZlY3RvcjNEKCk7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbi5jb3B5KHBhcnRpY2xlLnZlbG9jaXR5KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NldCc6XG4gICAgICAgIC8vXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd0byc6XG4gICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLnggPSBNYXRoVXRpbHMubGVycChcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uZlIueCxcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0udFIueCxcbiAgICAgICAgICB0aGlzLmVuZXJneVxuICAgICAgICApO1xuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbi55ID0gTWF0aFV0aWxzLmxlcnAoXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmZSLnksXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLnRSLnksXG4gICAgICAgICAgdGhpcy5lbmVyZ3lcbiAgICAgICAgKTtcbiAgICAgICAgcGFydGljbGUucm90YXRpb24ueiA9IE1hdGhVdGlscy5sZXJwKFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5mUi56LFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS50Ui56LFxuICAgICAgICAgIHRoaXMuZW5lcmd5XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhZGQnOlxuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbi5hZGQocGFydGljbGUudHJhbnNmb3JtLmFkZFIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgeCwgeSwgeiwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlIH0gPSBqc29uO1xuXG4gICAgcmV0dXJuIG5ldyBSb3RhdGUoeCwgeSwgeiwgbGlmZSwgZ2V0RWFzaW5nQnlOYW1lKGVhc2luZyksIGlzRW5hYmxlZCk7XG4gIH1cbn1cbiJdfQ==
|
package/build/cjs/core/System.js
CHANGED
|
@@ -280,7 +280,7 @@ var System = /*#__PURE__*/function () {
|
|
|
280
280
|
while (i--) {
|
|
281
281
|
var emitter = this.emitters[i];
|
|
282
282
|
emitter.update(d);
|
|
283
|
-
emitter.
|
|
283
|
+
emitter.particles.length && this.dispatch(_events.SYSTEM_UPDATE);
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
286
|
|
|
@@ -363,4 +363,4 @@ var System = /*#__PURE__*/function () {
|
|
|
363
363
|
}();
|
|
364
364
|
|
|
365
365
|
exports["default"] = System;
|
|
366
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL1N5c3RlbS5qcyJdLCJuYW1lcyI6WyJTeXN0ZW0iLCJwcmVQYXJ0aWNsZXMiLCJQT09MX01BWCIsImludGVncmF0aW9uVHlwZSIsIklOVEVHUkFUSU9OX1RZUEVfRVVMRVIiLCJ0eXBlIiwiY2FuVXBkYXRlIiwiZW1pdHRlcnMiLCJyZW5kZXJlcnMiLCJwb29sIiwiUG9vbCIsImV2ZW50RGlzcGF0Y2hlciIsIkV2ZW50RGlzcGF0Y2hlciIsImV2ZW50IiwidGFyZ2V0IiwiZGlzcGF0Y2hFdmVudCIsInJlbmRlcmVyIiwicHVzaCIsImluaXQiLCJzcGxpY2UiLCJpbmRleE9mIiwicmVtb3ZlIiwiZW1pdHRlciIsImluZGV4IiwibGVuZ3RoIiwicGFyZW50IiwiZGlzcGF0Y2giLCJFTUlUVEVSX0FEREVEIiwidW5kZWZpbmVkIiwiRU1JVFRFUl9SRU1PVkVEIiwib25TdGFydCIsIm9uVXBkYXRlIiwib25FbmQiLCJhZGRFdmVudExpc3RlbmVyIiwiU1lTVEVNX1VQREFURSIsIm1hcCIsImxpZmUiLCJJbmZpbml0eSIsImV4cGVyaW1lbnRhbF9lbWl0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJhZGRPbkVtaXR0ZXJEZWFkRXZlbnRMaXN0ZW5lciIsImFsbCIsImUiLCJjb25zb2xlIiwid2FybiIsImRlbHRhIiwiREVGQVVMVF9TWVNURU1fREVMVEEiLCJkIiwiaSIsInVwZGF0ZSIsImlzRW1pdHRpbmciLCJTWVNURU1fVVBEQVRFX0FGVEVSIiwidG90YWwiLCJwYXJ0aWNsZXMiLCJkZXN0cm95IiwiciIsImpzb24iLCJUSFJFRSIsIkVtaXR0ZXIiLCJvcHRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFPQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ3FCQSxNO0FBQ25CO0FBQ0Y7QUFDQTtBQUNBO0FB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bUIsQ0FBQyxFQUE3QixFQUFpQztBQUMvQixhQUFLcEMsUUFBTCxDQUFjb0MsQ0FBZCxLQUFvQixLQUFLcEMsUUFBTCxDQUFjb0MsQ0FBZCxFQUFpQlksT0FBakIsRUFBcEI7QUFDQSxlQUFPLEtBQUtoRCxRQUFMLENBQWNvQyxDQUFkLENBQVA7QUFDRDs7QUFFRCxXQUFLLElBQUlhLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdoQyxNQUFwQixFQUE0QmdDLENBQUMsRUFBN0IsRUFBaUM7QUFDL0IsWUFBSSxLQUFLaEQsU0FBTCxDQUFlZ0QsQ0FBZixLQUFxQixLQUFLaEQsU0FBTCxDQUFlZ0QsQ0FBZixFQUFrQkQsT0FBM0MsRUFBb0Q7QUFDbEQsZUFBSy9DLFNBQUwsQ0FBZWdELENBQWYsRUFBa0JELE9BQWxCO0FBQ0EsaUJBQU8sS0FBSy9DLFNBQUwsQ0FBZWdELENBQWYsQ0FBUDtBQUNEO0FBQ0Y7O0FBRUQsV0FBS2pELFFBQUwsQ0FBY2lCLE1BQWQsR0FBdUIsQ0FBdkI7QUFDQSxXQUFLZixJQUFMLENBQVU4QyxPQUFWO0FBQ0EsV0FBS2pELFNBQUwsR0FBaUIsSUFBakI7QUFDRDs7OzZCQW5PZW1ELEksRUFBTUMsSyxFQUFPO0FBQzNCLGFBQU8sMkJBQVNELElBQVQsRUFBZUMsS0FBZixFQUFzQjFELE1BQXRCLEVBQThCMkQsbUJBQTlCLENBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztrQ0FDdUJGLEksRUFBTUMsSyxFQUFPRSxPLEVBQVM7QUFDekMsYUFBTyxnQ0FBY0gsSUFBZCxFQUFvQkMsS0FBcEIsRUFBMkIxRCxNQUEzQixFQUFtQzJELG1CQUFuQyxFQUE0Q0MsT0FBNUMsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV2ZW50RGlzcGF0Y2hlciwge1xuICBFTUlUVEVSX0FEREVELFxuICBFTUlUVEVSX1JFTU9WRUQsXG4gIFNZU1RFTV9VUERBVEUsXG4gIFNZU1RFTV9VUERBVEVfQUZURVIsXG59IGZyb20gJy4uL2V2ZW50cyc7XG5cbmltcG9ydCB7IERFRkFVTFRfU1lTVEVNX0RFTFRBIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IEVtaXR0ZXIgZnJvbSAnLi4vZW1pdHRlci9FbWl0dGVyJztcbmltcG9ydCB7IElOVEVHUkFUSU9OX1RZUEVfRVVMRVIgfSBmcm9tICcuLi9tYXRoL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQT09MX01BWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUG9vbCBmcm9tICcuL1Bvb2wnO1xuaW1wb3J0IGZyb21KU09OIGZyb20gJy4vZnJvbUpTT04nO1xuaW1wb3J0IGZyb21KU09OQXN5bmMgZnJvbSAnLi9mcm9tSlNPTkFzeW5jJztcbmltcG9ydCB7IENPUkVfVFlQRV9TWVNURU0gYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFRoZSBjb3JlIG9mIHRoZSB0aHJlZS1zeXN0ZW0gcGFydGljbGUgZW5naW5lLlxuICogQSBTeXN0ZW0gaW5zdGFuY2UgY2FuIGNvbnRhaW4gbXVsdGlwbGUgZW1pdHRlcnMsIGVhY2ggd2l0aCB0aGVpciBvd24gaW5pdGlhbGl6ZXJzXG4gKiBhbmQgYmVoYXZpb3Vycy5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN5c3RlbSB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgU3lzdGVtIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gVEhSRUUgLSBUaHJlZUpzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlUGFydGljbGVzPVBPT0xfTUFYXSAtIFRoZSBudW1iZXIgb2YgcGFydGljbGVzIHRvIHN0YXJ0IHdpdGhcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtpbnRlZ3JhdGlvblR5cGU9SU5URUdSQVRJT05fVFlQRV9FVUxFUl0gLSBUaGUgaW50ZWdyYXRpb24gdHlwZSB0byB1c2VcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcmVQYXJ0aWNsZXMgPSBQT09MX01BWCxcbiAgICBpbnRlZ3JhdGlvblR5cGUgPSBJTlRFR1JBVElPTl9UWVBFX0VVTEVSXG4gICkge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjbGFzcyB0eXBlLlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIERldGVybWluZXMgaWYgdGhlIHN5c3RlbSBjYW4gdXBkYXRlIG9yIG5vdC4gU2V0IHRvIGZhbHNlIHdoZW4gZGVzdHJveWluZ1xuICAgICAqIHRvIGVuc3VyZSB0aGF0IGV4dGVybmFsIGNhbGxzIHRvIHVwZGF0ZSBkbyBub3QgdGhyb3cgZXJyb3JzLlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuY2FuVXBkYXRlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBudW1iZXIgb2YgcGFydGljbGVzIHRvIHN0YXJ0IHdpdGguXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnByZVBhcnRpY2xlcyA9IHByZVBhcnRpY2xlcztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBpbnRlZ3JhdGlvbiBhbGdvcml0aG0gdHlwZSB0byB1c2UuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5pbnRlZ3JhdGlvblR5cGUgPSBpbnRlZ3JhdGlvblR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgZW1pdHRlcnMgaW4gdGhlIHBhcnRpY2xlIHN5c3RlbS5cbiAgICAgKiBAdHlwZSB7YXJyYXk8RW1pdHRlcj59XG4gICAgICovXG4gICAgdGhpcy5lbWl0dGVycyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHJlbmRlcmVycyBmb3IgdGhlIHN5c3RlbS5cbiAgICAgKiBAdHlwZSB7YXJyYXk8UmVuZGVyZXI+fVxuICAgICAqL1xuICAgIHRoaXMucmVuZGVyZXJzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBBIHBvb2wgdXNlZCB0byBtYW5hZ2UgdGhlIGludGVybmFsIHN5c3RlbSBjYWNoZSBvZiBvYmplY3RzXG4gICAgICogQHR5cGUge1Bvb2x9XG4gICAgICovXG4gICAgdGhpcy5wb29sID0gbmV3IFBvb2woKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIEludGVybmFsIGV2ZW50IGRpc3BhdGNoZXJcbiAgICAgKiBAdHlwZSB7RXZlbnREaXNwYXRjaGVyfVxuICAgICAqL1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyID0gbmV3IEV2ZW50RGlzcGF0Y2hlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBTeXN0ZW0gaW5zdGFuY2UgZnJvbSBhIEpTT04gb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0ganNvbiAtIFRoZSBKU09OIHRvIGNyZWF0ZSB0aGUgU3lzdGVtIGluc3RhbmNlIGZyb21cbiAgICogQHBhcmFtIHtvYmplY3R9IFRIUkVFIC0gVGhlIFdlYiBHTCBBcGkgdG8gdXNlIGVnLiwgVEhSRUVcbiAgICogQHJldHVybiB7U3lzdGVtfVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUpTT05Bc3luYyBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgVEhSRUUpIHtcbiAgICByZXR1cm4gZnJvbUpTT04oanNvbiwgVEhSRUUsIFN5c3RlbSwgRW1pdHRlcik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSBTeXN0ZW0gaW5zdGFuY2UgZnJvbSBKU09OIGFzeW5jaHJvbm91c2x5LiBFbnN1cmVzIGFsbCB0ZXh0dXJlcyBhcmVcbiAgICogZnVsbHkgbG9hZGVkIGJlZm9yZSByZXNvbHZpbmcgd2l0aCB0aGUgaW5zdGFudGlhdGVkIFN5c3RlbSBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjcmVhdGUgdGhlIFN5c3RlbSBpbnN0YW5jZSBmcm9tXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBUSFJFRSAtIFRoZSBXZWIgR0wgQXBpIHRvIHVzZSBlZy4sIFRIUkVFXG4gICAqIEBwYXJhbSB7P29iamVjdH0gb3B0aW9ucyAtIE9wdGlvbmFsIGNvbmZpZyBvcHRpb25zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8U3lzdGVtPn1cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNPTkFzeW5jKGpzb24sIFRIUkVFLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGZyb21KU09OQXN5bmMoanNvbiwgVEhSRUUsIFN5c3RlbSwgRW1pdHRlciwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUHJveHkgbWV0aG9kIGZvciB0aGUgaW50ZXJuYWwgZXZlbnQgZGlzcGF0Y2hlcidzIGRpc3BhdGNoRXZlbnQgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQgLSBUaGUgZXZlbnQgdG8gZGlzcGF0Y2hcbiAgICogQHBhcmFtIHtvYmplY3Q8U3lzdGVtfEVtaXR0ZXJ8UGFydGljbGU+fSBbdGFyZ2V0PXRoaXNdIC0gVGhlIGV2ZW50IHRhcmdldFxuICAgKi9cbiAgZGlzcGF0Y2goZXZlbnQsIHRhcmdldCA9IHRoaXMpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZW5kZXJlciB0byB0aGUgU3lzdGVtIGluc3RhbmNlIGFuZCBpbml0aWFsaXplcyBpdC5cbiAgICpcbiAgICogQHBhcmFtIHtSZW5kZXJlcn0gcmVuZGVyZXIgLSBUaGUgcmVuZGVyZXIgdG8gYWRkXG4gICAqIEByZXR1cm4ge1N5c3RlbX1cbiAgICovXG4gIGFkZFJlbmRlcmVyKHJlbmRlcmVyKSB7XG4gICAgdGhpcy5yZW5kZXJlcnMucHVzaChyZW5kZXJlcik7XG4gICAgcmVuZGVyZXIuaW5pdCh0aGlzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSByZW5kZXJlciBmcm9tIHRoZSBTeXN0ZW0gaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVuZGVyZXJ9IHJlbmRlcmVyXG4gICAqIEByZXR1cm4ge1N5c3RlbX1cbiAgICovXG4gIHJlbW92ZVJlbmRlcmVyKHJlbmRlcmVyKSB7XG4gICAgdGhpcy5yZW5kZXJlcnMuc3BsaWNlKHRoaXMucmVuZGVyZXJzLmluZGV4T2YocmVuZGVyZXIpLCAxKTtcbiAgICByZW5kZXJlci5yZW1vdmUodGhpcyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGVtaXR0ZXIgdG8gdGhlIFN5c3RlbSBpbnN0YW5jZS5cbiAgICogRGlzcGF0Y2hlcyB0aGUgRU1JVFRFUl9BRERFRCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtFbWl0dGVyfSBlbWl0dGVyIC0gVGhlIGVtaXR0ZXIgdG8gYWRkXG4gICAqIEByZXR1cm4ge1N5c3RlbX1cbiAgICovXG4gIGFkZEVtaXR0ZXIoZW1pdHRlcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lbWl0dGVycy5sZW5ndGg7XG5cbiAgICBlbWl0dGVyLnBhcmVudCA9IHRoaXM7XG4gICAgZW1pdHRlci5pbmRleCA9IGluZGV4O1xuXG4gICAgdGhpcy5lbWl0dGVycy5wdXNoKGVtaXR0ZXIpO1xuICAgIHRoaXMuZGlzcGF0Y2goRU1JVFRFUl9BRERFRCwgZW1pdHRlcik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFuIGVtaXR0ZXIgZnJvbSB0aGUgU3lzdGVtIGluc3RhbmNlLlxuICAgKiBEaXNwYXRjaGVzIHRoZSBFTUlUVEVSX1JFTU9WRUQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7RW1pdHRlcn0gZW1pdHRlciAtIFRoZSBlbWl0dGVyIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJuIHtTeXN0ZW19XG4gICAqL1xuICByZW1vdmVFbWl0dGVyKGVtaXR0ZXIpIHtcbiAgICBpZiAoZW1pdHRlci5wYXJlbnQgIT09IHRoaXMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGVtaXR0ZXIucGFyZW50ID0gbnVsbDtcbiAgICBlbWl0dGVyLmluZGV4ID0gdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5lbWl0dGVycy5zcGxpY2UodGhpcy5lbWl0dGVycy5pbmRleE9mKGVtaXR0ZXIpLCAxKTtcbiAgICB0aGlzLmRpc3BhdGNoKEVNSVRURVJfUkVNT1ZFRCwgZW1pdHRlcik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaXJlcyB1cCBsaWZlIGN5Y2xlIG1ldGhvZHMgYW5kIGNhdXNlcyBhIHN5c3RlbSdzIGVtaXR0ZXJzIHRvIGVtaXQgcGFydGljbGVzLlxuICAgKiBFeHBlY3RzIGVtaXR0ZXJzIHRvIGhhdmUgdGhlaXIgdG90YWxFbWl0VGltZXMgYW5kIGxpZmUgc2V0IGFscmVhZHkuXG4gICAqIEluaWZuaXRlIHN5c3RlbXMgd2lsbCByZXNvbHZlIGltbWVkaWF0ZWx5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaG9va3MgLSBGdW5jdGlvbnMgdG8gaG9vayBpbnRvIHRoZSBsaWZlIGN5Y2xlIEFQSVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBob29rcy5vblN0YXJ0IC0gQ2FsbGVkIHdoZW4gdGhlIHN5c3RlbSBzdGFydHMgdG8gZW1pdCBwYXJ0aWNsZXNcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gaG9va3Mub25VcGRhdGUgLSBDYWxsZWQgZWFjaCB0aW1lIHRoZSBzeXN0ZW0gdXBkYXRlc1xuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBob29rcy5vbkVuZCAtIENhbGxlZCB3aGVuIHRoZSBzeXN0ZW0ncyBlbWl0dGVycyBoYXZlIGFsbCBkaWVkXG4gICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAqL1xuICBlbWl0KHsgb25TdGFydCwgb25VcGRhdGUsIG9uRW5kIH0pIHtcbiAgICBpZiAob25TdGFydCkge1xuICAgICAgb25TdGFydCgpO1xuICAgIH1cblxuICAgIGlmIChvblVwZGF0ZSkge1xuICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihTWVNURU1fVVBEQVRFLCBvblVwZGF0ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZW1pdHRlcnMgPSB0aGlzLmVtaXR0ZXJzLm1hcChlbWl0dGVyID0+IHtcbiAgICAgIGNvbnN0IHsgbGlmZSB9ID0gZW1pdHRlcjtcblxuICAgICAgaWYgKGxpZmUgPT09IEluZmluaXR5KSB7XG4gICAgICAgIGlmIChvbkVuZCkge1xuICAgICAgICAgIG9uRW5kKCk7XG4gICAgICAgIH1cblxuICAgICAgICBlbWl0dGVyLmV4cGVyaW1lbnRhbF9lbWl0KCk7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgIGVtaXR0ZXIuYWRkT25FbWl0dGVyRGVhZEV2ZW50TGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICAgIGlmIChvbkVuZCkge1xuICAgICAgICAgICAgb25FbmQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVtaXR0ZXIuZXhwZXJpbWVudGFsX2VtaXQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChlbWl0dGVycyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwYXJ0aWNsZSBzeXN0ZW0gYmFzZWQgb24gdGhlIGRlbHRhIHBhc3NlZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYW5pbWF0ZSA9ICgpID0+IHtcbiAgICogICB0aHJlZVJlbmRlcmVyLnJlbmRlcih0aHJlZVNjZW5lLCB0aHJlZUNhbWVyYSk7XG4gICAqICAgc3lzdGVtLnVwZGF0ZSgpO1xuICAgKiAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcbiAgICogfVxuICAgKiBhbmltYXRlKCk7XG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkZWx0YSAtIERlbHRhIHRpbWVcbiAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICovXG4gIHVwZGF0ZShkZWx0YSA9IERFRkFVTFRfU1lTVEVNX0RFTFRBKSB7XG4gICAgY29uc3QgZCA9IGRlbHRhIHx8IERFRkFVTFRfU1lTVEVNX0RFTFRBO1xuXG4gICAgaWYgKHRoaXMuY2FuVXBkYXRlKSB7XG4gICAgICBpZiAoZCA+IDApIHtcbiAgICAgICAgbGV0IGkgPSB0aGlzLmVtaXR0ZXJzLmxlbmd0aDtcblxuICAgICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgICAgY29uc3QgZW1pdHRlciA9IHRoaXMuZW1pdHRlcnNbaV07XG5cbiAgICAgICAgICBlbWl0dGVyLnVwZGF0ZShkKTtcbiAgICAgICAgICBlbWl0dGVyLmlzRW1pdHRpbmcgJiYgdGhpcy5kaXNwYXRjaChTWVNURU1fVVBEQVRFKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmRpc3BhdGNoKFNZU1RFTV9VUERBVEVfQUZURVIpO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgY291bnQgb2YgdGhlIHRvdGFsIG51bWJlciBvZiBwYXJ0aWNsZXMgaW4gdGhlIHN5c3RlbS5cbiAgICpcbiAgICogQHJldHVybiB7aW50ZWdlcn1cbiAgICovXG4gIGdldENvdW50KCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZW1pdHRlcnMubGVuZ3RoO1xuXG4gICAgbGV0IHRvdGFsID0gMDtcblxuICAgIGxldCBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB0b3RhbCArPSB0aGlzLmVtaXR0ZXJzW2ldLnBhcnRpY2xlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvdGFsO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGFsbCBlbWl0dGVycywgcmVuZGVyZXJzIGFuZCB0aGUgTmVidWxhIHBvb2wuXG4gICAqIEVuc3VyZXMgdGhhdCB0aGlzLnVwZGF0ZSB3aWxsIG5vdCBwZXJmb3JtIGFueSBvcGVyYXRpb25zIHdoaWxlIHRoZSBzeXN0ZW1cbiAgICogaXMgYmVpbmcgZGVzdHJveWVkLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5lbWl0dGVycy5sZW5ndGg7XG5cbiAgICB0aGlzLmNhblVwZGF0ZSA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgZSA9IDA7IGUgPCBsZW5ndGg7IGUrKykge1xuICAgICAgdGhpcy5lbWl0dGVyc1tlXSAmJiB0aGlzLmVtaXR0ZXJzW2VdLmRlc3Ryb3koKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmVtaXR0ZXJzW2VdO1xuICAgIH1cblxuICAgIGZvciAobGV0IHIgPSAwOyByIDwgbGVuZ3RoOyByKyspIHtcbiAgICAgIGlmICh0aGlzLnJlbmRlcmVyc1tyXSAmJiB0aGlzLnJlbmRlcmVyc1tyXS5kZXN0cm95KSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXJzW3JdLmRlc3Ryb3koKTtcbiAgICAgICAgZGVsZXRlIHRoaXMucmVuZGVyZXJzW3JdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZW1pdHRlcnMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnBvb2wuZGVzdHJveSgpO1xuICAgIHRoaXMuY2FuVXBkYXRlID0gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
366
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL1N5c3RlbS5qcyJdLCJuYW1lcyI6WyJTeXN0ZW0iLCJwcmVQYXJ0aWNsZXMiLCJQT09MX01BWCIsImludGVncmF0aW9uVHlwZSIsIklOVEVHUkFUSU9OX1RZUEVfRVVMRVIiLCJ0eXBlIiwiY2FuVXBkYXRlIiwiZW1pdHRlcnMiLCJyZW5kZXJlcnMiLCJwb29sIiwiUG9vbCIsImV2ZW50RGlzcGF0Y2hlciIsIkV2ZW50RGlzcGF0Y2hlciIsImV2ZW50IiwidGFyZ2V0IiwiZGlzcGF0Y2hFdmVudCIsInJlbmRlcmVyIiwicHVzaCIsImluaXQiLCJzcGxpY2UiLCJpbmRleE9mIiwicmVtb3ZlIiwiZW1pdHRlciIsImluZGV4IiwibGVuZ3RoIiwicGFyZW50IiwiZGlzcGF0Y2giLCJFTUlUVEVSX0FEREVEIiwidW5kZWZpbmVkIiwiRU1JVFRFUl9SRU1PVkVEIiwib25TdGFydCIsIm9uVXBkYXRlIiwib25FbmQiLCJhZGRFdmVudExpc3RlbmVyIiwiU1lTVEVNX1VQREFURSIsIm1hcCIsImxpZmUiLCJJbmZpbml0eSIsImV4cGVyaW1lbnRhbF9lbWl0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJhZGRPbkVtaXR0ZXJEZWFkRXZlbnRMaXN0ZW5lciIsImFsbCIsImUiLCJjb25zb2xlIiwid2FybiIsImRlbHRhIiwiREVGQVVMVF9TWVNURU1fREVMVEEiLCJkIiwiaSIsInVwZGF0ZSIsInBhcnRpY2xlcyIsIlNZU1RFTV9VUERBVEVfQUZURVIiLCJ0b3RhbCIsImRlc3Ryb3kiLCJyIiwianNvbiIsIlRIUkVFIiwiRW1pdHRlciIsIm9wdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQU9BOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDcUJBLE07QUFDbkI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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bUIsQ0FBQyxFQUE3QixFQUFpQztBQUMvQixhQUFLcEMsUUFBTCxDQUFjb0MsQ0FBZCxLQUFvQixLQUFLcEMsUUFBTCxDQUFjb0MsQ0FBZCxFQUFpQlcsT0FBakIsRUFBcEI7QUFDQSxlQUFPLEtBQUsvQyxRQUFMLENBQWNvQyxDQUFkLENBQVA7QUFDRDs7QUFFRCxXQUFLLElBQUlZLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcvQixNQUFwQixFQUE0QitCLENBQUMsRUFBN0IsRUFBaUM7QUFDL0IsWUFBSSxLQUFLL0MsU0FBTCxDQUFlK0MsQ0FBZixLQUFxQixLQUFLL0MsU0FBTCxDQUFlK0MsQ0FBZixFQUFrQkQsT0FBM0MsRUFBb0Q7QUFDbEQsZUFBSzlDLFNBQUwsQ0FBZStDLENBQWYsRUFBa0JELE9BQWxCO0FBQ0EsaUJBQU8sS0FBSzlDLFNBQUwsQ0FBZStDLENBQWYsQ0FBUDtBQUNEO0FBQ0Y7O0FBRUQsV0FBS2hELFFBQUwsQ0FBY2lCLE1BQWQsR0FBdUIsQ0FBdkI7QUFDQSxXQUFLZixJQUFMLENBQVU2QyxPQUFWO0FBQ0EsV0FBS2hELFNBQUwsR0FBaUIsSUFBakI7QUFDRDs7OzZCQW5PZWtELEksRUFBTUMsSyxFQUFPO0FBQzNCLGFBQU8sMkJBQVNELElBQVQsRUFBZUMsS0FBZixFQUFzQnpELE1BQXRCLEVBQThCMEQsbUJBQTlCLENBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztrQ0FDdUJGLEksRUFBTUMsSyxFQUFPRSxPLEVBQVM7QUFDekMsYUFBTyxnQ0FBY0gsSUFBZCxFQUFvQkMsS0FBcEIsRUFBMkJ6RCxNQUEzQixFQUFtQzBELG1CQUFuQyxFQUE0Q0MsT0FBNUMsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV2ZW50RGlzcGF0Y2hlciwge1xuICBFTUlUVEVSX0FEREVELFxuICBFTUlUVEVSX1JFTU9WRUQsXG4gIFNZU1RFTV9VUERBVEUsXG4gIFNZU1RFTV9VUERBVEVfQUZURVIsXG59IGZyb20gJy4uL2V2ZW50cyc7XG5cbmltcG9ydCB7IERFRkFVTFRfU1lTVEVNX0RFTFRBIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IEVtaXR0ZXIgZnJvbSAnLi4vZW1pdHRlci9FbWl0dGVyJztcbmltcG9ydCB7IElOVEVHUkFUSU9OX1RZUEVfRVVMRVIgfSBmcm9tICcuLi9tYXRoL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQT09MX01BWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUG9vbCBmcm9tICcuL1Bvb2wnO1xuaW1wb3J0IGZyb21KU09OIGZyb20gJy4vZnJvbUpTT04nO1xuaW1wb3J0IGZyb21KU09OQXN5bmMgZnJvbSAnLi9mcm9tSlNPTkFzeW5jJztcbmltcG9ydCB7IENPUkVfVFlQRV9TWVNURU0gYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFRoZSBjb3JlIG9mIHRoZSB0aHJlZS1zeXN0ZW0gcGFydGljbGUgZW5naW5lLlxuICogQSBTeXN0ZW0gaW5zdGFuY2UgY2FuIGNvbnRhaW4gbXVsdGlwbGUgZW1pdHRlcnMsIGVhY2ggd2l0aCB0aGVpciBvd24gaW5pdGlhbGl6ZXJzXG4gKiBhbmQgYmVoYXZpb3Vycy5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN5c3RlbSB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgU3lzdGVtIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gVEhSRUUgLSBUaHJlZUpzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlUGFydGljbGVzPVBPT0xfTUFYXSAtIFRoZSBudW1iZXIgb2YgcGFydGljbGVzIHRvIHN0YXJ0IHdpdGhcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtpbnRlZ3JhdGlvblR5cGU9SU5URUdSQVRJT05fVFlQRV9FVUxFUl0gLSBUaGUgaW50ZWdyYXRpb24gdHlwZSB0byB1c2VcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcmVQYXJ0aWNsZXMgPSBQT09MX01BWCxcbiAgICBpbnRlZ3JhdGlvblR5cGUgPSBJTlRFR1JBVElPTl9UWVBFX0VVTEVSXG4gICkge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjbGFzcyB0eXBlLlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIERldGVybWluZXMgaWYgdGhlIHN5c3RlbSBjYW4gdXBkYXRlIG9yIG5vdC4gU2V0IHRvIGZhbHNlIHdoZW4gZGVzdHJveWluZ1xuICAgICAqIHRvIGVuc3VyZSB0aGF0IGV4dGVybmFsIGNhbGxzIHRvIHVwZGF0ZSBkbyBub3QgdGhyb3cgZXJyb3JzLlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuY2FuVXBkYXRlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBudW1iZXIgb2YgcGFydGljbGVzIHRvIHN0YXJ0IHdpdGguXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnByZVBhcnRpY2xlcyA9IHByZVBhcnRpY2xlcztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBpbnRlZ3JhdGlvbiBhbGdvcml0aG0gdHlwZSB0byB1c2UuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5pbnRlZ3JhdGlvblR5cGUgPSBpbnRlZ3JhdGlvblR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgZW1pdHRlcnMgaW4gdGhlIHBhcnRpY2xlIHN5c3RlbS5cbiAgICAgKiBAdHlwZSB7YXJyYXk8RW1pdHRlcj59XG4gICAgICovXG4gICAgdGhpcy5lbWl0dGVycyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHJlbmRlcmVycyBmb3IgdGhlIHN5c3RlbS5cbiAgICAgKiBAdHlwZSB7YXJyYXk8UmVuZGVyZXI+fVxuICAgICAqL1xuICAgIHRoaXMucmVuZGVyZXJzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBBIHBvb2wgdXNlZCB0byBtYW5hZ2UgdGhlIGludGVybmFsIHN5c3RlbSBjYWNoZSBvZiBvYmplY3RzXG4gICAgICogQHR5cGUge1Bvb2x9XG4gICAgICovXG4gICAgdGhpcy5wb29sID0gbmV3IFBvb2woKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIEludGVybmFsIGV2ZW50IGRpc3BhdGNoZXJcbiAgICAgKiBAdHlwZSB7RXZlbnREaXNwYXRjaGVyfVxuICAgICAqL1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyID0gbmV3IEV2ZW50RGlzcGF0Y2hlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBTeXN0ZW0gaW5zdGFuY2UgZnJvbSBhIEpTT04gb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0ganNvbiAtIFRoZSBKU09OIHRvIGNyZWF0ZSB0aGUgU3lzdGVtIGluc3RhbmNlIGZyb21cbiAgICogQHBhcmFtIHtvYmplY3R9IFRIUkVFIC0gVGhlIFdlYiBHTCBBcGkgdG8gdXNlIGVnLiwgVEhSRUVcbiAgICogQHJldHVybiB7U3lzdGVtfVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUpTT05Bc3luYyBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgVEhSRUUpIHtcbiAgICByZXR1cm4gZnJvbUpTT04oanNvbiwgVEhSRUUsIFN5c3RlbSwgRW1pdHRlcik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSBTeXN0ZW0gaW5zdGFuY2UgZnJvbSBKU09OIGFzeW5jaHJvbm91c2x5LiBFbnN1cmVzIGFsbCB0ZXh0dXJlcyBhcmVcbiAgICogZnVsbHkgbG9hZGVkIGJlZm9yZSByZXNvbHZpbmcgd2l0aCB0aGUgaW5zdGFudGlhdGVkIFN5c3RlbSBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjcmVhdGUgdGhlIFN5c3RlbSBpbnN0YW5jZSBmcm9tXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBUSFJFRSAtIFRoZSBXZWIgR0wgQXBpIHRvIHVzZSBlZy4sIFRIUkVFXG4gICAqIEBwYXJhbSB7P29iamVjdH0gb3B0aW9ucyAtIE9wdGlvbmFsIGNvbmZpZyBvcHRpb25zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8U3lzdGVtPn1cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNPTkFzeW5jKGpzb24sIFRIUkVFLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGZyb21KU09OQXN5bmMoanNvbiwgVEhSRUUsIFN5c3RlbSwgRW1pdHRlciwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUHJveHkgbWV0aG9kIGZvciB0aGUgaW50ZXJuYWwgZXZlbnQgZGlzcGF0Y2hlcidzIGRpc3BhdGNoRXZlbnQgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQgLSBUaGUgZXZlbnQgdG8gZGlzcGF0Y2hcbiAgICogQHBhcmFtIHtvYmplY3Q8U3lzdGVtfEVtaXR0ZXJ8UGFydGljbGU+fSBbdGFyZ2V0PXRoaXNdIC0gVGhlIGV2ZW50IHRhcmdldFxuICAgKi9cbiAgZGlzcGF0Y2goZXZlbnQsIHRhcmdldCA9IHRoaXMpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZW5kZXJlciB0byB0aGUgU3lzdGVtIGluc3RhbmNlIGFuZCBpbml0aWFsaXplcyBpdC5cbiAgICpcbiAgICogQHBhcmFtIHtSZW5kZXJlcn0gcmVuZGVyZXIgLSBUaGUgcmVuZGVyZXIgdG8gYWRkXG4gICAqIEByZXR1cm4ge1N5c3RlbX1cbiAgICovXG4gIGFkZFJlbmRlcmVyKHJlbmRlcmVyKSB7XG4gICAgdGhpcy5yZW5kZXJlcnMucHVzaChyZW5kZXJlcik7XG4gICAgcmVuZGVyZXIuaW5pdCh0aGlzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSByZW5kZXJlciBmcm9tIHRoZSBTeXN0ZW0gaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVuZGVyZXJ9IHJlbmRlcmVyXG4gICAqIEByZXR1cm4ge1N5c3RlbX1cbiAgICovXG4gIHJlbW92ZVJlbmRlcmVyKHJlbmRlcmVyKSB7XG4gICAgdGhpcy5yZW5kZXJlcnMuc3BsaWNlKHRoaXMucmVuZGVyZXJzLmluZGV4T2YocmVuZGVyZXIpLCAxKTtcbiAgICByZW5kZXJlci5yZW1vdmUodGhpcyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGVtaXR0ZXIgdG8gdGhlIFN5c3RlbSBpbnN0YW5jZS5cbiAgICogRGlzcGF0Y2hlcyB0aGUgRU1JVFRFUl9BRERFRCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtFbWl0dGVyfSBlbWl0dGVyIC0gVGhlIGVtaXR0ZXIgdG8gYWRkXG4gICAqIEByZXR1cm4ge1N5c3RlbX1cbiAgICovXG4gIGFkZEVtaXR0ZXIoZW1pdHRlcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lbWl0dGVycy5sZW5ndGg7XG5cbiAgICBlbWl0dGVyLnBhcmVudCA9IHRoaXM7XG4gICAgZW1pdHRlci5pbmRleCA9IGluZGV4O1xuXG4gICAgdGhpcy5lbWl0dGVycy5wdXNoKGVtaXR0ZXIpO1xuICAgIHRoaXMuZGlzcGF0Y2goRU1JVFRFUl9BRERFRCwgZW1pdHRlcik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFuIGVtaXR0ZXIgZnJvbSB0aGUgU3lzdGVtIGluc3RhbmNlLlxuICAgKiBEaXNwYXRjaGVzIHRoZSBFTUlUVEVSX1JFTU9WRUQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7RW1pdHRlcn0gZW1pdHRlciAtIFRoZSBlbWl0dGVyIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJuIHtTeXN0ZW19XG4gICAqL1xuICByZW1vdmVFbWl0dGVyKGVtaXR0ZXIpIHtcbiAgICBpZiAoZW1pdHRlci5wYXJlbnQgIT09IHRoaXMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGVtaXR0ZXIucGFyZW50ID0gbnVsbDtcbiAgICBlbWl0dGVyLmluZGV4ID0gdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5lbWl0dGVycy5zcGxpY2UodGhpcy5lbWl0dGVycy5pbmRleE9mKGVtaXR0ZXIpLCAxKTtcbiAgICB0aGlzLmRpc3BhdGNoKEVNSVRURVJfUkVNT1ZFRCwgZW1pdHRlcik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaXJlcyB1cCBsaWZlIGN5Y2xlIG1ldGhvZHMgYW5kIGNhdXNlcyBhIHN5c3RlbSdzIGVtaXR0ZXJzIHRvIGVtaXQgcGFydGljbGVzLlxuICAgKiBFeHBlY3RzIGVtaXR0ZXJzIHRvIGhhdmUgdGhlaXIgdG90YWxFbWl0VGltZXMgYW5kIGxpZmUgc2V0IGFscmVhZHkuXG4gICAqIEluaWZuaXRlIHN5c3RlbXMgd2lsbCByZXNvbHZlIGltbWVkaWF0ZWx5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaG9va3MgLSBGdW5jdGlvbnMgdG8gaG9vayBpbnRvIHRoZSBsaWZlIGN5Y2xlIEFQSVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBob29rcy5vblN0YXJ0IC0gQ2FsbGVkIHdoZW4gdGhlIHN5c3RlbSBzdGFydHMgdG8gZW1pdCBwYXJ0aWNsZXNcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gaG9va3Mub25VcGRhdGUgLSBDYWxsZWQgZWFjaCB0aW1lIHRoZSBzeXN0ZW0gdXBkYXRlc1xuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBob29rcy5vbkVuZCAtIENhbGxlZCB3aGVuIHRoZSBzeXN0ZW0ncyBlbWl0dGVycyBoYXZlIGFsbCBkaWVkXG4gICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAqL1xuICBlbWl0KHsgb25TdGFydCwgb25VcGRhdGUsIG9uRW5kIH0pIHtcbiAgICBpZiAob25TdGFydCkge1xuICAgICAgb25TdGFydCgpO1xuICAgIH1cblxuICAgIGlmIChvblVwZGF0ZSkge1xuICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihTWVNURU1fVVBEQVRFLCBvblVwZGF0ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZW1pdHRlcnMgPSB0aGlzLmVtaXR0ZXJzLm1hcChlbWl0dGVyID0+IHtcbiAgICAgIGNvbnN0IHsgbGlmZSB9ID0gZW1pdHRlcjtcblxuICAgICAgaWYgKGxpZmUgPT09IEluZmluaXR5KSB7XG4gICAgICAgIGlmIChvbkVuZCkge1xuICAgICAgICAgIG9uRW5kKCk7XG4gICAgICAgIH1cblxuICAgICAgICBlbWl0dGVyLmV4cGVyaW1lbnRhbF9lbWl0KCk7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgIGVtaXR0ZXIuYWRkT25FbWl0dGVyRGVhZEV2ZW50TGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICAgIGlmIChvbkVuZCkge1xuICAgICAgICAgICAgb25FbmQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVtaXR0ZXIuZXhwZXJpbWVudGFsX2VtaXQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChlbWl0dGVycyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwYXJ0aWNsZSBzeXN0ZW0gYmFzZWQgb24gdGhlIGRlbHRhIHBhc3NlZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYW5pbWF0ZSA9ICgpID0+IHtcbiAgICogICB0aHJlZVJlbmRlcmVyLnJlbmRlcih0aHJlZVNjZW5lLCB0aHJlZUNhbWVyYSk7XG4gICAqICAgc3lzdGVtLnVwZGF0ZSgpO1xuICAgKiAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcbiAgICogfVxuICAgKiBhbmltYXRlKCk7XG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkZWx0YSAtIERlbHRhIHRpbWVcbiAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICovXG4gIHVwZGF0ZShkZWx0YSA9IERFRkFVTFRfU1lTVEVNX0RFTFRBKSB7XG4gICAgY29uc3QgZCA9IGRlbHRhIHx8IERFRkFVTFRfU1lTVEVNX0RFTFRBO1xuXG4gICAgaWYgKHRoaXMuY2FuVXBkYXRlKSB7XG4gICAgICBpZiAoZCA+IDApIHtcbiAgICAgICAgbGV0IGkgPSB0aGlzLmVtaXR0ZXJzLmxlbmd0aDtcblxuICAgICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgICAgY29uc3QgZW1pdHRlciA9IHRoaXMuZW1pdHRlcnNbaV07XG5cbiAgICAgICAgICBlbWl0dGVyLnVwZGF0ZShkKTtcbiAgICAgICAgICBlbWl0dGVyLnBhcnRpY2xlcy5sZW5ndGggJiYgdGhpcy5kaXNwYXRjaChTWVNURU1fVVBEQVRFKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmRpc3BhdGNoKFNZU1RFTV9VUERBVEVfQUZURVIpO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgY291bnQgb2YgdGhlIHRvdGFsIG51bWJlciBvZiBwYXJ0aWNsZXMgaW4gdGhlIHN5c3RlbS5cbiAgICpcbiAgICogQHJldHVybiB7aW50ZWdlcn1cbiAgICovXG4gIGdldENvdW50KCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZW1pdHRlcnMubGVuZ3RoO1xuXG4gICAgbGV0IHRvdGFsID0gMDtcblxuICAgIGxldCBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB0b3RhbCArPSB0aGlzLmVtaXR0ZXJzW2ldLnBhcnRpY2xlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvdGFsO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGFsbCBlbWl0dGVycywgcmVuZGVyZXJzIGFuZCB0aGUgTmVidWxhIHBvb2wuXG4gICAqIEVuc3VyZXMgdGhhdCB0aGlzLnVwZGF0ZSB3aWxsIG5vdCBwZXJmb3JtIGFueSBvcGVyYXRpb25zIHdoaWxlIHRoZSBzeXN0ZW1cbiAgICogaXMgYmVpbmcgZGVzdHJveWVkLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5lbWl0dGVycy5sZW5ndGg7XG5cbiAgICB0aGlzLmNhblVwZGF0ZSA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgZSA9IDA7IGUgPCBsZW5ndGg7IGUrKykge1xuICAgICAgdGhpcy5lbWl0dGVyc1tlXSAmJiB0aGlzLmVtaXR0ZXJzW2VdLmRlc3Ryb3koKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmVtaXR0ZXJzW2VdO1xuICAgIH1cblxuICAgIGZvciAobGV0IHIgPSAwOyByIDwgbGVuZ3RoOyByKyspIHtcbiAgICAgIGlmICh0aGlzLnJlbmRlcmVyc1tyXSAmJiB0aGlzLnJlbmRlcmVyc1tyXS5kZXN0cm95KSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXJzW3JdLmRlc3Ryb3koKTtcbiAgICAgICAgZGVsZXRlIHRoaXMucmVuZGVyZXJzW3JdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZW1pdHRlcnMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnBvb2wuZGVzdHJveSgpO1xuICAgIHRoaXMuY2FuVXBkYXRlID0gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
@@ -137,7 +137,7 @@ var DEFAULT_SYSTEM_DELTA = 0.0167;
|
|
|
137
137
|
*/
|
|
138
138
|
|
|
139
139
|
exports.DEFAULT_SYSTEM_DELTA = DEFAULT_SYSTEM_DELTA;
|
|
140
|
-
var SUPPORTED_JSON_INITIALIZER_TYPES = [_types2.INITIALIZER_TYPE_POSITION, _types2.INITIALIZER_TYPE_LIFE, _types2.INITIALIZER_TYPE_RADIUS, _types2.INITIALIZER_TYPE_MASS, _types2.INITIALIZER_TYPE_BODY, _types2.INITIALIZER_TYPE_BODY_SPRITE, _types2.INITIALIZER_TYPE_TEXTURE, _types2.INITIALIZER_TYPE_POLAR_VELOCITY, _types2.INITIALIZER_TYPE_RADIAL_VELOCITY, _types2.INITIALIZER_TYPE_VECTOR_VELOCITY];
|
|
140
|
+
var SUPPORTED_JSON_INITIALIZER_TYPES = [_types2.INITIALIZER_TYPE_POSITION, _types2.INITIALIZER_TYPE_ROTATION, _types2.INITIALIZER_TYPE_LIFE, _types2.INITIALIZER_TYPE_RADIUS, _types2.INITIALIZER_TYPE_MASS, _types2.INITIALIZER_TYPE_BODY, _types2.INITIALIZER_TYPE_BODY_SPRITE, _types2.INITIALIZER_TYPE_TEXTURE, _types2.INITIALIZER_TYPE_POLAR_VELOCITY, _types2.INITIALIZER_TYPE_RADIAL_VELOCITY, _types2.INITIALIZER_TYPE_VECTOR_VELOCITY];
|
|
141
141
|
/**
|
|
142
142
|
* @desc The types of behaviours supported by the System.fromJSON method.
|
|
143
143
|
* @type {array<string>}
|
|
@@ -160,4 +160,4 @@ var SUPPORTED_JSON_RENDERER_TYPES = [_types4.RENDERER_TYPE_SPRITE];
|
|
|
160
160
|
exports.SUPPORTED_JSON_RENDERER_TYPES = SUPPORTED_JSON_RENDERER_TYPES;
|
|
161
161
|
var SUPPORTED_JSON_ZONE_TYPES = [_types3.ZONE_TYPE_BOX, _types3.ZONE_TYPE_LINE, _types3.ZONE_TYPE_MESH, _types3.ZONE_TYPE_POINT, _types3.ZONE_TYPE_SPHERE];
|
|
162
162
|
exports.SUPPORTED_JSON_ZONE_TYPES = SUPPORTED_JSON_ZONE_TYPES;
|
|
163
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
163
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX0xJRkUiLCJJbmZpbml0eSIsIkRFRkFVTFRfQUdFIiwiREVGQVVMVF9FTkVSR1kiLCJERUZBVUxUX0RFQUQiLCJERUZBVUxUX1NMRUVQIiwiREVGQVVMVF9JTkRFWCIsIkRFRkFVTFRfQk9EWSIsIkRFRkFVTFRfUEFSRU5UIiwiREVGQVVMVF9NQVNTIiwiREVGQVVMVF9SQURJVVMiLCJERUZBVUxUX0FMUEhBIiwiREVGQVVMVF9TQ0FMRSIsIkRFRkFVTFRfVVNFX0NPTE9SIiwiREVGQVVMVF9VU0VfQUxQSEEiLCJERUZBVUxUX0VBU0lORyIsImVhc2VMaW5lYXIiLCJERUZBVUxUX1NZU1RFTV9ERUxUQSIsIlNVUFBPUlRFRF9KU09OX0lOSVRJQUxJWkVSX1RZUEVTIiwiSU5JVElBTElaRVJfVFlQRV9QT1NJVElPTiIsIklOSVRJQUxJWkVSX1RZUEVfUk9UQVRJT04iLCJJTklUSUFMSVpFUl9UWVBFX0xJRkUiLCJJTklUSUFMSVpFUl9UWVBFX1JBRElVUyIsIklOSVRJQUxJWkVSX1RZUEVfTUFTUyIsIklOSVRJQUxJWkVSX1RZUEVfQk9EWSIsIklOSVRJQUxJWkVSX1RZUEVfQk9EWV9TUFJJVEUiLCJJTklUSUFMSVpFUl9UWVBFX1RFWFRVUkUiLCJJTklUSUFMSVpFUl9UWVBFX1BPTEFSX1ZFTE9DSVRZIiwiSU5JVElBTElaRVJfVFlQRV9SQURJQUxfVkVMT0NJVFkiLCJJTklUSUFMSVpFUl9UWVBFX1ZFQ1RPUl9WRUxPQ0lUWSIsIlNVUFBPUlRFRF9KU09OX0JFSEFWSU9VUl9UWVBFUyIsIkJFSEFWSU9VUl9UWVBFX0FMUEhBIiwiQkVIQVZJT1VSX1RZUEVfQVRUUkFDVElPTiIsIkJFSEFWSU9VUl9UWVBFX0NPTE9SIiwiQkVIQVZJT1VSX1RZUEVfQ1JPU1NfWk9ORSIsIkJFSEFWSU9VUl9UWVBFX0ZPUkNFIiwiQkVIQVZJT1VSX1RZUEVfR1JBVklUWSIsIkJFSEFWSU9VUl9UWVBFX1JBTkRPTV9EUklGVCIsIkJFSEFWSU9VUl9UWVBFX1JFUFVMU0lPTiIsIkJFSEFWSU9VUl9UWVBFX1JPVEFURSIsIkJFSEFWSU9VUl9UWVBFX1NDQUxFIiwiQkVIQVZJT1VSX1RZUEVfU1BSSU5HIiwiU1VQUE9SVEVEX0pTT05fUkVOREVSRVJfVFlQRVMiLCJSRU5ERVJFUl9UWVBFX1NQUklURSIsIlNVUFBPUlRFRF9KU09OX1pPTkVfVFlQRVMiLCJaT05FX1RZUEVfQk9YIiwiWk9ORV9UWVBFX0xJTkUiLCJaT05FX1RZUEVfTUVTSCIsIlpPTkVfVFlQRV9QT0lOVCIsIlpPTkVfVFlQRV9TUEhFUkUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFhQTs7QUFhQTs7QUFRQTs7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1BLFlBQVksR0FBR0MsUUFBckI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsV0FBVyxHQUFHLENBQXBCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGNBQWMsR0FBRyxDQUF2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxZQUFZLEdBQUcsS0FBckI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsYUFBYSxHQUFHLEtBQXRCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGFBQWEsR0FBRyxDQUF0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxZQUFZLEdBQUcsSUFBckI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsY0FBYyxHQUFHLElBQXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLFlBQVksR0FBRyxDQUFyQjtBQUNQO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxjQUFjLEdBQUcsRUFBdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsYUFBYSxHQUFHLENBQXRCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGFBQWEsR0FBRyxDQUF0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxpQkFBaUIsR0FBRyxLQUExQjtBQUNQO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxpQkFBaUIsR0FBRyxLQUExQjtBQUNQO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxjQUFjLEdBQUdDLGdCQUF2QjtBQUVQO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxvQkFBb0IsR0FBRyxNQUE3QjtBQUVQO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxnQ0FBZ0MsR0FBRyxDQUM5Q0MsaUNBRDhDLEVBRTlDQyxpQ0FGOEMsRUFHOUNDLDZCQUg4QyxFQUk5Q0MsK0JBSjhDLEVBSzlDQyw2QkFMOEMsRUFNOUNDLDZCQU44QyxFQU85Q0Msb0NBUDhDLEVBUTlDQyxnQ0FSOEMsRUFTOUNDLHVDQVQ4QyxFQVU5Q0Msd0NBVjhDLEVBVzlDQyx3Q0FYOEMsQ0FBekM7QUFjUDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsOEJBQThCLEdBQUcsQ0FDNUNDLDJCQUQ0QyxFQUU1Q0MsZ0NBRjRDLEVBRzVDQywyQkFINEMsRUFJNUNDLGdDQUo0QyxFQUs1Q0MsMkJBTDRDLEVBTTVDQyw2QkFONEMsRUFPNUNDLGtDQVA0QyxFQVE1Q0MsK0JBUjRDLEVBUzVDQyw0QkFUNEMsRUFVNUNDLDJCQVY0QyxFQVc1Q0MsNEJBWDRDLENBQXZDO0FBY1A7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLDZCQUE2QixHQUFHLENBQUNDLDRCQUFELENBQXRDO0FBRVA7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLHlCQUF5QixHQUFHLENBQ3ZDQyxxQkFEdUMsRUFFdkNDLHNCQUZ1QyxFQUd2Q0Msc0JBSHVDLEVBSXZDQyx1QkFKdUMsRUFLdkNDLHdCQUx1QyxDQUFsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJFSEFWSU9VUl9UWVBFX0FMUEhBLFxuICBCRUhBVklPVVJfVFlQRV9BVFRSQUNUSU9OLFxuICBCRUhBVklPVVJfVFlQRV9DT0xPUixcbiAgQkVIQVZJT1VSX1RZUEVfQ1JPU1NfWk9ORSxcbiAgQkVIQVZJT1VSX1RZUEVfRk9SQ0UsXG4gIEJFSEFWSU9VUl9UWVBFX0dSQVZJVFksXG4gIEJFSEFWSU9VUl9UWVBFX1JBTkRPTV9EUklGVCxcbiAgQkVIQVZJT1VSX1RZUEVfUkVQVUxTSU9OLFxuICBCRUhBVklPVVJfVFlQRV9ST1RBVEUsXG4gIEJFSEFWSU9VUl9UWVBFX1NDQUxFLFxuICBCRUhBVklPVVJfVFlQRV9TUFJJTkcsXG59IGZyb20gJy4uL2JlaGF2aW91ci90eXBlcyc7XG5pbXBvcnQge1xuICBJTklUSUFMSVpFUl9UWVBFX0JPRFksXG4gIElOSVRJQUxJWkVSX1RZUEVfQk9EWV9TUFJJVEUsXG4gIElOSVRJQUxJWkVSX1RZUEVfTElGRSxcbiAgSU5JVElBTElaRVJfVFlQRV9NQVNTLFxuICBJTklUSUFMSVpFUl9UWVBFX1BPTEFSX1ZFTE9DSVRZLFxuICBJTklUSUFMSVpFUl9UWVBFX1BPU0lUSU9OLFxuICBJTklUSUFMSVpFUl9UWVBFX1JPVEFUSU9OLFxuICBJTklUSUFMSVpFUl9UWVBFX1JBRElBTF9WRUxPQ0lUWSxcbiAgSU5JVElBTElaRVJfVFlQRV9SQURJVVMsXG4gIElOSVRJQUxJWkVSX1RZUEVfVEVYVFVSRSxcbiAgSU5JVElBTElaRVJfVFlQRV9WRUNUT1JfVkVMT0NJVFksXG59IGZyb20gJy4uL2luaXRpYWxpemVyL3R5cGVzJztcbmltcG9ydCB7XG4gIFpPTkVfVFlQRV9CT1gsXG4gIFpPTkVfVFlQRV9MSU5FLFxuICBaT05FX1RZUEVfTUVTSCxcbiAgWk9ORV9UWVBFX1BPSU5ULFxuICBaT05FX1RZUEVfU1BIRVJFLFxufSBmcm9tICcuLi96b25lL3R5cGVzJztcblxuaW1wb3J0IHsgUkVOREVSRVJfVFlQRV9TUFJJVEUgfSBmcm9tICcuLi9yZW5kZXJlci90eXBlcyc7XG5pbXBvcnQgeyBlYXNlTGluZWFyIH0gZnJvbSAnLi4vZWFzZSc7XG5cbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBsaWZlXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9MSUZFID0gSW5maW5pdHk7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgYWdlXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BR0UgPSAwO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIGVuZXJneVxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRU5FUkdZID0gMTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBkZWFkXG4gKiBAdHlwZSB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfREVBRCA9IGZhbHNlO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIHNsZWVwXG4gKiBAdHlwZSB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0xFRVAgPSBmYWxzZTtcblxuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIGluZGV4XG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTkRFWCA9IDA7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgYm9keVxuICogQHR5cGUgez9vYmplY3R9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JPRFkgPSBudWxsO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIHBhcmVudFxuICogQHR5cGUgez9FbWl0dGVyfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9QQVJFTlQgPSBudWxsO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIG1hc3NcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BU1MgPSAxO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIHJhZGl1c1xuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkFESVVTID0gMTA7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgYWxwaGFcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FMUEhBID0gMTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBzY2FsZVxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0NBTEUgPSAxO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIHVzZUNvbG9yXG4gKiBAdHlwZSB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVNFX0NPTE9SID0gZmFsc2U7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgdXNlQWxwaGFcbiAqIEB0eXBlIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9VU0VfQUxQSEEgPSBmYWxzZTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBlYXNpbmdcbiAqIEB0eXBlIHtmdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRUFTSU5HID0gZWFzZUxpbmVhcjtcblxuLyoqXG4gKiBAZGVzYyBUaGUgZGVmYXVsdCBkZWx0YSBwcm92aWRlZCB0byB0aGUgU3lzdGVtIGluc3RhbmNlXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9TWVNURU1fREVMVEEgPSAwLjAxNjc7XG5cbi8qKlxuICogQGRlc2MgVGhlIHR5cGVzIG9mIGluaXRpYWxpemVycyBzdXBwb3J0ZWQgYnkgdGhlIFN5c3RlbS5mcm9tSlNPTiBtZXRob2QuXG4gKiBAdHlwZSB7YXJyYXk8c3RyaW5nPn1cbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9KU09OX0lOSVRJQUxJWkVSX1RZUEVTID0gW1xuICBJTklUSUFMSVpFUl9UWVBFX1BPU0lUSU9OLFxuICBJTklUSUFMSVpFUl9UWVBFX1JPVEFUSU9OLFxuICBJTklUSUFMSVpFUl9UWVBFX0xJRkUsXG4gIElOSVRJQUxJWkVSX1RZUEVfUkFESVVTLFxuICBJTklUSUFMSVpFUl9UWVBFX01BU1MsXG4gIElOSVRJQUxJWkVSX1RZUEVfQk9EWSxcbiAgSU5JVElBTElaRVJfVFlQRV9CT0RZX1NQUklURSxcbiAgSU5JVElBTElaRVJfVFlQRV9URVhUVVJFLFxuICBJTklUSUFMSVpFUl9UWVBFX1BPTEFSX1ZFTE9DSVRZLFxuICBJTklUSUFMSVpFUl9UWVBFX1JBRElBTF9WRUxPQ0lUWSxcbiAgSU5JVElBTElaRVJfVFlQRV9WRUNUT1JfVkVMT0NJVFksXG5dO1xuXG4vKipcbiAqIEBkZXNjIFRoZSB0eXBlcyBvZiBiZWhhdmlvdXJzIHN1cHBvcnRlZCBieSB0aGUgU3lzdGVtLmZyb21KU09OIG1ldGhvZC5cbiAqIEB0eXBlIHthcnJheTxzdHJpbmc+fVxuICovXG5leHBvcnQgY29uc3QgU1VQUE9SVEVEX0pTT05fQkVIQVZJT1VSX1RZUEVTID0gW1xuICBCRUhBVklPVVJfVFlQRV9BTFBIQSxcbiAgQkVIQVZJT1VSX1RZUEVfQVRUUkFDVElPTixcbiAgQkVIQVZJT1VSX1RZUEVfQ09MT1IsXG4gIEJFSEFWSU9VUl9UWVBFX0NST1NTX1pPTkUsXG4gIEJFSEFWSU9VUl9UWVBFX0ZPUkNFLFxuICBCRUhBVklPVVJfVFlQRV9HUkFWSVRZLFxuICBCRUhBVklPVVJfVFlQRV9SQU5ET01fRFJJRlQsXG4gIEJFSEFWSU9VUl9UWVBFX1JFUFVMU0lPTixcbiAgQkVIQVZJT1VSX1RZUEVfUk9UQVRFLFxuICBCRUhBVklPVVJfVFlQRV9TQ0FMRSxcbiAgQkVIQVZJT1VSX1RZUEVfU1BSSU5HLFxuXTtcblxuLyoqXG4gKiBAZGVzYyBUaGUgdHlwZXMgb2YgcmVuZGVyZXJzIHN1cHBvcnRlZCBieSB0aGUgU3lzdGVtLmZyb21KU09OIG1ldGhvZC5cbiAqIEB0eXBlIHthcnJheTxzdHJpbmc+fVxuICovXG5leHBvcnQgY29uc3QgU1VQUE9SVEVEX0pTT05fUkVOREVSRVJfVFlQRVMgPSBbUkVOREVSRVJfVFlQRV9TUFJJVEVdO1xuXG4vKipcbiAqIEBkZXNjIFRoZSB0eXBlcyBvZiB6b25lcyBzdXBwb3J0ZWQgYnkgdGhlIFN5c3RlbS5mcm9tSlNPTiBtZXRob2QuXG4gKiBAdHlwZSB7YXJyYXk8c3RyaW5nPn1cbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9KU09OX1pPTkVfVFlQRVMgPSBbXG4gIFpPTkVfVFlQRV9CT1gsXG4gIFpPTkVfVFlQRV9MSU5FLFxuICBaT05FX1RZUEVfTUVTSCxcbiAgWk9ORV9UWVBFX1BPSU5ULFxuICBaT05FX1RZUEVfU1BIRVJFLFxuXTtcblxuZXhwb3J0IHsgSU5JVElBTElaRVJfVFlQRVNfVEhBVF9SRVFVSVJFX1RIUkVFIH0gZnJvbSAnLi4vaW5pdGlhbGl6ZXIvdHlwZXMnO1xuIl19
|
|
@@ -652,7 +652,7 @@ var Emitter = /*#__PURE__*/function (_Particle) {
|
|
|
652
652
|
}, {
|
|
653
653
|
key: "update",
|
|
654
654
|
value: function update(time) {
|
|
655
|
-
if (!this.isEmitting) {
|
|
655
|
+
if (!this.isEmitting && this.particles.length === 0) {
|
|
656
656
|
return;
|
|
657
657
|
}
|
|
658
658
|
|
|
@@ -662,7 +662,10 @@ var Emitter = /*#__PURE__*/function (_Particle) {
|
|
|
662
662
|
this.destroy();
|
|
663
663
|
}
|
|
664
664
|
|
|
665
|
-
this.
|
|
665
|
+
if (this.isEmitting) {
|
|
666
|
+
this.generate(time);
|
|
667
|
+
}
|
|
668
|
+
|
|
666
669
|
this.integrate(time);
|
|
667
670
|
var i = this.particles.length;
|
|
668
671
|
|
|
@@ -674,6 +677,10 @@ var Emitter = /*#__PURE__*/function (_Particle) {
|
|
|
674
677
|
this.bindEmitterEvent && this.dispatch(_events.PARTICLE_DEAD, particle);
|
|
675
678
|
this.parent.pool.expire(particle.reset());
|
|
676
679
|
this.particles.splice(i, 1);
|
|
680
|
+
|
|
681
|
+
if (this.particles.length === 0) {
|
|
682
|
+
this.parent && this.parent.dispatch(_events.SYSTEM_UPDATE);
|
|
683
|
+
}
|
|
677
684
|
}
|
|
678
685
|
}
|
|
679
686
|
|
|
@@ -788,4 +795,4 @@ var Emitter = /*#__PURE__*/function (_Particle) {
|
|
|
788
795
|
}(_Particle2["default"]);
|
|
789
796
|
|
|
790
797
|
exports["default"] = Emitter;
|
|
791
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbWl0dGVyL0VtaXR0ZXIuanMiXSwibmFtZXMiOlsiRW1pdHRlciIsInByb3BlcnRpZXMiLCJ0eXBlIiwicGFydGljbGVzIiwiaW5pdGlhbGl6ZXJzIiwiYmVoYXZpb3VycyIsImVtaXR0ZXJCZWhhdmlvdXJzIiwiY3VycmVudEVtaXRUaW1lIiwidG90YWxFbWl0VGltZXMiLCJkYW1waW5nIiwiREVGQVVMVF9EQU1QSU5HIiwiYmluZEVtaXR0ZXIiLCJERUZBVUxUX0JJTkRfRU1JVFRFUiIsImJpbmRFbWl0dGVyRXZlbnQiLCJERUZBVUxUX0JJTkRfRU1JVFRFUl9FVkVOVCIsInJhdGUiLCJERUZBVUxUX0VNSVRURVJfUkFURSIsImlzRW1pdHRpbmciLCJpZCIsImNJRCIsIm5hbWUiLCJpbmRleCIsIkRFRkFVTFRfRU1JVFRFUl9JTkRFWCIsImV2ZW50RGlzcGF0Y2hlciIsIkV2ZW50RGlzcGF0Y2hlciIsImV2ZW50IiwidGFyZ2V0IiwiZGlzcGF0Y2hFdmVudCIsIm5ld1Bvc2l0aW9uIiwicG9zaXRpb24iLCJ4IiwieSIsInoiLCJzZXQiLCJuZXdSb3RhdGlvbiIsInJvdGF0aW9uIiwiSW5maW5pdHkiLCJsaWZlIiwiaW5pdCIsInNldFRvdGFsRW1pdFRpbWVzIiwic2V0TGlmZSIsImkiLCJsZW5ndGgiLCJkZWFkIiwiaW5pdGlhbGl6ZXIiLCJwdXNoIiwiYWRkSW5pdGlhbGl6ZXIiLCJpbmRleE9mIiwic3BsaWNlIiwiVXRpbCIsImRlc3Ryb3lBcnJheSIsImJlaGF2aW91ciIsImFkZEJlaGF2aW91ciIsImluaXRpYWxpemUiLCJhZGRFbWl0dGVyQmVoYXZpb3VyIiwib25FbWl0dGVyRGVhZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJFTUlUVEVSX0RFQUQiLCJwYXJ0aWNsZSIsInBhcmVudCIsInBvb2wiLCJnZXQiLCJQYXJ0aWNsZSIsInNldHVwUGFydGljbGUiLCJkaXNwYXRjaCIsIlBBUlRJQ0xFX0NSRUFURUQiLCJJbml0aWFsaXplclV0aWwiLCJhZGRCZWhhdmlvdXJzIiwidGltZSIsImFnZSIsImRlc3Ryb3kiLCJnZW5lcmF0ZSIsImludGVncmF0ZSIsIlBBUlRJQ0xFX0RFQUQiLCJleHBpcmUiLCJyZXNldCIsInVwZGF0ZUVtaXR0ZXJCZWhhdmlvdXJzIiwic2xlZXAiLCJhcHBseUJlaGF2aW91ciIsImludGVncmF0aW9uVHlwZSIsIklOVEVHUkFUSU9OX1RZUEVfRVVMRVIiLCJ1cGRhdGUiLCJQQVJUSUNMRV9VUERBVEUiLCJnZXRWYWx1ZSIsImNyZWF0ZVBhcnRpY2xlIiwiZW5lcmd5IiwicmVtb3ZlQWxsSW5pdGlhbGl6ZXJzIiwicmVtb3ZlQWxsQmVoYXZpb3VycyIsInJlbW92ZUVtaXR0ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQU9BOztBQU1BOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNxQkEsTzs7Ozs7QUFDbkI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0UsbUJBQVlDLFVBQVosRUFBd0I7QUFBQTs7QUFBQTtBQUN0Qiw4QkFBTUEsVUFBTjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFVBQUtDLElBQUwsR0FBWUEsMkJBQVo7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLQyxTQUFMLEdBQWlCLEVBQWpCO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksVUFBS0MsWUFBTCxHQUFvQixFQUFwQjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFVBQUtDLFVBQUwsR0FBa0IsRUFBbEI7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLQyxpQkFBTCxHQUF5QixFQUF6QjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFVBQUtDLGVBQUwsR0FBdUIsQ0FBdkI7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLQyxjQUFMLEdBQXNCLENBQUMsQ0FBdkI7QUFFQTtBQUNKO0FBQ0E7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UUFBTCxXQUFpQixLQUFLOUMsRUFBdEIsY0FBNEJ1QyxvQkFBNUI7QUFFQSxhQUFLRSxNQUFMLElBQWUsS0FBS0EsTUFBTCxDQUFZNkIsYUFBWixDQUEwQixJQUExQixDQUFmO0FBQ0Q7QUFDRjs7O0VBenBCa0MxQixxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERFRkFVTFRfQklORF9FTUlUVEVSLFxuICBERUZBVUxUX0JJTkRfRU1JVFRFUl9FVkVOVCxcbiAgREVGQVVMVF9EQU1QSU5HLFxuICBERUZBVUxUX0VNSVRURVJfSU5ERVgsXG4gIERFRkFVTFRfRU1JVFRFUl9SQVRFLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgRXZlbnREaXNwYXRjaGVyLCB7XG4gIEVNSVRURVJfREVBRCxcbiAgUEFSVElDTEVfQ1JFQVRFRCxcbiAgUEFSVElDTEVfREVBRCxcbiAgUEFSVElDTEVfVVBEQVRFLFxufSBmcm9tICcuLi9ldmVudHMnO1xuaW1wb3J0IHsgSU5URUdSQVRJT05fVFlQRV9FVUxFUiwgaW50ZWdyYXRlIH0gZnJvbSAnLi4vbWF0aCc7XG5pbXBvcnQgeyBVdGlsLCB1aWQgfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7IEluaXRpYWxpemVyVXRpbCB9IGZyb20gJy4uL2luaXRpYWxpemVyJztcbmltcG9ydCBQYXJ0aWNsZSBmcm9tICcuLi9jb3JlL1BhcnRpY2xlJztcbmltcG9ydCBpc051bWJlciBmcm9tICdsb2Rhc2gvaXNOdW1iZXInO1xuaW1wb3J0IHsgRU1JVFRFUl9UWVBFX0VNSVRURVIgYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEVtaXR0ZXJzIGFyZSB0aGUgU3lzdGVtIGVuZ2luZSdzIHBhcnRpY2xlIGZhY3Rvcmllcy4gVGhleSBjYXVzZSBwYXJ0aWNsZXMgdG9cbiAqIGJlIHJlbmRlcmVkIGJ5IGVtaXR0aW5nIHRoZW0sIGFuZCBzdG9yZSBhbGwgcGFydGljbGUgaW5pdGlhbGl6ZXJzIGFuZCBiZWhhdmlvdXJzLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1pdHRlciBleHRlbmRzIFBhcnRpY2xlIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gRW1pdHRlciBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHByb3BlcnRpZXMgLSBUaGUgcHJvcGVydGllcyB0byBpbnN0YW50aWF0ZSB0aGUgZW1pdHRlciB3aXRoXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcGVydGllcykge1xuICAgIHN1cGVyKHByb3BlcnRpZXMpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGNsYXNzIHR5cGUuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlcyBlbWl0dGVkIGJ5IHRoaXMgZW1pdHRlci5cbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAgICovXG4gICAgdGhpcy5wYXJ0aWNsZXMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBpbml0aWFsaXplcnMgZm9yIHBhcnRpY2xlcyBlbWl0dGVkIGJ5IHRoaXMgZW1pdHRlci5cbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAgICovXG4gICAgdGhpcy5pbml0aWFsaXplcnMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBiZWhhdmlvdXJzIGZvciBwYXJ0aWNsZXMgZW1pdHRlZCBieSB0aGlzIGVtaXR0ZXIuXG4gICAgICogQHR5cGUge2FycmF5fVxuICAgICAqL1xuICAgIHRoaXMuYmVoYXZpb3VycyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGJlaGF2aW91cnMgZm9yIHRoZSBlbWl0dGVyLlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKi9cbiAgICB0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY3VycmVudCBlbWl0IGl0ZXJhdGlvbi5cbiAgICAgKiBAdHlwZSB7aW50ZWdlcn1cbiAgICAgKi9cbiAgICB0aGlzLmN1cnJlbnRFbWl0VGltZSA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRoZSBlbWl0dGVyIHNob3VsZCBlbWl0IHBhcnRpY2xlcy5cbiAgICAgKiBAdHlwZSB7aW50ZWdlcn1cbiAgICAgKi9cbiAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gLTE7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgZnJpY3Rpb24gY29lZmZpY2llbnQgZm9yIGFsbCBwYXJ0aWNsZSB0byBlbWl0IGJ5LlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5kYW1waW5nID0gREVGQVVMVF9EQU1QSU5HO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgRW5zdXJlcyB0aGF0IHBhcnRpY2xlcyBlbWl0dGVkIGJ5IHRoaXMgZW1pdHRlciBhcmUgcG9zaXRpb25lZFxuICAgICAqIGFjY29yZGluZyB0byB0aGUgZW1pdHRlcidzIHByb3BlcnRpZXMuXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5iaW5kRW1pdHRlciA9IERFRkFVTFRfQklORF9FTUlUVEVSO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgRGV0ZXJtaW5lcyBpZiB0aGUgZW1pdHRlciB3aWxsIGRpc3BhdGNoIGludGVybmFsIGV2ZW50cy4gRGVmYXVsdHNcbiAgICAgKiB0byBmYWxzZVxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuYmluZEVtaXR0ZXJFdmVudCA9IERFRkFVTFRfQklORF9FTUlUVEVSX0VWRU5UO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIG51bWJlciBvZiBwYXJ0aWNsZXMgdG8gZW1pdCBwZXIgc2Vjb25kIChhIFtwYXJ0aWNsZV0vYiBbc10pXG4gICAgICogQHR5cGUge1JhdGV9XG4gICAgICovXG4gICAgdGhpcy5yYXRlID0gREVGQVVMVF9FTUlUVEVSX1JBVEU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIGlmIHRoZSBlbWl0dGVyIGlzIGVtaXR0aW5nIHBhcnRpY2xlcyBvciBub3QuXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5pc0VtaXR0aW5nID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgZW1pdHRlcidzIGlkLlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5pZCA9IGBlbWl0dGVyLSR7dWlkKCl9YDtcbiAgICB0aGlzLmNJRCA9IDA7XG4gICAgdGhpcy5uYW1lID0gJ0VtaXR0ZXInO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGluZGV4IG9mIHRoZSBlbWl0dGVyIGFzIGl0IGlzIGFkZGVkIHRvIHRoZSBzeXN0ZW0uXG4gICAgICogQHR5cGUge251bWJlcnx1bmRlZmluZWR9XG4gICAgICovXG4gICAgdGhpcy5pbmRleCA9IERFRkFVTFRfRU1JVFRFUl9JTkRFWDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBlbWl0dGVyJ3MgaW50ZXJuYWwgZXZlbnQgZGlzcGF0Y2hlci5cbiAgICAgKiBAdHlwZSB7RXZlbnREaXNwYXRjaGVyfVxuICAgICAqL1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyID0gbmV3IEV2ZW50RGlzcGF0Y2hlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3h5IG1ldGhvZCBmb3IgdGhlIGludGVybmFsIGV2ZW50IGRpc3BhdGNoZXIncyBkaXNwYXRjaEV2ZW50IG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50IC0gVGhlIGV2ZW50IHRvIGRpc3BhdGNoXG4gICAqIEBwYXJhbSB7b2JqZWN0PFBhcnRpY2xlPn0gW3RhcmdldD10aGlzXSAtIFRoZSBldmVudCB0YXJnZXRcbiAgICovXG4gIGRpc3BhdGNoKGV2ZW50LCB0YXJnZXQgPSB0aGlzKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIuZGlzcGF0Y2hFdmVudChldmVudCwgdGFyZ2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBlbWl0dGVyIHJhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7UmF0ZX0gcmF0ZSAtIGEgcmF0ZSBpbml0aWFsaXplciBvYmplY3RcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldFJhdGUocmF0ZSkge1xuICAgIHRoaXMucmF0ZSA9IHJhdGU7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1Bvc2l0aW9uIC0gYW4gb2JqZWN0IHRoZSBuZXcgeCwgeSBhbmQgeiBwcm9wc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0UG9zaXRpb24obmV3UG9zaXRpb24gPSB7fSkge1xuICAgIGNvbnN0IHsgcG9zaXRpb24gfSA9IHRoaXM7XG4gICAgY29uc3QgeyB4ID0gcG9zaXRpb24ueCwgeSA9IHBvc2l0aW9uLnksIHogPSBwb3NpdGlvbi56IH0gPSBuZXdQb3NpdGlvbjtcblxuICAgIHRoaXMucG9zaXRpb24uc2V0KHgsIHksIHopO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcm90YXRpb24gb2YgdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdSb3RhdGlvbiAtIGFuIG9iamVjdCB0aGUgbmV3IHgsIHkgYW5kIHogcHJvcHNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldFJvdGF0aW9uKG5ld1JvdGF0aW9uID0ge30pIHtcbiAgICBjb25zdCB7IHJvdGF0aW9uIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgeCA9IHJvdGF0aW9uLngsIHkgPSByb3RhdGlvbi55LCB6ID0gcm90YXRpb24ueiB9ID0gbmV3Um90YXRpb247XG5cbiAgICB0aGlzLnJvdGF0aW9uLnNldCh4LCB5LCB6KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRvdGFsIG51bWJlciBvZiB0aW1lcyB0aGUgZW1pdHRlciBzaG91bGQgZW1pdCBwYXJ0aWNsZXMgYXMgd2VsbCBhc1xuICAgKiB0aGUgZW1pdHRlcidzIGxpZmUuIEFsc28gaW50aWFsaXplcyB0aGUgZW1pdHRlciByYXRlLlxuICAgKiBUaGlzIGVuYWJsZXMgdGhlIGVtaXR0ZXIgdG8gZW1pdCBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbdG90YWxFbWl0VGltZXM9SW5maW5pdHldIC0gdGhlIHRvdGFsIG51bWJlciBvZiB0aW1lcyB0byBlbWl0IHBhcnRpY2xlc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmU9SW5maW5pdHldIC0gdGhlIGxpZmUgb2YgdGhpcyBlbWl0dGVyIGluIG1pbGxpc2Vjb25kc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgZW1pdCh0b3RhbEVtaXRUaW1lcyA9IEluZmluaXR5LCBsaWZlID0gSW5maW5pdHkpIHtcbiAgICB0aGlzLmN1cnJlbnRFbWl0VGltZSA9IDA7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IGlzTnVtYmVyKHRvdGFsRW1pdFRpbWVzKSA/IHRvdGFsRW1pdFRpbWVzIDogSW5maW5pdHk7XG5cbiAgICBpZiAodG90YWxFbWl0VGltZXMgPT09IDEpIHtcbiAgICAgIHRoaXMubGlmZSA9IHRvdGFsRW1pdFRpbWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpZmUgPSBpc051bWJlcihsaWZlKSA/IGxpZmUgOiBJbmZpbml0eTtcbiAgICB9XG5cbiAgICB0aGlzLnJhdGUuaW5pdCgpO1xuICAgIHRoaXMuaXNFbWl0dGluZyA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBlcmltZW50YWwgZW1pdCBtZXRob2QgdGhhdCBpcyBkZXNpZ25lZCB0byBiZSBjYWxsZWQgZnJvbSB0aGUgU3lzdGVtLmVtaXQgbWV0aG9kLlxuICAgKlxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgZXhwZXJpbWVudGFsX2VtaXQoKSB7XG4gICAgY29uc3QgeyBpc0VtaXR0aW5nLCB0b3RhbEVtaXRUaW1lcywgbGlmZSB9ID0gdGhpcztcblxuICAgIGlmICghaXNFbWl0dGluZykge1xuICAgICAgdGhpcy5jdXJyZW50RW1pdFRpbWUgPSAwO1xuXG4gICAgICBpZiAoIXRvdGFsRW1pdFRpbWVzKSB7XG4gICAgICAgIHRoaXMuc2V0VG90YWxFbWl0VGltZXMoSW5maW5pdHkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWxpZmUpIHtcbiAgICAgICAgdGhpcy5zZXRMaWZlKEluZmluaXR5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yYXRlLmluaXQoKTtcbiAgICAgIHRoaXMuaXNFbWl0dGluZyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG90YWwgZW1pdCB0aW1lcyBmb3IgdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbdG90YWxFbWl0VGltZXM9SW5maW5pdHldIC0gdGhlIHRvdGFsIG51bWJlciBvZiB0aW1lcyB0byBlbWl0IHBhcnRpY2xlc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0VG90YWxFbWl0VGltZXModG90YWxFbWl0VGltZXMgPSBJbmZpbml0eSkge1xuICAgIHRoaXMudG90YWxFbWl0VGltZXMgPSBpc051bWJlcih0b3RhbEVtaXRUaW1lcykgPyB0b3RhbEVtaXRUaW1lcyA6IEluZmluaXR5O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbGlmZSBvZiB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaWZlPUluZmluaXR5XSAtIHRoZSBsaWZlIG9mIHRoaXMgZW1pdHRlciBpbiBtaWxsaXNlY29uZHNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldExpZmUobGlmZSA9IEluZmluaXR5KSB7XG4gICAgaWYgKHRoaXMudG90YWxFbWl0VGltZXMgPT09IDEpIHtcbiAgICAgIHRoaXMubGlmZSA9IHRoaXMudG90YWxFbWl0VGltZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlmZSA9IGlzTnVtYmVyKGxpZmUpID8gbGlmZSA6IEluZmluaXR5O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3BzIHRoZSBlbWl0dGVyIGZyb20gZW1pdHRpbmcgcGFydGljbGVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHN0b3BFbWl0KCkge1xuICAgIHRoaXMudG90YWxFbWl0VGltZXMgPSAtMTtcbiAgICB0aGlzLmN1cnJlbnRFbWl0VGltZSA9IDA7XG4gICAgdGhpcy5pc0VtaXR0aW5nID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogS2lsbHMgYWxsIG9mIHRoZSBlbWl0dGVyJ3MgcGFydGljbGVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHJlbW92ZUFsbFBhcnRpY2xlcygpIHtcbiAgICBsZXQgaSA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMucGFydGljbGVzW2ldLmRlYWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcGFydGljbGUgaW5pdGlhbGl6ZXIgdG8gdGhlIGVtaXR0ZXIuXG4gICAqIEVhY2ggaW5pdGlhbGl6ZXIgaXMgcnVuIG9uIGVhY2ggcGFydGljbGUgd2hlbiB0aGV5IGFyZSBjcmVhdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge0luaXRpYWxpemVyfSBpbml0aWFsaXplciAtIFRoZSBpbml0aWFsaXplciB0byBhZGRcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGFkZEluaXRpYWxpemVyKGluaXRpYWxpemVyKSB7XG4gICAgdGhpcy5pbml0aWFsaXplcnMucHVzaChpbml0aWFsaXplcik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG11bHRpcGxlIHBhcnRpY2xlIGluaXRpYWxpemVycyB0byB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxJbml0aWFsaXplcj59IGluaXRpYWxpemVycyAtIGFuIGFycmF5IG9mIHBhcnRpY2xlIGluaXRpYWxpemVyc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkSW5pdGlhbGl6ZXJzKGluaXRpYWxpemVycykge1xuICAgIGxldCBpID0gaW5pdGlhbGl6ZXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMuYWRkSW5pdGlhbGl6ZXIoaW5pdGlhbGl6ZXJzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBlbWl0dGVyJ3MgcGFydGljbGUgaW5pdGlhbGl6ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEluaXRpYWxpemVyPn0gaW5pdGlhbGl6ZXJzIC0gYW4gYXJyYXkgb2YgcGFydGljbGUgaW5pdGlhbGl6ZXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRJbml0aWFsaXplcnMoaW5pdGlhbGl6ZXJzKSB7XG4gICAgdGhpcy5pbml0aWFsaXplcnMgPSBpbml0aWFsaXplcnM7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFuIGluaXRpYWxpemVyIGZyb20gdGhlIGVtaXR0ZXIncyBpbml0aWFsaXplcnMgYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7SW5pdGlhbGl6ZXJ9IGluaXRpYWxpemVyIC0gVGhlIGluaXRpYWxpemVyIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlSW5pdGlhbGl6ZXIoaW5pdGlhbGl6ZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuaW5pdGlhbGl6ZXJzLmluZGV4T2YoaW5pdGlhbGl6ZXIpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbGwgaW5pdGlhbGl6ZXJzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlQWxsSW5pdGlhbGl6ZXJzKCkge1xuICAgIFV0aWwuZGVzdHJveUFycmF5KHRoaXMuaW5pdGlhbGl6ZXJzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBiZWhhdmlvdXIgdG8gdGhlIGVtaXR0ZXIuIEFsbCBlbWl0dGVyIGJlaGF2aW91cnMgYXJlIGFkZGVkIHRvIGVhY2ggcGFydGljbGUgd2hlblxuICAgKiB0aGV5IGFyZSBlbWl0dGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIC0gVGhlIGJlaGF2aW91ciB0byBhZGQgdG8gdGhlIGVtaXR0ZXJcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGFkZEJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICB0aGlzLmJlaGF2aW91cnMucHVzaChiZWhhdmlvdXIpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBtdWx0aXBsZSBiZWhhdmlvdXJzIHRvIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEJlaGF2aW91cj59IGJlaGF2aW91cnMgLSBhbiBhcnJheSBvZiBlbWl0dGVyIGJlaGF2aW91cnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGFkZEJlaGF2aW91cnMoYmVoYXZpb3Vycykge1xuICAgIGxldCBpID0gYmVoYXZpb3Vycy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzLmFkZEJlaGF2aW91cihiZWhhdmlvdXJzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBlbWl0dGVyJ3MgYmVoYXZpb3Vycy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxCZWhhdmlvdXI+fSBiZWhhdmlvdXJzIC0gYW4gYXJyYXkgb2YgZW1pdHRlciBiZWhhdmlvdXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRCZWhhdmlvdXJzKGJlaGF2aW91cnMpIHtcbiAgICB0aGlzLmJlaGF2aW91cnMgPSBiZWhhdmlvdXJzO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgYmVoYXZpb3VyIGZyb20gdGhlIGVtaXR0ZXIncyBiZWhhdmlvdXJzIGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIC0gVGhlIGJlaGF2aW91ciB0byByZW1vdmVcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHJlbW92ZUJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYmVoYXZpb3Vycy5pbmRleE9mKGJlaGF2aW91cik7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5iZWhhdmlvdXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbGwgYmVoYXZpb3VycyBmcm9tIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlQWxsQmVoYXZpb3VycygpIHtcbiAgICBVdGlsLmRlc3Ryb3lBcnJheSh0aGlzLmJlaGF2aW91cnMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBlbWl0dGVyIGJlaGF2aW91ciB0byB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91ciAtIFRoZSBiZWhhdmlvdXIgdG8gYWRkIHRvIHRoZSBlbWl0dGVyXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRFbWl0dGVyQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnMucHVzaChiZWhhdmlvdXIpO1xuXG4gICAgYmVoYXZpb3VyLmluaXRpYWxpemUodGhpcyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG11bHRpcGxlIGJlaGF2aW91cnMgdG8gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8QmVoYXZpb3VyPn0gYmVoYXZpb3VycyAtIGFuIGFycmF5IG9mIGVtaXR0ZXIgYmVoYXZpb3Vyc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkRW1pdHRlckJlaGF2aW91cnMoYmVoYXZpb3Vycykge1xuICAgIGxldCBpID0gYmVoYXZpb3Vycy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzLmFkZEVtaXR0ZXJCZWhhdmlvdXIoYmVoYXZpb3Vyc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZW1pdHRlcidzIGJlaGF2aW91cnMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8QmVoYXZpb3VyPn0gYmVoYXZpb3VycyAtIGFuIGFycmF5IG9mIGVtaXR0ZXIgYmVoYXZpb3Vyc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0RW1pdHRlckJlaGF2aW91cnMoYmVoYXZpb3Vycykge1xuICAgIGNvbnN0IGxlbmd0aCA9IGJlaGF2aW91cnMubGVuZ3RoO1xuXG4gICAgdGhpcy5lbWl0dGVyQmVoYXZpb3VycyA9IGJlaGF2aW91cnM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzW2ldLmluaXRpYWxpemUodGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgYmVoYXZpb3VyIGZyb20gdGhlIGVtaXR0ZXIncyBiZWhhdmlvdXJzIGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIC0gVGhlIGJlaGF2aW91ciB0byByZW1vdmVcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHJlbW92ZUVtaXR0ZXJCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzLmluZGV4T2YoYmVoYXZpb3VyKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbGwgYmVoYXZpb3VycyBmcm9tIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlQWxsRW1pdHRlckJlaGF2aW91cnMoKSB7XG4gICAgVXRpbC5kZXN0cm95QXJyYXkodGhpcy5lbWl0dGVyQmVoYXZpb3Vycyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBldmVudCBsaXN0ZW5lciBmb3IgdGhlIEVNSVRURVJfREVBRCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvbkVtaXR0ZXJEZWFkfSAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIEVNSVRURVJfREVBRCBpcyBkaXNwYXRjaGVkLlxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkT25FbWl0dGVyRGVhZEV2ZW50TGlzdGVuZXIob25FbWl0dGVyRGVhZCkge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyLmFkZEV2ZW50TGlzdGVuZXIoYCR7dGhpcy5pZH1fJHtFTUlUVEVSX0RFQUR9YCwgKCkgPT5cbiAgICAgIG9uRW1pdHRlckRlYWQoKVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGFydGljbGUgYnkgcmV0cmVpdmluZyBvbmUgZnJvbSB0aGUgcG9vbCBhbmQgc2V0dGluZyBpdCB1cCB3aXRoXG4gICAqIHRoZSBzdXBwbGllZCBpbml0aWFsaXplciBhbmQgYmVoYXZpb3VyLlxuICAgKlxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgY3JlYXRlUGFydGljbGUoKSB7XG4gICAgY29uc3QgcGFydGljbGUgPSB0aGlzLnBhcmVudC5wb29sLmdldChQYXJ0aWNsZSk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnBhcnRpY2xlcy5sZW5ndGg7XG5cbiAgICB0aGlzLnNldHVwUGFydGljbGUocGFydGljbGUsIGluZGV4KTtcbiAgICB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5kaXNwYXRjaChQQVJUSUNMRV9DUkVBVEVELCBwYXJ0aWNsZSk7XG4gICAgdGhpcy5iaW5kRW1pdHRlckV2ZW50ICYmIHRoaXMuZGlzcGF0Y2goUEFSVElDTEVfQ1JFQVRFRCwgcGFydGljbGUpO1xuXG4gICAgcmV0dXJuIHBhcnRpY2xlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgYSBwYXJ0aWNsZSBieSBydW5uaW5nIGFsbCBpbml0aWFsaXplcnMgb24gaXQgYW5kIHNldHRpbmcgaXRzIGJlaGF2aW91cnMuXG4gICAqIEFsc28gYWRkcyB0aGUgcGFydGljbGUgdG8gdGhpcy5wYXJ0aWNsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIHNldHVwXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgc2V0dXBQYXJ0aWNsZShwYXJ0aWNsZSwgaW5kZXgpIHtcbiAgICBjb25zdCB7IGluaXRpYWxpemVycywgYmVoYXZpb3VycyB9ID0gdGhpcztcblxuICAgIEluaXRpYWxpemVyVXRpbC5pbml0aWFsaXplKHRoaXMsIHBhcnRpY2xlLCBpbml0aWFsaXplcnMpO1xuXG4gICAgcGFydGljbGUuYWRkQmVoYXZpb3VycyhiZWhhdmlvdXJzKTtcbiAgICBwYXJ0aWNsZS5wYXJlbnQgPSB0aGlzO1xuICAgIHBhcnRpY2xlLmluZGV4ID0gaW5kZXg7XG5cbiAgICB0aGlzLnBhcnRpY2xlcy5wdXNoKHBhcnRpY2xlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBlbWl0dGVyIGFjY29yZGluZyB0byB0aGUgdGltZSBwYXNzZWQgYnkgY2FsbGluZyB0aGUgZ2VuZXJhdGVcbiAgICogYW5kIGludGVncmF0ZSBtZXRob2RzLiBUaGUgZ2VuZXJhdGUgbWV0aG9kIGNyZWF0ZXMgcGFydGljbGVzLCB0aGUgaW50ZWdyYXRlXG4gICAqIG1ldGhvZCB1cGRhdGVzIGV4aXN0aW5nIHBhcnRpY2xlcy5cbiAgICpcbiAgICogSWYgdGhlIGVtaXR0ZXIgYWdlIGlzIGdyZWF0ZXIgdGhhbiB0aW1lLCB0aGUgZW1pdHRlciBpcyBraWxsZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGFsc28gaW5kZXhlcy9kZWluZGV4ZXMgcGFydGljbGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFN5c3RlbSBlbmdpbmUgdGltZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHVwZGF0ZSh0aW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzRW1pdHRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFnZSArPSB0aW1lO1xuXG4gICAgaWYgKHRoaXMuZGVhZCB8fCB0aGlzLmFnZSA+PSB0aGlzLmxpZmUpIHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuZ2VuZXJhdGUodGltZSk7XG4gICAgdGhpcy5pbnRlZ3JhdGUodGltZSk7XG5cbiAgICBsZXQgaSA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGNvbnN0IHBhcnRpY2xlID0gdGhpcy5wYXJ0aWNsZXNbaV07XG5cbiAgICAgIGlmIChwYXJ0aWNsZS5kZWFkKSB7XG4gICAgICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoKFBBUlRJQ0xFX0RFQUQsIHBhcnRpY2xlKTtcbiAgICAgICAgdGhpcy5iaW5kRW1pdHRlckV2ZW50ICYmIHRoaXMuZGlzcGF0Y2goUEFSVElDTEVfREVBRCwgcGFydGljbGUpO1xuICAgICAgICB0aGlzLnBhcmVudC5wb29sLmV4cGlyZShwYXJ0aWNsZS5yZXNldCgpKTtcbiAgICAgICAgdGhpcy5wYXJ0aWNsZXMuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRW1pdHRlckJlaGF2aW91cnModGltZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZW1pdHRlcidzIGVtaXR0ZXIgYmVoYXZpb3Vycy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBTeXN0ZW0gZW5naW5lIHRpbWVcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICB1cGRhdGVFbWl0dGVyQmVoYXZpb3Vycyh0aW1lKSB7XG4gICAgaWYgKHRoaXMuc2xlZXApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnNbaV0uYXBwbHlCZWhhdmlvdXIodGhpcywgdGltZSwgaSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdGhlIGludGVncmF0aW9uIGFsZ29yaXRobSBvbiB0aGUgZW1pdHRlciBhbmQgYWxsIHBhcnRpY2xlcy5cbiAgICogVXBkYXRlcyB0aGUgcGFydGljbGVzIHdpdGggdGhlIHRpbXN0YW1wIHBhc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBTeXN0ZW0gZW5naW5lIHRpbWVcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBpbnRlZ3JhdGUodGltZSkge1xuICAgIGNvbnN0IGludGVncmF0aW9uVHlwZSA9IHRoaXMucGFyZW50XG4gICAgICA/IHRoaXMucGFyZW50LmludGVncmF0aW9uVHlwZVxuICAgICAgOiBJTlRFR1JBVElPTl9UWVBFX0VVTEVSO1xuICAgIGNvbnN0IGRhbXBpbmcgPSAxIC0gdGhpcy5kYW1waW5nO1xuXG4gICAgaW50ZWdyYXRlKHRoaXMsIHRpbWUsIGRhbXBpbmcsIGludGVncmF0aW9uVHlwZSk7XG5cbiAgICBsZXQgaW5kZXggPSB0aGlzLnBhcnRpY2xlcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgY29uc3QgcGFydGljbGUgPSB0aGlzLnBhcnRpY2xlc1tpbmRleF07XG5cbiAgICAgIHBhcnRpY2xlLnVwZGF0ZSh0aW1lLCBpbmRleCk7XG4gICAgICBpbnRlZ3JhdGUocGFydGljbGUsIHRpbWUsIGRhbXBpbmcsIGludGVncmF0aW9uVHlwZSk7XG5cbiAgICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoKFBBUlRJQ0xFX1VQREFURSwgcGFydGljbGUpO1xuICAgICAgdGhpcy5iaW5kRW1pdHRlckV2ZW50ICYmIHRoaXMuZGlzcGF0Y2goUEFSVElDTEVfVVBEQVRFLCBwYXJ0aWNsZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBuZXcgcGFydGljbGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFN5c3RlbSBlbmdpbmUgdGltZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGdlbmVyYXRlKHRpbWUpIHtcbiAgICBpZiAodGhpcy50b3RhbEVtaXRUaW1lcyA9PT0gMSkge1xuICAgICAgbGV0IGkgPSB0aGlzLnJhdGUuZ2V0VmFsdWUoOTk5OTkpO1xuXG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgdGhpcy5jSUQgPSBpO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlUGFydGljbGUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IDA7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRFbWl0VGltZSArPSB0aW1lO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudEVtaXRUaW1lIDwgdGhpcy50b3RhbEVtaXRUaW1lcykge1xuICAgICAgbGV0IGkgPSB0aGlzLnJhdGUuZ2V0VmFsdWUodGltZSk7XG5cbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB0aGlzLmNJRCA9IGk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBLaWxscyB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZGVhZCA9IHRydWU7XG4gICAgdGhpcy5lbmVyZ3kgPSAwO1xuICAgIHRoaXMudG90YWxFbWl0VGltZXMgPSAtMTtcblxuICAgIGlmICh0aGlzLnBhcnRpY2xlcy5sZW5ndGggPT0gMCkge1xuICAgICAgdGhpcy5pc0VtaXR0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnJlbW92ZUFsbEluaXRpYWxpemVycygpO1xuICAgICAgdGhpcy5yZW1vdmVBbGxCZWhhdmlvdXJzKCk7XG4gICAgICB0aGlzLmRpc3BhdGNoKGAke3RoaXMuaWR9XyR7RU1JVFRFUl9ERUFEfWApO1xuXG4gICAgICB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5yZW1vdmVFbWl0dGVyKHRoaXMpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
798
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbWl0dGVyL0VtaXR0ZXIuanMiXSwibmFtZXMiOlsiRW1pdHRlciIsInByb3BlcnRpZXMiLCJ0eXBlIiwicGFydGljbGVzIiwiaW5pdGlhbGl6ZXJzIiwiYmVoYXZpb3VycyIsImVtaXR0ZXJCZWhhdmlvdXJzIiwiY3VycmVudEVtaXRUaW1lIiwidG90YWxFbWl0VGltZXMiLCJkYW1waW5nIiwiREVGQVVMVF9EQU1QSU5HIiwiYmluZEVtaXR0ZXIiLCJERUZBVUxUX0JJTkRfRU1JVFRFUiIsImJpbmRFbWl0dGVyRXZlbnQiLCJERUZBVUxUX0JJTkRfRU1JVFRFUl9FVkVOVCIsInJhdGUiLCJERUZBVUxUX0VNSVRURVJfUkFURSIsImlzRW1pdHRpbmciLCJpZCIsImNJRCIsIm5hbWUiLCJpbmRleCIsIkRFRkFVTFRfRU1JVFRFUl9JTkRFWCIsImV2ZW50RGlzcGF0Y2hlciIsIkV2ZW50RGlzcGF0Y2hlciIsImV2ZW50IiwidGFyZ2V0IiwiZGlzcGF0Y2hFdmVudCIsIm5ld1Bvc2l0aW9uIiwicG9zaXRpb24iLCJ4IiwieSIsInoiLCJzZXQiLCJuZXdSb3RhdGlvbiIsInJvdGF0aW9uIiwiSW5maW5pdHkiLCJsaWZlIiwiaW5pdCIsInNldFRvdGFsRW1pdFRpbWVzIiwic2V0TGlmZSIsImkiLCJsZW5ndGgiLCJkZWFkIiwiaW5pdGlhbGl6ZXIiLCJwdXNoIiwiYWRkSW5pdGlhbGl6ZXIiLCJpbmRleE9mIiwic3BsaWNlIiwiVXRpbCIsImRlc3Ryb3lBcnJheSIsImJlaGF2aW91ciIsImFkZEJlaGF2aW91ciIsImluaXRpYWxpemUiLCJhZGRFbWl0dGVyQmVoYXZpb3VyIiwib25FbWl0dGVyRGVhZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJFTUlUVEVSX0RFQUQiLCJwYXJ0aWNsZSIsInBhcmVudCIsInBvb2wiLCJnZXQiLCJQYXJ0aWNsZSIsInNldHVwUGFydGljbGUiLCJkaXNwYXRjaCIsIlBBUlRJQ0xFX0NSRUFURUQiLCJJbml0aWFsaXplclV0aWwiLCJhZGRCZWhhdmlvdXJzIiwidGltZSIsImFnZSIsImRlc3Ryb3kiLCJnZW5lcmF0ZSIsImludGVncmF0ZSIsIlBBUlRJQ0xFX0RFQUQiLCJleHBpcmUiLCJyZXNldCIsIlNZU1RFTV9VUERBVEUiLCJ1cGRhdGVFbWl0dGVyQmVoYXZpb3VycyIsInNsZWVwIiwiYXBwbHlCZWhhdmlvdXIiLCJpbnRlZ3JhdGlvblR5cGUiLCJJTlRFR1JBVElPTl9UWVBFX0VVTEVSIiwidXBkYXRlIiwiUEFSVElDTEVfVVBEQVRFIiwiZ2V0VmFsdWUiLCJjcmVhdGVQYXJ0aWNsZSIsImVuZXJneSIsInJlbW92ZUFsbEluaXRpYWxpemVycyIsInJlbW92ZUFsbEJlaGF2aW91cnMiLCJyZW1vdmVFbWl0dGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFPQTs7QUFPQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDcUJBLE87Ozs7O0FBQ25CO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFLG1CQUFZQyxVQUFaLEVBQXdCO0FBQUE7O0FBQUE7QUFDdEIsOEJBQU1BLFVBQU47QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLQyxJQUFMLEdBQVlBLDJCQUFaO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksVUFBS0MsU0FBTCxHQUFpQixFQUFqQjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFVBQUtDLFlBQUwsR0FBb0IsRUFBcEI7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLQyxVQUFMLEdBQWtCLEVBQWxCO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksVUFBS0MsaUJBQUwsR0FBeUIsRUFBekI7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLQyxlQUFMLEdBQXVCLENBQXZCO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksVUFBS0MsY0FBTCxHQUFzQixDQUFDLENBQXZC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V0FBSzFDLElBQUwsR0FBWSxJQUFaO0FBQ0EsV0FBSzJDLE1BQUwsR0FBYyxDQUFkO0FBQ0EsV0FBSzlFLGNBQUwsR0FBc0IsQ0FBQyxDQUF2Qjs7QUFFQSxVQUFJLEtBQUtMLFNBQUwsQ0FBZXVDLE1BQWYsSUFBeUIsQ0FBN0IsRUFBZ0M7QUFDOUIsYUFBS3pCLFVBQUwsR0FBa0IsS0FBbEI7QUFDQSxhQUFLc0UscUJBQUw7QUFDQSxhQUFLQyxtQkFBTDtBQUNBLGFBQUt4QixRQUFMLFdBQWlCLEtBQUs5QyxFQUF0QixjQUE0QnVDLG9CQUE1QjtBQUVBLGFBQUtFLE1BQUwsSUFBZSxLQUFLQSxNQUFMLENBQVk4QixhQUFaLENBQTBCLElBQTFCLENBQWY7QUFDRDtBQUNGOzs7RUFqcUJrQzNCLHFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgREVGQVVMVF9CSU5EX0VNSVRURVIsXG4gIERFRkFVTFRfQklORF9FTUlUVEVSX0VWRU5ULFxuICBERUZBVUxUX0RBTVBJTkcsXG4gIERFRkFVTFRfRU1JVFRFUl9JTkRFWCxcbiAgREVGQVVMVF9FTUlUVEVSX1JBVEUsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBFdmVudERpc3BhdGNoZXIsIHtcbiAgRU1JVFRFUl9ERUFELFxuICBQQVJUSUNMRV9DUkVBVEVELFxuICBQQVJUSUNMRV9ERUFELFxuICBQQVJUSUNMRV9VUERBVEUsXG4gIFNZU1RFTV9VUERBVEUsXG59IGZyb20gJy4uL2V2ZW50cyc7XG5pbXBvcnQgeyBJTlRFR1JBVElPTl9UWVBFX0VVTEVSLCBpbnRlZ3JhdGUgfSBmcm9tICcuLi9tYXRoJztcbmltcG9ydCB7IFV0aWwsIHVpZCB9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHsgSW5pdGlhbGl6ZXJVdGlsIH0gZnJvbSAnLi4vaW5pdGlhbGl6ZXInO1xuaW1wb3J0IFBhcnRpY2xlIGZyb20gJy4uL2NvcmUvUGFydGljbGUnO1xuaW1wb3J0IGlzTnVtYmVyIGZyb20gJ2xvZGFzaC9pc051bWJlcic7XG5pbXBvcnQgeyBFTUlUVEVSX1RZUEVfRU1JVFRFUiBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRW1pdHRlcnMgYXJlIHRoZSBTeXN0ZW0gZW5naW5lJ3MgcGFydGljbGUgZmFjdG9yaWVzLiBUaGV5IGNhdXNlIHBhcnRpY2xlcyB0b1xuICogYmUgcmVuZGVyZWQgYnkgZW1pdHRpbmcgdGhlbSwgYW5kIHN0b3JlIGFsbCBwYXJ0aWNsZSBpbml0aWFsaXplcnMgYW5kIGJlaGF2aW91cnMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbWl0dGVyIGV4dGVuZHMgUGFydGljbGUge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBFbWl0dGVyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcGVydGllcyAtIFRoZSBwcm9wZXJ0aWVzIHRvIGluc3RhbnRpYXRlIHRoZSBlbWl0dGVyIHdpdGhcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzKSB7XG4gICAgc3VwZXIocHJvcGVydGllcyk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY2xhc3MgdHlwZS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyLlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKi9cbiAgICB0aGlzLnBhcnRpY2xlcyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGluaXRpYWxpemVycyBmb3IgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyLlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKi9cbiAgICB0aGlzLmluaXRpYWxpemVycyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGJlaGF2aW91cnMgZm9yIHBhcnRpY2xlcyBlbWl0dGVkIGJ5IHRoaXMgZW1pdHRlci5cbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAgICovXG4gICAgdGhpcy5iZWhhdmlvdXJzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgYmVoYXZpb3VycyBmb3IgdGhlIGVtaXR0ZXIuXG4gICAgICogQHR5cGUge2FycmF5fVxuICAgICAqL1xuICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjdXJyZW50IGVtaXQgaXRlcmF0aW9uLlxuICAgICAqIEB0eXBlIHtpbnRlZ2VyfVxuICAgICAqL1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSB0b3RhbCBudW1iZXIgb2YgdGltZXMgdGhlIGVtaXR0ZXIgc2hvdWxkIGVtaXQgcGFydGljbGVzLlxuICAgICAqIEB0eXBlIHtpbnRlZ2VyfVxuICAgICAqL1xuICAgIHRoaXMudG90YWxFbWl0VGltZXMgPSAtMTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBmcmljdGlvbiBjb2VmZmljaWVudCBmb3IgYWxsIHBhcnRpY2xlIHRvIGVtaXQgYnkuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmRhbXBpbmcgPSBERUZBVUxUX0RBTVBJTkc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBFbnN1cmVzIHRoYXQgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyIGFyZSBwb3NpdGlvbmVkXG4gICAgICogYWNjb3JkaW5nIHRvIHRoZSBlbWl0dGVyJ3MgcHJvcGVydGllcy5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmJpbmRFbWl0dGVyID0gREVGQVVMVF9CSU5EX0VNSVRURVI7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIGlmIHRoZSBlbWl0dGVyIHdpbGwgZGlzcGF0Y2ggaW50ZXJuYWwgZXZlbnRzLiBEZWZhdWx0c1xuICAgICAqIHRvIGZhbHNlXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5iaW5kRW1pdHRlckV2ZW50ID0gREVGQVVMVF9CSU5EX0VNSVRURVJfRVZFTlQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBlbWl0IHBlciBzZWNvbmQgKGEgW3BhcnRpY2xlXS9iIFtzXSlcbiAgICAgKiBAdHlwZSB7UmF0ZX1cbiAgICAgKi9cbiAgICB0aGlzLnJhdGUgPSBERUZBVUxUX0VNSVRURVJfUkFURTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIERldGVybWluZXMgaWYgdGhlIGVtaXR0ZXIgaXMgZW1pdHRpbmcgcGFydGljbGVzIG9yIG5vdC5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBlbWl0dGVyJ3MgaWQuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLmlkID0gYGVtaXR0ZXItJHt1aWQoKX1gO1xuICAgIHRoaXMuY0lEID0gMDtcbiAgICB0aGlzLm5hbWUgPSAnRW1pdHRlcic7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgaW5kZXggb2YgdGhlIGVtaXR0ZXIgYXMgaXQgaXMgYWRkZWQgdG8gdGhlIHN5c3RlbS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfHVuZGVmaW5lZH1cbiAgICAgKi9cbiAgICB0aGlzLmluZGV4ID0gREVGQVVMVF9FTUlUVEVSX0lOREVYO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGVtaXR0ZXIncyBpbnRlcm5hbCBldmVudCBkaXNwYXRjaGVyLlxuICAgICAqIEB0eXBlIHtFdmVudERpc3BhdGNoZXJ9XG4gICAgICovXG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIgPSBuZXcgRXZlbnREaXNwYXRjaGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUHJveHkgbWV0aG9kIGZvciB0aGUgaW50ZXJuYWwgZXZlbnQgZGlzcGF0Y2hlcidzIGRpc3BhdGNoRXZlbnQgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQgLSBUaGUgZXZlbnQgdG8gZGlzcGF0Y2hcbiAgICogQHBhcmFtIHtvYmplY3Q8UGFydGljbGU+fSBbdGFyZ2V0PXRoaXNdIC0gVGhlIGV2ZW50IHRhcmdldFxuICAgKi9cbiAgZGlzcGF0Y2goZXZlbnQsIHRhcmdldCA9IHRoaXMpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIgcmF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSYXRlfSByYXRlIC0gYSByYXRlIGluaXRpYWxpemVyIG9iamVjdFxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0UmF0ZShyYXRlKSB7XG4gICAgdGhpcy5yYXRlID0gcmF0ZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3UG9zaXRpb24gLSBhbiBvYmplY3QgdGhlIG5ldyB4LCB5IGFuZCB6IHByb3BzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRQb3NpdGlvbihuZXdQb3NpdGlvbiA9IHt9KSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gdGhpcztcbiAgICBjb25zdCB7IHggPSBwb3NpdGlvbi54LCB5ID0gcG9zaXRpb24ueSwgeiA9IHBvc2l0aW9uLnogfSA9IG5ld1Bvc2l0aW9uO1xuXG4gICAgdGhpcy5wb3NpdGlvbi5zZXQoeCwgeSwgeik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByb3RhdGlvbiBvZiB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1JvdGF0aW9uIC0gYW4gb2JqZWN0IHRoZSBuZXcgeCwgeSBhbmQgeiBwcm9wc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0Um90YXRpb24obmV3Um90YXRpb24gPSB7fSkge1xuICAgIGNvbnN0IHsgcm90YXRpb24gfSA9IHRoaXM7XG4gICAgY29uc3QgeyB4ID0gcm90YXRpb24ueCwgeSA9IHJvdGF0aW9uLnksIHogPSByb3RhdGlvbi56IH0gPSBuZXdSb3RhdGlvbjtcblxuICAgIHRoaXMucm90YXRpb24uc2V0KHgsIHksIHopO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRoZSBlbWl0dGVyIHNob3VsZCBlbWl0IHBhcnRpY2xlcyBhcyB3ZWxsIGFzXG4gICAqIHRoZSBlbWl0dGVyJ3MgbGlmZS4gQWxzbyBpbnRpYWxpemVzIHRoZSBlbWl0dGVyIHJhdGUuXG4gICAqIFRoaXMgZW5hYmxlcyB0aGUgZW1pdHRlciB0byBlbWl0IHBhcnRpY2xlcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0b3RhbEVtaXRUaW1lcz1JbmZpbml0eV0gLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRvIGVtaXQgcGFydGljbGVzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSB0aGUgbGlmZSBvZiB0aGlzIGVtaXR0ZXIgaW4gbWlsbGlzZWNvbmRzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBlbWl0KHRvdGFsRW1pdFRpbWVzID0gSW5maW5pdHksIGxpZmUgPSBJbmZpbml0eSkge1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcbiAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gaXNOdW1iZXIodG90YWxFbWl0VGltZXMpID8gdG90YWxFbWl0VGltZXMgOiBJbmZpbml0eTtcblxuICAgIGlmICh0b3RhbEVtaXRUaW1lcyA9PT0gMSkge1xuICAgICAgdGhpcy5saWZlID0gdG90YWxFbWl0VGltZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlmZSA9IGlzTnVtYmVyKGxpZmUpID8gbGlmZSA6IEluZmluaXR5O1xuICAgIH1cblxuICAgIHRoaXMucmF0ZS5pbml0KCk7XG4gICAgdGhpcy5pc0VtaXR0aW5nID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cGVyaW1lbnRhbCBlbWl0IG1ldGhvZCB0aGF0IGlzIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSBTeXN0ZW0uZW1pdCBtZXRob2QuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBleHBlcmltZW50YWxfZW1pdCgpIHtcbiAgICBjb25zdCB7IGlzRW1pdHRpbmcsIHRvdGFsRW1pdFRpbWVzLCBsaWZlIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFpc0VtaXR0aW5nKSB7XG4gICAgICB0aGlzLmN1cnJlbnRFbWl0VGltZSA9IDA7XG5cbiAgICAgIGlmICghdG90YWxFbWl0VGltZXMpIHtcbiAgICAgICAgdGhpcy5zZXRUb3RhbEVtaXRUaW1lcyhJbmZpbml0eSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghbGlmZSkge1xuICAgICAgICB0aGlzLnNldExpZmUoSW5maW5pdHkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJhdGUuaW5pdCgpO1xuICAgICAgdGhpcy5pc0VtaXR0aW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0b3RhbCBlbWl0IHRpbWVzIGZvciB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0b3RhbEVtaXRUaW1lcz1JbmZpbml0eV0gLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRvIGVtaXQgcGFydGljbGVzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRUb3RhbEVtaXRUaW1lcyh0b3RhbEVtaXRUaW1lcyA9IEluZmluaXR5KSB7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IGlzTnVtYmVyKHRvdGFsRW1pdFRpbWVzKSA/IHRvdGFsRW1pdFRpbWVzIDogSW5maW5pdHk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsaWZlIG9mIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmU9SW5maW5pdHldIC0gdGhlIGxpZmUgb2YgdGhpcyBlbWl0dGVyIGluIG1pbGxpc2Vjb25kc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0TGlmZShsaWZlID0gSW5maW5pdHkpIHtcbiAgICBpZiAodGhpcy50b3RhbEVtaXRUaW1lcyA9PT0gMSkge1xuICAgICAgdGhpcy5saWZlID0gdGhpcy50b3RhbEVtaXRUaW1lcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saWZlID0gaXNOdW1iZXIobGlmZSkgPyBsaWZlIDogSW5maW5pdHk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU3RvcHMgdGhlIGVtaXR0ZXIgZnJvbSBlbWl0dGluZyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgc3RvcEVtaXQoKSB7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IC0xO1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcbiAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBLaWxscyBhbGwgb2YgdGhlIGVtaXR0ZXIncyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgcmVtb3ZlQWxsUGFydGljbGVzKCkge1xuICAgIGxldCBpID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5wYXJ0aWNsZXNbaV0uZGVhZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwYXJ0aWNsZSBpbml0aWFsaXplciB0byB0aGUgZW1pdHRlci5cbiAgICogRWFjaCBpbml0aWFsaXplciBpcyBydW4gb24gZWFjaCBwYXJ0aWNsZSB3aGVuIHRoZXkgYXJlIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7SW5pdGlhbGl6ZXJ9IGluaXRpYWxpemVyIC0gVGhlIGluaXRpYWxpemVyIHRvIGFkZFxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkSW5pdGlhbGl6ZXIoaW5pdGlhbGl6ZXIpIHtcbiAgICB0aGlzLmluaXRpYWxpemVycy5wdXNoKGluaXRpYWxpemVyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgcGFydGljbGUgaW5pdGlhbGl6ZXJzIHRvIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEluaXRpYWxpemVyPn0gaW5pdGlhbGl6ZXJzIC0gYW4gYXJyYXkgb2YgcGFydGljbGUgaW5pdGlhbGl6ZXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRJbml0aWFsaXplcnMoaW5pdGlhbGl6ZXJzKSB7XG4gICAgbGV0IGkgPSBpbml0aWFsaXplcnMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5hZGRJbml0aWFsaXplcihpbml0aWFsaXplcnNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIncyBwYXJ0aWNsZSBpbml0aWFsaXplcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8SW5pdGlhbGl6ZXI+fSBpbml0aWFsaXplcnMgLSBhbiBhcnJheSBvZiBwYXJ0aWNsZSBpbml0aWFsaXplcnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldEluaXRpYWxpemVycyhpbml0aWFsaXplcnMpIHtcbiAgICB0aGlzLmluaXRpYWxpemVycyA9IGluaXRpYWxpemVycztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gaW5pdGlhbGl6ZXIgZnJvbSB0aGUgZW1pdHRlcidzIGluaXRpYWxpemVycyBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtJbml0aWFsaXplcn0gaW5pdGlhbGl6ZXIgLSBUaGUgaW5pdGlhbGl6ZXIgdG8gcmVtb3ZlXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVJbml0aWFsaXplcihpbml0aWFsaXplcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbml0aWFsaXplcnMuaW5kZXhPZihpbml0aWFsaXplcik7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBpbml0aWFsaXplcnMuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxJbml0aWFsaXplcnMoKSB7XG4gICAgVXRpbC5kZXN0cm95QXJyYXkodGhpcy5pbml0aWFsaXplcnMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGJlaGF2aW91ciB0byB0aGUgZW1pdHRlci4gQWxsIGVtaXR0ZXIgYmVoYXZpb3VycyBhcmUgYWRkZWQgdG8gZWFjaCBwYXJ0aWNsZSB3aGVuXG4gICAqIHRoZXkgYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIGFkZCB0byB0aGUgZW1pdHRlclxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIHRoaXMuYmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG11bHRpcGxlIGJlaGF2aW91cnMgdG8gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8QmVoYXZpb3VyPn0gYmVoYXZpb3VycyAtIGFuIGFycmF5IG9mIGVtaXR0ZXIgYmVoYXZpb3Vyc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgbGV0IGkgPSBiZWhhdmlvdXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMuYWRkQmVoYXZpb3VyKGJlaGF2aW91cnNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIncyBiZWhhdmlvdXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEJlaGF2aW91cj59IGJlaGF2aW91cnMgLSBhbiBhcnJheSBvZiBlbWl0dGVyIGJlaGF2aW91cnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldEJlaGF2aW91cnMoYmVoYXZpb3Vycykge1xuICAgIHRoaXMuYmVoYXZpb3VycyA9IGJlaGF2aW91cnM7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBiZWhhdmlvdXIgZnJvbSB0aGUgZW1pdHRlcidzIGJlaGF2aW91cnMgYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5iZWhhdmlvdXJzLmluZGV4T2YoYmVoYXZpb3VyKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBiZWhhdmlvdXJzIGZyb20gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxCZWhhdmlvdXJzKCkge1xuICAgIFV0aWwuZGVzdHJveUFycmF5KHRoaXMuYmVoYXZpb3Vycyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGVtaXR0ZXIgYmVoYXZpb3VyIHRvIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIC0gVGhlIGJlaGF2aW91ciB0byBhZGQgdG8gdGhlIGVtaXR0ZXJcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGFkZEVtaXR0ZXJCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgdGhpcy5lbWl0dGVyQmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG5cbiAgICBiZWhhdmlvdXIuaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgYmVoYXZpb3VycyB0byB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxCZWhhdmlvdXI+fSBiZWhhdmlvdXJzIC0gYW4gYXJyYXkgb2YgZW1pdHRlciBiZWhhdmlvdXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRFbWl0dGVyQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgbGV0IGkgPSBiZWhhdmlvdXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMuYWRkRW1pdHRlckJlaGF2aW91cihiZWhhdmlvdXJzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBlbWl0dGVyJ3MgYmVoYXZpb3Vycy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxCZWhhdmlvdXI+fSBiZWhhdmlvdXJzIC0gYW4gYXJyYXkgb2YgZW1pdHRlciBiZWhhdmlvdXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRFbWl0dGVyQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gYmVoYXZpb3Vycy5sZW5ndGg7XG5cbiAgICB0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzID0gYmVoYXZpb3VycztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnNbaV0uaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBiZWhhdmlvdXIgZnJvbSB0aGUgZW1pdHRlcidzIGJlaGF2aW91cnMgYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlRW1pdHRlckJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZW1pdHRlckJlaGF2aW91cnMuaW5kZXhPZihiZWhhdmlvdXIpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBiZWhhdmlvdXJzIGZyb20gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxFbWl0dGVyQmVoYXZpb3VycygpIHtcbiAgICBVdGlsLmRlc3Ryb3lBcnJheSh0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIGV2ZW50IGxpc3RlbmVyIGZvciB0aGUgRU1JVFRFUl9ERUFEIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29uRW1pdHRlckRlYWR9IC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgRU1JVFRFUl9ERUFEIGlzIGRpc3BhdGNoZWQuXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRPbkVtaXR0ZXJEZWFkRXZlbnRMaXN0ZW5lcihvbkVtaXR0ZXJEZWFkKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihgJHt0aGlzLmlkfV8ke0VNSVRURVJfREVBRH1gLCAoKSA9PlxuICAgICAgb25FbWl0dGVyRGVhZCgpXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwYXJ0aWNsZSBieSByZXRyZWl2aW5nIG9uZSBmcm9tIHRoZSBwb29sIGFuZCBzZXR0aW5nIGl0IHVwIHdpdGhcbiAgICogdGhlIHN1cHBsaWVkIGluaXRpYWxpemVyIGFuZCBiZWhhdmlvdXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBjcmVhdGVQYXJ0aWNsZSgpIHtcbiAgICBjb25zdCBwYXJ0aWNsZSA9IHRoaXMucGFyZW50LnBvb2wuZ2V0KFBhcnRpY2xlKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcblxuICAgIHRoaXMuc2V0dXBQYXJ0aWNsZShwYXJ0aWNsZSwgaW5kZXgpO1xuICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoKFBBUlRJQ0xFX0NSRUFURUQsIHBhcnRpY2xlKTtcbiAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9DUkVBVEVELCBwYXJ0aWNsZSk7XG5cbiAgICByZXR1cm4gcGFydGljbGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBhIHBhcnRpY2xlIGJ5IHJ1bm5pbmcgYWxsIGluaXRpYWxpemVycyBvbiBpdCBhbmQgc2V0dGluZyBpdHMgYmVoYXZpb3Vycy5cbiAgICogQWxzbyBhZGRzIHRoZSBwYXJ0aWNsZSB0byB0aGlzLnBhcnRpY2xlcy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gc2V0dXBcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBzZXR1cFBhcnRpY2xlKHBhcnRpY2xlLCBpbmRleCkge1xuICAgIGNvbnN0IHsgaW5pdGlhbGl6ZXJzLCBiZWhhdmlvdXJzIH0gPSB0aGlzO1xuXG4gICAgSW5pdGlhbGl6ZXJVdGlsLmluaXRpYWxpemUodGhpcywgcGFydGljbGUsIGluaXRpYWxpemVycyk7XG5cbiAgICBwYXJ0aWNsZS5hZGRCZWhhdmlvdXJzKGJlaGF2aW91cnMpO1xuICAgIHBhcnRpY2xlLnBhcmVudCA9IHRoaXM7XG4gICAgcGFydGljbGUuaW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMucGFydGljbGVzLnB1c2gocGFydGljbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGVtaXR0ZXIgYWNjb3JkaW5nIHRvIHRoZSB0aW1lIHBhc3NlZCBieSBjYWxsaW5nIHRoZSBnZW5lcmF0ZVxuICAgKiBhbmQgaW50ZWdyYXRlIG1ldGhvZHMuIFRoZSBnZW5lcmF0ZSBtZXRob2QgY3JlYXRlcyBwYXJ0aWNsZXMsIHRoZSBpbnRlZ3JhdGVcbiAgICogbWV0aG9kIHVwZGF0ZXMgZXhpc3RpbmcgcGFydGljbGVzLlxuICAgKlxuICAgKiBJZiB0aGUgZW1pdHRlciBhZ2UgaXMgZ3JlYXRlciB0aGFuIHRpbWUsIHRoZSBlbWl0dGVyIGlzIGtpbGxlZC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgYWxzbyBpbmRleGVzL2RlaW5kZXhlcyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gU3lzdGVtIGVuZ2luZSB0aW1lXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgdXBkYXRlKHRpbWUpIHtcbiAgICBpZiAoIXRoaXMuaXNFbWl0dGluZyAmJiB0aGlzLnBhcnRpY2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFnZSArPSB0aW1lO1xuXG4gICAgaWYgKHRoaXMuZGVhZCB8fCB0aGlzLmFnZSA+PSB0aGlzLmxpZmUpIHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRW1pdHRpbmcpXG4gICAge1xuICAgICAgdGhpcy5nZW5lcmF0ZSh0aW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLmludGVncmF0ZSh0aW1lKTtcblxuICAgIGxldCBpID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgY29uc3QgcGFydGljbGUgPSB0aGlzLnBhcnRpY2xlc1tpXTtcblxuICAgICAgaWYgKHBhcnRpY2xlLmRlYWQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuZGlzcGF0Y2goUEFSVElDTEVfREVBRCwgcGFydGljbGUpO1xuICAgICAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9ERUFELCBwYXJ0aWNsZSk7XG4gICAgICAgIHRoaXMucGFyZW50LnBvb2wuZXhwaXJlKHBhcnRpY2xlLnJlc2V0KCkpO1xuICAgICAgICB0aGlzLnBhcnRpY2xlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGlmKHRoaXMucGFydGljbGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAge1xuICAgICAgICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoKFNZU1RFTV9VUERBVEUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVFbWl0dGVyQmVoYXZpb3Vycyh0aW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBlbWl0dGVyJ3MgZW1pdHRlciBiZWhhdmlvdXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFN5c3RlbSBlbmdpbmUgdGltZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHVwZGF0ZUVtaXR0ZXJCZWhhdmlvdXJzKHRpbWUpIHtcbiAgICBpZiAodGhpcy5zbGVlcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZW1pdHRlckJlaGF2aW91cnMubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5lbWl0dGVyQmVoYXZpb3Vyc1tpXS5hcHBseUJlaGF2aW91cih0aGlzLCB0aW1lLCBpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyB0aGUgaW50ZWdyYXRpb24gYWxnb3JpdGhtIG9uIHRoZSBlbWl0dGVyIGFuZCBhbGwgcGFydGljbGVzLlxuICAgKiBVcGRhdGVzIHRoZSBwYXJ0aWNsZXMgd2l0aCB0aGUgdGltc3RhbXAgcGFzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFN5c3RlbSBlbmdpbmUgdGltZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGludGVncmF0ZSh0aW1lKSB7XG4gICAgY29uc3QgaW50ZWdyYXRpb25UeXBlID0gdGhpcy5wYXJlbnRcbiAgICAgID8gdGhpcy5wYXJlbnQuaW50ZWdyYXRpb25UeXBlXG4gICAgICA6IElOVEVHUkFUSU9OX1RZUEVfRVVMRVI7XG4gICAgY29uc3QgZGFtcGluZyA9IDEgLSB0aGlzLmRhbXBpbmc7XG5cbiAgICBpbnRlZ3JhdGUodGhpcywgdGltZSwgZGFtcGluZywgaW50ZWdyYXRpb25UeXBlKTtcblxuICAgIGxldCBpbmRleCA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBjb25zdCBwYXJ0aWNsZSA9IHRoaXMucGFydGljbGVzW2luZGV4XTtcblxuICAgICAgcGFydGljbGUudXBkYXRlKHRpbWUsIGluZGV4KTtcbiAgICAgIGludGVncmF0ZShwYXJ0aWNsZSwgdGltZSwgZGFtcGluZywgaW50ZWdyYXRpb25UeXBlKTtcblxuICAgICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuZGlzcGF0Y2goUEFSVElDTEVfVVBEQVRFLCBwYXJ0aWNsZSk7XG4gICAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9VUERBVEUsIHBhcnRpY2xlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIG5ldyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gU3lzdGVtIGVuZ2luZSB0aW1lXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgZ2VuZXJhdGUodGltZSkge1xuICAgIGlmICh0aGlzLnRvdGFsRW1pdFRpbWVzID09PSAxKSB7XG4gICAgICBsZXQgaSA9IHRoaXMucmF0ZS5nZXRWYWx1ZSg5OTk5OSk7XG5cbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB0aGlzLmNJRCA9IGk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gMDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lICs9IHRpbWU7XG5cbiAgICBpZiAodGhpcy5jdXJyZW50RW1pdFRpbWUgPCB0aGlzLnRvdGFsRW1pdFRpbWVzKSB7XG4gICAgICBsZXQgaSA9IHRoaXMucmF0ZS5nZXRWYWx1ZSh0aW1lKTtcblxuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHRoaXMuY0lEID0gaTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEtpbGxzIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZWFkID0gdHJ1ZTtcbiAgICB0aGlzLmVuZXJneSA9IDA7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IC0xO1xuXG4gICAgaWYgKHRoaXMucGFydGljbGVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVtb3ZlQWxsSW5pdGlhbGl6ZXJzKCk7XG4gICAgICB0aGlzLnJlbW92ZUFsbEJlaGF2aW91cnMoKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2goYCR7dGhpcy5pZH1fJHtFTUlUVEVSX0RFQUR9YCk7XG5cbiAgICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LnJlbW92ZUVtaXR0ZXIodGhpcyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
|
|
16
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
+
|
|
18
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
+
|
|
20
|
+
var _three = require("../core/three");
|
|
21
|
+
|
|
22
|
+
var _Initializer2 = _interopRequireDefault(require("./Initializer"));
|
|
23
|
+
|
|
24
|
+
var _types = require("./types");
|
|
25
|
+
|
|
26
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
27
|
+
|
|
28
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Sets the rotation property on initialized particles.
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
var Rotation = /*#__PURE__*/function (_Initializer) {
|
|
35
|
+
(0, _inherits2["default"])(Rotation, _Initializer);
|
|
36
|
+
|
|
37
|
+
var _super = _createSuper(Rotation);
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Constructs a Rotation property instance.
|
|
41
|
+
*
|
|
42
|
+
* @param {number} x - X axis rotation
|
|
43
|
+
* @param {number} y - Y axis rotation
|
|
44
|
+
* @param {number} z - Z axis rotation
|
|
45
|
+
* @param {boolean} [useEmitterRotation=true] - Determines if we should use the emitter's rotation as the starting rotation
|
|
46
|
+
* @param {boolean} [isEnabled=true] - Determines if the initializer should be enabled or not
|
|
47
|
+
* @return void
|
|
48
|
+
*/
|
|
49
|
+
function Rotation(x, y, z) {
|
|
50
|
+
var _this;
|
|
51
|
+
|
|
52
|
+
var useEmitterRotation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
53
|
+
var isEnabled = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
54
|
+
(0, _classCallCheck2["default"])(this, Rotation);
|
|
55
|
+
_this = _super.call(this, _types.INITIALIZER_TYPE_ROTATION, isEnabled);
|
|
56
|
+
_this.rotation = new _three.Vector3(x, y, z);
|
|
57
|
+
_this.useEmitterRotation = useEmitterRotation;
|
|
58
|
+
return _this;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Sets the particle's initial rotation.
|
|
62
|
+
*
|
|
63
|
+
* @param {Particle} particle - the particle to initialize the property on
|
|
64
|
+
* @return void
|
|
65
|
+
*/
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
(0, _createClass2["default"])(Rotation, [{
|
|
69
|
+
key: "initialize",
|
|
70
|
+
value: function initialize(particle) {
|
|
71
|
+
if (this.useEmitterRotation) {
|
|
72
|
+
// set initial particle rotation to that of the particle's emitter then add our set rotation
|
|
73
|
+
particle.rotation.copy(particle.parent.rotation).add(this.rotation);
|
|
74
|
+
} else {
|
|
75
|
+
particle.rotation.copy(this.rotation);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}], [{
|
|
79
|
+
key: "fromJSON",
|
|
80
|
+
value: function fromJSON(json) {
|
|
81
|
+
var x = json.x,
|
|
82
|
+
y = json.y,
|
|
83
|
+
z = json.z,
|
|
84
|
+
_json$useEmitterRotat = json.useEmitterRotation,
|
|
85
|
+
useEmitterRotation = _json$useEmitterRotat === void 0 ? true : _json$useEmitterRotat,
|
|
86
|
+
_json$isEnabled = json.isEnabled,
|
|
87
|
+
isEnabled = _json$isEnabled === void 0 ? true : _json$isEnabled;
|
|
88
|
+
return new Rotation(x, y, z, useEmitterRotation, isEnabled);
|
|
89
|
+
}
|
|
90
|
+
}]);
|
|
91
|
+
return Rotation;
|
|
92
|
+
}(_Initializer2["default"]);
|
|
93
|
+
|
|
94
|
+
exports["default"] = Rotation;
|
|
95
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbml0aWFsaXplci9Sb3RhdGlvbi5qcyJdLCJuYW1lcyI6WyJSb3RhdGlvbiIsIngiLCJ5IiwieiIsInVzZUVtaXR0ZXJSb3RhdGlvbiIsImlzRW5hYmxlZCIsInR5cGUiLCJyb3RhdGlvbiIsIlZlY3RvcjMiLCJwYXJ0aWNsZSIsImNvcHkiLCJwYXJlbnQiLCJhZGQiLCJqc29uIiwiSW5pdGlhbGl6ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7SUFDcUJBLFE7Ozs7O0FBQ25CO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Usb0JBQVlDLENBQVosRUFBZUMsQ0FBZixFQUFrQkMsQ0FBbEIsRUFBZ0U7QUFBQTs7QUFBQSxRQUEzQ0Msa0JBQTJDLHVFQUF4QixJQUF3QjtBQUFBLFFBQWxCQyxTQUFrQix1RUFBTixJQUFNO0FBQUE7QUFDOUQsOEJBQU1DLGdDQUFOLEVBQVlELFNBQVo7QUFDQSxVQUFLRSxRQUFMLEdBQWdCLElBQUlDLGNBQUosQ0FBWVAsQ0FBWixFQUFjQyxDQUFkLEVBQWdCQyxDQUFoQixDQUFoQjtBQUNBLFVBQUtDLGtCQUFMLEdBQTBCQSxrQkFBMUI7QUFIOEQ7QUFJL0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OytCQUNhSyxRLEVBQVU7QUFDbkIsVUFBRyxLQUFLTCxrQkFBUixFQUNBO0FBQ0U7QUFDQUssUUFBQUEsUUFBUSxDQUFDRixRQUFULENBQWtCRyxJQUFsQixDQUF1QkQsUUFBUSxDQUFDRSxNQUFULENBQWdCSixRQUF2QyxFQUFpREssR0FBakQsQ0FBcUQsS0FBS0wsUUFBMUQ7QUFDRCxPQUpELE1BTUE7QUFDRUUsUUFBQUEsUUFBUSxDQUFDRixRQUFULENBQWtCRyxJQUFsQixDQUF1QixLQUFLSCxRQUE1QjtBQUNEO0FBQ0Y7Ozs2QkFFZU0sSSxFQUFNO0FBQUEsVUFDWlosQ0FEWSxHQUM2Q1ksSUFEN0MsQ0FDWlosQ0FEWTtBQUFBLFVBQ1RDLENBRFMsR0FDNkNXLElBRDdDLENBQ1RYLENBRFM7QUFBQSxVQUNOQyxDQURNLEdBQzZDVSxJQUQ3QyxDQUNOVixDQURNO0FBQUEsa0NBQzZDVSxJQUQ3QyxDQUNIVCxrQkFERztBQUFBLFVBQ0hBLGtCQURHLHNDQUNrQixJQURsQjtBQUFBLDRCQUM2Q1MsSUFEN0MsQ0FDd0JSLFNBRHhCO0FBQUEsVUFDd0JBLFNBRHhCLGdDQUNvQyxJQURwQztBQUdwQixhQUFPLElBQUlMLFFBQUosQ0FBYUMsQ0FBYixFQUFnQkMsQ0FBaEIsRUFBbUJDLENBQW5CLEVBQXNCQyxrQkFBdEIsRUFBMENDLFNBQTFDLENBQVA7QUFDRDs7O0VBdkNtQ1Msd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZWN0b3IzIH0gZnJvbSAnLi4vY29yZS90aHJlZSc7XG5pbXBvcnQgSW5pdGlhbGl6ZXIgZnJvbSAnLi9Jbml0aWFsaXplcic7XG5pbXBvcnQgeyBJTklUSUFMSVpFUl9UWVBFX1JPVEFUSU9OIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXRzIHRoZSByb3RhdGlvbiBwcm9wZXJ0eSBvbiBpbml0aWFsaXplZCBwYXJ0aWNsZXMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSb3RhdGlvbiBleHRlbmRzIEluaXRpYWxpemVyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSb3RhdGlvbiBwcm9wZXJ0eSBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBYIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBZIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHogLSBaIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtib29sZWFufSBbdXNlRW1pdHRlclJvdGF0aW9uPXRydWVdIC0gRGV0ZXJtaW5lcyBpZiB3ZSBzaG91bGQgdXNlIHRoZSBlbWl0dGVyJ3Mgcm90YXRpb24gYXMgdGhlIHN0YXJ0aW5nIHJvdGF0aW9uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRW5hYmxlZD10cnVlXSAtIERldGVybWluZXMgaWYgdGhlIGluaXRpYWxpemVyIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHgsIHksIHosIHVzZUVtaXR0ZXJSb3RhdGlvbj10cnVlLCBpc0VuYWJsZWQgPSB0cnVlKSB7XG4gICAgc3VwZXIodHlwZSwgaXNFbmFibGVkKTtcbiAgICB0aGlzLnJvdGF0aW9uID0gbmV3IFZlY3RvcjMoeCx5LHopO1xuICAgIHRoaXMudXNlRW1pdHRlclJvdGF0aW9uID0gdXNlRW1pdHRlclJvdGF0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBhcnRpY2xlJ3MgaW5pdGlhbCByb3RhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSB0aGUgcGFydGljbGUgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvcGVydHkgb25cbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgaWYodGhpcy51c2VFbWl0dGVyUm90YXRpb24pXG4gICAge1xuICAgICAgLy8gc2V0IGluaXRpYWwgcGFydGljbGUgcm90YXRpb24gdG8gdGhhdCBvZiB0aGUgcGFydGljbGUncyBlbWl0dGVyIHRoZW4gYWRkIG91ciBzZXQgcm90YXRpb25cbiAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLmNvcHkocGFydGljbGUucGFyZW50LnJvdGF0aW9uKS5hZGQodGhpcy5yb3RhdGlvbik7XG4gICAgfVxuICAgIGVsc2VcbiAgICB7XG4gICAgICBwYXJ0aWNsZS5yb3RhdGlvbi5jb3B5KHRoaXMucm90YXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyB4LCB5LCB6LCB1c2VFbWl0dGVyUm90YXRpb24gPSB0cnVlLCBpc0VuYWJsZWQgPSB0cnVlIH0gPSBqc29uO1xuXG4gICAgcmV0dXJuIG5ldyBSb3RhdGlvbih4LCB5LCB6LCB1c2VFbWl0dGVyUm90YXRpb24sIGlzRW5hYmxlZCk7XG4gIH1cbn0iXX0=
|
|
@@ -41,6 +41,12 @@ Object.defineProperty(exports, "Position", {
|
|
|
41
41
|
return _Position["default"];
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
|
+
Object.defineProperty(exports, "Rotation", {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
get: function get() {
|
|
47
|
+
return _Rotation["default"];
|
|
48
|
+
}
|
|
49
|
+
});
|
|
44
50
|
Object.defineProperty(exports, "Radius", {
|
|
45
51
|
enumerable: true,
|
|
46
52
|
get: function get() {
|
|
@@ -90,6 +96,8 @@ var _Mass = _interopRequireDefault(require("./Mass"));
|
|
|
90
96
|
|
|
91
97
|
var _Position = _interopRequireDefault(require("./Position"));
|
|
92
98
|
|
|
99
|
+
var _Rotation = _interopRequireDefault(require("./Rotation"));
|
|
100
|
+
|
|
93
101
|
var _Radius = _interopRequireDefault(require("./Radius"));
|
|
94
102
|
|
|
95
103
|
var _Rate = _interopRequireDefault(require("./Rate"));
|
|
@@ -97,4 +105,4 @@ var _Rate = _interopRequireDefault(require("./Rate"));
|
|
|
97
105
|
var _Texture = _interopRequireDefault(require("./Texture"));
|
|
98
106
|
|
|
99
107
|
var _Velocity = require("./Velocity");
|
|
100
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbml0aWFsaXplci9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBCb2R5IH0gZnJvbSAnLi9Cb2R5JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQm9keVNwcml0ZSB9IGZyb20gJy4vQm9keVNwcml0ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEluaXRpYWxpemVyVXRpbCB9IGZyb20gJy4vSW5pdGlhbGl6ZXJVdGlsJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTGlmZSB9IGZyb20gJy4vTGlmZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1hc3MgfSBmcm9tICcuL01hc3MnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQb3NpdGlvbiB9IGZyb20gJy4vUG9zaXRpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSb3RhdGlvbiB9IGZyb20gJy4vUm90YXRpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSYWRpdXMgfSBmcm9tICcuL1JhZGl1cyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJhdGUgfSBmcm9tICcuL1JhdGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0dXJlIH0gZnJvbSAnLi9UZXh0dXJlJztcbmV4cG9ydCB7IFZlY3RvclZlbG9jaXR5LCBQb2xhclZlbG9jaXR5LCBSYWRpYWxWZWxvY2l0eSB9IGZyb20gJy4vVmVsb2NpdHknO1xuIl19
|