@esotericsoftware/spine-core 4.2.82 → 4.2.84

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.
Files changed (94) hide show
  1. package/LICENSE +12 -12
  2. package/dist/Animation.d.ts +6 -6
  3. package/dist/Animation.js +7 -7
  4. package/dist/AnimationState.d.ts +6 -6
  5. package/dist/AnimationState.js +7 -7
  6. package/dist/AnimationStateData.d.ts +6 -6
  7. package/dist/AnimationStateData.js +7 -7
  8. package/dist/AssetManagerBase.d.ts +6 -6
  9. package/dist/AssetManagerBase.js +7 -7
  10. package/dist/AtlasAttachmentLoader.d.ts +6 -6
  11. package/dist/AtlasAttachmentLoader.js +7 -7
  12. package/dist/Bone.d.ts +6 -6
  13. package/dist/Bone.js +7 -7
  14. package/dist/BoneData.d.ts +6 -6
  15. package/dist/BoneData.js +7 -7
  16. package/dist/ConstraintData.d.ts +6 -6
  17. package/dist/ConstraintData.js +7 -7
  18. package/dist/Event.d.ts +6 -6
  19. package/dist/Event.js +7 -7
  20. package/dist/EventData.d.ts +6 -6
  21. package/dist/EventData.js +7 -7
  22. package/dist/IkConstraint.d.ts +6 -6
  23. package/dist/IkConstraint.js +7 -7
  24. package/dist/IkConstraintData.d.ts +6 -6
  25. package/dist/IkConstraintData.js +7 -7
  26. package/dist/PathConstraint.d.ts +6 -6
  27. package/dist/PathConstraint.js +7 -7
  28. package/dist/PathConstraintData.d.ts +6 -6
  29. package/dist/PathConstraintData.js +7 -7
  30. package/dist/PhysicsConstraint.d.ts +6 -6
  31. package/dist/PhysicsConstraint.js +7 -7
  32. package/dist/PhysicsConstraintData.d.ts +6 -6
  33. package/dist/PhysicsConstraintData.js +7 -7
  34. package/dist/Skeleton.d.ts +6 -6
  35. package/dist/Skeleton.js +7 -7
  36. package/dist/SkeletonBinary.d.ts +6 -6
  37. package/dist/SkeletonBinary.js +7 -7
  38. package/dist/SkeletonBounds.d.ts +6 -6
  39. package/dist/SkeletonBounds.js +7 -7
  40. package/dist/SkeletonClipping.d.ts +6 -6
  41. package/dist/SkeletonClipping.js +7 -7
  42. package/dist/SkeletonData.d.ts +6 -6
  43. package/dist/SkeletonData.js +7 -7
  44. package/dist/SkeletonJson.d.ts +6 -6
  45. package/dist/SkeletonJson.js +7 -7
  46. package/dist/Skin.d.ts +6 -6
  47. package/dist/Skin.js +7 -7
  48. package/dist/Slot.d.ts +6 -6
  49. package/dist/Slot.js +7 -7
  50. package/dist/SlotData.d.ts +6 -6
  51. package/dist/SlotData.js +7 -7
  52. package/dist/Texture.d.ts +6 -6
  53. package/dist/Texture.js +7 -7
  54. package/dist/TextureAtlas.d.ts +6 -6
  55. package/dist/TextureAtlas.js +7 -7
  56. package/dist/TransformConstraint.d.ts +6 -6
  57. package/dist/TransformConstraint.js +7 -7
  58. package/dist/TransformConstraintData.d.ts +6 -6
  59. package/dist/TransformConstraintData.js +7 -7
  60. package/dist/Triangulator.d.ts +6 -6
  61. package/dist/Triangulator.js +7 -7
  62. package/dist/Updatable.d.ts +6 -6
  63. package/dist/Updatable.js +7 -7
  64. package/dist/Utils.d.ts +6 -6
  65. package/dist/Utils.js +7 -7
  66. package/dist/attachments/Attachment.d.ts +6 -6
  67. package/dist/attachments/Attachment.js +7 -7
  68. package/dist/attachments/AttachmentLoader.d.ts +6 -6
  69. package/dist/attachments/AttachmentLoader.js +7 -7
  70. package/dist/attachments/BoundingBoxAttachment.d.ts +6 -6
  71. package/dist/attachments/BoundingBoxAttachment.js +7 -7
  72. package/dist/attachments/ClippingAttachment.d.ts +6 -6
  73. package/dist/attachments/ClippingAttachment.js +7 -7
  74. package/dist/attachments/HasTextureRegion.d.ts +6 -6
  75. package/dist/attachments/HasTextureRegion.js +7 -7
  76. package/dist/attachments/MeshAttachment.d.ts +6 -6
  77. package/dist/attachments/MeshAttachment.js +8 -8
  78. package/dist/attachments/PathAttachment.d.ts +6 -6
  79. package/dist/attachments/PathAttachment.js +7 -7
  80. package/dist/attachments/PointAttachment.d.ts +6 -6
  81. package/dist/attachments/PointAttachment.js +7 -7
  82. package/dist/attachments/RegionAttachment.d.ts +6 -6
  83. package/dist/attachments/RegionAttachment.js +7 -7
  84. package/dist/attachments/Sequence.d.ts +6 -6
  85. package/dist/attachments/Sequence.js +7 -7
  86. package/dist/esm/spine-core.min.mjs +1 -1
  87. package/dist/esm/spine-core.mjs +1 -1
  88. package/dist/esm/spine-core.mjs.map +2 -2
  89. package/dist/iife/spine-core.js +1 -1
  90. package/dist/iife/spine-core.js.map +2 -2
  91. package/dist/iife/spine-core.min.js +1 -1
  92. package/dist/polyfills.d.ts +6 -6
  93. package/dist/polyfills.js +7 -7
  94. package/package.json +1 -1
@@ -1,16 +1,16 @@
1
1
  /******************************************************************************
2
2
  * Spine Runtimes License Agreement
3
- * Last updated July 28, 2023. Replaces all prior versions.
3
+ * Last updated April 5, 2025. Replaces all prior versions.
4
4
  *
5
- * Copyright (c) 2013-2023, Esoteric Software LLC
5
+ * Copyright (c) 2013-2025, Esoteric Software LLC
6
6
  *
7
7
  * Integration of the Spine Runtimes into software or otherwise creating
8
8
  * derivative works of the Spine Runtimes is permitted under the terms and
9
9
  * conditions of Section 2 of the Spine Editor License Agreement:
10
10
  * http://esotericsoftware.com/spine-editor-license
11
11
  *
12
- * Otherwise, it is permitted to integrate the Spine Runtimes into software or
13
- * otherwise create derivative works of the Spine Runtimes (collectively,
12
+ * Otherwise, it is permitted to integrate the Spine Runtimes into software
13
+ * or otherwise create derivative works of the Spine Runtimes (collectively,
14
14
  * "Products"), provided that each user of the Products must obtain their own
15
15
  * Spine Editor license and redistribution of the Products in any form must
16
16
  * include this license and copyright notice.
@@ -23,8 +23,8 @@
23
23
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
24
24
  * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
25
25
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
27
- * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
+ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
29
  import { Pool } from "./Utils.js";
30
30
  export class Triangulator {
@@ -239,4 +239,4 @@ export class Triangulator {
239
239
  return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1;
240
240
  }
241
241
  }
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJpYW5ndWxhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1RyaWFuZ3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFtQixJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbkQsTUFBTSxPQUFPLFlBQVk7SUFDaEIsY0FBYyxHQUFHLElBQUksS0FBSyxFQUFpQixDQUFDO0lBQzVDLHFCQUFxQixHQUFHLElBQUksS0FBSyxFQUFpQixDQUFDO0lBRW5ELFlBQVksR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQ25DLGNBQWMsR0FBRyxJQUFJLEtBQUssRUFBVyxDQUFDO0lBQ3RDLFNBQVMsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBRWhDLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBZ0IsR0FBRyxFQUFFO1FBQ2xELE9BQU8sSUFBSSxLQUFLLEVBQVUsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztJQUVLLGtCQUFrQixHQUFHLElBQUksSUFBSSxDQUFnQixHQUFHLEVBQUU7UUFDekQsT0FBTyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBRUksV0FBVyxDQUFFLGFBQThCO1FBQ2pELElBQUksUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUM3QixJQUFJLFdBQVcsR0FBRyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUU1QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEIsSUFBSSxTQUFTLEdBQUcsSUFB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UUFBUSxDQUFDLElBQUksQ0FBQyxFQUM3SCxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxZQUFZLENBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXO1FBQ3hHLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxNQUFNLENBQUMsT0FBTyxDQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVztRQUNuRyxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ25DLE9BQU8sR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBKdWx5IDI4LCAyMDIzLiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjMsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3JcbiAqIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSEVcbiAqIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBOdW1iZXJBcnJheUxpa2UsIFBvb2wgfSBmcm9tIFwiLi9VdGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgVHJpYW5ndWxhdG9yIHtcblx0cHJpdmF0ZSBjb252ZXhQb2x5Z29ucyA9IG5ldyBBcnJheTxBcnJheTxudW1iZXI+PigpO1xuXHRwcml2YXRlIGNvbnZleFBvbHlnb25zSW5kaWNlcyA9IG5ldyBBcnJheTxBcnJheTxudW1iZXI+PigpO1xuXG5cdHByaXZhdGUgaW5kaWNlc0FycmF5ID0gbmV3IEFycmF5PG51bWJlcj4oKTtcblx0cHJpdmF0ZSBpc0NvbmNhdmVBcnJheSA9IG5ldyBBcnJheTxib29sZWFuPigpO1xuXHRwcml2YXRlIHRyaWFuZ2xlcyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG5cblx0cHJpdmF0ZSBwb2x5Z29uUG9vbCA9IG5ldyBQb29sPEFycmF5PG51bWJlcj4+KCgpID0+IHtcblx0XHRyZXR1cm4gbmV3IEFycmF5PG51bWJlcj4oKTtcblx0fSk7XG5cblx0cHJpdmF0ZSBwb2x5Z29uSW5kaWNlc1Bvb2wgPSBuZXcgUG9vbDxBcnJheTxudW1iZXI+PigoKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBBcnJheTxudW1iZXI+KCk7XG5cdH0pO1xuXG5cdHB1YmxpYyB0cmlhbmd1bGF0ZSAodmVydGljZXNBcnJheTogTnVtYmVyQXJyYXlMaWtlKTogQXJyYXk8bnVtYmVyPiB7XG5cdFx0bGV0IHZlcnRpY2VzID0gdmVydGljZXNBcnJheTtcblx0XHRsZXQgdmVydGV4Q291bnQgPSB2ZXJ0aWNlc0FycmF5Lmxlbmd0aCA+PiAxO1xuXG5cdFx0bGV0IGluZGljZXMgPSB0aGlzLmluZGljZXNBcnJheTtcblx0XHRpbmRpY2VzLmxlbmd0aCA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKVxuXHRcdFx0aW5kaWNlc1tpXSA9IGk7XG5cblx0XHRsZXQgaXNDb25jYXZlID0gdGhpcy5pc0NvbmNhdmVBcnJheTtcblx0XHRpc0NvbmNhdmUubGVuZ3RoID0gMDtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHZlcnRleENvdW50OyBpIDwgbjsgKytpKVxuXHRcdFx0aXNDb25jYXZlW2ldID0gVHJpYW5ndWxhdG9yLmlzQ29uY2F2ZShpLCB2ZXJ0ZXhDb3VudCwgdmVydGljZXMsIGluZGljZXMpO1xuXG5cdFx0bGV0IHRyaWFuZ2xlcyA9IHRoaXMudHJpYW5nbGVzO1xuXHRcdHRyaWFuZ2xlcy5sZW5ndGggPSAwO1xuXG5cdFx0d2hpbGUgKHZlcnRleENvdW50ID4gMykge1xuXHRcdFx0Ly8gRmluZCBlYXIgdGlwLlxuXHRcdFx0bGV0IHByZXZpb3VzID0gdmVydGV4Q291bnQgLSAxLCBpID0gMCwgbmV4dCA9IDE7XG5cdFx0XHR3aGlsZSAodHJ1ZSkge1xuXHRcdFx0XHRvdXRlcjpcblx0XHRcdFx0aWYgKCFpc0NvbmNhdmVbaV0pIHtcblx0XHRcdFx0XHRsZXQgcDEgPSBpbmRpY2VzW3ByZXZpb3VzXSA8PCAxLCBwMiA9IGluZGljZXNbaV0gPDwgMSwgcDMgPSBpbmRpY2VzW25leHRdIDw8IDE7XG5cdFx0XHRcdFx0bGV0IHAxeCA9IHZlcnRpY2VzW3AxXSwgcDF5ID0gdmVydGljZXNbcDEgKyAxXTtcblx0XHRcdFx0XHRsZXQgcDJ4ID0gdmVydGljZXNbcDJdLCBwMnkgPSB2ZXJ0aWNlc1twMiArIDFdO1xuXHRcdFx0XHRcdGxldCBwM3ggPSB2ZXJ0aWNlc1twM10sIHAzeSA9IHZlcnRpY2VzW3AzICsgMV07XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAobmV4dCArIDEpICUgdmVydGV4Q291bnQ7IGlpICE9IHByZXZpb3VzOyBpaSA9IChpaSArIDEpICUgdmVydGV4Q291bnQpIHtcblx0XHRcdFx0XHRcdGlmICghaXNDb25jYXZlW2lpXSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRsZXQgdiA9IGluZGljZXNbaWldIDw8IDE7XG5cdFx0XHRcdFx0XHRsZXQgdnggPSB2ZXJ0aWNlc1t2XSwgdnkgPSB2ZXJ0aWNlc1t2ICsgMV07XG5cdFx0XHRcdFx0XHRpZiAoVHJpYW5ndWxhdG9yLnBvc2l0aXZlQXJlYShwM3gsIHAzeSwgcDF4LCBwMXksIHZ4LCB2eSkpIHtcblx0XHRcdFx0XHRcdFx0aWYgKFRyaWFuZ3VsYXRvci5wb3NpdGl2ZUFyZWEocDF4LCBwMXksIHAyeCwgcDJ5LCB2eCwgdnkpKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFRyaWFuZ3VsYXRvci5wb3NpdGl2ZUFyZWEocDJ4LCBwMnksIHAzeCwgcDN5LCB2eCwgdnkpKSBicmVhayBvdXRlcjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChuZXh0ID09IDApIHtcblx0XHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0XHRpZiAoIWlzQ29uY2F2ZVtpXSkgYnJlYWs7XG5cdFx0XHRcdFx0XHRpLS07XG5cdFx0XHRcdFx0fSB3aGlsZSAoaSA+IDApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cHJldmlvdXMgPSBpO1xuXHRcdFx0XHRpID0gbmV4dDtcblx0XHRcdFx0bmV4dCA9IChuZXh0ICsgMSkgJSB2ZXJ0ZXhDb3VudDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ3V0IGVhciB0aXAuXG5cdFx0XHR0cmlhbmdsZXMucHVzaChpbmRpY2VzWyh2ZXJ0ZXhDb3VudCArIGkgLSAxKSAlIHZlcnRleENvdW50XSk7XG5cdFx0XHR0cmlhbmdsZXMucHVzaChpbmRpY2VzW2ldKTtcblx0XHRcdHRyaWFuZ2xlcy5wdXNoKGluZGljZXNbKGkgKyAxKSAlIHZlcnRleENvdW50XSk7XG5cdFx0XHRpbmRpY2VzLnNwbGljZShpLCAxKTtcblx0XHRcdGlzQ29uY2F2ZS5zcGxpY2UoaSwgMSk7XG5cdFx0XHR2ZXJ0ZXhDb3VudC0tO1xuXG5cdFx0XHRsZXQgcHJldmlvdXNJbmRleCA9ICh2ZXJ0ZXhDb3VudCArIGkgLSAxKSAlIHZlcnRleENvdW50O1xuXHRcdFx0bGV0IG5leHRJbmRleCA9IGkgPT0gdmVydGV4Q291bnQgPyAwIDogaTtcblx0XHRcdGlzQ29uY2F2ZVtwcmV2aW91c0luZGV4XSA9IFRyaWFuZ3VsYXRvci5pc0NvbmNhdmUocHJldmlvdXNJbmRleCwgdmVydGV4Q291bnQsIHZlcnRpY2VzLCBpbmRpY2VzKTtcblx0XHRcdGlzQ29uY2F2ZVtuZXh0SW5kZXhdID0gVHJpYW5ndWxhdG9yLmlzQ29uY2F2ZShuZXh0SW5kZXgsIHZlcnRleENvdW50LCB2ZXJ0aWNlcywgaW5kaWNlcyk7XG5cdFx0fVxuXG5cdFx0aWYgKHZlcnRleENvdW50ID09IDMpIHtcblx0XHRcdHRyaWFuZ2xlcy5wdXNoKGluZGljZXNbMl0pO1xuXHRcdFx0dHJpYW5nbGVzLnB1c2goaW5kaWNlc1swXSk7XG5cdFx0XHR0cmlhbmdsZXMucHVzaChpbmRpY2VzWzFdKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJpYW5nbGVzO1xuXHR9XG5cblx0ZGVjb21wb3NlICh2ZXJ0aWNlc0FycmF5OiBBcnJheTxudW1iZXI+LCB0cmlhbmdsZXM6IEFycmF5PG51bWJlcj4pOiBBcnJheTxBcnJheTxudW1iZXI+PiB7XG5cdFx0bGV0IHZlcnRpY2VzID0gdmVydGljZXNBcnJheTtcblx0XHRsZXQgY29udmV4UG9seWdvbnMgPSB0aGlzLmNvbnZleFBvbHlnb25zO1xuXHRcdHRoaXMucG9seWdvblBvb2wuZnJlZUFsbChjb252ZXhQb2x5Z29ucyk7XG5cdFx0Y29udmV4UG9seWdvbnMubGVuZ3RoID0gMDtcblxuXHRcdGxldCBjb252ZXhQb2x5Z29uc0luZGljZXMgPSB0aGlzLmNvbnZleFBvbHlnb25zSW5kaWNlcztcblx0XHR0aGlzLnBvbHlnb25JbmRpY2VzUG9vbC5mcmVlQWxsKGNvbnZleFBvbHlnb25zSW5kaWNlcyk7XG5cdFx0Y29udmV4UG9seWdvbnNJbmRpY2VzLmxlbmd0aCA9IDA7XG5cblx0XHRsZXQgcG9seWdvbkluZGljZXMgPSB0aGlzLnBvbHlnb25JbmRpY2VzUG9vbC5vYnRhaW4oKTtcblx0XHRwb2x5Z29uSW5kaWNlcy5sZW5ndGggPSAwO1xuXG5cdFx0bGV0IHBvbHlnb24gPSB0aGlzLnBvbHlnb25Qb29sLm9idGFpbigpO1xuXHRcdHBvbHlnb24ubGVuZ3RoID0gMDtcblxuXHRcdC8vIE1lcmdlIHN1YnNlcXVlbnQgdHJpYW5nbGVzIGlmIHRoZXkgZm9ybSBhIHRyaWFuZ2xlIGZhbi5cblx0XHRsZXQgZmFuQmFzZUluZGV4ID0gLTEsIGxhc3RXaW5kaW5nID0gMDtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHRyaWFuZ2xlcy5sZW5ndGg7IGkgPCBuOyBpICs9IDMpIHtcblx0XHRcdGxldCB0MSA9IHRyaWFuZ2xlc1tpXSA8PCAxLCB0MiA9IHRyaWFuZ2xlc1tpICsgMV0gPDwgMSwgdDMgPSB0cmlhbmdsZXNbaSArIDJdIDw8IDE7XG5cdFx0XHRsZXQgeDEgPSB2ZXJ0aWNlc1t0MV0sIHkxID0gdmVydGljZXNbdDEgKyAxXTtcblx0XHRcdGxldCB4MiA9IHZlcnRpY2VzW3QyXSwgeTIgPSB2ZXJ0aWNlc1t0MiArIDFdO1xuXHRcdFx0bGV0IHgzID0gdmVydGljZXNbdDNdLCB5MyA9IHZlcnRpY2VzW3QzICsgMV07XG5cblx0XHRcdC8vIElmIHRoZSBiYXNlIG9mIHRoZSBsYXN0IHRyaWFuZ2xlIGlzIHRoZSBzYW1lIGFzIHRoaXMgdHJpYW5nbGUsIGNoZWNrIGlmIHRoZXkgZm9ybSBhIGNvbnZleCBwb2x5Z29uICh0cmlhbmdsZSBmYW4pLlxuXHRcdFx0bGV0IG1lcmdlZCA9IGZhbHNlO1xuXHRcdFx0aWYgKGZhbkJhc2VJbmRleCA9PSB0MSkge1xuXHRcdFx0XHRsZXQgbyA9IHBvbHlnb24ubGVuZ3RoIC0gNDtcblx0XHRcdFx0bGV0IHdpbmRpbmcxID0gVHJpYW5ndWxhdG9yLndpbmRpbmcocG9seWdvbltvXSwgcG9seWdvbltvICsgMV0sIHBvbHlnb25bbyArIDJdLCBwb2x5Z29uW28gKyAzXSwgeDMsIHkzKTtcblx0XHRcdFx0bGV0IHdpbmRpbmcyID0gVHJpYW5ndWxhdG9yLndpbmRpbmcoeDMsIHkzLCBwb2x5Z29uWzBdLCBwb2x5Z29uWzFdLCBwb2x5Z29uWzJdLCBwb2x5Z29uWzNdKTtcblx0XHRcdFx0aWYgKHdpbmRpbmcxID09IGxhc3RXaW5kaW5nICYmIHdpbmRpbmcyID09IGxhc3RXaW5kaW5nKSB7XG5cdFx0XHRcdFx0cG9seWdvbi5wdXNoKHgzKTtcblx0XHRcdFx0XHRwb2x5Z29uLnB1c2goeTMpO1xuXHRcdFx0XHRcdHBvbHlnb25JbmRpY2VzLnB1c2godDMpO1xuXHRcdFx0XHRcdG1lcmdlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIG1ha2UgdGhpcyB0cmlhbmdsZSB0aGUgbmV3IGJhc2UuXG5cdFx0XHRpZiAoIW1lcmdlZCkge1xuXHRcdFx0XHRpZiAocG9seWdvbi5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Y29udmV4UG9seWdvbnMucHVzaChwb2x5Z29uKTtcblx0XHRcdFx0XHRjb252ZXhQb2x5Z29uc0luZGljZXMucHVzaChwb2x5Z29uSW5kaWNlcyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5wb2x5Z29uUG9vbC5mcmVlKHBvbHlnb24pXG5cdFx0XHRcdFx0dGhpcy5wb2x5Z29uSW5kaWNlc1Bvb2wuZnJlZShwb2x5Z29uSW5kaWNlcyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cG9seWdvbiA9IHRoaXMucG9seWdvblBvb2wub2J0YWluKCk7XG5cdFx0XHRcdHBvbHlnb24ubGVuZ3RoID0gMDtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHgxKTtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHkxKTtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHgyKTtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHkyKTtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHgzKTtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHkzKTtcblx0XHRcdFx0cG9seWdvbkluZGljZXMgPSB0aGlzLnBvbHlnb25JbmRpY2VzUG9vbC5vYnRhaW4oKTtcblx0XHRcdFx0cG9seWdvbkluZGljZXMubGVuZ3RoID0gMDtcblx0XHRcdFx0cG9seWdvbkluZGljZXMucHVzaCh0MSk7XG5cdFx0XHRcdHBvbHlnb25JbmRpY2VzLnB1c2godDIpO1xuXHRcdFx0XHRwb2x5Z29uSW5kaWNlcy5wdXNoKHQzKTtcblx0XHRcdFx0bGFzdFdpbmRpbmcgPSBUcmlhbmd1bGF0b3Iud2luZGluZyh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzKTtcblx0XHRcdFx0ZmFuQmFzZUluZGV4ID0gdDE7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHBvbHlnb24ubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29udmV4UG9seWdvbnMucHVzaChwb2x5Z29uKTtcblx0XHRcdGNvbnZleFBvbHlnb25zSW5kaWNlcy5wdXNoKHBvbHlnb25JbmRpY2VzKTtcblx0XHR9XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIHBvbHlnb25zIGFuZCB0cnkgdG8gbWVyZ2UgdGhlIHJlbWFpbmluZyB0cmlhbmdsZXMgd2l0aCB0aGUgZm91bmQgdHJpYW5nbGUgZmFucy5cblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGNvbnZleFBvbHlnb25zLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0cG9seWdvbkluZGljZXMgPSBjb252ZXhQb2x5Z29uc0luZGljZXNbaV07XG5cdFx0XHRpZiAocG9seWdvbkluZGljZXMubGVuZ3RoID09IDApIGNvbnRpbnVlO1xuXHRcdFx0bGV0IGZpcnN0SW5kZXggPSBwb2x5Z29uSW5kaWNlc1swXTtcblx0XHRcdGxldCBsYXN0SW5kZXggPSBwb2x5Z29uSW5kaWNlc1twb2x5Z29uSW5kaWNlcy5sZW5ndGggLSAxXTtcblxuXHRcdFx0cG9seWdvbiA9IGNvbnZleFBvbHlnb25zW2ldO1xuXHRcdFx0bGV0IG8gPSBwb2x5Z29uLmxlbmd0aCAtIDQ7XG5cdFx0XHRsZXQgcHJldlByZXZYID0gcG9seWdvbltvXSwgcHJldlByZXZZID0gcG9seWdvbltvICsgMV07XG5cdFx0XHRsZXQgcHJldlggPSBwb2x5Z29uW28gKyAyXSwgcHJldlkgPSBwb2x5Z29uW28gKyAzXTtcblx0XHRcdGxldCBmaXJzdFggPSBwb2x5Z29uWzBdLCBmaXJzdFkgPSBwb2x5Z29uWzFdO1xuXHRcdFx0bGV0IHNlY29uZFggPSBwb2x5Z29uWzJdLCBzZWNvbmRZID0gcG9seWdvblszXTtcblx0XHRcdGxldCB3aW5kaW5nID0gVHJpYW5ndWxhdG9yLndpbmRpbmcocHJldlByZXZYLCBwcmV2UHJldlksIHByZXZYLCBwcmV2WSwgZmlyc3RYLCBmaXJzdFkpO1xuXG5cdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgbjsgaWkrKykge1xuXHRcdFx0XHRpZiAoaWkgPT0gaSkgY29udGludWU7XG5cdFx0XHRcdGxldCBvdGhlckluZGljZXMgPSBjb252ZXhQb2x5Z29uc0luZGljZXNbaWldO1xuXHRcdFx0XHRpZiAob3RoZXJJbmRpY2VzLmxlbmd0aCAhPSAzKSBjb250aW51ZTtcblx0XHRcdFx0bGV0IG90aGVyRmlyc3RJbmRleCA9IG90aGVySW5kaWNlc1swXTtcblx0XHRcdFx0bGV0IG90aGVyU2Vjb25kSW5kZXggPSBvdGhlckluZGljZXNbMV07XG5cdFx0XHRcdGxldCBvdGhlckxhc3RJbmRleCA9IG90aGVySW5kaWNlc1syXTtcblxuXHRcdFx0XHRsZXQgb3RoZXJQb2x5ID0gY29udmV4UG9seWdvbnNbaWldO1xuXHRcdFx0XHRsZXQgeDMgPSBvdGhlclBvbHlbb3RoZXJQb2x5Lmxlbmd0aCAtIDJdLCB5MyA9IG90aGVyUG9seVtvdGhlclBvbHkubGVuZ3RoIC0gMV07XG5cblx0XHRcdFx0aWYgKG90aGVyRmlyc3RJbmRleCAhPSBmaXJzdEluZGV4IHx8IG90aGVyU2Vjb25kSW5kZXggIT0gbGFzdEluZGV4KSBjb250aW51ZTtcblx0XHRcdFx0bGV0IHdpbmRpbmcxID0gVHJpYW5ndWxhdG9yLndpbmRpbmcocHJldlByZXZYLCBwcmV2UHJldlksIHByZXZYLCBwcmV2WSwgeDMsIHkzKTtcblx0XHRcdFx0bGV0IHdpbmRpbmcyID0gVHJpYW5ndWxhdG9yLndpbmRpbmcoeDMsIHkzLCBmaXJzdFgsIGZpcnN0WSwgc2Vjb25kWCwgc2Vjb25kWSk7XG5cdFx0XHRcdGlmICh3aW5kaW5nMSA9PSB3aW5kaW5nICYmIHdpbmRpbmcyID09IHdpbmRpbmcpIHtcblx0XHRcdFx0XHRvdGhlclBvbHkubGVuZ3RoID0gMDtcblx0XHRcdFx0XHRvdGhlckluZGljZXMubGVuZ3RoID0gMDtcblx0XHRcdFx0XHRwb2x5Z29uLnB1c2goeDMpO1xuXHRcdFx0XHRcdHBvbHlnb24ucHVzaCh5Myk7XG5cdFx0XHRcdFx0cG9seWdvbkluZGljZXMucHVzaChvdGhlckxhc3RJbmRleCk7XG5cdFx0XHRcdFx0cHJldlByZXZYID0gcHJldlg7XG5cdFx0XHRcdFx0cHJldlByZXZZID0gcHJldlk7XG5cdFx0XHRcdFx0cHJldlggPSB4Mztcblx0XHRcdFx0XHRwcmV2WSA9IHkzO1xuXHRcdFx0XHRcdGlpID0gMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSBlbXB0eSBwb2x5Z29ucyB0aGF0IHJlc3VsdGVkIGZyb20gdGhlIG1lcmdlIHN0ZXAgYWJvdmUuXG5cdFx0Zm9yIChsZXQgaSA9IGNvbnZleFBvbHlnb25zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRwb2x5Z29uID0gY29udmV4UG9seWdvbnNbaV07XG5cdFx0XHRpZiAocG9seWdvbi5sZW5ndGggPT0gMCkge1xuXHRcdFx0XHRjb252ZXhQb2x5Z29ucy5zcGxpY2UoaSwgMSk7XG5cdFx0XHRcdHRoaXMucG9seWdvblBvb2wuZnJlZShwb2x5Z29uKTtcblx0XHRcdFx0cG9seWdvbkluZGljZXMgPSBjb252ZXhQb2x5Z29uc0luZGljZXNbaV1cblx0XHRcdFx0Y29udmV4UG9seWdvbnNJbmRpY2VzLnNwbGljZShpLCAxKVxuXHRcdFx0XHR0aGlzLnBvbHlnb25JbmRpY2VzUG9vbC5mcmVlKHBvbHlnb25JbmRpY2VzKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29udmV4UG9seWdvbnM7XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBpc0NvbmNhdmUgKGluZGV4OiBudW1iZXIsIHZlcnRleENvdW50OiBudW1iZXIsIHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIGluZGljZXM6IE51bWJlckFycmF5TGlrZSk6IGJvb2xlYW4ge1xuXHRcdGxldCBwcmV2aW91cyA9IGluZGljZXNbKHZlcnRleENvdW50ICsgaW5kZXggLSAxKSAlIHZlcnRleENvdW50XSA8PCAxO1xuXHRcdGxldCBjdXJyZW50ID0gaW5kaWNlc1tpbmRleF0gPDwgMTtcblx0XHRsZXQgbmV4dCA9IGluZGljZXNbKGluZGV4ICsgMSkgJSB2ZXJ0ZXhDb3VudF0gPDwgMTtcblx0XHRyZXR1cm4gIXRoaXMucG9zaXRpdmVBcmVhKHZlcnRpY2VzW3ByZXZpb3VzXSwgdmVydGljZXNbcHJldmlvdXMgKyAxXSwgdmVydGljZXNbY3VycmVudF0sIHZlcnRpY2VzW2N1cnJlbnQgKyAxXSwgdmVydGljZXNbbmV4dF0sXG5cdFx0XHR2ZXJ0aWNlc1tuZXh0ICsgMV0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzdGF0aWMgcG9zaXRpdmVBcmVhIChwMXg6IG51bWJlciwgcDF5OiBudW1iZXIsIHAyeDogbnVtYmVyLCBwMnk6IG51bWJlciwgcDN4OiBudW1iZXIsIHAzeTogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHAxeCAqIChwM3kgLSBwMnkpICsgcDJ4ICogKHAxeSAtIHAzeSkgKyBwM3ggKiAocDJ5IC0gcDF5KSA+PSAwO1xuXHR9XG5cblx0cHJpdmF0ZSBzdGF0aWMgd2luZGluZyAocDF4OiBudW1iZXIsIHAxeTogbnVtYmVyLCBwMng6IG51bWJlciwgcDJ5OiBudW1iZXIsIHAzeDogbnVtYmVyLCBwM3k6IG51bWJlcik6IG51bWJlciB7XG5cdFx0bGV0IHB4ID0gcDJ4IC0gcDF4LCBweSA9IHAyeSAtIHAxeTtcblx0XHRyZXR1cm4gcDN4ICogcHkgLSBwM3kgKiBweCArIHB4ICogcDF5IC0gcDF4ICogcHkgPj0gMCA/IDEgOiAtMTtcblx0fVxufVxuIl19
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJpYW5ndWxhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1RyaWFuZ3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFtQixJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbkQsTUFBTSxPQUFPLFlBQVk7SUFDaEIsY0FBYyxHQUFHLElBQUksS0FBSyxFQUFpQixDQUFDO0lBQzVDLHFCQUFxQixHQUFHLElBQUksS0FBSyxFQUFpQixDQUFDO0lBRW5ELFlBQVksR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQ25DLGNBQWMsR0FBRyxJQUFJLEtBQUssRUFBVyxDQUFDO0lBQ3RDLFNBQVMsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBRWhDLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBZ0IsR0FBRyxFQUFFO1FBQ2xELE9BQU8sSUFBSSxLQUFLLEVBQVUsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztJQUVLLGtCQUFrQixHQUFHLElBQUksSUFBSSxDQUFnQixHQUFHLEVBQUU7UUFDekQsT0FBTyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBRUksV0FBVyxDQUFFLGFBQThCO1FBQ2pELElBQUksUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUM3QixJQUFJLFdBQVcsR0FBRyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUU1QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNwQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTFFLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDL0IsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFckIsT0FBTyxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsZ0JBQWdCO1lBQ2hCLElBQUksUUFBUSxHQUFHLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxFQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDL0UsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUMvQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDL0MsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUM7d0JBQ3JGLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDOzRCQUFFLFNBQVM7d0JBQzdCLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3pCLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQzs0QkFDM0QsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQ0FDM0QsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO29DQUFFLE1BQU0sS0FBSyxDQUFDOzRCQUN4RSxDQUFDO3dCQUNGLENBQUM7b0JBQ0YsQ0FBQztvQkFDRCxNQUFNO2dCQUNQLENBQUM7Z0JBRUQsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ2YsR0FBRyxDQUFDO3dCQUNILElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDOzRCQUFFLE1BQU07d0JBQ3pCLENBQUMsRUFBRSxDQUFDO29CQUNMLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNoQixNQUFNO2dCQUNQLENBQUM7Z0JBRUQsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDYixDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNULElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUM7WUFDakMsQ0FBQztZQUVELGVBQWU7WUFDZixTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUM3RCxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDL0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkIsV0FBVyxFQUFFLENBQUM7WUFFZCxJQUFJLGFBQWEsR0FBRyxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQ3hELElBQUksU0FBUyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2pHLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFFRCxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QixTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbEIsQ0FBQztJQUVELFNBQVMsQ0FBRSxhQUE0QixFQUFFLFNBQXdCO1FBQ2hFLElBQUksUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUM3QixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTFCLElBQUkscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN2RCxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0RCxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUUxQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLDBEQUEwRDtRQUMxRCxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUMsRUFBRSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JELElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRixJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdDLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUU3QyxxSEFBcUg7WUFDckgsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxRQUFRLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RyxJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVGLElBQUksUUFBUSxJQUFJLFdBQVcsSUFBSSxRQUFRLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ3hELE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2pCLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3hCLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ2YsQ0FBQztZQUNGLENBQUM7WUFFRCw2Q0FBNkM7WUFDN0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNiLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDN0IscUJBQXFCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO3FCQUFNLENBQUM7b0JBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQzlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzlDLENBQUM7Z0JBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNsRCxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDMUIsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEIsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEIsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEIsV0FBVyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDM0QsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUNuQixDQUFDO1FBQ0YsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQseUdBQXlHO1FBQ3pHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN2RCxjQUFjLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUMsSUFBSSxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQUUsU0FBUztZQUN6QyxJQUFJLFVBQVUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsSUFBSSxTQUFTLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFMUQsT0FBTyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMzQixJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdkQsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuRCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxJQUFJLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFdkYsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUMvQixJQUFJLEVBQUUsSUFBSSxDQUFDO29CQUFFLFNBQVM7Z0JBQ3RCLElBQUksWUFBWSxHQUFHLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLFlBQVksQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFBRSxTQUFTO2dCQUN2QyxJQUFJLGVBQWUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLGNBQWMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXJDLElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUUvRSxJQUFJLGVBQWUsSUFBSSxVQUFVLElBQUksZ0JBQWdCLElBQUksU0FBUztvQkFBRSxTQUFTO2dCQUM3RSxJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2hGLElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDOUUsSUFBSSxRQUFRLElBQUksT0FBTyxJQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDaEQsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQ3JCLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNqQixjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUNwQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUNsQixTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUNsQixLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUNYLEtBQUssR0FBRyxFQUFFLENBQUM7b0JBQ1gsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDUixDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUM7UUFFRCxpRUFBaUU7UUFDakUsS0FBSyxJQUFJLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckQsT0FBTyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0IsY0FBYyxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUN6QyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUNsQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDdkIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUFTLENBQUUsS0FBYSxFQUFFLFdBQW1CLEVBQUUsUUFBeUIsRUFBRSxPQUF3QjtRQUNoSCxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRSxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUM3SCxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxZQUFZLENBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXO1FBQ3hHLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxNQUFNLENBQUMsT0FBTyxDQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVztRQUNuRyxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ25DLE9BQU8sR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBOdW1iZXJBcnJheUxpa2UsIFBvb2wgfSBmcm9tIFwiLi9VdGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgVHJpYW5ndWxhdG9yIHtcblx0cHJpdmF0ZSBjb252ZXhQb2x5Z29ucyA9IG5ldyBBcnJheTxBcnJheTxudW1iZXI+PigpO1xuXHRwcml2YXRlIGNvbnZleFBvbHlnb25zSW5kaWNlcyA9IG5ldyBBcnJheTxBcnJheTxudW1iZXI+PigpO1xuXG5cdHByaXZhdGUgaW5kaWNlc0FycmF5ID0gbmV3IEFycmF5PG51bWJlcj4oKTtcblx0cHJpdmF0ZSBpc0NvbmNhdmVBcnJheSA9IG5ldyBBcnJheTxib29sZWFuPigpO1xuXHRwcml2YXRlIHRyaWFuZ2xlcyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG5cblx0cHJpdmF0ZSBwb2x5Z29uUG9vbCA9IG5ldyBQb29sPEFycmF5PG51bWJlcj4+KCgpID0+IHtcblx0XHRyZXR1cm4gbmV3IEFycmF5PG51bWJlcj4oKTtcblx0fSk7XG5cblx0cHJpdmF0ZSBwb2x5Z29uSW5kaWNlc1Bvb2wgPSBuZXcgUG9vbDxBcnJheTxudW1iZXI+PigoKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBBcnJheTxudW1iZXI+KCk7XG5cdH0pO1xuXG5cdHB1YmxpYyB0cmlhbmd1bGF0ZSAodmVydGljZXNBcnJheTogTnVtYmVyQXJyYXlMaWtlKTogQXJyYXk8bnVtYmVyPiB7XG5cdFx0bGV0IHZlcnRpY2VzID0gdmVydGljZXNBcnJheTtcblx0XHRsZXQgdmVydGV4Q291bnQgPSB2ZXJ0aWNlc0FycmF5Lmxlbmd0aCA+PiAxO1xuXG5cdFx0bGV0IGluZGljZXMgPSB0aGlzLmluZGljZXNBcnJheTtcblx0XHRpbmRpY2VzLmxlbmd0aCA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKVxuXHRcdFx0aW5kaWNlc1tpXSA9IGk7XG5cblx0XHRsZXQgaXNDb25jYXZlID0gdGhpcy5pc0NvbmNhdmVBcnJheTtcblx0XHRpc0NvbmNhdmUubGVuZ3RoID0gMDtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHZlcnRleENvdW50OyBpIDwgbjsgKytpKVxuXHRcdFx0aXNDb25jYXZlW2ldID0gVHJpYW5ndWxhdG9yLmlzQ29uY2F2ZShpLCB2ZXJ0ZXhDb3VudCwgdmVydGljZXMsIGluZGljZXMpO1xuXG5cdFx0bGV0IHRyaWFuZ2xlcyA9IHRoaXMudHJpYW5nbGVzO1xuXHRcdHRyaWFuZ2xlcy5sZW5ndGggPSAwO1xuXG5cdFx0d2hpbGUgKHZlcnRleENvdW50ID4gMykge1xuXHRcdFx0Ly8gRmluZCBlYXIgdGlwLlxuXHRcdFx0bGV0IHByZXZpb3VzID0gdmVydGV4Q291bnQgLSAxLCBpID0gMCwgbmV4dCA9IDE7XG5cdFx0XHR3aGlsZSAodHJ1ZSkge1xuXHRcdFx0XHRvdXRlcjpcblx0XHRcdFx0aWYgKCFpc0NvbmNhdmVbaV0pIHtcblx0XHRcdFx0XHRsZXQgcDEgPSBpbmRpY2VzW3ByZXZpb3VzXSA8PCAxLCBwMiA9IGluZGljZXNbaV0gPDwgMSwgcDMgPSBpbmRpY2VzW25leHRdIDw8IDE7XG5cdFx0XHRcdFx0bGV0IHAxeCA9IHZlcnRpY2VzW3AxXSwgcDF5ID0gdmVydGljZXNbcDEgKyAxXTtcblx0XHRcdFx0XHRsZXQgcDJ4ID0gdmVydGljZXNbcDJdLCBwMnkgPSB2ZXJ0aWNlc1twMiArIDFdO1xuXHRcdFx0XHRcdGxldCBwM3ggPSB2ZXJ0aWNlc1twM10sIHAzeSA9IHZlcnRpY2VzW3AzICsgMV07XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAobmV4dCArIDEpICUgdmVydGV4Q291bnQ7IGlpICE9IHByZXZpb3VzOyBpaSA9IChpaSArIDEpICUgdmVydGV4Q291bnQpIHtcblx0XHRcdFx0XHRcdGlmICghaXNDb25jYXZlW2lpXSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRsZXQgdiA9IGluZGljZXNbaWldIDw8IDE7XG5cdFx0XHRcdFx0XHRsZXQgdnggPSB2ZXJ0aWNlc1t2XSwgdnkgPSB2ZXJ0aWNlc1t2ICsgMV07XG5cdFx0XHRcdFx0XHRpZiAoVHJpYW5ndWxhdG9yLnBvc2l0aXZlQXJlYShwM3gsIHAzeSwgcDF4LCBwMXksIHZ4LCB2eSkpIHtcblx0XHRcdFx0XHRcdFx0aWYgKFRyaWFuZ3VsYXRvci5wb3NpdGl2ZUFyZWEocDF4LCBwMXksIHAyeCwgcDJ5LCB2eCwgdnkpKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFRyaWFuZ3VsYXRvci5wb3NpdGl2ZUFyZWEocDJ4LCBwMnksIHAzeCwgcDN5LCB2eCwgdnkpKSBicmVhayBvdXRlcjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChuZXh0ID09IDApIHtcblx0XHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0XHRpZiAoIWlzQ29uY2F2ZVtpXSkgYnJlYWs7XG5cdFx0XHRcdFx0XHRpLS07XG5cdFx0XHRcdFx0fSB3aGlsZSAoaSA+IDApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cHJldmlvdXMgPSBpO1xuXHRcdFx0XHRpID0gbmV4dDtcblx0XHRcdFx0bmV4dCA9IChuZXh0ICsgMSkgJSB2ZXJ0ZXhDb3VudDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ3V0IGVhciB0aXAuXG5cdFx0XHR0cmlhbmdsZXMucHVzaChpbmRpY2VzWyh2ZXJ0ZXhDb3VudCArIGkgLSAxKSAlIHZlcnRleENvdW50XSk7XG5cdFx0XHR0cmlhbmdsZXMucHVzaChpbmRpY2VzW2ldKTtcblx0XHRcdHRyaWFuZ2xlcy5wdXNoKGluZGljZXNbKGkgKyAxKSAlIHZlcnRleENvdW50XSk7XG5cdFx0XHRpbmRpY2VzLnNwbGljZShpLCAxKTtcblx0XHRcdGlzQ29uY2F2ZS5zcGxpY2UoaSwgMSk7XG5cdFx0XHR2ZXJ0ZXhDb3VudC0tO1xuXG5cdFx0XHRsZXQgcHJldmlvdXNJbmRleCA9ICh2ZXJ0ZXhDb3VudCArIGkgLSAxKSAlIHZlcnRleENvdW50O1xuXHRcdFx0bGV0IG5leHRJbmRleCA9IGkgPT0gdmVydGV4Q291bnQgPyAwIDogaTtcblx0XHRcdGlzQ29uY2F2ZVtwcmV2aW91c0luZGV4XSA9IFRyaWFuZ3VsYXRvci5pc0NvbmNhdmUocHJldmlvdXNJbmRleCwgdmVydGV4Q291bnQsIHZlcnRpY2VzLCBpbmRpY2VzKTtcblx0XHRcdGlzQ29uY2F2ZVtuZXh0SW5kZXhdID0gVHJpYW5ndWxhdG9yLmlzQ29uY2F2ZShuZXh0SW5kZXgsIHZlcnRleENvdW50LCB2ZXJ0aWNlcywgaW5kaWNlcyk7XG5cdFx0fVxuXG5cdFx0aWYgKHZlcnRleENvdW50ID09IDMpIHtcblx0XHRcdHRyaWFuZ2xlcy5wdXNoKGluZGljZXNbMl0pO1xuXHRcdFx0dHJpYW5nbGVzLnB1c2goaW5kaWNlc1swXSk7XG5cdFx0XHR0cmlhbmdsZXMucHVzaChpbmRpY2VzWzFdKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJpYW5nbGVzO1xuXHR9XG5cblx0ZGVjb21wb3NlICh2ZXJ0aWNlc0FycmF5OiBBcnJheTxudW1iZXI+LCB0cmlhbmdsZXM6IEFycmF5PG51bWJlcj4pOiBBcnJheTxBcnJheTxudW1iZXI+PiB7XG5cdFx0bGV0IHZlcnRpY2VzID0gdmVydGljZXNBcnJheTtcblx0XHRsZXQgY29udmV4UG9seWdvbnMgPSB0aGlzLmNvbnZleFBvbHlnb25zO1xuXHRcdHRoaXMucG9seWdvblBvb2wuZnJlZUFsbChjb252ZXhQb2x5Z29ucyk7XG5cdFx0Y29udmV4UG9seWdvbnMubGVuZ3RoID0gMDtcblxuXHRcdGxldCBjb252ZXhQb2x5Z29uc0luZGljZXMgPSB0aGlzLmNvbnZleFBvbHlnb25zSW5kaWNlcztcblx0XHR0aGlzLnBvbHlnb25JbmRpY2VzUG9vbC5mcmVlQWxsKGNvbnZleFBvbHlnb25zSW5kaWNlcyk7XG5cdFx0Y29udmV4UG9seWdvbnNJbmRpY2VzLmxlbmd0aCA9IDA7XG5cblx0XHRsZXQgcG9seWdvbkluZGljZXMgPSB0aGlzLnBvbHlnb25JbmRpY2VzUG9vbC5vYnRhaW4oKTtcblx0XHRwb2x5Z29uSW5kaWNlcy5sZW5ndGggPSAwO1xuXG5cdFx0bGV0IHBvbHlnb24gPSB0aGlzLnBvbHlnb25Qb29sLm9idGFpbigpO1xuXHRcdHBvbHlnb24ubGVuZ3RoID0gMDtcblxuXHRcdC8vIE1lcmdlIHN1YnNlcXVlbnQgdHJpYW5nbGVzIGlmIHRoZXkgZm9ybSBhIHRyaWFuZ2xlIGZhbi5cblx0XHRsZXQgZmFuQmFzZUluZGV4ID0gLTEsIGxhc3RXaW5kaW5nID0gMDtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHRyaWFuZ2xlcy5sZW5ndGg7IGkgPCBuOyBpICs9IDMpIHtcblx0XHRcdGxldCB0MSA9IHRyaWFuZ2xlc1tpXSA8PCAxLCB0MiA9IHRyaWFuZ2xlc1tpICsgMV0gPDwgMSwgdDMgPSB0cmlhbmdsZXNbaSArIDJdIDw8IDE7XG5cdFx0XHRsZXQgeDEgPSB2ZXJ0aWNlc1t0MV0sIHkxID0gdmVydGljZXNbdDEgKyAxXTtcblx0XHRcdGxldCB4MiA9IHZlcnRpY2VzW3QyXSwgeTIgPSB2ZXJ0aWNlc1t0MiArIDFdO1xuXHRcdFx0bGV0IHgzID0gdmVydGljZXNbdDNdLCB5MyA9IHZlcnRpY2VzW3QzICsgMV07XG5cblx0XHRcdC8vIElmIHRoZSBiYXNlIG9mIHRoZSBsYXN0IHRyaWFuZ2xlIGlzIHRoZSBzYW1lIGFzIHRoaXMgdHJpYW5nbGUsIGNoZWNrIGlmIHRoZXkgZm9ybSBhIGNvbnZleCBwb2x5Z29uICh0cmlhbmdsZSBmYW4pLlxuXHRcdFx0bGV0IG1lcmdlZCA9IGZhbHNlO1xuXHRcdFx0aWYgKGZhbkJhc2VJbmRleCA9PSB0MSkge1xuXHRcdFx0XHRsZXQgbyA9IHBvbHlnb24ubGVuZ3RoIC0gNDtcblx0XHRcdFx0bGV0IHdpbmRpbmcxID0gVHJpYW5ndWxhdG9yLndpbmRpbmcocG9seWdvbltvXSwgcG9seWdvbltvICsgMV0sIHBvbHlnb25bbyArIDJdLCBwb2x5Z29uW28gKyAzXSwgeDMsIHkzKTtcblx0XHRcdFx0bGV0IHdpbmRpbmcyID0gVHJpYW5ndWxhdG9yLndpbmRpbmcoeDMsIHkzLCBwb2x5Z29uWzBdLCBwb2x5Z29uWzFdLCBwb2x5Z29uWzJdLCBwb2x5Z29uWzNdKTtcblx0XHRcdFx0aWYgKHdpbmRpbmcxID09IGxhc3RXaW5kaW5nICYmIHdpbmRpbmcyID09IGxhc3RXaW5kaW5nKSB7XG5cdFx0XHRcdFx0cG9seWdvbi5wdXNoKHgzKTtcblx0XHRcdFx0XHRwb2x5Z29uLnB1c2goeTMpO1xuXHRcdFx0XHRcdHBvbHlnb25JbmRpY2VzLnB1c2godDMpO1xuXHRcdFx0XHRcdG1lcmdlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIG1ha2UgdGhpcyB0cmlhbmdsZSB0aGUgbmV3IGJhc2UuXG5cdFx0XHRpZiAoIW1lcmdlZCkge1xuXHRcdFx0XHRpZiAocG9seWdvbi5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Y29udmV4UG9seWdvbnMucHVzaChwb2x5Z29uKTtcblx0XHRcdFx0XHRjb252ZXhQb2x5Z29uc0luZGljZXMucHVzaChwb2x5Z29uSW5kaWNlcyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5wb2x5Z29uUG9vbC5mcmVlKHBvbHlnb24pXG5cdFx0XHRcdFx0dGhpcy5wb2x5Z29uSW5kaWNlc1Bvb2wuZnJlZShwb2x5Z29uSW5kaWNlcyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cG9seWdvbiA9IHRoaXMucG9seWdvblBvb2wub2J0YWluKCk7XG5cdFx0XHRcdHBvbHlnb24ubGVuZ3RoID0gMDtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHgxKTtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHkxKTtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHgyKTtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHkyKTtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHgzKTtcblx0XHRcdFx0cG9seWdvbi5wdXNoKHkzKTtcblx0XHRcdFx0cG9seWdvbkluZGljZXMgPSB0aGlzLnBvbHlnb25JbmRpY2VzUG9vbC5vYnRhaW4oKTtcblx0XHRcdFx0cG9seWdvbkluZGljZXMubGVuZ3RoID0gMDtcblx0XHRcdFx0cG9seWdvbkluZGljZXMucHVzaCh0MSk7XG5cdFx0XHRcdHBvbHlnb25JbmRpY2VzLnB1c2godDIpO1xuXHRcdFx0XHRwb2x5Z29uSW5kaWNlcy5wdXNoKHQzKTtcblx0XHRcdFx0bGFzdFdpbmRpbmcgPSBUcmlhbmd1bGF0b3Iud2luZGluZyh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzKTtcblx0XHRcdFx0ZmFuQmFzZUluZGV4ID0gdDE7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHBvbHlnb24ubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29udmV4UG9seWdvbnMucHVzaChwb2x5Z29uKTtcblx0XHRcdGNvbnZleFBvbHlnb25zSW5kaWNlcy5wdXNoKHBvbHlnb25JbmRpY2VzKTtcblx0XHR9XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIHBvbHlnb25zIGFuZCB0cnkgdG8gbWVyZ2UgdGhlIHJlbWFpbmluZyB0cmlhbmdsZXMgd2l0aCB0aGUgZm91bmQgdHJpYW5nbGUgZmFucy5cblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGNvbnZleFBvbHlnb25zLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0cG9seWdvbkluZGljZXMgPSBjb252ZXhQb2x5Z29uc0luZGljZXNbaV07XG5cdFx0XHRpZiAocG9seWdvbkluZGljZXMubGVuZ3RoID09IDApIGNvbnRpbnVlO1xuXHRcdFx0bGV0IGZpcnN0SW5kZXggPSBwb2x5Z29uSW5kaWNlc1swXTtcblx0XHRcdGxldCBsYXN0SW5kZXggPSBwb2x5Z29uSW5kaWNlc1twb2x5Z29uSW5kaWNlcy5sZW5ndGggLSAxXTtcblxuXHRcdFx0cG9seWdvbiA9IGNvbnZleFBvbHlnb25zW2ldO1xuXHRcdFx0bGV0IG8gPSBwb2x5Z29uLmxlbmd0aCAtIDQ7XG5cdFx0XHRsZXQgcHJldlByZXZYID0gcG9seWdvbltvXSwgcHJldlByZXZZID0gcG9seWdvbltvICsgMV07XG5cdFx0XHRsZXQgcHJldlggPSBwb2x5Z29uW28gKyAyXSwgcHJldlkgPSBwb2x5Z29uW28gKyAzXTtcblx0XHRcdGxldCBmaXJzdFggPSBwb2x5Z29uWzBdLCBmaXJzdFkgPSBwb2x5Z29uWzFdO1xuXHRcdFx0bGV0IHNlY29uZFggPSBwb2x5Z29uWzJdLCBzZWNvbmRZID0gcG9seWdvblszXTtcblx0XHRcdGxldCB3aW5kaW5nID0gVHJpYW5ndWxhdG9yLndpbmRpbmcocHJldlByZXZYLCBwcmV2UHJldlksIHByZXZYLCBwcmV2WSwgZmlyc3RYLCBmaXJzdFkpO1xuXG5cdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgbjsgaWkrKykge1xuXHRcdFx0XHRpZiAoaWkgPT0gaSkgY29udGludWU7XG5cdFx0XHRcdGxldCBvdGhlckluZGljZXMgPSBjb252ZXhQb2x5Z29uc0luZGljZXNbaWldO1xuXHRcdFx0XHRpZiAob3RoZXJJbmRpY2VzLmxlbmd0aCAhPSAzKSBjb250aW51ZTtcblx0XHRcdFx0bGV0IG90aGVyRmlyc3RJbmRleCA9IG90aGVySW5kaWNlc1swXTtcblx0XHRcdFx0bGV0IG90aGVyU2Vjb25kSW5kZXggPSBvdGhlckluZGljZXNbMV07XG5cdFx0XHRcdGxldCBvdGhlckxhc3RJbmRleCA9IG90aGVySW5kaWNlc1syXTtcblxuXHRcdFx0XHRsZXQgb3RoZXJQb2x5ID0gY29udmV4UG9seWdvbnNbaWldO1xuXHRcdFx0XHRsZXQgeDMgPSBvdGhlclBvbHlbb3RoZXJQb2x5Lmxlbmd0aCAtIDJdLCB5MyA9IG90aGVyUG9seVtvdGhlclBvbHkubGVuZ3RoIC0gMV07XG5cblx0XHRcdFx0aWYgKG90aGVyRmlyc3RJbmRleCAhPSBmaXJzdEluZGV4IHx8IG90aGVyU2Vjb25kSW5kZXggIT0gbGFzdEluZGV4KSBjb250aW51ZTtcblx0XHRcdFx0bGV0IHdpbmRpbmcxID0gVHJpYW5ndWxhdG9yLndpbmRpbmcocHJldlByZXZYLCBwcmV2UHJldlksIHByZXZYLCBwcmV2WSwgeDMsIHkzKTtcblx0XHRcdFx0bGV0IHdpbmRpbmcyID0gVHJpYW5ndWxhdG9yLndpbmRpbmcoeDMsIHkzLCBmaXJzdFgsIGZpcnN0WSwgc2Vjb25kWCwgc2Vjb25kWSk7XG5cdFx0XHRcdGlmICh3aW5kaW5nMSA9PSB3aW5kaW5nICYmIHdpbmRpbmcyID09IHdpbmRpbmcpIHtcblx0XHRcdFx0XHRvdGhlclBvbHkubGVuZ3RoID0gMDtcblx0XHRcdFx0XHRvdGhlckluZGljZXMubGVuZ3RoID0gMDtcblx0XHRcdFx0XHRwb2x5Z29uLnB1c2goeDMpO1xuXHRcdFx0XHRcdHBvbHlnb24ucHVzaCh5Myk7XG5cdFx0XHRcdFx0cG9seWdvbkluZGljZXMucHVzaChvdGhlckxhc3RJbmRleCk7XG5cdFx0XHRcdFx0cHJldlByZXZYID0gcHJldlg7XG5cdFx0XHRcdFx0cHJldlByZXZZID0gcHJldlk7XG5cdFx0XHRcdFx0cHJldlggPSB4Mztcblx0XHRcdFx0XHRwcmV2WSA9IHkzO1xuXHRcdFx0XHRcdGlpID0gMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSBlbXB0eSBwb2x5Z29ucyB0aGF0IHJlc3VsdGVkIGZyb20gdGhlIG1lcmdlIHN0ZXAgYWJvdmUuXG5cdFx0Zm9yIChsZXQgaSA9IGNvbnZleFBvbHlnb25zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRwb2x5Z29uID0gY29udmV4UG9seWdvbnNbaV07XG5cdFx0XHRpZiAocG9seWdvbi5sZW5ndGggPT0gMCkge1xuXHRcdFx0XHRjb252ZXhQb2x5Z29ucy5zcGxpY2UoaSwgMSk7XG5cdFx0XHRcdHRoaXMucG9seWdvblBvb2wuZnJlZShwb2x5Z29uKTtcblx0XHRcdFx0cG9seWdvbkluZGljZXMgPSBjb252ZXhQb2x5Z29uc0luZGljZXNbaV1cblx0XHRcdFx0Y29udmV4UG9seWdvbnNJbmRpY2VzLnNwbGljZShpLCAxKVxuXHRcdFx0XHR0aGlzLnBvbHlnb25JbmRpY2VzUG9vbC5mcmVlKHBvbHlnb25JbmRpY2VzKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29udmV4UG9seWdvbnM7XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBpc0NvbmNhdmUgKGluZGV4OiBudW1iZXIsIHZlcnRleENvdW50OiBudW1iZXIsIHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIGluZGljZXM6IE51bWJlckFycmF5TGlrZSk6IGJvb2xlYW4ge1xuXHRcdGxldCBwcmV2aW91cyA9IGluZGljZXNbKHZlcnRleENvdW50ICsgaW5kZXggLSAxKSAlIHZlcnRleENvdW50XSA8PCAxO1xuXHRcdGxldCBjdXJyZW50ID0gaW5kaWNlc1tpbmRleF0gPDwgMTtcblx0XHRsZXQgbmV4dCA9IGluZGljZXNbKGluZGV4ICsgMSkgJSB2ZXJ0ZXhDb3VudF0gPDwgMTtcblx0XHRyZXR1cm4gIXRoaXMucG9zaXRpdmVBcmVhKHZlcnRpY2VzW3ByZXZpb3VzXSwgdmVydGljZXNbcHJldmlvdXMgKyAxXSwgdmVydGljZXNbY3VycmVudF0sIHZlcnRpY2VzW2N1cnJlbnQgKyAxXSwgdmVydGljZXNbbmV4dF0sXG5cdFx0XHR2ZXJ0aWNlc1tuZXh0ICsgMV0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzdGF0aWMgcG9zaXRpdmVBcmVhIChwMXg6IG51bWJlciwgcDF5OiBudW1iZXIsIHAyeDogbnVtYmVyLCBwMnk6IG51bWJlciwgcDN4OiBudW1iZXIsIHAzeTogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHAxeCAqIChwM3kgLSBwMnkpICsgcDJ4ICogKHAxeSAtIHAzeSkgKyBwM3ggKiAocDJ5IC0gcDF5KSA+PSAwO1xuXHR9XG5cblx0cHJpdmF0ZSBzdGF0aWMgd2luZGluZyAocDF4OiBudW1iZXIsIHAxeTogbnVtYmVyLCBwMng6IG51bWJlciwgcDJ5OiBudW1iZXIsIHAzeDogbnVtYmVyLCBwM3k6IG51bWJlcik6IG51bWJlciB7XG5cdFx0bGV0IHB4ID0gcDJ4IC0gcDF4LCBweSA9IHAyeSAtIHAxeTtcblx0XHRyZXR1cm4gcDN4ICogcHkgLSBwM3kgKiBweCArIHB4ICogcDF5IC0gcDF4ICogcHkgPj0gMCA/IDEgOiAtMTtcblx0fVxufVxuIl19
@@ -1,16 +1,16 @@
1
1
  /******************************************************************************
2
2
  * Spine Runtimes License Agreement
3
- * Last updated July 28, 2023. Replaces all prior versions.
3
+ * Last updated April 5, 2025. Replaces all prior versions.
4
4
  *
5
- * Copyright (c) 2013-2023, Esoteric Software LLC
5
+ * Copyright (c) 2013-2025, Esoteric Software LLC
6
6
  *
7
7
  * Integration of the Spine Runtimes into software or otherwise creating
8
8
  * derivative works of the Spine Runtimes is permitted under the terms and
9
9
  * conditions of Section 2 of the Spine Editor License Agreement:
10
10
  * http://esotericsoftware.com/spine-editor-license
11
11
  *
12
- * Otherwise, it is permitted to integrate the Spine Runtimes into software or
13
- * otherwise create derivative works of the Spine Runtimes (collectively,
12
+ * Otherwise, it is permitted to integrate the Spine Runtimes into software
13
+ * or otherwise create derivative works of the Spine Runtimes (collectively,
14
14
  * "Products"), provided that each user of the Products must obtain their own
15
15
  * Spine Editor license and redistribution of the Products in any form must
16
16
  * include this license and copyright notice.
@@ -23,8 +23,8 @@
23
23
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
24
24
  * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
25
25
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
27
- * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
+ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
29
  import { Physics } from "./Skeleton.js";
30
30
  /** The interface for items updated by {@link Skeleton#updateWorldTransform()}. */
package/dist/Updatable.js CHANGED
@@ -1,16 +1,16 @@
1
1
  /******************************************************************************
2
2
  * Spine Runtimes License Agreement
3
- * Last updated July 28, 2023. Replaces all prior versions.
3
+ * Last updated April 5, 2025. Replaces all prior versions.
4
4
  *
5
- * Copyright (c) 2013-2023, Esoteric Software LLC
5
+ * Copyright (c) 2013-2025, Esoteric Software LLC
6
6
  *
7
7
  * Integration of the Spine Runtimes into software or otherwise creating
8
8
  * derivative works of the Spine Runtimes is permitted under the terms and
9
9
  * conditions of Section 2 of the Spine Editor License Agreement:
10
10
  * http://esotericsoftware.com/spine-editor-license
11
11
  *
12
- * Otherwise, it is permitted to integrate the Spine Runtimes into software or
13
- * otherwise create derivative works of the Spine Runtimes (collectively,
12
+ * Otherwise, it is permitted to integrate the Spine Runtimes into software
13
+ * or otherwise create derivative works of the Spine Runtimes (collectively,
14
14
  * "Products"), provided that each user of the Products must obtain their own
15
15
  * Spine Editor license and redistribution of the Products in any form must
16
16
  * include this license and copyright notice.
@@ -23,8 +23,8 @@
23
23
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
24
24
  * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
25
25
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
27
- * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
+ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
29
  export {};
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBkYXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1VwZGF0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0UiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEp1bHkgMjgsIDIwMjMuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyMywgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvclxuICogb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRIRVxuICogU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFBoeXNpY3MgfSBmcm9tIFwiLi9Ta2VsZXRvbi5qc1wiO1xuXG4vKiogVGhlIGludGVyZmFjZSBmb3IgaXRlbXMgdXBkYXRlZCBieSB7QGxpbmsgU2tlbGV0b24jdXBkYXRlV29ybGRUcmFuc2Zvcm0oKX0uICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0YWJsZSB7XG5cdC8qKiBAcGFyYW0gcGh5c2ljcyBEZXRlcm1pbmVzIGhvdyBwaHlzaWNzIGFuZCBvdGhlciBub24tZGV0ZXJtaW5pc3RpYyB1cGRhdGVzIGFyZSBhcHBsaWVkLiAqL1xuXHR1cGRhdGUgKHBoeXNpY3M6IFBoeXNpY3MpOiB2b2lkO1xuXG5cdC8qKiBSZXR1cm5zIGZhbHNlIHdoZW4gdGhpcyBpdGVtIHdvbid0IGJlIHVwZGF0ZWQgYnlcblx0ICoge0BsaW5rIFNrZWxldG9uI3VwZGF0ZVdvcmxkVHJhbnNmb3JtKCl9IGJlY2F1c2UgYSBza2luIGlzIHJlcXVpcmVkIGFuZCB0aGVcblx0ICoge0BsaW5rIFNrZWxldG9uI2dldFNraW4oKSBhY3RpdmUgc2tpbn0gZG9lcyBub3QgY29udGFpbiB0aGlzIGl0ZW0uXG5cdCAqIEBzZWUgU2tpbiNnZXRCb25lcygpXG5cdCAqIEBzZWUgU2tpbiNnZXRDb25zdHJhaW50cygpXG5cdCAqIEBzZWUgQm9uZURhdGEjZ2V0U2tpblJlcXVpcmVkKClcblx0ICogQHNlZSBDb25zdHJhaW50RGF0YSNnZXRTa2luUmVxdWlyZWQoKSAqL1xuXHRpc0FjdGl2ZSAoKTogYm9vbGVhbjtcbn1cbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBkYXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1VwZGF0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0UiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFBoeXNpY3MgfSBmcm9tIFwiLi9Ta2VsZXRvbi5qc1wiO1xuXG4vKiogVGhlIGludGVyZmFjZSBmb3IgaXRlbXMgdXBkYXRlZCBieSB7QGxpbmsgU2tlbGV0b24jdXBkYXRlV29ybGRUcmFuc2Zvcm0oKX0uICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0YWJsZSB7XG5cdC8qKiBAcGFyYW0gcGh5c2ljcyBEZXRlcm1pbmVzIGhvdyBwaHlzaWNzIGFuZCBvdGhlciBub24tZGV0ZXJtaW5pc3RpYyB1cGRhdGVzIGFyZSBhcHBsaWVkLiAqL1xuXHR1cGRhdGUgKHBoeXNpY3M6IFBoeXNpY3MpOiB2b2lkO1xuXG5cdC8qKiBSZXR1cm5zIGZhbHNlIHdoZW4gdGhpcyBpdGVtIHdvbid0IGJlIHVwZGF0ZWQgYnlcblx0ICoge0BsaW5rIFNrZWxldG9uI3VwZGF0ZVdvcmxkVHJhbnNmb3JtKCl9IGJlY2F1c2UgYSBza2luIGlzIHJlcXVpcmVkIGFuZCB0aGVcblx0ICoge0BsaW5rIFNrZWxldG9uI2dldFNraW4oKSBhY3RpdmUgc2tpbn0gZG9lcyBub3QgY29udGFpbiB0aGlzIGl0ZW0uXG5cdCAqIEBzZWUgU2tpbiNnZXRCb25lcygpXG5cdCAqIEBzZWUgU2tpbiNnZXRDb25zdHJhaW50cygpXG5cdCAqIEBzZWUgQm9uZURhdGEjZ2V0U2tpblJlcXVpcmVkKClcblx0ICogQHNlZSBDb25zdHJhaW50RGF0YSNnZXRTa2luUmVxdWlyZWQoKSAqL1xuXHRpc0FjdGl2ZSAoKTogYm9vbGVhbjtcbn1cbiJdfQ==
package/dist/Utils.d.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  /******************************************************************************
2
2
  * Spine Runtimes License Agreement
3
- * Last updated July 28, 2023. Replaces all prior versions.
3
+ * Last updated April 5, 2025. Replaces all prior versions.
4
4
  *
5
- * Copyright (c) 2013-2023, Esoteric Software LLC
5
+ * Copyright (c) 2013-2025, Esoteric Software LLC
6
6
  *
7
7
  * Integration of the Spine Runtimes into software or otherwise creating
8
8
  * derivative works of the Spine Runtimes is permitted under the terms and
9
9
  * conditions of Section 2 of the Spine Editor License Agreement:
10
10
  * http://esotericsoftware.com/spine-editor-license
11
11
  *
12
- * Otherwise, it is permitted to integrate the Spine Runtimes into software or
13
- * otherwise create derivative works of the Spine Runtimes (collectively,
12
+ * Otherwise, it is permitted to integrate the Spine Runtimes into software
13
+ * or otherwise create derivative works of the Spine Runtimes (collectively,
14
14
  * "Products"), provided that each user of the Products must obtain their own
15
15
  * Spine Editor license and redistribution of the Products in any form must
16
16
  * include this license and copyright notice.
@@ -23,8 +23,8 @@
23
23
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
24
24
  * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
25
25
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
27
- * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
+ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
29
  import { Skeleton } from "./Skeleton.js";
30
30
  import { MixBlend } from "./Animation.js";
package/dist/Utils.js CHANGED
@@ -1,16 +1,16 @@
1
1
  /******************************************************************************
2
2
  * Spine Runtimes License Agreement
3
- * Last updated July 28, 2023. Replaces all prior versions.
3
+ * Last updated April 5, 2025. Replaces all prior versions.
4
4
  *
5
- * Copyright (c) 2013-2023, Esoteric Software LLC
5
+ * Copyright (c) 2013-2025, Esoteric Software LLC
6
6
  *
7
7
  * Integration of the Spine Runtimes into software or otherwise creating
8
8
  * derivative works of the Spine Runtimes is permitted under the terms and
9
9
  * conditions of Section 2 of the Spine Editor License Agreement:
10
10
  * http://esotericsoftware.com/spine-editor-license
11
11
  *
12
- * Otherwise, it is permitted to integrate the Spine Runtimes into software or
13
- * otherwise create derivative works of the Spine Runtimes (collectively,
12
+ * Otherwise, it is permitted to integrate the Spine Runtimes into software
13
+ * or otherwise create derivative works of the Spine Runtimes (collectively,
14
14
  * "Products"), provided that each user of the Products must obtain their own
15
15
  * Spine Editor license and redistribution of the Products in any form must
16
16
  * include this license and copyright notice.
@@ -23,8 +23,8 @@
23
23
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
24
24
  * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
25
25
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
27
- * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
+ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
29
  export class IntSet {
30
30
  array = new Array();
@@ -411,4 +411,4 @@ export class WindowedMean {
411
411
  return 0;
412
412
  }
413
413
  }
414
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBUy9FLE1BQU0sT0FBTyxNQUFNO0lBQ2xCLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBc0IsQ0FBQztJQUV4QyxHQUFHLENBQUUsS0FBYTtRQUNqQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxDQUFFLEtBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBRSxLQUFhO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSztRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0NBQ0Q7QUFFRCxNQUFNLE9BQU8sU0FBUztJQUNyQixPQUFPLEdBQXVCLEVBQUUsQ0FBQztJQUNqQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRVQsR0FBRyxDQUFFLEtBQWE7UUFDakIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxFQUFFLENB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R0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDcEIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNsQixDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEp1bHkgMjgsIDIwMjMuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyMywgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvclxuICogb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRIRVxuICogU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB7IE1peEJsZW5kIH0gZnJvbSBcIi4vQW5pbWF0aW9uLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTWFwPFQ+IHtcblx0W2tleTogc3RyaW5nXTogVDtcbn1cblxuZXhwb3J0IGNsYXNzIEludFNldCB7XG5cdGFycmF5ID0gbmV3IEFycmF5PG51bWJlciB8IHVuZGVmaW5lZD4oKTtcblxuXHRhZGQgKHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRsZXQgY29udGFpbnMgPSB0aGlzLmNvbnRhaW5zKHZhbHVlKTtcblx0XHR0aGlzLmFycmF5W3ZhbHVlIHwgMF0gPSB2YWx1ZSB8IDA7XG5cdFx0cmV0dXJuICFjb250YWlucztcblx0fVxuXG5cdGNvbnRhaW5zICh2YWx1ZTogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuYXJyYXlbdmFsdWUgfCAwXSAhPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRyZW1vdmUgKHZhbHVlOiBudW1iZXIpIHtcblx0XHR0aGlzLmFycmF5W3ZhbHVlIHwgMF0gPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRjbGVhciAoKSB7XG5cdFx0dGhpcy5hcnJheS5sZW5ndGggPSAwO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdTZXQge1xuXHRlbnRyaWVzOiBTdHJpbmdNYXA8Ym9vbGVhbj4gPSB7fTtcblx0c2l6ZSA9IDA7XG5cblx0YWRkICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0bGV0IGNvbnRhaW5zID0gdGhpcy5lbnRyaWVzW3ZhbHVlXTtcblx0XHR0aGlzLmVudHJpZXNbdmFsdWVdID0gdHJ1ZTtcblx0XHRpZiAoIWNvbnRhaW5zKSB7XG5cdFx0XHR0aGlzLnNpemUrKztcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRhZGRBbGwgKHZhbHVlczogc3RyaW5nW10pOiBib29sZWFuIHtcblx0XHRsZXQgb2xkU2l6ZSA9IHRoaXMuc2l6ZTtcblx0XHRmb3IgKHZhciBpID0gMCwgbiA9IHZhbHVlcy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHR0aGlzLmFkZCh2YWx1ZXNbaV0pO1xuXHRcdHJldHVybiBvbGRTaXplICE9IHRoaXMuc2l6ZTtcblx0fVxuXG5cdGNvbnRhaW5zICh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuZW50cmllc1t2YWx1ZV07XG5cdH1cblxuXHRjbGVhciAoKSB7XG5cdFx0dGhpcy5lbnRyaWVzID0ge307XG5cdFx0dGhpcy5zaXplID0gMDtcblx0fVxufVxuXG5leHBvcnQgdHlwZSBOdW1iZXJBcnJheUxpa2UgPSBBcnJheTxudW1iZXI+IHwgRmxvYXQzMkFycmF5O1xuZXhwb3J0IHR5cGUgSW50QXJyYXlMaWtlID0gQXJyYXk8bnVtYmVyPiB8IEludDE2QXJyYXk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzcG9zYWJsZSB7XG5cdGRpc3Bvc2UgKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdG9yYWJsZSB7XG5cdHJlc3RvcmUgKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xvciB7XG5cdHB1YmxpYyBzdGF0aWMgV0hJVEUgPSBuZXcgQ29sb3IoMSwgMSwgMSwgMSk7XG5cdHB1YmxpYyBzdGF0aWMgUkVEID0gbmV3IENvbG9yKDEsIDAsIDAsIDEpO1xuXHRwdWJsaWMgc3RhdGljIEdSRUVOID0gbmV3IENvbG9yKDAsIDEsIDAsIDEpO1xuXHRwdWJsaWMgc3RhdGljIEJMVUUgPSBuZXcgQ29sb3IoMCwgMCwgMSwgMSk7XG5cdHB1YmxpYyBzdGF0aWMgTUFHRU5UQSA9IG5ldyBDb2xvcigxLCAwLCAxLCAxKTtcblxuXHRjb25zdHJ1Y3RvciAocHVibGljIHI6IG51bWJlciA9IDAsIHB1YmxpYyBnOiBudW1iZXIgPSAwLCBwdWJsaWMgYjogbnVtYmVyID0gMCwgcHVibGljIGE6IG51bWJlciA9IDApIHtcblx0fVxuXG5cdHNldCAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYTogbnVtYmVyKSB7XG5cdFx0dGhpcy5yID0gcjtcblx0XHR0aGlzLmcgPSBnO1xuXHRcdHRoaXMuYiA9IGI7XG5cdFx0dGhpcy5hID0gYTtcblx0XHRyZXR1cm4gdGhpcy5jbGFtcCgpO1xuXHR9XG5cblx0c2V0RnJvbUNvbG9yIChjOiBDb2xvcikge1xuXHRcdHRoaXMuciA9IGMucjtcblx0XHR0aGlzLmcgPSBjLmc7XG5cdFx0dGhpcy5iID0gYy5iO1xuXHRcdHRoaXMuYSA9IGMuYTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldEZyb21TdHJpbmcgKGhleDogc3RyaW5nKSB7XG5cdFx0aGV4ID0gaGV4LmNoYXJBdCgwKSA9PSAnIycgPyBoZXguc3Vic3RyKDEpIDogaGV4O1xuXHRcdHRoaXMuciA9IHBhcnNlSW50KGhleC5zdWJzdHIoMCwgMiksIDE2KSAvIDI1NTtcblx0XHR0aGlzLmcgPSBwYXJzZUludChoZXguc3Vic3RyKDIsIDIpLCAxNikgLyAyNTU7XG5cdFx0dGhpcy5iID0gcGFyc2VJbnQoaGV4LnN1YnN0cig0LCAyKSwgMTYpIC8gMjU1O1xuXHRcdHRoaXMuYSA9IGhleC5sZW5ndGggIT0gOCA/IDEgOiBwYXJzZUludChoZXguc3Vic3RyKDYsIDIpLCAxNikgLyAyNTU7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRhZGQgKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIsIGE6IG51bWJlcikge1xuXHRcdHRoaXMuciArPSByO1xuXHRcdHRoaXMuZyArPSBnO1xuXHRcdHRoaXMuYiArPSBiO1xuXHRcdHRoaXMuYSArPSBhO1xuXHRcdHJldHVybiB0aGlzLmNsYW1wKCk7XG5cdH1cblxuXHRjbGFtcCAoKSB7XG5cdFx0aWYgKHRoaXMuciA8IDApIHRoaXMuciA9IDA7XG5cdFx0ZWxzZSBpZiAodGhpcy5yID4gMSkgdGhpcy5yID0gMTtcblxuXHRcdGlmICh0aGlzLmcgPCAwKSB0aGlzLmcgPSAwO1xuXHRcdGVsc2UgaWYgKHRoaXMuZyA+IDEpIHRoaXMuZyA9IDE7XG5cblx0XHRpZiAodGhpcy5iIDwgMCkgdGhpcy5iID0gMDtcblx0XHRlbHNlIGlmICh0aGlzLmIgPiAxKSB0aGlzLmIgPSAxO1xuXG5cdFx0aWYgKHRoaXMuYSA8IDApIHRoaXMuYSA9IDA7XG5cdFx0ZWxzZSBpZiAodGhpcy5hID4gMSkgdGhpcy5hID0gMTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHN0YXRpYyByZ2JhODg4OFRvQ29sb3IgKGNvbG9yOiBDb2xvciwgdmFsdWU6IG51bWJlcikge1xuXHRcdGNvbG9yLnIgPSAoKHZhbHVlICYgMHhmZjAwMDAwMCkgPj4+IDI0KSAvIDI1NTtcblx0XHRjb2xvci5nID0gKCh2YWx1ZSAmIDB4MDBmZjAwMDApID4+PiAxNikgLyAyNTU7XG5cdFx0Y29sb3IuYiA9ICgodmFsdWUgJiAweDAwMDBmZjAwKSA+Pj4gOCkgLyAyNTU7XG5cdFx0Y29sb3IuYSA9ICgodmFsdWUgJiAweDAwMDAwMGZmKSkgLyAyNTU7XG5cdH1cblxuXHRzdGF0aWMgcmdiODg4VG9Db2xvciAoY29sb3I6IENvbG9yLCB2YWx1ZTogbnVtYmVyKSB7XG5cdFx0Y29sb3IuciA9ICgodmFsdWUgJiAweDAwZmYwMDAwKSA+Pj4gMTYpIC8gMjU1O1xuXHRcdGNvbG9yLmcgPSAoKHZhbHVlICYgMHgwMDAwZmYwMCkgPj4+IDgpIC8gMjU1O1xuXHRcdGNvbG9yLmIgPSAoKHZhbHVlICYgMHgwMDAwMDBmZikpIC8gMjU1O1xuXHR9XG5cblx0dG9SZ2I4ODggKCkge1xuXHRcdGNvbnN0IGhleCA9ICh4OiBudW1iZXIpID0+IChcIjBcIiArICh4ICogMjU1KS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcblx0XHRyZXR1cm4gTnVtYmVyKFwiMHhcIiArIGhleCh0aGlzLnIpICsgaGV4KHRoaXMuZykgKyBoZXgodGhpcy5iKSk7XG5cdH1cblxuXHRzdGF0aWMgZnJvbVN0cmluZyAoaGV4OiBzdHJpbmcsIGNvbG9yID0gbmV3IENvbG9yKCkpOiBDb2xvciB7XG5cdFx0cmV0dXJuIGNvbG9yLnNldEZyb21TdHJpbmcoaGV4KTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgTWF0aFV0aWxzIHtcblx0c3RhdGljIFBJID0gMy4xNDE1OTI3O1xuXHRzdGF0aWMgUEkyID0gTWF0aFV0aWxzLlBJICogMjtcblx0c3RhdGljIGludlBJMiA9IDEgLyBNYXRoVXRpbHMuUEkyO1xuXHRzdGF0aWMgcmFkaWFuc1RvRGVncmVlcyA9IDE4MCAvIE1hdGhVdGlscy5QSTtcblx0c3RhdGljIHJhZERlZyA9IE1hdGhVdGlscy5yYWRpYW5zVG9EZWdyZWVzO1xuXHRzdGF0aWMgZGVncmVlc1RvUmFkaWFucyA9IE1hdGhVdGlscy5QSSAvIDE4MDtcblx0c3RhdGljIGRlZ1JhZCA9IE1hdGhVdGlscy5kZWdyZWVzVG9SYWRpYW5zO1xuXG5cdHN0YXRpYyBjbGFtcCAodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG5cdFx0aWYgKHZhbHVlIDwgbWluKSByZXR1cm4gbWluO1xuXHRcdGlmICh2YWx1ZSA+IG1heCkgcmV0dXJuIG1heDtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cblxuXHRzdGF0aWMgY29zRGVnIChkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gTWF0aC5jb3MoZGVncmVlcyAqIE1hdGhVdGlscy5kZWdSYWQpO1xuXHR9XG5cblx0c3RhdGljIHNpbkRlZyAoZGVncmVlczogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIE1hdGguc2luKGRlZ3JlZXMgKiBNYXRoVXRpbHMuZGVnUmFkKTtcblx0fVxuXG5cdHN0YXRpYyBhdGFuMkRlZyAoeTogbnVtYmVyLCB4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gTWF0aC5hdGFuMih5LCB4KSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdH1cblxuXHRzdGF0aWMgc2lnbnVtICh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdmFsdWUgPiAwID8gMSA6IHZhbHVlIDwgMCA/IC0xIDogMDtcblx0fVxuXG5cdHN0YXRpYyB0b0ludCAoeDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHggPiAwID8gTWF0aC5mbG9vcih4KSA6IE1hdGguY2VpbCh4KTtcblx0fVxuXG5cdHN0YXRpYyBjYnJ0ICh4OiBudW1iZXIpIHtcblx0XHRsZXQgeSA9IE1hdGgucG93KE1hdGguYWJzKHgpLCAxIC8gMyk7XG5cdFx0cmV0dXJuIHggPCAwID8gLXkgOiB5O1xuXHR9XG5cblx0c3RhdGljIHJhbmRvbVRyaWFuZ3VsYXIgKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIE1hdGhVdGlscy5yYW5kb21Ucmlhbmd1bGFyV2l0aChtaW4sIG1heCwgKG1pbiArIG1heCkgKiAwLjUpO1xuXHR9XG5cblx0c3RhdGljIHJhbmRvbVRyaWFuZ3VsYXJXaXRoIChtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIG1vZGU6IG51bWJlcik6IG51bWJlciB7XG5cdFx0bGV0IHUgPSBNYXRoLnJhbmRvbSgpO1xuXHRcdGxldCBkID0gbWF4IC0gbWluO1xuXHRcdGlmICh1IDw9IChtb2RlIC0gbWluKSAvIGQpIHJldHVybiBtaW4gKyBNYXRoLnNxcnQodSAqIGQgKiAobW9kZSAtIG1pbikpO1xuXHRcdHJldHVybiBtYXggLSBNYXRoLnNxcnQoKDEgLSB1KSAqIGQgKiAobWF4IC0gbW9kZSkpO1xuXHR9XG5cblx0c3RhdGljIGlzUG93ZXJPZlR3byAodmFsdWU6IG51bWJlcikge1xuXHRcdHJldHVybiB2YWx1ZSAmJiAodmFsdWUgJiAodmFsdWUgLSAxKSkgPT09IDA7XG5cdH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEludGVycG9sYXRpb24ge1xuXHRwcm90ZWN0ZWQgYWJzdHJhY3QgYXBwbHlJbnRlcm5hbCAoYTogbnVtYmVyKTogbnVtYmVyO1xuXHRhcHBseSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIHRoaXMuYXBwbHlJbnRlcm5hbChhKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUG93IGV4dGVuZHMgSW50ZXJwb2xhdGlvbiB7XG5cdHByb3RlY3RlZCBwb3dlciA9IDI7XG5cblx0Y29uc3RydWN0b3IgKHBvd2VyOiBudW1iZXIpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMucG93ZXIgPSBwb3dlcjtcblx0fVxuXG5cdGFwcGx5SW50ZXJuYWwgKGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0aWYgKGEgPD0gMC41KSByZXR1cm4gTWF0aC5wb3coYSAqIDIsIHRoaXMucG93ZXIpIC8gMjtcblx0XHRyZXR1cm4gTWF0aC5wb3coKGEgLSAxKSAqIDIsIHRoaXMucG93ZXIpIC8gKHRoaXMucG93ZXIgJSAyID09IDAgPyAtMiA6IDIpICsgMTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUG93T3V0IGV4dGVuZHMgUG93IHtcblx0Y29uc3RydWN0b3IgKHBvd2VyOiBudW1iZXIpIHtcblx0XHRzdXBlcihwb3dlcik7XG5cdH1cblxuXHRhcHBseUludGVybmFsIChhOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiBNYXRoLnBvdyhhIC0gMSwgdGhpcy5wb3dlcikgKiAodGhpcy5wb3dlciAlIDIgPT0gMCA/IC0xIDogMSkgKyAxO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBVdGlscyB7XG5cdHN0YXRpYyBTVVBQT1JUU19UWVBFRF9BUlJBWVMgPSB0eXBlb2YgKEZsb2F0MzJBcnJheSkgIT09IFwidW5kZWZpbmVkXCI7XG5cblx0c3RhdGljIGFycmF5Q29weTxUPiAoc291cmNlOiBBcnJheUxpa2U8VD4sIHNvdXJjZVN0YXJ0OiBudW1iZXIsIGRlc3Q6IEFycmF5TGlrZTxUPiwgZGVzdFN0YXJ0OiBudW1iZXIsIG51bUVsZW1lbnRzOiBudW1iZXIpIHtcblx0XHRmb3IgKGxldCBpID0gc291cmNlU3RhcnQsIGogPSBkZXN0U3RhcnQ7IGkgPCBzb3VyY2VTdGFydCArIG51bUVsZW1lbnRzOyBpKyssIGorKykge1xuXHRcdFx0ZGVzdFtqXSA9IHNvdXJjZVtpXTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgYXJyYXlGaWxsPFQ+IChhcnJheTogQXJyYXlMaWtlPFQ+LCBmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyLCB2YWx1ZTogVCkge1xuXHRcdGZvciAobGV0IGkgPSBmcm9tSW5kZXg7IGkgPCB0b0luZGV4OyBpKyspXG5cdFx0XHRhcnJheVtpXSA9IHZhbHVlO1xuXHR9XG5cblx0c3RhdGljIHNldEFycmF5U2l6ZTxUPiAoYXJyYXk6IEFycmF5PFQ+LCBzaXplOiBudW1iZXIsIHZhbHVlOiBhbnkgPSAwKTogQXJyYXk8VD4ge1xuXHRcdGxldCBvbGRTaXplID0gYXJyYXkubGVuZ3RoO1xuXHRcdGlmIChvbGRTaXplID09IHNpemUpIHJldHVybiBhcnJheTtcblx0XHRhcnJheS5sZW5ndGggPSBzaXplO1xuXHRcdGlmIChvbGRTaXplIDwgc2l6ZSkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IG9sZFNpemU7IGkgPCBzaXplOyBpKyspIGFycmF5W2ldID0gdmFsdWU7XG5cdFx0fVxuXHRcdHJldHVybiBhcnJheTtcblx0fVxuXG5cdHN0YXRpYyBlbnN1cmVBcnJheUNhcGFjaXR5PFQ+IChhcnJheTogQXJyYXk8VD4sIHNpemU6IG51bWJlciwgdmFsdWU6IGFueSA9IDApOiBBcnJheTxUPiB7XG5cdFx0aWYgKGFycmF5Lmxlbmd0aCA+PSBzaXplKSByZXR1cm4gYXJyYXk7XG5cdFx0cmV0dXJuIFV0aWxzLnNldEFycmF5U2l6ZShhcnJheSwgc2l6ZSwgdmFsdWUpO1xuXHR9XG5cblx0c3RhdGljIG5ld0FycmF5PFQ+IChzaXplOiBudW1iZXIsIGRlZmF1bHRWYWx1ZTogVCk6IEFycmF5PFQ+IHtcblx0XHRsZXQgYXJyYXkgPSBuZXcgQXJyYXk8VD4oc2l6ZSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIGFycmF5W2ldID0gZGVmYXVsdFZhbHVlO1xuXHRcdHJldHVybiBhcnJheTtcblx0fVxuXG5cdHN0YXRpYyBuZXdGbG9hdEFycmF5IChzaXplOiBudW1iZXIpOiBOdW1iZXJBcnJheUxpa2Uge1xuXHRcdGlmIChVdGlscy5TVVBQT1JUU19UWVBFRF9BUlJBWVMpXG5cdFx0XHRyZXR1cm4gbmV3IEZsb2F0MzJBcnJheShzaXplKVxuXHRcdGVsc2Uge1xuXHRcdFx0bGV0IGFycmF5ID0gbmV3IEFycmF5PG51bWJlcj4oc2l6ZSk7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSBhcnJheVtpXSA9IDA7XG5cdFx0XHRyZXR1cm4gYXJyYXk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIG5ld1Nob3J0QXJyYXkgKHNpemU6IG51bWJlcik6IEludEFycmF5TGlrZSB7XG5cdFx0aWYgKFV0aWxzLlNVUFBPUlRTX1RZUEVEX0FSUkFZUylcblx0XHRcdHJldHVybiBuZXcgSW50MTZBcnJheShzaXplKVxuXHRcdGVsc2Uge1xuXHRcdFx0bGV0IGFycmF5ID0gbmV3IEFycmF5PG51bWJlcj4oc2l6ZSk7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSBhcnJheVtpXSA9IDA7XG5cdFx0XHRyZXR1cm4gYXJyYXk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIHRvRmxvYXRBcnJheSAoYXJyYXk6IEFycmF5PG51bWJlcj4pIHtcblx0XHRyZXR1cm4gVXRpbHMuU1VQUE9SVFNfVFlQRURfQVJSQVlTID8gbmV3IEZsb2F0MzJBcnJheShhcnJheSkgOiBhcnJheTtcblx0fVxuXG5cdHN0YXRpYyB0b1NpbmdsZVByZWNpc2lvbiAodmFsdWU6IG51bWJlcikge1xuXHRcdHJldHVybiBVdGlscy5TVVBQT1JUU19UWVBFRF9BUlJBWVMgPyBNYXRoLmZyb3VuZCh2YWx1ZSkgOiB2YWx1ZTtcblx0fVxuXG5cdC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmaXggV2ViS2l0IDYwMiBzcGVjaWZpYyBpc3N1ZSBkZXNjcmliZWQgYXQgaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL2ZvcnVtL2lPUy0xMC1kaXNhcHBlYXJpbmctZ3JhcGhpY3MtMTAxMDlcblx0c3RhdGljIHdlYmtpdDYwMkJ1Z2ZpeEhlbHBlciAoYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kKSB7XG5cdH1cblxuXHRzdGF0aWMgY29udGFpbnM8VD4gKGFycmF5OiBBcnJheTxUPiwgZWxlbWVudDogVCwgaWRlbnRpdHkgPSB0cnVlKSB7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKylcblx0XHRcdGlmIChhcnJheVtpXSA9PSBlbGVtZW50KSByZXR1cm4gdHJ1ZTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRzdGF0aWMgZW51bVZhbHVlICh0eXBlOiBhbnksIG5hbWU6IHN0cmluZykge1xuXHRcdHJldHVybiB0eXBlW25hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSldO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWJ1Z1V0aWxzIHtcblx0c3RhdGljIGxvZ0JvbmVzIChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNrZWxldG9uLmJvbmVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgYm9uZSA9IHNrZWxldG9uLmJvbmVzW2ldO1xuXHRcdFx0Y29uc29sZS5sb2coYm9uZS5kYXRhLm5hbWUgKyBcIiwgXCIgKyBib25lLmEgKyBcIiwgXCIgKyBib25lLmIgKyBcIiwgXCIgKyBib25lLmMgKyBcIiwgXCIgKyBib25lLmQgKyBcIiwgXCIgKyBib25lLndvcmxkWCArIFwiLCBcIiArIGJvbmUud29ybGRZKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvb2w8VD4ge1xuXHRwcml2YXRlIGl0ZW1zID0gbmV3IEFycmF5PFQ+KCk7XG5cdHByaXZhdGUgaW5zdGFudGlhdG9yOiAoKSA9PiBUO1xuXG5cdGNvbnN0cnVjdG9yIChpbnN0YW50aWF0b3I6ICgpID0+IFQpIHtcblx0XHR0aGlzLmluc3RhbnRpYXRvciA9IGluc3RhbnRpYXRvcjtcblx0fVxuXG5cdG9idGFpbiAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoID4gMCA/IHRoaXMuaXRlbXMucG9wKCkhIDogdGhpcy5pbnN0YW50aWF0b3IoKTtcblx0fVxuXG5cdGZyZWUgKGl0ZW06IFQpIHtcblx0XHRpZiAoKGl0ZW0gYXMgYW55KS5yZXNldCkgKGl0ZW0gYXMgYW55KS5yZXNldCgpO1xuXHRcdHRoaXMuaXRlbXMucHVzaChpdGVtKTtcblx0fVxuXG5cdGZyZWVBbGwgKGl0ZW1zOiBBcnJheUxpa2U8VD4pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKVxuXHRcdFx0dGhpcy5mcmVlKGl0ZW1zW2ldKTtcblx0fVxuXG5cdGNsZWFyICgpIHtcblx0XHR0aGlzLml0ZW1zLmxlbmd0aCA9IDA7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFZlY3RvcjIge1xuXHRjb25zdHJ1Y3RvciAocHVibGljIHggPSAwLCBwdWJsaWMgeSA9IDApIHtcblx0fVxuXG5cdHNldCAoeDogbnVtYmVyLCB5OiBudW1iZXIpOiBWZWN0b3IyIHtcblx0XHR0aGlzLnggPSB4O1xuXHRcdHRoaXMueSA9IHk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRsZW5ndGggKCkge1xuXHRcdGxldCB4ID0gdGhpcy54O1xuXHRcdGxldCB5ID0gdGhpcy55O1xuXHRcdHJldHVybiBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG5cdH1cblxuXHRub3JtYWxpemUgKCkge1xuXHRcdGxldCBsZW4gPSB0aGlzLmxlbmd0aCgpO1xuXHRcdGlmIChsZW4gIT0gMCkge1xuXHRcdFx0dGhpcy54IC89IGxlbjtcblx0XHRcdHRoaXMueSAvPSBsZW47XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBUaW1lS2VlcGVyIHtcblx0bWF4RGVsdGEgPSAwLjA2NDtcblx0ZnJhbWVzUGVyU2Vjb25kID0gMDtcblx0ZGVsdGEgPSAwO1xuXHR0b3RhbFRpbWUgPSAwO1xuXG5cdHByaXZhdGUgbGFzdFRpbWUgPSBEYXRlLm5vdygpIC8gMTAwMDtcblx0cHJpdmF0ZSBmcmFtZUNvdW50ID0gMDtcblx0cHJpdmF0ZSBmcmFtZVRpbWUgPSAwO1xuXG5cdHVwZGF0ZSAoKSB7XG5cdFx0bGV0IG5vdyA9IERhdGUubm93KCkgLyAxMDAwO1xuXHRcdHRoaXMuZGVsdGEgPSBub3cgLSB0aGlzLmxhc3RUaW1lO1xuXHRcdHRoaXMuZnJhbWVUaW1lICs9IHRoaXMuZGVsdGE7XG5cdFx0dGhpcy50b3RhbFRpbWUgKz0gdGhpcy5kZWx0YTtcblx0XHRpZiAodGhpcy5kZWx0YSA+IHRoaXMubWF4RGVsdGEpIHRoaXMuZGVsdGEgPSB0aGlzLm1heERlbHRhO1xuXHRcdHRoaXMubGFzdFRpbWUgPSBub3c7XG5cblx0XHR0aGlzLmZyYW1lQ291bnQrKztcblx0XHRpZiAodGhpcy5mcmFtZVRpbWUgPiAxKSB7XG5cdFx0XHR0aGlzLmZyYW1lc1BlclNlY29uZCA9IHRoaXMuZnJhbWVDb3VudCAvIHRoaXMuZnJhbWVUaW1lO1xuXHRcdFx0dGhpcy5mcmFtZVRpbWUgPSAwO1xuXHRcdFx0dGhpcy5mcmFtZUNvdW50ID0gMDtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcnJheUxpa2U8VD4ge1xuXHRsZW5ndGg6IG51bWJlcjtcblx0W246IG51bWJlcl06IFQ7XG59XG5cbmV4cG9ydCBjbGFzcyBXaW5kb3dlZE1lYW4ge1xuXHR2YWx1ZXM6IEFycmF5PG51bWJlcj47XG5cdGFkZGVkVmFsdWVzID0gMDtcblx0bGFzdFZhbHVlID0gMDtcblx0bWVhbiA9IDA7XG5cdGRpcnR5ID0gdHJ1ZTtcblxuXHRjb25zdHJ1Y3RvciAod2luZG93U2l6ZTogbnVtYmVyID0gMzIpIHtcblx0XHR0aGlzLnZhbHVlcyA9IG5ldyBBcnJheTxudW1iZXI+KHdpbmRvd1NpemUpO1xuXHR9XG5cblx0aGFzRW5vdWdoRGF0YSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkZWRWYWx1ZXMgPj0gdGhpcy52YWx1ZXMubGVuZ3RoO1xuXHR9XG5cblx0YWRkVmFsdWUgKHZhbHVlOiBudW1iZXIpIHtcblx0XHRpZiAodGhpcy5hZGRlZFZhbHVlcyA8IHRoaXMudmFsdWVzLmxlbmd0aCkgdGhpcy5hZGRlZFZhbHVlcysrO1xuXHRcdHRoaXMudmFsdWVzW3RoaXMubGFzdFZhbHVlKytdID0gdmFsdWU7XG5cdFx0aWYgKHRoaXMubGFzdFZhbHVlID4gdGhpcy52YWx1ZXMubGVuZ3RoIC0gMSkgdGhpcy5sYXN0VmFsdWUgPSAwO1xuXHRcdHRoaXMuZGlydHkgPSB0cnVlO1xuXHR9XG5cblx0Z2V0TWVhbiAoKSB7XG5cdFx0aWYgKHRoaXMuaGFzRW5vdWdoRGF0YSgpKSB7XG5cdFx0XHRpZiAodGhpcy5kaXJ0eSkge1xuXHRcdFx0XHRsZXQgbWVhbiA9IDA7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52YWx1ZXMubGVuZ3RoOyBpKyspXG5cdFx0XHRcdFx0bWVhbiArPSB0aGlzLnZhbHVlc1tpXTtcblx0XHRcdFx0dGhpcy5tZWFuID0gbWVhbiAvIHRoaXMudmFsdWVzLmxlbmd0aDtcblx0XHRcdFx0dGhpcy5kaXJ0eSA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMubWVhbjtcblx0XHR9XG5cdFx0cmV0dXJuIDA7XG5cdH1cbn1cbiJdfQ==
414
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBUy9FLE1BQU0sT0FBTyxNQUFNO0lBQ2xCLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBc0IsQ0FBQztJQUV4QyxHQUFHLENBQUUsS0FBYTtRQUNqQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxDQUFFLEtBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBRSxLQUFhO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSztRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0NBQ0Q7QUFFRCxNQUFNLE9BQU8sU0FBUztJQUNyQixPQUFPLEdBQXVCLEVBQUUsQ0FBQztJQUNqQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRVQsR0FBRyxDQUFFLEtBQWE7UUFDakIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxFQUFFLENB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R0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDcEIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNsQixDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB7IE1peEJsZW5kIH0gZnJvbSBcIi4vQW5pbWF0aW9uLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTWFwPFQ+IHtcblx0W2tleTogc3RyaW5nXTogVDtcbn1cblxuZXhwb3J0IGNsYXNzIEludFNldCB7XG5cdGFycmF5ID0gbmV3IEFycmF5PG51bWJlciB8IHVuZGVmaW5lZD4oKTtcblxuXHRhZGQgKHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRsZXQgY29udGFpbnMgPSB0aGlzLmNvbnRhaW5zKHZhbHVlKTtcblx0XHR0aGlzLmFycmF5W3ZhbHVlIHwgMF0gPSB2YWx1ZSB8IDA7XG5cdFx0cmV0dXJuICFjb250YWlucztcblx0fVxuXG5cdGNvbnRhaW5zICh2YWx1ZTogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuYXJyYXlbdmFsdWUgfCAwXSAhPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRyZW1vdmUgKHZhbHVlOiBudW1iZXIpIHtcblx0XHR0aGlzLmFycmF5W3ZhbHVlIHwgMF0gPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRjbGVhciAoKSB7XG5cdFx0dGhpcy5hcnJheS5sZW5ndGggPSAwO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdTZXQge1xuXHRlbnRyaWVzOiBTdHJpbmdNYXA8Ym9vbGVhbj4gPSB7fTtcblx0c2l6ZSA9IDA7XG5cblx0YWRkICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0bGV0IGNvbnRhaW5zID0gdGhpcy5lbnRyaWVzW3ZhbHVlXTtcblx0XHR0aGlzLmVudHJpZXNbdmFsdWVdID0gdHJ1ZTtcblx0XHRpZiAoIWNvbnRhaW5zKSB7XG5cdFx0XHR0aGlzLnNpemUrKztcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRhZGRBbGwgKHZhbHVlczogc3RyaW5nW10pOiBib29sZWFuIHtcblx0XHRsZXQgb2xkU2l6ZSA9IHRoaXMuc2l6ZTtcblx0XHRmb3IgKHZhciBpID0gMCwgbiA9IHZhbHVlcy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHR0aGlzLmFkZCh2YWx1ZXNbaV0pO1xuXHRcdHJldHVybiBvbGRTaXplICE9IHRoaXMuc2l6ZTtcblx0fVxuXG5cdGNvbnRhaW5zICh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuZW50cmllc1t2YWx1ZV07XG5cdH1cblxuXHRjbGVhciAoKSB7XG5cdFx0dGhpcy5lbnRyaWVzID0ge307XG5cdFx0dGhpcy5zaXplID0gMDtcblx0fVxufVxuXG5leHBvcnQgdHlwZSBOdW1iZXJBcnJheUxpa2UgPSBBcnJheTxudW1iZXI+IHwgRmxvYXQzMkFycmF5O1xuZXhwb3J0IHR5cGUgSW50QXJyYXlMaWtlID0gQXJyYXk8bnVtYmVyPiB8IEludDE2QXJyYXk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzcG9zYWJsZSB7XG5cdGRpc3Bvc2UgKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdG9yYWJsZSB7XG5cdHJlc3RvcmUgKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xvciB7XG5cdHB1YmxpYyBzdGF0aWMgV0hJVEUgPSBuZXcgQ29sb3IoMSwgMSwgMSwgMSk7XG5cdHB1YmxpYyBzdGF0aWMgUkVEID0gbmV3IENvbG9yKDEsIDAsIDAsIDEpO1xuXHRwdWJsaWMgc3RhdGljIEdSRUVOID0gbmV3IENvbG9yKDAsIDEsIDAsIDEpO1xuXHRwdWJsaWMgc3RhdGljIEJMVUUgPSBuZXcgQ29sb3IoMCwgMCwgMSwgMSk7XG5cdHB1YmxpYyBzdGF0aWMgTUFHRU5UQSA9IG5ldyBDb2xvcigxLCAwLCAxLCAxKTtcblxuXHRjb25zdHJ1Y3RvciAocHVibGljIHI6IG51bWJlciA9IDAsIHB1YmxpYyBnOiBudW1iZXIgPSAwLCBwdWJsaWMgYjogbnVtYmVyID0gMCwgcHVibGljIGE6IG51bWJlciA9IDApIHtcblx0fVxuXG5cdHNldCAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYTogbnVtYmVyKSB7XG5cdFx0dGhpcy5yID0gcjtcblx0XHR0aGlzLmcgPSBnO1xuXHRcdHRoaXMuYiA9IGI7XG5cdFx0dGhpcy5hID0gYTtcblx0XHRyZXR1cm4gdGhpcy5jbGFtcCgpO1xuXHR9XG5cblx0c2V0RnJvbUNvbG9yIChjOiBDb2xvcikge1xuXHRcdHRoaXMuciA9IGMucjtcblx0XHR0aGlzLmcgPSBjLmc7XG5cdFx0dGhpcy5iID0gYy5iO1xuXHRcdHRoaXMuYSA9IGMuYTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldEZyb21TdHJpbmcgKGhleDogc3RyaW5nKSB7XG5cdFx0aGV4ID0gaGV4LmNoYXJBdCgwKSA9PSAnIycgPyBoZXguc3Vic3RyKDEpIDogaGV4O1xuXHRcdHRoaXMuciA9IHBhcnNlSW50KGhleC5zdWJzdHIoMCwgMiksIDE2KSAvIDI1NTtcblx0XHR0aGlzLmcgPSBwYXJzZUludChoZXguc3Vic3RyKDIsIDIpLCAxNikgLyAyNTU7XG5cdFx0dGhpcy5iID0gcGFyc2VJbnQoaGV4LnN1YnN0cig0LCAyKSwgMTYpIC8gMjU1O1xuXHRcdHRoaXMuYSA9IGhleC5sZW5ndGggIT0gOCA/IDEgOiBwYXJzZUludChoZXguc3Vic3RyKDYsIDIpLCAxNikgLyAyNTU7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRhZGQgKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIsIGE6IG51bWJlcikge1xuXHRcdHRoaXMuciArPSByO1xuXHRcdHRoaXMuZyArPSBnO1xuXHRcdHRoaXMuYiArPSBiO1xuXHRcdHRoaXMuYSArPSBhO1xuXHRcdHJldHVybiB0aGlzLmNsYW1wKCk7XG5cdH1cblxuXHRjbGFtcCAoKSB7XG5cdFx0aWYgKHRoaXMuciA8IDApIHRoaXMuciA9IDA7XG5cdFx0ZWxzZSBpZiAodGhpcy5yID4gMSkgdGhpcy5yID0gMTtcblxuXHRcdGlmICh0aGlzLmcgPCAwKSB0aGlzLmcgPSAwO1xuXHRcdGVsc2UgaWYgKHRoaXMuZyA+IDEpIHRoaXMuZyA9IDE7XG5cblx0XHRpZiAodGhpcy5iIDwgMCkgdGhpcy5iID0gMDtcblx0XHRlbHNlIGlmICh0aGlzLmIgPiAxKSB0aGlzLmIgPSAxO1xuXG5cdFx0aWYgKHRoaXMuYSA8IDApIHRoaXMuYSA9IDA7XG5cdFx0ZWxzZSBpZiAodGhpcy5hID4gMSkgdGhpcy5hID0gMTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHN0YXRpYyByZ2JhODg4OFRvQ29sb3IgKGNvbG9yOiBDb2xvciwgdmFsdWU6IG51bWJlcikge1xuXHRcdGNvbG9yLnIgPSAoKHZhbHVlICYgMHhmZjAwMDAwMCkgPj4+IDI0KSAvIDI1NTtcblx0XHRjb2xvci5nID0gKCh2YWx1ZSAmIDB4MDBmZjAwMDApID4+PiAxNikgLyAyNTU7XG5cdFx0Y29sb3IuYiA9ICgodmFsdWUgJiAweDAwMDBmZjAwKSA+Pj4gOCkgLyAyNTU7XG5cdFx0Y29sb3IuYSA9ICgodmFsdWUgJiAweDAwMDAwMGZmKSkgLyAyNTU7XG5cdH1cblxuXHRzdGF0aWMgcmdiODg4VG9Db2xvciAoY29sb3I6IENvbG9yLCB2YWx1ZTogbnVtYmVyKSB7XG5cdFx0Y29sb3IuciA9ICgodmFsdWUgJiAweDAwZmYwMDAwKSA+Pj4gMTYpIC8gMjU1O1xuXHRcdGNvbG9yLmcgPSAoKHZhbHVlICYgMHgwMDAwZmYwMCkgPj4+IDgpIC8gMjU1O1xuXHRcdGNvbG9yLmIgPSAoKHZhbHVlICYgMHgwMDAwMDBmZikpIC8gMjU1O1xuXHR9XG5cblx0dG9SZ2I4ODggKCkge1xuXHRcdGNvbnN0IGhleCA9ICh4OiBudW1iZXIpID0+IChcIjBcIiArICh4ICogMjU1KS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcblx0XHRyZXR1cm4gTnVtYmVyKFwiMHhcIiArIGhleCh0aGlzLnIpICsgaGV4KHRoaXMuZykgKyBoZXgodGhpcy5iKSk7XG5cdH1cblxuXHRzdGF0aWMgZnJvbVN0cmluZyAoaGV4OiBzdHJpbmcsIGNvbG9yID0gbmV3IENvbG9yKCkpOiBDb2xvciB7XG5cdFx0cmV0dXJuIGNvbG9yLnNldEZyb21TdHJpbmcoaGV4KTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgTWF0aFV0aWxzIHtcblx0c3RhdGljIFBJID0gMy4xNDE1OTI3O1xuXHRzdGF0aWMgUEkyID0gTWF0aFV0aWxzLlBJICogMjtcblx0c3RhdGljIGludlBJMiA9IDEgLyBNYXRoVXRpbHMuUEkyO1xuXHRzdGF0aWMgcmFkaWFuc1RvRGVncmVlcyA9IDE4MCAvIE1hdGhVdGlscy5QSTtcblx0c3RhdGljIHJhZERlZyA9IE1hdGhVdGlscy5yYWRpYW5zVG9EZWdyZWVzO1xuXHRzdGF0aWMgZGVncmVlc1RvUmFkaWFucyA9IE1hdGhVdGlscy5QSSAvIDE4MDtcblx0c3RhdGljIGRlZ1JhZCA9IE1hdGhVdGlscy5kZWdyZWVzVG9SYWRpYW5zO1xuXG5cdHN0YXRpYyBjbGFtcCAodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG5cdFx0aWYgKHZhbHVlIDwgbWluKSByZXR1cm4gbWluO1xuXHRcdGlmICh2YWx1ZSA+IG1heCkgcmV0dXJuIG1heDtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cblxuXHRzdGF0aWMgY29zRGVnIChkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gTWF0aC5jb3MoZGVncmVlcyAqIE1hdGhVdGlscy5kZWdSYWQpO1xuXHR9XG5cblx0c3RhdGljIHNpbkRlZyAoZGVncmVlczogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIE1hdGguc2luKGRlZ3JlZXMgKiBNYXRoVXRpbHMuZGVnUmFkKTtcblx0fVxuXG5cdHN0YXRpYyBhdGFuMkRlZyAoeTogbnVtYmVyLCB4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gTWF0aC5hdGFuMih5LCB4KSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdH1cblxuXHRzdGF0aWMgc2lnbnVtICh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdmFsdWUgPiAwID8gMSA6IHZhbHVlIDwgMCA/IC0xIDogMDtcblx0fVxuXG5cdHN0YXRpYyB0b0ludCAoeDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHggPiAwID8gTWF0aC5mbG9vcih4KSA6IE1hdGguY2VpbCh4KTtcblx0fVxuXG5cdHN0YXRpYyBjYnJ0ICh4OiBudW1iZXIpIHtcblx0XHRsZXQgeSA9IE1hdGgucG93KE1hdGguYWJzKHgpLCAxIC8gMyk7XG5cdFx0cmV0dXJuIHggPCAwID8gLXkgOiB5O1xuXHR9XG5cblx0c3RhdGljIHJhbmRvbVRyaWFuZ3VsYXIgKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIE1hdGhVdGlscy5yYW5kb21Ucmlhbmd1bGFyV2l0aChtaW4sIG1heCwgKG1pbiArIG1heCkgKiAwLjUpO1xuXHR9XG5cblx0c3RhdGljIHJhbmRvbVRyaWFuZ3VsYXJXaXRoIChtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIG1vZGU6IG51bWJlcik6IG51bWJlciB7XG5cdFx0bGV0IHUgPSBNYXRoLnJhbmRvbSgpO1xuXHRcdGxldCBkID0gbWF4IC0gbWluO1xuXHRcdGlmICh1IDw9IChtb2RlIC0gbWluKSAvIGQpIHJldHVybiBtaW4gKyBNYXRoLnNxcnQodSAqIGQgKiAobW9kZSAtIG1pbikpO1xuXHRcdHJldHVybiBtYXggLSBNYXRoLnNxcnQoKDEgLSB1KSAqIGQgKiAobWF4IC0gbW9kZSkpO1xuXHR9XG5cblx0c3RhdGljIGlzUG93ZXJPZlR3byAodmFsdWU6IG51bWJlcikge1xuXHRcdHJldHVybiB2YWx1ZSAmJiAodmFsdWUgJiAodmFsdWUgLSAxKSkgPT09IDA7XG5cdH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEludGVycG9sYXRpb24ge1xuXHRwcm90ZWN0ZWQgYWJzdHJhY3QgYXBwbHlJbnRlcm5hbCAoYTogbnVtYmVyKTogbnVtYmVyO1xuXHRhcHBseSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIHRoaXMuYXBwbHlJbnRlcm5hbChhKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUG93IGV4dGVuZHMgSW50ZXJwb2xhdGlvbiB7XG5cdHByb3RlY3RlZCBwb3dlciA9IDI7XG5cblx0Y29uc3RydWN0b3IgKHBvd2VyOiBudW1iZXIpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMucG93ZXIgPSBwb3dlcjtcblx0fVxuXG5cdGFwcGx5SW50ZXJuYWwgKGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0aWYgKGEgPD0gMC41KSByZXR1cm4gTWF0aC5wb3coYSAqIDIsIHRoaXMucG93ZXIpIC8gMjtcblx0XHRyZXR1cm4gTWF0aC5wb3coKGEgLSAxKSAqIDIsIHRoaXMucG93ZXIpIC8gKHRoaXMucG93ZXIgJSAyID09IDAgPyAtMiA6IDIpICsgMTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUG93T3V0IGV4dGVuZHMgUG93IHtcblx0Y29uc3RydWN0b3IgKHBvd2VyOiBudW1iZXIpIHtcblx0XHRzdXBlcihwb3dlcik7XG5cdH1cblxuXHRhcHBseUludGVybmFsIChhOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiBNYXRoLnBvdyhhIC0gMSwgdGhpcy5wb3dlcikgKiAodGhpcy5wb3dlciAlIDIgPT0gMCA/IC0xIDogMSkgKyAxO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBVdGlscyB7XG5cdHN0YXRpYyBTVVBQT1JUU19UWVBFRF9BUlJBWVMgPSB0eXBlb2YgKEZsb2F0MzJBcnJheSkgIT09IFwidW5kZWZpbmVkXCI7XG5cblx0c3RhdGljIGFycmF5Q29weTxUPiAoc291cmNlOiBBcnJheUxpa2U8VD4sIHNvdXJjZVN0YXJ0OiBudW1iZXIsIGRlc3Q6IEFycmF5TGlrZTxUPiwgZGVzdFN0YXJ0OiBudW1iZXIsIG51bUVsZW1lbnRzOiBudW1iZXIpIHtcblx0XHRmb3IgKGxldCBpID0gc291cmNlU3RhcnQsIGogPSBkZXN0U3RhcnQ7IGkgPCBzb3VyY2VTdGFydCArIG51bUVsZW1lbnRzOyBpKyssIGorKykge1xuXHRcdFx0ZGVzdFtqXSA9IHNvdXJjZVtpXTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgYXJyYXlGaWxsPFQ+IChhcnJheTogQXJyYXlMaWtlPFQ+LCBmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyLCB2YWx1ZTogVCkge1xuXHRcdGZvciAobGV0IGkgPSBmcm9tSW5kZXg7IGkgPCB0b0luZGV4OyBpKyspXG5cdFx0XHRhcnJheVtpXSA9IHZhbHVlO1xuXHR9XG5cblx0c3RhdGljIHNldEFycmF5U2l6ZTxUPiAoYXJyYXk6IEFycmF5PFQ+LCBzaXplOiBudW1iZXIsIHZhbHVlOiBhbnkgPSAwKTogQXJyYXk8VD4ge1xuXHRcdGxldCBvbGRTaXplID0gYXJyYXkubGVuZ3RoO1xuXHRcdGlmIChvbGRTaXplID09IHNpemUpIHJldHVybiBhcnJheTtcblx0XHRhcnJheS5sZW5ndGggPSBzaXplO1xuXHRcdGlmIChvbGRTaXplIDwgc2l6ZSkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IG9sZFNpemU7IGkgPCBzaXplOyBpKyspIGFycmF5W2ldID0gdmFsdWU7XG5cdFx0fVxuXHRcdHJldHVybiBhcnJheTtcblx0fVxuXG5cdHN0YXRpYyBlbnN1cmVBcnJheUNhcGFjaXR5PFQ+IChhcnJheTogQXJyYXk8VD4sIHNpemU6IG51bWJlciwgdmFsdWU6IGFueSA9IDApOiBBcnJheTxUPiB7XG5cdFx0aWYgKGFycmF5Lmxlbmd0aCA+PSBzaXplKSByZXR1cm4gYXJyYXk7XG5cdFx0cmV0dXJuIFV0aWxzLnNldEFycmF5U2l6ZShhcnJheSwgc2l6ZSwgdmFsdWUpO1xuXHR9XG5cblx0c3RhdGljIG5ld0FycmF5PFQ+IChzaXplOiBudW1iZXIsIGRlZmF1bHRWYWx1ZTogVCk6IEFycmF5PFQ+IHtcblx0XHRsZXQgYXJyYXkgPSBuZXcgQXJyYXk8VD4oc2l6ZSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIGFycmF5W2ldID0gZGVmYXVsdFZhbHVlO1xuXHRcdHJldHVybiBhcnJheTtcblx0fVxuXG5cdHN0YXRpYyBuZXdGbG9hdEFycmF5IChzaXplOiBudW1iZXIpOiBOdW1iZXJBcnJheUxpa2Uge1xuXHRcdGlmIChVdGlscy5TVVBQT1JUU19UWVBFRF9BUlJBWVMpXG5cdFx0XHRyZXR1cm4gbmV3IEZsb2F0MzJBcnJheShzaXplKVxuXHRcdGVsc2Uge1xuXHRcdFx0bGV0IGFycmF5ID0gbmV3IEFycmF5PG51bWJlcj4oc2l6ZSk7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSBhcnJheVtpXSA9IDA7XG5cdFx0XHRyZXR1cm4gYXJyYXk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIG5ld1Nob3J0QXJyYXkgKHNpemU6IG51bWJlcik6IEludEFycmF5TGlrZSB7XG5cdFx0aWYgKFV0aWxzLlNVUFBPUlRTX1RZUEVEX0FSUkFZUylcblx0XHRcdHJldHVybiBuZXcgSW50MTZBcnJheShzaXplKVxuXHRcdGVsc2Uge1xuXHRcdFx0bGV0IGFycmF5ID0gbmV3IEFycmF5PG51bWJlcj4oc2l6ZSk7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSBhcnJheVtpXSA9IDA7XG5cdFx0XHRyZXR1cm4gYXJyYXk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIHRvRmxvYXRBcnJheSAoYXJyYXk6IEFycmF5PG51bWJlcj4pIHtcblx0XHRyZXR1cm4gVXRpbHMuU1VQUE9SVFNfVFlQRURfQVJSQVlTID8gbmV3IEZsb2F0MzJBcnJheShhcnJheSkgOiBhcnJheTtcblx0fVxuXG5cdHN0YXRpYyB0b1NpbmdsZVByZWNpc2lvbiAodmFsdWU6IG51bWJlcikge1xuXHRcdHJldHVybiBVdGlscy5TVVBQT1JUU19UWVBFRF9BUlJBWVMgPyBNYXRoLmZyb3VuZCh2YWx1ZSkgOiB2YWx1ZTtcblx0fVxuXG5cdC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmaXggV2ViS2l0IDYwMiBzcGVjaWZpYyBpc3N1ZSBkZXNjcmliZWQgYXQgaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL2ZvcnVtL2lPUy0xMC1kaXNhcHBlYXJpbmctZ3JhcGhpY3MtMTAxMDlcblx0c3RhdGljIHdlYmtpdDYwMkJ1Z2ZpeEhlbHBlciAoYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kKSB7XG5cdH1cblxuXHRzdGF0aWMgY29udGFpbnM8VD4gKGFycmF5OiBBcnJheTxUPiwgZWxlbWVudDogVCwgaWRlbnRpdHkgPSB0cnVlKSB7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKylcblx0XHRcdGlmIChhcnJheVtpXSA9PSBlbGVtZW50KSByZXR1cm4gdHJ1ZTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRzdGF0aWMgZW51bVZhbHVlICh0eXBlOiBhbnksIG5hbWU6IHN0cmluZykge1xuXHRcdHJldHVybiB0eXBlW25hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSldO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWJ1Z1V0aWxzIHtcblx0c3RhdGljIGxvZ0JvbmVzIChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNrZWxldG9uLmJvbmVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgYm9uZSA9IHNrZWxldG9uLmJvbmVzW2ldO1xuXHRcdFx0Y29uc29sZS5sb2coYm9uZS5kYXRhLm5hbWUgKyBcIiwgXCIgKyBib25lLmEgKyBcIiwgXCIgKyBib25lLmIgKyBcIiwgXCIgKyBib25lLmMgKyBcIiwgXCIgKyBib25lLmQgKyBcIiwgXCIgKyBib25lLndvcmxkWCArIFwiLCBcIiArIGJvbmUud29ybGRZKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvb2w8VD4ge1xuXHRwcml2YXRlIGl0ZW1zID0gbmV3IEFycmF5PFQ+KCk7XG5cdHByaXZhdGUgaW5zdGFudGlhdG9yOiAoKSA9PiBUO1xuXG5cdGNvbnN0cnVjdG9yIChpbnN0YW50aWF0b3I6ICgpID0+IFQpIHtcblx0XHR0aGlzLmluc3RhbnRpYXRvciA9IGluc3RhbnRpYXRvcjtcblx0fVxuXG5cdG9idGFpbiAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoID4gMCA/IHRoaXMuaXRlbXMucG9wKCkhIDogdGhpcy5pbnN0YW50aWF0b3IoKTtcblx0fVxuXG5cdGZyZWUgKGl0ZW06IFQpIHtcblx0XHRpZiAoKGl0ZW0gYXMgYW55KS5yZXNldCkgKGl0ZW0gYXMgYW55KS5yZXNldCgpO1xuXHRcdHRoaXMuaXRlbXMucHVzaChpdGVtKTtcblx0fVxuXG5cdGZyZWVBbGwgKGl0ZW1zOiBBcnJheUxpa2U8VD4pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKVxuXHRcdFx0dGhpcy5mcmVlKGl0ZW1zW2ldKTtcblx0fVxuXG5cdGNsZWFyICgpIHtcblx0XHR0aGlzLml0ZW1zLmxlbmd0aCA9IDA7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFZlY3RvcjIge1xuXHRjb25zdHJ1Y3RvciAocHVibGljIHggPSAwLCBwdWJsaWMgeSA9IDApIHtcblx0fVxuXG5cdHNldCAoeDogbnVtYmVyLCB5OiBudW1iZXIpOiBWZWN0b3IyIHtcblx0XHR0aGlzLnggPSB4O1xuXHRcdHRoaXMueSA9IHk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRsZW5ndGggKCkge1xuXHRcdGxldCB4ID0gdGhpcy54O1xuXHRcdGxldCB5ID0gdGhpcy55O1xuXHRcdHJldHVybiBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG5cdH1cblxuXHRub3JtYWxpemUgKCkge1xuXHRcdGxldCBsZW4gPSB0aGlzLmxlbmd0aCgpO1xuXHRcdGlmIChsZW4gIT0gMCkge1xuXHRcdFx0dGhpcy54IC89IGxlbjtcblx0XHRcdHRoaXMueSAvPSBsZW47XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBUaW1lS2VlcGVyIHtcblx0bWF4RGVsdGEgPSAwLjA2NDtcblx0ZnJhbWVzUGVyU2Vjb25kID0gMDtcblx0ZGVsdGEgPSAwO1xuXHR0b3RhbFRpbWUgPSAwO1xuXG5cdHByaXZhdGUgbGFzdFRpbWUgPSBEYXRlLm5vdygpIC8gMTAwMDtcblx0cHJpdmF0ZSBmcmFtZUNvdW50ID0gMDtcblx0cHJpdmF0ZSBmcmFtZVRpbWUgPSAwO1xuXG5cdHVwZGF0ZSAoKSB7XG5cdFx0bGV0IG5vdyA9IERhdGUubm93KCkgLyAxMDAwO1xuXHRcdHRoaXMuZGVsdGEgPSBub3cgLSB0aGlzLmxhc3RUaW1lO1xuXHRcdHRoaXMuZnJhbWVUaW1lICs9IHRoaXMuZGVsdGE7XG5cdFx0dGhpcy50b3RhbFRpbWUgKz0gdGhpcy5kZWx0YTtcblx0XHRpZiAodGhpcy5kZWx0YSA+IHRoaXMubWF4RGVsdGEpIHRoaXMuZGVsdGEgPSB0aGlzLm1heERlbHRhO1xuXHRcdHRoaXMubGFzdFRpbWUgPSBub3c7XG5cblx0XHR0aGlzLmZyYW1lQ291bnQrKztcblx0XHRpZiAodGhpcy5mcmFtZVRpbWUgPiAxKSB7XG5cdFx0XHR0aGlzLmZyYW1lc1BlclNlY29uZCA9IHRoaXMuZnJhbWVDb3VudCAvIHRoaXMuZnJhbWVUaW1lO1xuXHRcdFx0dGhpcy5mcmFtZVRpbWUgPSAwO1xuXHRcdFx0dGhpcy5mcmFtZUNvdW50ID0gMDtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcnJheUxpa2U8VD4ge1xuXHRsZW5ndGg6IG51bWJlcjtcblx0W246IG51bWJlcl06IFQ7XG59XG5cbmV4cG9ydCBjbGFzcyBXaW5kb3dlZE1lYW4ge1xuXHR2YWx1ZXM6IEFycmF5PG51bWJlcj47XG5cdGFkZGVkVmFsdWVzID0gMDtcblx0bGFzdFZhbHVlID0gMDtcblx0bWVhbiA9IDA7XG5cdGRpcnR5ID0gdHJ1ZTtcblxuXHRjb25zdHJ1Y3RvciAod2luZG93U2l6ZTogbnVtYmVyID0gMzIpIHtcblx0XHR0aGlzLnZhbHVlcyA9IG5ldyBBcnJheTxudW1iZXI+KHdpbmRvd1NpemUpO1xuXHR9XG5cblx0aGFzRW5vdWdoRGF0YSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkZWRWYWx1ZXMgPj0gdGhpcy52YWx1ZXMubGVuZ3RoO1xuXHR9XG5cblx0YWRkVmFsdWUgKHZhbHVlOiBudW1iZXIpIHtcblx0XHRpZiAodGhpcy5hZGRlZFZhbHVlcyA8IHRoaXMudmFsdWVzLmxlbmd0aCkgdGhpcy5hZGRlZFZhbHVlcysrO1xuXHRcdHRoaXMudmFsdWVzW3RoaXMubGFzdFZhbHVlKytdID0gdmFsdWU7XG5cdFx0aWYgKHRoaXMubGFzdFZhbHVlID4gdGhpcy52YWx1ZXMubGVuZ3RoIC0gMSkgdGhpcy5sYXN0VmFsdWUgPSAwO1xuXHRcdHRoaXMuZGlydHkgPSB0cnVlO1xuXHR9XG5cblx0Z2V0TWVhbiAoKSB7XG5cdFx0aWYgKHRoaXMuaGFzRW5vdWdoRGF0YSgpKSB7XG5cdFx0XHRpZiAodGhpcy5kaXJ0eSkge1xuXHRcdFx0XHRsZXQgbWVhbiA9IDA7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52YWx1ZXMubGVuZ3RoOyBpKyspXG5cdFx0XHRcdFx0bWVhbiArPSB0aGlzLnZhbHVlc1tpXTtcblx0XHRcdFx0dGhpcy5tZWFuID0gbWVhbiAvIHRoaXMudmFsdWVzLmxlbmd0aDtcblx0XHRcdFx0dGhpcy5kaXJ0eSA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMubWVhbjtcblx0XHR9XG5cdFx0cmV0dXJuIDA7XG5cdH1cbn1cbiJdfQ==
@@ -1,16 +1,16 @@
1
1
  /******************************************************************************
2
2
  * Spine Runtimes License Agreement
3
- * Last updated July 28, 2023. Replaces all prior versions.
3
+ * Last updated April 5, 2025. Replaces all prior versions.
4
4
  *
5
- * Copyright (c) 2013-2023, Esoteric Software LLC
5
+ * Copyright (c) 2013-2025, Esoteric Software LLC
6
6
  *
7
7
  * Integration of the Spine Runtimes into software or otherwise creating
8
8
  * derivative works of the Spine Runtimes is permitted under the terms and
9
9
  * conditions of Section 2 of the Spine Editor License Agreement:
10
10
  * http://esotericsoftware.com/spine-editor-license
11
11
  *
12
- * Otherwise, it is permitted to integrate the Spine Runtimes into software or
13
- * otherwise create derivative works of the Spine Runtimes (collectively,
12
+ * Otherwise, it is permitted to integrate the Spine Runtimes into software
13
+ * or otherwise create derivative works of the Spine Runtimes (collectively,
14
14
  * "Products"), provided that each user of the Products must obtain their own
15
15
  * Spine Editor license and redistribution of the Products in any form must
16
16
  * include this license and copyright notice.
@@ -23,8 +23,8 @@
23
23
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
24
24
  * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
25
25
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
27
- * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
+ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
29
  import { Slot } from "../Slot.js";
30
30
  import { NumberArrayLike } from "../Utils.js";