@galacean/engine-spine 0.0.0-experimental-6d3110b4d9-20240531

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 (121) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +79 -0
  3. package/dist/browser.js +1 -0
  4. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Animation.js +2 -0
  5. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Animation.js.map +1 -0
  6. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationState.js +2 -0
  7. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationState.js.map +1 -0
  8. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationStateData.js +2 -0
  9. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationStateData.js.map +1 -0
  10. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AssetManagerBase.js +2 -0
  11. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AssetManagerBase.js.map +1 -0
  12. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AtlasAttachmentLoader.js +2 -0
  13. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AtlasAttachmentLoader.js.map +1 -0
  14. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Bone.js +2 -0
  15. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Bone.js.map +1 -0
  16. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/BoneData.js +2 -0
  17. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/BoneData.js.map +1 -0
  18. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/ConstraintData.js +2 -0
  19. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/ConstraintData.js.map +1 -0
  20. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Event.js +2 -0
  21. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Event.js.map +1 -0
  22. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/EventData.js +2 -0
  23. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/EventData.js.map +1 -0
  24. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraint.js +2 -0
  25. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraint.js.map +1 -0
  26. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraintData.js +2 -0
  27. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraintData.js.map +1 -0
  28. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraint.js +2 -0
  29. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraint.js.map +1 -0
  30. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraintData.js +2 -0
  31. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraintData.js.map +1 -0
  32. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraint.js +2 -0
  33. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraint.js.map +1 -0
  34. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraintData.js +2 -0
  35. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraintData.js.map +1 -0
  36. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skeleton.js +2 -0
  37. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skeleton.js.map +1 -0
  38. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBinary.js +2 -0
  39. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBinary.js.map +1 -0
  40. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBounds.js +2 -0
  41. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBounds.js.map +1 -0
  42. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonClipping.js +2 -0
  43. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonClipping.js.map +1 -0
  44. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonData.js +2 -0
  45. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonData.js.map +1 -0
  46. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonJson.js +2 -0
  47. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonJson.js.map +1 -0
  48. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skin.js +2 -0
  49. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skin.js.map +1 -0
  50. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Slot.js +2 -0
  51. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Slot.js.map +1 -0
  52. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SlotData.js +2 -0
  53. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SlotData.js.map +1 -0
  54. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Texture.js +2 -0
  55. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Texture.js.map +1 -0
  56. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TextureAtlas.js +2 -0
  57. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TextureAtlas.js.map +1 -0
  58. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraint.js +2 -0
  59. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraint.js.map +1 -0
  60. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraintData.js +2 -0
  61. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraintData.js.map +1 -0
  62. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Triangulator.js +2 -0
  63. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Triangulator.js.map +1 -0
  64. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Utils.js +2 -0
  65. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Utils.js.map +1 -0
  66. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Attachment.js +2 -0
  67. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Attachment.js.map +1 -0
  68. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/BoundingBoxAttachment.js +2 -0
  69. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/BoundingBoxAttachment.js.map +1 -0
  70. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/ClippingAttachment.js +2 -0
  71. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/ClippingAttachment.js.map +1 -0
  72. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/MeshAttachment.js +2 -0
  73. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/MeshAttachment.js.map +1 -0
  74. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PathAttachment.js +2 -0
  75. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PathAttachment.js.map +1 -0
  76. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PointAttachment.js +2 -0
  77. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PointAttachment.js.map +1 -0
  78. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/RegionAttachment.js +2 -0
  79. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/RegionAttachment.js.map +1 -0
  80. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Sequence.js +2 -0
  81. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Sequence.js.map +1 -0
  82. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/polyfills.js +2 -0
  83. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/polyfills.js.map +1 -0
  84. package/dist/esm/node_modules/tslib/tslib.es6.js +2 -0
  85. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -0
  86. package/dist/esm/src/SpineAnimation.js +2 -0
  87. package/dist/esm/src/SpineAnimation.js.map +1 -0
  88. package/dist/esm/src/SpineMaterial.js +2 -0
  89. package/dist/esm/src/SpineMaterial.js.map +1 -0
  90. package/dist/esm/src/core/SpineGenerator.js +2 -0
  91. package/dist/esm/src/core/SpineGenerator.js.map +1 -0
  92. package/dist/esm/src/core/SpinePrimitive.js +2 -0
  93. package/dist/esm/src/core/SpinePrimitive.js.map +1 -0
  94. package/dist/esm/src/index.js +2 -0
  95. package/dist/esm/src/index.js.map +1 -0
  96. package/dist/esm/src/loader/EditorSkeletonDataLoader.js +2 -0
  97. package/dist/esm/src/loader/EditorSkeletonDataLoader.js.map +1 -0
  98. package/dist/esm/src/loader/EditorSpineAtlasLoader.js +2 -0
  99. package/dist/esm/src/loader/EditorSpineAtlasLoader.js.map +1 -0
  100. package/dist/esm/src/loader/LoaderUtils.js +2 -0
  101. package/dist/esm/src/loader/LoaderUtils.js.map +1 -0
  102. package/dist/esm/src/loader/SpineLoader.js +2 -0
  103. package/dist/esm/src/loader/SpineLoader.js.map +1 -0
  104. package/dist/main.js +2 -0
  105. package/dist/main.js.map +1 -0
  106. package/dist/module.js +2 -0
  107. package/dist/module.js.map +1 -0
  108. package/package.json +67 -0
  109. package/types/SpineAnimation.d.ts +64 -0
  110. package/types/SpineMaterial.d.ts +6 -0
  111. package/types/core/MeshGenerator.d.ts +43 -0
  112. package/types/core/SpineGenerator.d.ts +43 -0
  113. package/types/core/SpineMesh.d.ts +11 -0
  114. package/types/core/SpinePrimitive.d.ts +23 -0
  115. package/types/index.d.ts +7 -0
  116. package/types/loader/BufferReader.d.ts +9 -0
  117. package/types/loader/EditorSkeletonDataLoader.d.ts +6 -0
  118. package/types/loader/EditorSpineAtlasLoader.d.ts +6 -0
  119. package/types/loader/LoaderUtils.d.ts +16 -0
  120. package/types/loader/SpineLoader.d.ts +21 -0
  121. package/types/types.d.ts +4 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Animation.js","sources":["../../../../../../node_modules/@esotericsoftware/spine-core/dist/Animation.js"],"sourcesContent":["/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated July 28, 2023. Replaces all prior versions.\n *\n * Copyright (c) 2013-2023, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software or\n * otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE\n * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { VertexAttachment } from \"./attachments/Attachment.js\";\nimport { StringSet, Utils, MathUtils } from \"./Utils.js\";\nimport { SequenceMode, SequenceModeValues } from \"./attachments/Sequence.js\";\n/** A simple container for a list of timelines and a name. */\nexport class Animation {\n /** The animation's name, which is unique across all animations in the skeleton. */\n name;\n timelines = [];\n timelineIds = new StringSet();\n /** The duration of the animation in seconds, which is the highest time of all keys in the timeline. */\n duration;\n constructor(name, timelines, duration) {\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.name = name;\n this.setTimelines(timelines);\n this.duration = duration;\n }\n setTimelines(timelines) {\n if (!timelines)\n throw new Error(\"timelines cannot be null.\");\n this.timelines = timelines;\n this.timelineIds.clear();\n for (var i = 0; i < timelines.length; i++)\n this.timelineIds.addAll(timelines[i].getPropertyIds());\n }\n hasTimeline(ids) {\n for (let i = 0; i < ids.length; i++)\n if (this.timelineIds.contains(ids[i]))\n return true;\n return false;\n }\n /** Applies all the animation's timelines to the specified skeleton.\n *\n * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}.\n * @param loop If true, the animation repeats after {@link #getDuration()}.\n * @param events May be null to ignore fired events. */\n apply(skeleton, lastTime, time, loop, events, alpha, blend, direction) {\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n if (loop && this.duration != 0) {\n time %= this.duration;\n if (lastTime > 0)\n lastTime %= this.duration;\n }\n let timelines = this.timelines;\n for (let i = 0, n = timelines.length; i < n; i++)\n timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction);\n }\n}\n/** Controls how a timeline value is mixed with the setup pose value or current pose value when a timeline's `alpha`\n * < 1.\n *\n * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */\nexport var MixBlend;\n(function (MixBlend) {\n /** Transitions from the setup value to the timeline value (the current value is not used). Before the first key, the setup\n * value is set. */\n MixBlend[MixBlend[\"setup\"] = 0] = \"setup\";\n /** Transitions from the current value to the timeline value. Before the first key, transitions from the current value to\n * the setup value. Timelines which perform instant transitions, such as {@link DrawOrderTimeline} or\n * {@link AttachmentTimeline}, use the setup value before the first key.\n *\n * `first` is intended for the first animations applied, not for animations layered on top of those. */\n MixBlend[MixBlend[\"first\"] = 1] = \"first\";\n /** Transitions from the current value to the timeline value. No change is made before the first key (the current value is\n * kept until the first key).\n *\n * `replace` is intended for animations layered on top of others, not for the first animations applied. */\n MixBlend[MixBlend[\"replace\"] = 2] = \"replace\";\n /** Transitions from the current value to the current value plus the timeline value. No change is made before the first key\n * (the current value is kept until the first key).\n *\n * `add` is intended for animations layered on top of others, not for the first animations applied. Properties\n * keyed by additive animations must be set manually or by another animation before applying the additive animations, else\n * the property values will increase continually. */\n MixBlend[MixBlend[\"add\"] = 3] = \"add\";\n})(MixBlend || (MixBlend = {}));\n/** Indicates whether a timeline's `alpha` is mixing out over time toward 0 (the setup or current pose value) or\n * mixing in toward 1 (the timeline's value).\n *\n * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */\nexport var MixDirection;\n(function (MixDirection) {\n MixDirection[MixDirection[\"mixIn\"] = 0] = \"mixIn\";\n MixDirection[MixDirection[\"mixOut\"] = 1] = \"mixOut\";\n})(MixDirection || (MixDirection = {}));\nconst Property = {\n rotate: 0,\n x: 1,\n y: 2,\n scaleX: 3,\n scaleY: 4,\n shearX: 5,\n shearY: 6,\n inherit: 7,\n rgb: 8,\n alpha: 9,\n rgb2: 10,\n attachment: 11,\n deform: 12,\n event: 13,\n drawOrder: 14,\n ikConstraint: 15,\n transformConstraint: 16,\n pathConstraintPosition: 17,\n pathConstraintSpacing: 18,\n pathConstraintMix: 19,\n physicsConstraintInertia: 20,\n physicsConstraintStrength: 21,\n physicsConstraintDamping: 22,\n physicsConstraintMass: 23,\n physicsConstraintWind: 24,\n physicsConstraintGravity: 25,\n physicsConstraintMix: 26,\n physicsConstraintReset: 27,\n sequence: 28,\n};\n/** The interface for all timelines. */\nexport class Timeline {\n propertyIds;\n frames;\n constructor(frameCount, propertyIds) {\n this.propertyIds = propertyIds;\n this.frames = Utils.newFloatArray(frameCount * this.getFrameEntries());\n }\n getPropertyIds() {\n return this.propertyIds;\n }\n getFrameEntries() {\n return 1;\n }\n getFrameCount() {\n return this.frames.length / this.getFrameEntries();\n }\n getDuration() {\n return this.frames[this.frames.length - this.getFrameEntries()];\n }\n static search1(frames, time) {\n let n = frames.length;\n for (let i = 1; i < n; i++)\n if (frames[i] > time)\n return i - 1;\n return n - 1;\n }\n static search(frames, time, step) {\n let n = frames.length;\n for (let i = step; i < n; i += step)\n if (frames[i] > time)\n return i - step;\n return n - step;\n }\n}\n/** The base class for timelines that use interpolation between key frame values. */\nexport class CurveTimeline extends Timeline {\n curves; // type, x, y, ...\n constructor(frameCount, bezierCount, propertyIds) {\n super(frameCount, propertyIds);\n this.curves = Utils.newFloatArray(frameCount + bezierCount * 18 /*BEZIER_SIZE*/);\n this.curves[frameCount - 1] = 1 /*STEPPED*/;\n }\n /** Sets the specified key frame to linear interpolation. */\n setLinear(frame) {\n this.curves[frame] = 0 /*LINEAR*/;\n }\n /** Sets the specified key frame to stepped interpolation. */\n setStepped(frame) {\n this.curves[frame] = 1 /*STEPPED*/;\n }\n /** Shrinks the storage for Bezier curves, for use when <code>bezierCount</code> (specified in the constructor) was larger\n * than the actual number of Bezier curves. */\n shrink(bezierCount) {\n let size = this.getFrameCount() + bezierCount * 18 /*BEZIER_SIZE*/;\n if (this.curves.length > size) {\n let newCurves = Utils.newFloatArray(size);\n Utils.arrayCopy(this.curves, 0, newCurves, 0, size);\n this.curves = newCurves;\n }\n }\n /** Stores the segments for the specified Bezier curve. For timelines that modify multiple values, there may be more than\n * one curve per frame.\n * @param bezier The ordinal of this Bezier curve for this timeline, between 0 and <code>bezierCount - 1</code> (specified\n * in the constructor), inclusive.\n * @param frame Between 0 and <code>frameCount - 1</code>, inclusive.\n * @param value The index of the value for this frame that this curve is used for.\n * @param time1 The time for the first key.\n * @param value1 The value for the first key.\n * @param cx1 The time for the first Bezier handle.\n * @param cy1 The value for the first Bezier handle.\n * @param cx2 The time of the second Bezier handle.\n * @param cy2 The value for the second Bezier handle.\n * @param time2 The time for the second key.\n * @param value2 The value for the second key. */\n setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) {\n let curves = this.curves;\n let i = this.getFrameCount() + bezier * 18 /*BEZIER_SIZE*/;\n if (value == 0)\n curves[frame] = 2 /*BEZIER*/ + i;\n let tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03;\n let dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006;\n let ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy;\n let dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667;\n let x = time1 + dx, y = value1 + dy;\n for (let n = i + 18 /*BEZIER_SIZE*/; i < n; i += 2) {\n curves[i] = x;\n curves[i + 1] = y;\n dx += ddx;\n dy += ddy;\n ddx += dddx;\n ddy += dddy;\n x += dx;\n y += dy;\n }\n }\n /** Returns the Bezier interpolated value for the specified time.\n * @param frameIndex The index into {@link #getFrames()} for the values of the frame before <code>time</code>.\n * @param valueOffset The offset from <code>frameIndex</code> to the value this curve is used for.\n * @param i The index of the Bezier segments. See {@link #getCurveType(int)}. */\n getBezierValue(time, frameIndex, valueOffset, i) {\n let curves = this.curves;\n if (curves[i] > time) {\n let x = this.frames[frameIndex], y = this.frames[frameIndex + valueOffset];\n return y + (time - x) / (curves[i] - x) * (curves[i + 1] - y);\n }\n let n = i + 18 /*BEZIER_SIZE*/;\n for (i += 2; i < n; i += 2) {\n if (curves[i] >= time) {\n let x = curves[i - 2], y = curves[i - 1];\n return y + (time - x) / (curves[i] - x) * (curves[i + 1] - y);\n }\n }\n frameIndex += this.getFrameEntries();\n let x = curves[n - 2], y = curves[n - 1];\n return y + (time - x) / (this.frames[frameIndex] - x) * (this.frames[frameIndex + valueOffset] - y);\n }\n}\nexport class CurveTimeline1 extends CurveTimeline {\n constructor(frameCount, bezierCount, propertyId) {\n super(frameCount, bezierCount, [propertyId]);\n }\n getFrameEntries() {\n return 2 /*ENTRIES*/;\n }\n /** Sets the time and value for the specified frame.\n * @param frame Between 0 and <code>frameCount</code>, inclusive.\n * @param time The frame time in seconds. */\n setFrame(frame, time, value) {\n frame <<= 1;\n this.frames[frame] = time;\n this.frames[frame + 1 /*VALUE*/] = value;\n }\n /** Returns the interpolated value for the specified time. */\n getCurveValue(time) {\n let frames = this.frames;\n let i = frames.length - 2;\n for (let ii = 2; ii <= i; ii += 2) {\n if (frames[ii] > time) {\n i = ii - 2;\n break;\n }\n }\n let curveType = this.curves[i >> 1];\n switch (curveType) {\n case 0 /*LINEAR*/:\n let before = frames[i], value = frames[i + 1 /*VALUE*/];\n return value + (time - before) / (frames[i + 2 /*ENTRIES*/] - before) * (frames[i + 2 /*ENTRIES*/ + 1 /*VALUE*/] - value);\n case 1 /*STEPPED*/:\n return frames[i + 1 /*VALUE*/];\n }\n return this.getBezierValue(time, i, 1 /*VALUE*/, curveType - 2 /*BEZIER*/);\n }\n getRelativeValue(time, alpha, blend, current, setup) {\n if (time < this.frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n return setup;\n case MixBlend.first:\n return current + (setup - current) * alpha;\n }\n return current;\n }\n let value = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n return setup + value * alpha;\n case MixBlend.first:\n case MixBlend.replace:\n value += setup - current;\n }\n return current + value * alpha;\n }\n getAbsoluteValue(time, alpha, blend, current, setup) {\n if (time < this.frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n return setup;\n case MixBlend.first:\n return current + (setup - current) * alpha;\n }\n return current;\n }\n let value = this.getCurveValue(time);\n if (blend == MixBlend.setup)\n return setup + (value - setup) * alpha;\n return current + (value - current) * alpha;\n }\n getAbsoluteValue2(time, alpha, blend, current, setup, value) {\n if (time < this.frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n return setup;\n case MixBlend.first:\n return current + (setup - current) * alpha;\n }\n return current;\n }\n if (blend == MixBlend.setup)\n return setup + (value - setup) * alpha;\n return current + (value - current) * alpha;\n }\n getScaleValue(time, alpha, blend, direction, current, setup) {\n const frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n return setup;\n case MixBlend.first:\n return current + (setup - current) * alpha;\n }\n return current;\n }\n let value = this.getCurveValue(time) * setup;\n if (alpha == 1) {\n if (blend == MixBlend.add)\n return current + value - setup;\n return value;\n }\n // Mixing out uses sign of setup or current pose, else use sign of key.\n if (direction == MixDirection.mixOut) {\n switch (blend) {\n case MixBlend.setup:\n return setup + (Math.abs(value) * MathUtils.signum(setup) - setup) * alpha;\n case MixBlend.first:\n case MixBlend.replace:\n return current + (Math.abs(value) * MathUtils.signum(current) - current) * alpha;\n }\n }\n else {\n let s = 0;\n switch (blend) {\n case MixBlend.setup:\n s = Math.abs(setup) * MathUtils.signum(value);\n return s + (value - s) * alpha;\n case MixBlend.first:\n case MixBlend.replace:\n s = Math.abs(current) * MathUtils.signum(value);\n return s + (value - s) * alpha;\n }\n }\n return current + (value - setup) * alpha;\n }\n}\n/** The base class for a {@link CurveTimeline} which sets two properties. */\nexport class CurveTimeline2 extends CurveTimeline {\n /** @param bezierCount The maximum number of Bezier curves. See {@link #shrink(int)}.\n * @param propertyIds Unique identifiers for the properties the timeline modifies. */\n constructor(frameCount, bezierCount, propertyId1, propertyId2) {\n super(frameCount, bezierCount, [propertyId1, propertyId2]);\n }\n getFrameEntries() {\n return 3 /*ENTRIES*/;\n }\n /** Sets the time and values for the specified frame.\n * @param frame Between 0 and <code>frameCount</code>, inclusive.\n * @param time The frame time in seconds. */\n setFrame(frame, time, value1, value2) {\n frame *= 3 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*VALUE1*/] = value1;\n this.frames[frame + 2 /*VALUE2*/] = value2;\n }\n}\n/** Changes a bone's local {@link Bone#rotation}. */\nexport class RotateTimeline extends CurveTimeline1 {\n boneIndex = 0;\n constructor(frameCount, bezierCount, boneIndex) {\n super(frameCount, bezierCount, Property.rotate + \"|\" + boneIndex);\n this.boneIndex = boneIndex;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let bone = skeleton.bones[this.boneIndex];\n if (bone.active)\n bone.rotation = this.getRelativeValue(time, alpha, blend, bone.rotation, bone.data.rotation);\n }\n}\n/** Changes a bone's local {@link Bone#x} and {@link Bone#y}. */\nexport class TranslateTimeline extends CurveTimeline2 {\n boneIndex = 0;\n constructor(frameCount, bezierCount, boneIndex) {\n super(frameCount, bezierCount, Property.x + \"|\" + boneIndex, Property.y + \"|\" + boneIndex);\n this.boneIndex = boneIndex;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n let frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x;\n bone.y = bone.data.y;\n return;\n case MixBlend.first:\n bone.x += (bone.data.x - bone.x) * alpha;\n bone.y += (bone.data.y - bone.y) * alpha;\n }\n return;\n }\n let x = 0, y = 0;\n let i = Timeline.search(frames, time, 3 /*ENTRIES*/);\n let curveType = this.curves[i / 3 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n let before = frames[i];\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n let t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before);\n x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t;\n y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n break;\n default:\n x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x + x * alpha;\n bone.y = bone.data.y + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.x += (bone.data.x + x - bone.x) * alpha;\n bone.y += (bone.data.y + y - bone.y) * alpha;\n break;\n case MixBlend.add:\n bone.x += x * alpha;\n bone.y += y * alpha;\n }\n }\n}\n/** Changes a bone's local {@link Bone#x}. */\nexport class TranslateXTimeline extends CurveTimeline1 {\n boneIndex = 0;\n constructor(frameCount, bezierCount, boneIndex) {\n super(frameCount, bezierCount, Property.x + \"|\" + boneIndex);\n this.boneIndex = boneIndex;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let bone = skeleton.bones[this.boneIndex];\n if (bone.active)\n bone.x = this.getRelativeValue(time, alpha, blend, bone.x, bone.data.x);\n }\n}\n/** Changes a bone's local {@link Bone#x}. */\nexport class TranslateYTimeline extends CurveTimeline1 {\n boneIndex = 0;\n constructor(frameCount, bezierCount, boneIndex) {\n super(frameCount, bezierCount, Property.y + \"|\" + boneIndex);\n this.boneIndex = boneIndex;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let bone = skeleton.bones[this.boneIndex];\n if (bone.active)\n bone.y = this.getRelativeValue(time, alpha, blend, bone.y, bone.data.y);\n }\n}\n/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */\nexport class ScaleTimeline extends CurveTimeline2 {\n boneIndex = 0;\n constructor(frameCount, bezierCount, boneIndex) {\n super(frameCount, bezierCount, Property.scaleX + \"|\" + boneIndex, Property.scaleY + \"|\" + boneIndex);\n this.boneIndex = boneIndex;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n let frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.scaleX = bone.data.scaleX;\n bone.scaleY = bone.data.scaleY;\n return;\n case MixBlend.first:\n bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha;\n bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha;\n }\n return;\n }\n let x, y;\n let i = Timeline.search(frames, time, 3 /*ENTRIES*/);\n let curveType = this.curves[i / 3 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n let before = frames[i];\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n let t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before);\n x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t;\n y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n break;\n default:\n x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n x *= bone.data.scaleX;\n y *= bone.data.scaleY;\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n bone.scaleX += x - bone.data.scaleX;\n bone.scaleY += y - bone.data.scaleY;\n }\n else {\n bone.scaleX = x;\n bone.scaleY = y;\n }\n }\n else {\n let bx = 0, by = 0;\n if (direction == MixDirection.mixOut) {\n switch (blend) {\n case MixBlend.setup:\n bx = bone.data.scaleX;\n by = bone.data.scaleY;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = bone.scaleX;\n by = bone.scaleY;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.add:\n bone.scaleX += (x - bone.data.scaleX) * alpha;\n bone.scaleY += (y - bone.data.scaleY) * alpha;\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup:\n bx = Math.abs(bone.data.scaleX) * MathUtils.signum(x);\n by = Math.abs(bone.data.scaleY) * MathUtils.signum(y);\n bone.scaleX = bx + (x - bx) * alpha;\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = Math.abs(bone.scaleX) * MathUtils.signum(x);\n by = Math.abs(bone.scaleY) * MathUtils.signum(y);\n bone.scaleX = bx + (x - bx) * alpha;\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.add:\n bone.scaleX += (x - bone.data.scaleX) * alpha;\n bone.scaleY += (y - bone.data.scaleY) * alpha;\n }\n }\n }\n }\n}\n/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */\nexport class ScaleXTimeline extends CurveTimeline1 {\n boneIndex = 0;\n constructor(frameCount, bezierCount, boneIndex) {\n super(frameCount, bezierCount, Property.scaleX + \"|\" + boneIndex);\n this.boneIndex = boneIndex;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let bone = skeleton.bones[this.boneIndex];\n if (bone.active)\n bone.scaleX = this.getScaleValue(time, alpha, blend, direction, bone.scaleX, bone.data.scaleX);\n }\n}\n/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */\nexport class ScaleYTimeline extends CurveTimeline1 {\n boneIndex = 0;\n constructor(frameCount, bezierCount, boneIndex) {\n super(frameCount, bezierCount, Property.scaleY + \"|\" + boneIndex);\n this.boneIndex = boneIndex;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let bone = skeleton.bones[this.boneIndex];\n if (bone.active)\n bone.scaleY = this.getScaleValue(time, alpha, blend, direction, bone.scaleY, bone.data.scaleY);\n }\n}\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nexport class ShearTimeline extends CurveTimeline2 {\n boneIndex = 0;\n constructor(frameCount, bezierCount, boneIndex) {\n super(frameCount, bezierCount, Property.shearX + \"|\" + boneIndex, Property.shearY + \"|\" + boneIndex);\n this.boneIndex = boneIndex;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n let frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX;\n bone.shearY = bone.data.shearY;\n return;\n case MixBlend.first:\n bone.shearX += (bone.data.shearX - bone.shearX) * alpha;\n bone.shearY += (bone.data.shearY - bone.shearY) * alpha;\n }\n return;\n }\n let x = 0, y = 0;\n let i = Timeline.search(frames, time, 3 /*ENTRIES*/);\n let curveType = this.curves[i / 3 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n let before = frames[i];\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n let t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before);\n x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t;\n y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n break;\n default:\n x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX + x * alpha;\n bone.shearY = bone.data.shearY + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha;\n bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha;\n break;\n case MixBlend.add:\n bone.shearX += x * alpha;\n bone.shearY += y * alpha;\n }\n }\n}\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nexport class ShearXTimeline extends CurveTimeline1 {\n boneIndex = 0;\n constructor(frameCount, bezierCount, boneIndex) {\n super(frameCount, bezierCount, Property.shearX + \"|\" + boneIndex);\n this.boneIndex = boneIndex;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let bone = skeleton.bones[this.boneIndex];\n if (bone.active)\n bone.shearX = this.getRelativeValue(time, alpha, blend, bone.shearX, bone.data.shearX);\n }\n}\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nexport class ShearYTimeline extends CurveTimeline1 {\n boneIndex = 0;\n constructor(frameCount, bezierCount, boneIndex) {\n super(frameCount, bezierCount, Property.shearY + \"|\" + boneIndex);\n this.boneIndex = boneIndex;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let bone = skeleton.bones[this.boneIndex];\n if (bone.active)\n bone.shearY = this.getRelativeValue(time, alpha, blend, bone.shearY, bone.data.shearY);\n }\n}\nexport class InheritTimeline extends Timeline {\n boneIndex = 0;\n constructor(frameCount, boneIndex) {\n super(frameCount, [Property.inherit + \"|\" + boneIndex]);\n this.boneIndex = boneIndex;\n }\n getFrameEntries() {\n return 2 /*ENTRIES*/;\n }\n /** Sets the transform mode for the specified frame.\n * @param frame Between 0 and <code>frameCount</code>, inclusive.\n * @param time The frame time in seconds. */\n setFrame(frame, time, inherit) {\n frame *= 2 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*INHERIT*/] = inherit;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n let frames = this.frames;\n if (time < frames[0]) {\n if (blend == MixBlend.setup || blend == MixBlend.first)\n bone.inherit = bone.data.inherit;\n return;\n }\n bone.inherit = this.frames[Timeline.search(frames, time, 2 /*ENTRIES*/) + 1 /*INHERIT*/];\n }\n}\n/** Changes a slot's {@link Slot#color}. */\nexport class RGBATimeline extends CurveTimeline {\n slotIndex = 0;\n constructor(frameCount, bezierCount, slotIndex) {\n super(frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.alpha + \"|\" + slotIndex\n ]);\n this.slotIndex = slotIndex;\n }\n getFrameEntries() {\n return 5 /*ENTRIES*/;\n }\n /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */\n setFrame(frame, time, r, g, b, a) {\n frame *= 5 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n this.frames[frame + 4 /*A*/] = a;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n let frames = this.frames;\n let color = slot.color;\n if (time < frames[0]) {\n let setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.setFromColor(setup);\n return;\n case MixBlend.first:\n color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha);\n }\n return;\n }\n let r = 0, g = 0, b = 0, a = 0;\n let i = Timeline.search(frames, time, 5 /*ENTRIES*/);\n let curveType = this.curves[i / 5 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n let before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n let t = (time - before) / (frames[i + 5 /*ENTRIES*/] - before);\n r += (frames[i + 5 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 5 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 5 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n a += (frames[i + 5 /*ENTRIES*/ + 4 /*A*/] - a) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n a = this.getBezierValue(time, i, 4 /*A*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n }\n if (alpha == 1)\n color.set(r, g, b, a);\n else {\n if (blend == MixBlend.setup)\n color.setFromColor(slot.data.color);\n color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha);\n }\n }\n}\n/** Changes a slot's {@link Slot#color}. */\nexport class RGBTimeline extends CurveTimeline {\n slotIndex = 0;\n constructor(frameCount, bezierCount, slotIndex) {\n super(frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex\n ]);\n this.slotIndex = slotIndex;\n }\n getFrameEntries() {\n return 4 /*ENTRIES*/;\n }\n /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */\n setFrame(frame, time, r, g, b) {\n frame <<= 2;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n let frames = this.frames;\n let color = slot.color;\n if (time < frames[0]) {\n let setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.r = setup.r;\n color.g = setup.g;\n color.b = setup.b;\n return;\n case MixBlend.first:\n color.r += (setup.r - color.r) * alpha;\n color.g += (setup.g - color.g) * alpha;\n color.b += (setup.b - color.b) * alpha;\n }\n return;\n }\n let r = 0, g = 0, b = 0;\n let i = Timeline.search(frames, time, 4 /*ENTRIES*/);\n let curveType = this.curves[i >> 2];\n switch (curveType) {\n case 0 /*LINEAR*/:\n let before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n let t = (time - before) / (frames[i + 4 /*ENTRIES*/] - before);\n r += (frames[i + 4 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 4 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 4 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n }\n if (alpha == 1) {\n color.r = r;\n color.g = g;\n color.b = b;\n }\n else {\n if (blend == MixBlend.setup) {\n let setup = slot.data.color;\n color.r = setup.r;\n color.g = setup.g;\n color.b = setup.b;\n }\n color.r += (r - color.r) * alpha;\n color.g += (g - color.g) * alpha;\n color.b += (b - color.b) * alpha;\n }\n }\n}\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nexport class AlphaTimeline extends CurveTimeline1 {\n slotIndex = 0;\n constructor(frameCount, bezierCount, slotIndex) {\n super(frameCount, bezierCount, Property.alpha + \"|\" + slotIndex);\n this.slotIndex = slotIndex;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n let color = slot.color;\n if (time < this.frames[0]) {\n let setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.a = setup.a;\n return;\n case MixBlend.first:\n color.a += (setup.a - color.a) * alpha;\n }\n return;\n }\n let a = this.getCurveValue(time);\n if (alpha == 1)\n color.a = a;\n else {\n if (blend == MixBlend.setup)\n color.a = slot.data.color.a;\n color.a += (a - color.a) * alpha;\n }\n }\n}\n/** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */\nexport class RGBA2Timeline extends CurveTimeline {\n slotIndex = 0;\n constructor(frameCount, bezierCount, slotIndex) {\n super(frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.alpha + \"|\" + slotIndex,\n Property.rgb2 + \"|\" + slotIndex\n ]);\n this.slotIndex = slotIndex;\n }\n getFrameEntries() {\n return 8 /*ENTRIES*/;\n }\n /** Sets the time in seconds, light, and dark colors for the specified key frame. */\n setFrame(frame, time, r, g, b, a, r2, g2, b2) {\n frame <<= 3;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n this.frames[frame + 4 /*A*/] = a;\n this.frames[frame + 5 /*R2*/] = r2;\n this.frames[frame + 6 /*G2*/] = g2;\n this.frames[frame + 7 /*B2*/] = b2;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n let frames = this.frames;\n let light = slot.color, dark = slot.darkColor;\n if (time < frames[0]) {\n let setupLight = slot.data.color, setupDark = slot.data.darkColor;\n switch (blend) {\n case MixBlend.setup:\n light.setFromColor(setupLight);\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n return;\n case MixBlend.first:\n light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha);\n dark.r += (setupDark.r - dark.r) * alpha;\n dark.g += (setupDark.g - dark.g) * alpha;\n dark.b += (setupDark.b - dark.b) * alpha;\n }\n return;\n }\n let r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0;\n let i = Timeline.search(frames, time, 8 /*ENTRIES*/);\n let curveType = this.curves[i >> 3];\n switch (curveType) {\n case 0 /*LINEAR*/:\n let before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n r2 = frames[i + 5 /*R2*/];\n g2 = frames[i + 6 /*G2*/];\n b2 = frames[i + 7 /*B2*/];\n let t = (time - before) / (frames[i + 8 /*ENTRIES*/] - before);\n r += (frames[i + 8 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 8 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 8 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n a += (frames[i + 8 /*ENTRIES*/ + 4 /*A*/] - a) * t;\n r2 += (frames[i + 8 /*ENTRIES*/ + 5 /*R2*/] - r2) * t;\n g2 += (frames[i + 8 /*ENTRIES*/ + 6 /*G2*/] - g2) * t;\n b2 += (frames[i + 8 /*ENTRIES*/ + 7 /*B2*/] - b2) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n r2 = frames[i + 5 /*R2*/];\n g2 = frames[i + 6 /*G2*/];\n b2 = frames[i + 7 /*B2*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n a = this.getBezierValue(time, i, 4 /*A*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n r2 = this.getBezierValue(time, i, 5 /*R2*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/);\n g2 = this.getBezierValue(time, i, 6 /*G2*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/);\n b2 = this.getBezierValue(time, i, 7 /*B2*/, curveType + 18 /*BEZIER_SIZE*/ * 6 - 2 /*BEZIER*/);\n }\n if (alpha == 1) {\n light.set(r, g, b, a);\n dark.r = r2;\n dark.g = g2;\n dark.b = b2;\n }\n else {\n if (blend == MixBlend.setup) {\n light.setFromColor(slot.data.color);\n let setupDark = slot.data.darkColor;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n }\n light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha);\n dark.r += (r2 - dark.r) * alpha;\n dark.g += (g2 - dark.g) * alpha;\n dark.b += (b2 - dark.b) * alpha;\n }\n }\n}\n/** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */\nexport class RGB2Timeline extends CurveTimeline {\n slotIndex = 0;\n constructor(frameCount, bezierCount, slotIndex) {\n super(frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.rgb2 + \"|\" + slotIndex\n ]);\n this.slotIndex = slotIndex;\n }\n getFrameEntries() {\n return 7 /*ENTRIES*/;\n }\n /** Sets the time in seconds, light, and dark colors for the specified key frame. */\n setFrame(frame, time, r, g, b, r2, g2, b2) {\n frame *= 7 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n this.frames[frame + 4 /*R2*/] = r2;\n this.frames[frame + 5 /*G2*/] = g2;\n this.frames[frame + 6 /*B2*/] = b2;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n let frames = this.frames;\n let light = slot.color, dark = slot.darkColor;\n if (time < frames[0]) {\n let setupLight = slot.data.color, setupDark = slot.data.darkColor;\n switch (blend) {\n case MixBlend.setup:\n light.r = setupLight.r;\n light.g = setupLight.g;\n light.b = setupLight.b;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n return;\n case MixBlend.first:\n light.r += (setupLight.r - light.r) * alpha;\n light.g += (setupLight.g - light.g) * alpha;\n light.b += (setupLight.b - light.b) * alpha;\n dark.r += (setupDark.r - dark.r) * alpha;\n dark.g += (setupDark.g - dark.g) * alpha;\n dark.b += (setupDark.b - dark.b) * alpha;\n }\n return;\n }\n let r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0;\n let i = Timeline.search(frames, time, 7 /*ENTRIES*/);\n let curveType = this.curves[i / 7 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n let before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n r2 = frames[i + 4 /*R2*/];\n g2 = frames[i + 5 /*G2*/];\n b2 = frames[i + 6 /*B2*/];\n let t = (time - before) / (frames[i + 7 /*ENTRIES*/] - before);\n r += (frames[i + 7 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 7 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 7 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n r2 += (frames[i + 7 /*ENTRIES*/ + 4 /*R2*/] - r2) * t;\n g2 += (frames[i + 7 /*ENTRIES*/ + 5 /*G2*/] - g2) * t;\n b2 += (frames[i + 7 /*ENTRIES*/ + 6 /*B2*/] - b2) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n r2 = frames[i + 4 /*R2*/];\n g2 = frames[i + 5 /*G2*/];\n b2 = frames[i + 6 /*B2*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n r2 = this.getBezierValue(time, i, 4 /*R2*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n g2 = this.getBezierValue(time, i, 5 /*G2*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/);\n b2 = this.getBezierValue(time, i, 6 /*B2*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/);\n }\n if (alpha == 1) {\n light.r = r;\n light.g = g;\n light.b = b;\n dark.r = r2;\n dark.g = g2;\n dark.b = b2;\n }\n else {\n if (blend == MixBlend.setup) {\n let setupLight = slot.data.color, setupDark = slot.data.darkColor;\n light.r = setupLight.r;\n light.g = setupLight.g;\n light.b = setupLight.b;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n }\n light.r += (r - light.r) * alpha;\n light.g += (g - light.g) * alpha;\n light.b += (b - light.b) * alpha;\n dark.r += (r2 - dark.r) * alpha;\n dark.g += (g2 - dark.g) * alpha;\n dark.b += (b2 - dark.b) * alpha;\n }\n }\n}\n/** Changes a slot's {@link Slot#attachment}. */\nexport class AttachmentTimeline extends Timeline {\n slotIndex = 0;\n /** The attachment name for each key frame. May contain null values to clear the attachment. */\n attachmentNames;\n constructor(frameCount, slotIndex) {\n super(frameCount, [\n Property.attachment + \"|\" + slotIndex\n ]);\n this.slotIndex = slotIndex;\n this.attachmentNames = new Array(frameCount);\n }\n getFrameCount() {\n return this.frames.length;\n }\n /** Sets the time in seconds and the attachment name for the specified key frame. */\n setFrame(frame, time, attachmentName) {\n this.frames[frame] = time;\n this.attachmentNames[frame] = attachmentName;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n if (direction == MixDirection.mixOut) {\n if (blend == MixBlend.setup)\n this.setAttachment(skeleton, slot, slot.data.attachmentName);\n return;\n }\n if (time < this.frames[0]) {\n if (blend == MixBlend.setup || blend == MixBlend.first)\n this.setAttachment(skeleton, slot, slot.data.attachmentName);\n return;\n }\n this.setAttachment(skeleton, slot, this.attachmentNames[Timeline.search1(this.frames, time)]);\n }\n setAttachment(skeleton, slot, attachmentName) {\n slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\n }\n}\n/** Changes a slot's {@link Slot#deform} to deform a {@link VertexAttachment}. */\nexport class DeformTimeline extends CurveTimeline {\n slotIndex = 0;\n /** The attachment that will be deformed. */\n attachment;\n /** The vertices for each key frame. */\n vertices;\n constructor(frameCount, bezierCount, slotIndex, attachment) {\n super(frameCount, bezierCount, [\n Property.deform + \"|\" + slotIndex + \"|\" + attachment.id\n ]);\n this.slotIndex = slotIndex;\n this.attachment = attachment;\n this.vertices = new Array(frameCount);\n }\n getFrameCount() {\n return this.frames.length;\n }\n /** Sets the time in seconds and the vertices for the specified key frame.\n * @param vertices Vertex positions for an unweighted VertexAttachment, or deform offsets if it has weights. */\n setFrame(frame, time, vertices) {\n this.frames[frame] = time;\n this.vertices[frame] = vertices;\n }\n /** @param value1 Ignored (0 is used for a deform timeline).\n * @param value2 Ignored (1 is used for a deform timeline). */\n setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) {\n let curves = this.curves;\n let i = this.getFrameCount() + bezier * 18 /*BEZIER_SIZE*/;\n if (value == 0)\n curves[frame] = 2 /*BEZIER*/ + i;\n let tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06;\n let dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018;\n let ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy;\n let dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667;\n let x = time1 + dx, y = dy;\n for (let n = i + 18 /*BEZIER_SIZE*/; i < n; i += 2) {\n curves[i] = x;\n curves[i + 1] = y;\n dx += ddx;\n dy += ddy;\n ddx += dddx;\n ddy += dddy;\n x += dx;\n y += dy;\n }\n }\n getCurvePercent(time, frame) {\n let curves = this.curves;\n let i = curves[frame];\n switch (i) {\n case 0 /*LINEAR*/:\n let x = this.frames[frame];\n return (time - x) / (this.frames[frame + this.getFrameEntries()] - x);\n case 1 /*STEPPED*/:\n return 0;\n }\n i -= 2 /*BEZIER*/;\n if (curves[i] > time) {\n let x = this.frames[frame];\n return curves[i + 1] * (time - x) / (curves[i] - x);\n }\n let n = i + 18 /*BEZIER_SIZE*/;\n for (i += 2; i < n; i += 2) {\n if (curves[i] >= time) {\n let x = curves[i - 2], y = curves[i - 1];\n return y + (time - x) / (curves[i] - x) * (curves[i + 1] - y);\n }\n }\n let x = curves[n - 2], y = curves[n - 1];\n return y + (1 - y) * (time - x) / (this.frames[frame + this.getFrameEntries()] - x);\n }\n apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n let slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n let slotAttachment = slot.getAttachment();\n if (!slotAttachment)\n return;\n if (!(slotAttachment instanceof VertexAttachment) || slotAttachment.timelineAttachment != this.attachment)\n return;\n let deform = slot.deform;\n if (deform.length == 0)\n blend = MixBlend.setup;\n let vertices = this.vertices;\n let vertexCount = vertices[0].length;\n let frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n deform.length = 0;\n return;\n case MixBlend.first:\n if (alpha == 1) {\n deform.length = 0;\n return;\n }\n deform.length = vertexCount;\n let vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions.\n let setupVertices = vertexAttachment.vertices;\n for (var i = 0; i < vertexCount; i++)\n deform[i] += (setupVertices[i] - deform[i]) * alpha;\n }\n else {\n // Weighted deform offsets.\n alpha = 1 - alpha;\n for (var i = 0; i < vertexCount; i++)\n deform[i] *= alpha;\n }\n }\n return;\n }\n deform.length = vertexCount;\n if (time >= frames[frames.length - 1]) {\n let lastVertices = vertices[frames.length - 1];\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n let vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n let setupVertices = vertexAttachment.vertices;\n for (let i = 0; i < vertexCount; i++)\n deform[i] += lastVertices[i] - setupVertices[i];\n }\n else {\n // Weighted deform offsets, with alpha.\n for (let i = 0; i < vertexCount; i++)\n deform[i] += lastVertices[i];\n }\n }\n else\n Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount);\n }\n else {\n switch (blend) {\n case MixBlend.setup: {\n let vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n let setupVertices = vertexAttachment.vertices;\n for (let i = 0; i < vertexCount; i++) {\n let setup = setupVertices[i];\n deform[i] = setup + (lastVertices[i] - setup) * alpha;\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (let i = 0; i < vertexCount; i++)\n deform[i] = lastVertices[i] * alpha;\n }\n break;\n }\n case MixBlend.first:\n case MixBlend.replace:\n for (let i = 0; i < vertexCount; i++)\n deform[i] += (lastVertices[i] - deform[i]) * alpha;\n break;\n case MixBlend.add:\n let vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n let setupVertices = vertexAttachment.vertices;\n for (let i = 0; i < vertexCount; i++)\n deform[i] += (lastVertices[i] - setupVertices[i]) * alpha;\n }\n else {\n // Weighted deform offsets, with alpha.\n for (let i = 0; i < vertexCount; i++)\n deform[i] += lastVertices[i] * alpha;\n }\n }\n }\n return;\n }\n // Interpolate between the previous frame and the current frame.\n let frame = Timeline.search1(frames, time);\n let percent = this.getCurvePercent(time, frame);\n let prevVertices = vertices[frame];\n let nextVertices = vertices[frame + 1];\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n let vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n let setupVertices = vertexAttachment.vertices;\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i];\n deform[i] += prev + (nextVertices[i] - prev) * percent - setupVertices[i];\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i];\n deform[i] += prev + (nextVertices[i] - prev) * percent;\n }\n }\n }\n else {\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i];\n deform[i] = prev + (nextVertices[i] - prev) * percent;\n }\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup: {\n let vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n let setupVertices = vertexAttachment.vertices;\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i], setup = setupVertices[i];\n deform[i] = setup + (prev + (nextVertices[i] - prev) * percent - setup) * alpha;\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i];\n deform[i] = (prev + (nextVertices[i] - prev) * percent) * alpha;\n }\n }\n break;\n }\n case MixBlend.first:\n case MixBlend.replace:\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i];\n deform[i] += (prev + (nextVertices[i] - prev) * percent - deform[i]) * alpha;\n }\n break;\n case MixBlend.add:\n let vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n let setupVertices = vertexAttachment.vertices;\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i];\n deform[i] += (prev + (nextVertices[i] - prev) * percent - setupVertices[i]) * alpha;\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (let i = 0; i < vertexCount; i++) {\n let prev = prevVertices[i];\n deform[i] += (prev + (nextVertices[i] - prev) * percent) * alpha;\n }\n }\n }\n }\n }\n}\n/** Fires an {@link Event} when specific animation times are reached. */\nexport class EventTimeline extends Timeline {\n static propertyIds = [\"\" + Property.event];\n /** The event for each key frame. */\n events;\n constructor(frameCount) {\n super(frameCount, EventTimeline.propertyIds);\n this.events = new Array(frameCount);\n }\n getFrameCount() {\n return this.frames.length;\n }\n /** Sets the time in seconds and the event for the specified key frame. */\n setFrame(frame, event) {\n this.frames[frame] = event.time;\n this.events[frame] = event;\n }\n /** Fires events for frames > `lastTime` and <= `time`. */\n apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n if (!firedEvents)\n return;\n let frames = this.frames;\n let frameCount = this.frames.length;\n if (lastTime > time) { // Apply after lastTime for looped animations.\n this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction);\n lastTime = -1;\n }\n else if (lastTime >= frames[frameCount - 1]) // Last time is after last frame.\n return;\n if (time < frames[0])\n return;\n let i = 0;\n if (lastTime < frames[0])\n i = 0;\n else {\n i = Timeline.search1(frames, lastTime) + 1;\n let frameTime = frames[i];\n while (i > 0) { // Fire multiple events with the same frame.\n if (frames[i - 1] != frameTime)\n break;\n i--;\n }\n }\n for (; i < frameCount && time >= frames[i]; i++)\n firedEvents.push(this.events[i]);\n }\n}\n/** Changes a skeleton's {@link Skeleton#drawOrder}. */\nexport class DrawOrderTimeline extends Timeline {\n static propertyIds = [\"\" + Property.drawOrder];\n /** The draw order for each key frame. See {@link #setFrame(int, float, int[])}. */\n drawOrders;\n constructor(frameCount) {\n super(frameCount, DrawOrderTimeline.propertyIds);\n this.drawOrders = new Array(frameCount);\n }\n getFrameCount() {\n return this.frames.length;\n }\n /** Sets the time in seconds and the draw order for the specified key frame.\n * @param drawOrder For each slot in {@link Skeleton#slots}, the index of the new draw order. May be null to use setup pose\n * draw order. */\n setFrame(frame, time, drawOrder) {\n this.frames[frame] = time;\n this.drawOrders[frame] = drawOrder;\n }\n apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n if (direction == MixDirection.mixOut) {\n if (blend == MixBlend.setup)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n return;\n }\n if (time < this.frames[0]) {\n if (blend == MixBlend.setup || blend == MixBlend.first)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n return;\n }\n let idx = Timeline.search1(this.frames, time);\n let drawOrderToSetupIndex = this.drawOrders[idx];\n if (!drawOrderToSetupIndex)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n else {\n let drawOrder = skeleton.drawOrder;\n let slots = skeleton.slots;\n for (let i = 0, n = drawOrderToSetupIndex.length; i < n; i++)\n drawOrder[i] = slots[drawOrderToSetupIndex[i]];\n }\n }\n}\n/** Changes an IK constraint's {@link IkConstraint#mix}, {@link IkConstraint#softness},\n * {@link IkConstraint#bendDirection}, {@link IkConstraint#stretch}, and {@link IkConstraint#compress}. */\nexport class IkConstraintTimeline extends CurveTimeline {\n /** The index of the IK constraint in {@link Skeleton#getIkConstraints()} that will be changed when this timeline is applied */\n constraintIndex = 0;\n constructor(frameCount, bezierCount, ikConstraintIndex) {\n super(frameCount, bezierCount, [\n Property.ikConstraint + \"|\" + ikConstraintIndex\n ]);\n this.constraintIndex = ikConstraintIndex;\n }\n getFrameEntries() {\n return 6 /*ENTRIES*/;\n }\n /** Sets the time in seconds, mix, softness, bend direction, compress, and stretch for the specified key frame. */\n setFrame(frame, time, mix, softness, bendDirection, compress, stretch) {\n frame *= 6 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*MIX*/] = mix;\n this.frames[frame + 2 /*SOFTNESS*/] = softness;\n this.frames[frame + 3 /*BEND_DIRECTION*/] = bendDirection;\n this.frames[frame + 4 /*COMPRESS*/] = compress ? 1 : 0;\n this.frames[frame + 5 /*STRETCH*/] = stretch ? 1 : 0;\n }\n apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n let constraint = skeleton.ikConstraints[this.constraintIndex];\n if (!constraint.active)\n return;\n let frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.mix = constraint.data.mix;\n constraint.softness = constraint.data.softness;\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n return;\n case MixBlend.first:\n constraint.mix += (constraint.data.mix - constraint.mix) * alpha;\n constraint.softness += (constraint.data.softness - constraint.softness) * alpha;\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n }\n return;\n }\n let mix = 0, softness = 0;\n let i = Timeline.search(frames, time, 6 /*ENTRIES*/);\n let curveType = this.curves[i / 6 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n let before = frames[i];\n mix = frames[i + 1 /*MIX*/];\n softness = frames[i + 2 /*SOFTNESS*/];\n let t = (time - before) / (frames[i + 6 /*ENTRIES*/] - before);\n mix += (frames[i + 6 /*ENTRIES*/ + 1 /*MIX*/] - mix) * t;\n softness += (frames[i + 6 /*ENTRIES*/ + 2 /*SOFTNESS*/] - softness) * t;\n break;\n case 1 /*STEPPED*/:\n mix = frames[i + 1 /*MIX*/];\n softness = frames[i + 2 /*SOFTNESS*/];\n break;\n default:\n mix = this.getBezierValue(time, i, 1 /*MIX*/, curveType - 2 /*BEZIER*/);\n softness = this.getBezierValue(time, i, 2 /*SOFTNESS*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n if (blend == MixBlend.setup) {\n constraint.mix = constraint.data.mix + (mix - constraint.data.mix) * alpha;\n constraint.softness = constraint.data.softness + (softness - constraint.data.softness) * alpha;\n if (direction == MixDirection.mixOut) {\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n }\n else {\n constraint.bendDirection = frames[i + 3 /*BEND_DIRECTION*/];\n constraint.compress = frames[i + 4 /*COMPRESS*/] != 0;\n constraint.stretch = frames[i + 5 /*STRETCH*/] != 0;\n }\n }\n else {\n constraint.mix += (mix - constraint.mix) * alpha;\n constraint.softness += (softness - constraint.softness) * alpha;\n if (direction == MixDirection.mixIn) {\n constraint.bendDirection = frames[i + 3 /*BEND_DIRECTION*/];\n constraint.compress = frames[i + 4 /*COMPRESS*/] != 0;\n constraint.stretch = frames[i + 5 /*STRETCH*/] != 0;\n }\n }\n }\n}\n/** Changes a transform constraint's {@link TransformConstraint#rotateMix}, {@link TransformConstraint#translateMix},\n * {@link TransformConstraint#scaleMix}, and {@link TransformConstraint#shearMix}. */\nexport class TransformConstraintTimeline extends CurveTimeline {\n /** The index of the transform constraint slot in {@link Skeleton#transformConstraints} that will be changed. */\n constraintIndex = 0;\n constructor(frameCount, bezierCount, transformConstraintIndex) {\n super(frameCount, bezierCount, [\n Property.transformConstraint + \"|\" + transformConstraintIndex\n ]);\n this.constraintIndex = transformConstraintIndex;\n }\n getFrameEntries() {\n return 7 /*ENTRIES*/;\n }\n /** The time in seconds, rotate mix, translate mix, scale mix, and shear mix for the specified key frame. */\n setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) {\n let frames = this.frames;\n frame *= 7 /*ENTRIES*/;\n frames[frame] = time;\n frames[frame + 1 /*ROTATE*/] = mixRotate;\n frames[frame + 2 /*X*/] = mixX;\n frames[frame + 3 /*Y*/] = mixY;\n frames[frame + 4 /*SCALEX*/] = mixScaleX;\n frames[frame + 5 /*SCALEY*/] = mixScaleY;\n frames[frame + 6 /*SHEARY*/] = mixShearY;\n }\n apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n let constraint = skeleton.transformConstraints[this.constraintIndex];\n if (!constraint.active)\n return;\n let frames = this.frames;\n if (time < frames[0]) {\n let data = constraint.data;\n switch (blend) {\n case MixBlend.setup:\n constraint.mixRotate = data.mixRotate;\n constraint.mixX = data.mixX;\n constraint.mixY = data.mixY;\n constraint.mixScaleX = data.mixScaleX;\n constraint.mixScaleY = data.mixScaleY;\n constraint.mixShearY = data.mixShearY;\n return;\n case MixBlend.first:\n constraint.mixRotate += (data.mixRotate - constraint.mixRotate) * alpha;\n constraint.mixX += (data.mixX - constraint.mixX) * alpha;\n constraint.mixY += (data.mixY - constraint.mixY) * alpha;\n constraint.mixScaleX += (data.mixScaleX - constraint.mixScaleX) * alpha;\n constraint.mixScaleY += (data.mixScaleY - constraint.mixScaleY) * alpha;\n constraint.mixShearY += (data.mixShearY - constraint.mixShearY) * alpha;\n }\n return;\n }\n let rotate, x, y, scaleX, scaleY, shearY;\n let i = Timeline.search(frames, time, 7 /*ENTRIES*/);\n let curveType = this.curves[i / 7 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n let before = frames[i];\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n scaleX = frames[i + 4 /*SCALEX*/];\n scaleY = frames[i + 5 /*SCALEY*/];\n shearY = frames[i + 6 /*SHEARY*/];\n let t = (time - before) / (frames[i + 7 /*ENTRIES*/] - before);\n rotate += (frames[i + 7 /*ENTRIES*/ + 1 /*ROTATE*/] - rotate) * t;\n x += (frames[i + 7 /*ENTRIES*/ + 2 /*X*/] - x) * t;\n y += (frames[i + 7 /*ENTRIES*/ + 3 /*Y*/] - y) * t;\n scaleX += (frames[i + 7 /*ENTRIES*/ + 4 /*SCALEX*/] - scaleX) * t;\n scaleY += (frames[i + 7 /*ENTRIES*/ + 5 /*SCALEY*/] - scaleY) * t;\n shearY += (frames[i + 7 /*ENTRIES*/ + 6 /*SHEARY*/] - shearY) * t;\n break;\n case 1 /*STEPPED*/:\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n scaleX = frames[i + 4 /*SCALEX*/];\n scaleY = frames[i + 5 /*SCALEY*/];\n shearY = frames[i + 6 /*SHEARY*/];\n break;\n default:\n rotate = this.getBezierValue(time, i, 1 /*ROTATE*/, curveType - 2 /*BEZIER*/);\n x = this.getBezierValue(time, i, 2 /*X*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 3 /*Y*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n scaleX = this.getBezierValue(time, i, 4 /*SCALEX*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n scaleY = this.getBezierValue(time, i, 5 /*SCALEY*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/);\n shearY = this.getBezierValue(time, i, 6 /*SHEARY*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/);\n }\n if (blend == MixBlend.setup) {\n let data = constraint.data;\n constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha;\n constraint.mixX = data.mixX + (x - data.mixX) * alpha;\n constraint.mixY = data.mixY + (y - data.mixY) * alpha;\n constraint.mixScaleX = data.mixScaleX + (scaleX - data.mixScaleX) * alpha;\n constraint.mixScaleY = data.mixScaleY + (scaleY - data.mixScaleY) * alpha;\n constraint.mixShearY = data.mixShearY + (shearY - data.mixShearY) * alpha;\n }\n else {\n constraint.mixRotate += (rotate - constraint.mixRotate) * alpha;\n constraint.mixX += (x - constraint.mixX) * alpha;\n constraint.mixY += (y - constraint.mixY) * alpha;\n constraint.mixScaleX += (scaleX - constraint.mixScaleX) * alpha;\n constraint.mixScaleY += (scaleY - constraint.mixScaleY) * alpha;\n constraint.mixShearY += (shearY - constraint.mixShearY) * alpha;\n }\n }\n}\n/** Changes a path constraint's {@link PathConstraint#position}. */\nexport class PathConstraintPositionTimeline extends CurveTimeline1 {\n /** The index of the path constraint in {@link Skeleton#getPathConstraints()} that will be changed when this timeline is\n * applied. */\n constraintIndex = 0;\n constructor(frameCount, bezierCount, pathConstraintIndex) {\n super(frameCount, bezierCount, Property.pathConstraintPosition + \"|\" + pathConstraintIndex);\n this.constraintIndex = pathConstraintIndex;\n }\n apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n let constraint = skeleton.pathConstraints[this.constraintIndex];\n if (constraint.active)\n constraint.position = this.getAbsoluteValue(time, alpha, blend, constraint.position, constraint.data.position);\n }\n}\n/** Changes a path constraint's {@link PathConstraint#spacing}. */\nexport class PathConstraintSpacingTimeline extends CurveTimeline1 {\n /** The index of the path constraint in {@link Skeleton#getPathConstraints()} that will be changed when this timeline is\n * applied. */\n constraintIndex = 0;\n constructor(frameCount, bezierCount, pathConstraintIndex) {\n super(frameCount, bezierCount, Property.pathConstraintSpacing + \"|\" + pathConstraintIndex);\n this.constraintIndex = pathConstraintIndex;\n }\n apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n let constraint = skeleton.pathConstraints[this.constraintIndex];\n if (constraint.active)\n constraint.spacing = this.getAbsoluteValue(time, alpha, blend, constraint.spacing, constraint.data.spacing);\n }\n}\n/** Changes a transform constraint's {@link PathConstraint#getMixRotate()}, {@link PathConstraint#getMixX()}, and\n * {@link PathConstraint#getMixY()}. */\nexport class PathConstraintMixTimeline extends CurveTimeline {\n /** The index of the path constraint in {@link Skeleton#getPathConstraints()} that will be changed when this timeline is\n * applied. */\n constraintIndex = 0;\n constructor(frameCount, bezierCount, pathConstraintIndex) {\n super(frameCount, bezierCount, [\n Property.pathConstraintMix + \"|\" + pathConstraintIndex\n ]);\n this.constraintIndex = pathConstraintIndex;\n }\n getFrameEntries() {\n return 4 /*ENTRIES*/;\n }\n setFrame(frame, time, mixRotate, mixX, mixY) {\n let frames = this.frames;\n frame <<= 2;\n frames[frame] = time;\n frames[frame + 1 /*ROTATE*/] = mixRotate;\n frames[frame + 2 /*X*/] = mixX;\n frames[frame + 3 /*Y*/] = mixY;\n }\n apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n let constraint = skeleton.pathConstraints[this.constraintIndex];\n if (!constraint.active)\n return;\n let frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.mixRotate = constraint.data.mixRotate;\n constraint.mixX = constraint.data.mixX;\n constraint.mixY = constraint.data.mixY;\n return;\n case MixBlend.first:\n constraint.mixRotate += (constraint.data.mixRotate - constraint.mixRotate) * alpha;\n constraint.mixX += (constraint.data.mixX - constraint.mixX) * alpha;\n constraint.mixY += (constraint.data.mixY - constraint.mixY) * alpha;\n }\n return;\n }\n let rotate, x, y;\n let i = Timeline.search(frames, time, 4 /*ENTRIES*/);\n let curveType = this.curves[i >> 2];\n switch (curveType) {\n case 0 /*LINEAR*/:\n let before = frames[i];\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n let t = (time - before) / (frames[i + 4 /*ENTRIES*/] - before);\n rotate += (frames[i + 4 /*ENTRIES*/ + 1 /*ROTATE*/] - rotate) * t;\n x += (frames[i + 4 /*ENTRIES*/ + 2 /*X*/] - x) * t;\n y += (frames[i + 4 /*ENTRIES*/ + 3 /*Y*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n break;\n default:\n rotate = this.getBezierValue(time, i, 1 /*ROTATE*/, curveType - 2 /*BEZIER*/);\n x = this.getBezierValue(time, i, 2 /*X*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 3 /*Y*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n }\n if (blend == MixBlend.setup) {\n let data = constraint.data;\n constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha;\n constraint.mixX = data.mixX + (x - data.mixX) * alpha;\n constraint.mixY = data.mixY + (y - data.mixY) * alpha;\n }\n else {\n constraint.mixRotate += (rotate - constraint.mixRotate) * alpha;\n constraint.mixX += (x - constraint.mixX) * alpha;\n constraint.mixY += (y - constraint.mixY) * alpha;\n }\n }\n}\n/** The base class for most {@link PhysicsConstraint} timelines. */\nexport class PhysicsConstraintTimeline extends CurveTimeline1 {\n /** The index of the physics constraint in {@link Skeleton#getPhysicsConstraints()} that will be changed when this timeline\n * is applied, or -1 if all physics constraints in the skeleton will be changed. */\n constraintIndex = 0;\n /** @param physicsConstraintIndex -1 for all physics constraints in the skeleton. */\n constructor(frameCount, bezierCount, physicsConstraintIndex, property) {\n super(frameCount, bezierCount, property + \"|\" + physicsConstraintIndex);\n this.constraintIndex = physicsConstraintIndex;\n }\n apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n let constraint;\n if (this.constraintIndex == -1) {\n const value = time >= this.frames[0] ? this.getCurveValue(time) : 0;\n for (const constraint of skeleton.physicsConstraints) {\n if (constraint.active && this.global(constraint.data))\n this.set(constraint, this.getAbsoluteValue2(time, alpha, blend, this.get(constraint), this.setup(constraint), value));\n }\n }\n else {\n constraint = skeleton.physicsConstraints[this.constraintIndex];\n if (constraint.active)\n this.set(constraint, this.getAbsoluteValue(time, alpha, blend, this.get(constraint), this.setup(constraint)));\n }\n }\n}\n/** Changes a physics constraint's {@link PhysicsConstraint#getInertia()}. */\nexport class PhysicsConstraintInertiaTimeline extends PhysicsConstraintTimeline {\n constructor(frameCount, bezierCount, physicsConstraintIndex) {\n super(frameCount, bezierCount, physicsConstraintIndex, Property.physicsConstraintInertia);\n }\n setup(constraint) {\n return constraint.data.inertia;\n }\n get(constraint) {\n return constraint.inertia;\n }\n set(constraint, value) {\n constraint.inertia = value;\n }\n global(constraint) {\n return constraint.inertiaGlobal;\n }\n}\n/** Changes a physics constraint's {@link PhysicsConstraint#getStrength()}. */\nexport class PhysicsConstraintStrengthTimeline extends PhysicsConstraintTimeline {\n constructor(frameCount, bezierCount, physicsConstraintIndex) {\n super(frameCount, bezierCount, physicsConstraintIndex, Property.physicsConstraintStrength);\n }\n setup(constraint) {\n return constraint.data.strength;\n }\n get(constraint) {\n return constraint.strength;\n }\n set(constraint, value) {\n constraint.strength = value;\n }\n global(constraint) {\n return constraint.strengthGlobal;\n }\n}\n/** Changes a physics constraint's {@link PhysicsConstraint#getDamping()}. */\nexport class PhysicsConstraintDampingTimeline extends PhysicsConstraintTimeline {\n constructor(frameCount, bezierCount, physicsConstraintIndex) {\n super(frameCount, bezierCount, physicsConstraintIndex, Property.physicsConstraintDamping);\n }\n setup(constraint) {\n return constraint.data.damping;\n }\n get(constraint) {\n return constraint.damping;\n }\n set(constraint, value) {\n constraint.damping = value;\n }\n global(constraint) {\n return constraint.dampingGlobal;\n }\n}\n/** Changes a physics constraint's {@link PhysicsConstraint#getMassInverse()}. The timeline values are not inverted. */\nexport class PhysicsConstraintMassTimeline extends PhysicsConstraintTimeline {\n constructor(frameCount, bezierCount, physicsConstraintIndex) {\n super(frameCount, bezierCount, physicsConstraintIndex, Property.physicsConstraintMass);\n }\n setup(constraint) {\n return 1 / constraint.data.massInverse;\n }\n get(constraint) {\n return 1 / constraint.massInverse;\n }\n set(constraint, value) {\n constraint.massInverse = 1 / value;\n }\n global(constraint) {\n return constraint.massGlobal;\n }\n}\n/** Changes a physics constraint's {@link PhysicsConstraint#getWind()}. */\nexport class PhysicsConstraintWindTimeline extends PhysicsConstraintTimeline {\n constructor(frameCount, bezierCount, physicsConstraintIndex) {\n super(frameCount, bezierCount, physicsConstraintIndex, Property.physicsConstraintWind);\n }\n setup(constraint) {\n return constraint.data.wind;\n }\n get(constraint) {\n return constraint.wind;\n }\n set(constraint, value) {\n constraint.wind = value;\n }\n global(constraint) {\n return constraint.windGlobal;\n }\n}\n/** Changes a physics constraint's {@link PhysicsConstraint#getGravity()}. */\nexport class PhysicsConstraintGravityTimeline extends PhysicsConstraintTimeline {\n constructor(frameCount, bezierCount, physicsConstraintIndex) {\n super(frameCount, bezierCount, physicsConstraintIndex, Property.physicsConstraintGravity);\n }\n setup(constraint) {\n return constraint.data.gravity;\n }\n get(constraint) {\n return constraint.gravity;\n }\n set(constraint, value) {\n constraint.gravity = value;\n }\n global(constraint) {\n return constraint.gravityGlobal;\n }\n}\n/** Changes a physics constraint's {@link PhysicsConstraint#getMix()}. */\nexport class PhysicsConstraintMixTimeline extends PhysicsConstraintTimeline {\n constructor(frameCount, bezierCount, physicsConstraintIndex) {\n super(frameCount, bezierCount, physicsConstraintIndex, Property.physicsConstraintMix);\n }\n setup(constraint) {\n return constraint.data.mix;\n }\n get(constraint) {\n return constraint.mix;\n }\n set(constraint, value) {\n constraint.mix = value;\n }\n global(constraint) {\n return constraint.mixGlobal;\n }\n}\n/** Resets a physics constraint when specific animation times are reached. */\nexport class PhysicsConstraintResetTimeline extends Timeline {\n static propertyIds = [Property.physicsConstraintReset.toString()];\n /** The index of the physics constraint in {@link Skeleton#getPhysicsConstraints()} that will be reset when this timeline is\n * applied, or -1 if all physics constraints in the skeleton will be reset. */\n constraintIndex;\n /** @param physicsConstraintIndex -1 for all physics constraints in the skeleton. */\n constructor(frameCount, physicsConstraintIndex) {\n super(frameCount, PhysicsConstraintResetTimeline.propertyIds);\n this.constraintIndex = physicsConstraintIndex;\n }\n getFrameCount() {\n return this.frames.length;\n }\n /** Sets the time for the specified frame.\n * @param frame Between 0 and <code>frameCount</code>, inclusive. */\n setFrame(frame, time) {\n this.frames[frame] = time;\n }\n /** Resets the physics constraint when frames > <code>lastTime</code> and <= <code>time</code>. */\n apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n let constraint;\n if (this.constraintIndex != -1) {\n constraint = skeleton.physicsConstraints[this.constraintIndex];\n if (!constraint.active)\n return;\n }\n const frames = this.frames;\n if (lastTime > time) { // Apply after lastTime for looped animations.\n this.apply(skeleton, lastTime, Number.MAX_VALUE, [], alpha, blend, direction);\n lastTime = -1;\n }\n else if (lastTime >= frames[frames.length - 1]) // Last time is after last frame.\n return;\n if (time < frames[0])\n return;\n if (lastTime < frames[0] || time >= frames[Timeline.search1(frames, lastTime) + 1]) {\n if (constraint != null)\n constraint.reset();\n else {\n for (const constraint of skeleton.physicsConstraints) {\n if (constraint.active)\n constraint.reset();\n }\n }\n }\n }\n}\n/** Changes a slot's {@link Slot#getSequenceIndex()} for an attachment's {@link Sequence}. */\nexport class SequenceTimeline extends Timeline {\n static ENTRIES = 3;\n static MODE = 1;\n static DELAY = 2;\n slotIndex;\n attachment;\n constructor(frameCount, slotIndex, attachment) {\n super(frameCount, [\n Property.sequence + \"|\" + slotIndex + \"|\" + attachment.sequence.id\n ]);\n this.slotIndex = slotIndex;\n this.attachment = attachment;\n }\n getFrameEntries() {\n return SequenceTimeline.ENTRIES;\n }\n getSlotIndex() {\n return this.slotIndex;\n }\n getAttachment() {\n return this.attachment;\n }\n /** Sets the time, mode, index, and frame time for the specified frame.\n * @param frame Between 0 and <code>frameCount</code>, inclusive.\n * @param time Seconds between frames. */\n setFrame(frame, time, mode, index, delay) {\n let frames = this.frames;\n frame *= SequenceTimeline.ENTRIES;\n frames[frame] = time;\n frames[frame + SequenceTimeline.MODE] = mode | (index << 4);\n frames[frame + SequenceTimeline.DELAY] = delay;\n }\n apply(skeleton, lastTime, time, events, alpha, blend, direction) {\n let slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n let slotAttachment = slot.attachment;\n let attachment = this.attachment;\n if (slotAttachment != attachment) {\n if (!(slotAttachment instanceof VertexAttachment)\n || slotAttachment.timelineAttachment != attachment)\n return;\n }\n let frames = this.frames;\n if (time < frames[0]) {\n if (blend == MixBlend.setup || blend == MixBlend.first)\n slot.sequenceIndex = -1;\n return;\n }\n let i = Timeline.search(frames, time, SequenceTimeline.ENTRIES);\n let before = frames[i];\n let modeAndIndex = frames[i + SequenceTimeline.MODE];\n let delay = frames[i + SequenceTimeline.DELAY];\n if (!this.attachment.sequence)\n return;\n let index = modeAndIndex >> 4, count = this.attachment.sequence.regions.length;\n let mode = SequenceModeValues[modeAndIndex & 0xf];\n if (mode != SequenceMode.hold) {\n index += (((time - before) / delay + 0.00001) | 0);\n switch (mode) {\n case SequenceMode.once:\n index = Math.min(count - 1, index);\n break;\n case SequenceMode.loop:\n index %= count;\n break;\n case SequenceMode.pingpong: {\n let n = (count << 1) - 2;\n index = n == 0 ? 0 : index % n;\n if (index >= count)\n index = n - index;\n break;\n }\n case SequenceMode.onceReverse:\n index = Math.max(count - 1 - index, 0);\n break;\n case SequenceMode.loopReverse:\n index = count - 1 - (index % count);\n break;\n case SequenceMode.pingpongReverse: {\n let n = (count << 1) - 2;\n index = n == 0 ? 0 : (index + count - 1) % n;\n if (index >= count)\n index = n - index;\n }\n }\n }\n slot.sequenceIndex = index;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5pbWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0FuaW1hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFjLE1BQU0sNkJBQTZCLENBQUM7QUFNM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFtQixNQUFNLFlBQVksQ0FBQztBQUcxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLN0UsNkRBQTZEO0FBQzdELE1BQU0sT0FBTyxTQUFTO0lBQ3JCLG1GQUFtRjtJQUNuRixJQUFJLENBQVM7SUFDYixTQUFTLEdBQW9CLEVBQUUsQ0FBQztJQUNoQyxXQUFXLEdBQWMsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUV6Qyx1R0FBdUc7SUFDdkcsUUFBUSxDQUFTO0lBRWpCLFlBQWEsSUFBWSxFQUFFLFNBQTBCLEVBQUUsUUFBZ0I7UUFDdEUsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWSxDQUFFLFNBQTBCO1FBQ3ZDLElBQUksQ0FBQyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMs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LEVBQUU7WUFDckIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDM0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQSxlQUFlLENBQUM7UUFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzQixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM5RDtTQUNEO1FBQ0QsVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENB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QUFFLENBQUEsZUFBZSxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDdEYsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsS0FBSyxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUEsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQzFGLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLEtBQUssRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFBLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUMxRixFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxNQUFNLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQSxlQUFlLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDNUYsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsTUFBTSxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUEsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQzVGLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLE1BQU0sRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFBLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO1NBQzdGO1FBRUQsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNa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Q0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUM1QyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUM1QyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUM1QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUN6QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUN6QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2FBQzFDO1lBQ0QsT0FBTztTQUNQO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUEsV0FBVyxDQUFDLENBQUM7UUFDcEQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLFFBQVEsU0FBUyxFQUFFO1lBQ2xCLEtBQUssQ0FBQyxDQUFBLFVBQVU7Z0JBQ2YsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixDQUFDLEdB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QUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDakMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFdBQVcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO2dCQUM5RCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxXQUFXLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsV0FBVyxHQUFHLENBQUMsQ0FBQSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFdBQVcsR0FBRyxDQUFDLENBQUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxXQUFXLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsV0FBVyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hFLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFdBQVcsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRSxNQUFNO1lBQ1AsS0FBSyxDQUFDLENBQUEsV0FBVztnQkFDaEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUNqQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxLQUFLLENBQUMsQ0FBQztnQkFDdkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQ2pDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDakMsTUFBTTtZQUNQO2dCQUNDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLFVBQVUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUM1RSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxLQUFLLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQSxlQUFlLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUN0RixDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxLQUFLLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQSxlQUFlLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDMUYsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsVUFBVSxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUEsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQ3BHLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLFVBQVUsRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFBLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUNwRyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxVQUFVLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQSxlQUFlLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztTQUNyRztRQUVELElBQUksS0FBSyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDNUIsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztZQUMzQixVQUFVLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMxRSxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN0RCxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN0RCxVQUFVLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMxRSxVQUFVLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMxRSxV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VSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQzVFLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLEtBQUssRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFBLGVBQWUsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQ3RGLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLEtBQUssRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFBLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO1NBQzNGO1FBRUQsSUFBSSxLQUFLLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtZQUM1QixJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQzNCLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzFFLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RELFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ3REO2FBQU07WUFDTixVQUFVLENBQUMsU0FBUyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDaEUsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pELFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsVUFBVSxD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"],"names":["Animation","name","timelines","timelineIds","StringSet","duration","constructor","Error","this","setTimelines","clear","i","length","addAll","getPropertyIds","hasTimeline","ids","contains","apply","skeleton","lastTime","time","loop","events","alpha","blend","direction","n","MixBlend","MixDirection","Property","rotate","x","y","scaleX","scaleY","shearX","shearY","inherit","rgb","rgb2","attachment","deform","event","drawOrder","ikConstraint","transformConstraint","pathConstraintPosition","pathConstraintSpacing","pathConstraintMix","physicsConstraintInertia","physicsConstraintStrength","physicsConstraintDamping","physicsConstraintMass","physicsConstraintWind","physicsConstraintGravity","physicsConstraintMix","physicsConstraintReset","sequence","Timeline","propertyIds","frames","frameCount","Utils","newFloatArray","getFrameEntries","getFrameCount","getDuration","search1","search","step","CurveTimeline","curves","bezierCount","super","setLinear","frame","setStepped","shrink","size","newCurves","arrayCopy","setBezier","bezier","value","time1","value1","cx1","cy1","cx2","cy2","time2","value2","tmpx","tmpy","dddx","dddy","ddx","ddy","dx","dy","getBezierValue","frameIndex","valueOffset","CurveTimeline1","propertyId","setFrame","getCurveValue","ii","curveType","before","getRelativeValue","current","setup","first","replace","getAbsoluteValue","getAbsoluteValue2","getScaleValue","add","mixOut","Math","abs","MathUtils","signum","s","CurveTimeline2","propertyId1","propertyId2","RotateTimeline","boneIndex","bone","bones","active","rotation","data","TranslateTimeline","t","TranslateXTimeline","TranslateYTimeline","ScaleTimeline","bx","by","ScaleXTimeline","ScaleYTimeline","ShearTimeline","ShearXTimeline","ShearYTimeline","InheritTimeline","RGBATimeline","slotIndex","r","g","b","a","slot","slots","color","setFromColor","set","RGBTimeline","AlphaTimeline","RGBA2Timeline","r2","g2","b2","light","dark","darkColor","setupLight","setupDark","RGB2Timeline","AttachmentTimeline","attachmentNames","Array","attachmentName","setAttachment","getAttachment","DeformTimeline","vertices","id","getCurvePercent","firedEvents","slotAttachment","VertexAttachment","timelineAttachment","vertexCount","vertexAttachment","setupVertices","lastVertices","percent","prevVertices","nextVertices","prev","EventTimeline","static","Number","MAX_VALUE","frameTime","push","DrawOrderTimeline","drawOrders","idx","drawOrderToSetupIndex","IkConstraintTimeline","constraintIndex","ikConstraintIndex","mix","softness","bendDirection","compress","stretch","constraint","ikConstraints","mixIn","TransformConstraintTimeline","transformConstraintIndex","mixRotate","mixX","mixY","mixScaleX","mixScaleY","mixShearY","transformConstraints","PathConstraintPositionTimeline","pathConstraintIndex","pathConstraints","position","PathConstraintSpacingTimeline","spacing","PathConstraintMixTimeline","PhysicsConstraintTimeline","physicsConstraintIndex","property","physicsConstraints","global","get","PhysicsConstraintInertiaTimeline","inertia","inertiaGlobal","PhysicsConstraintStrengthTimeline","strength","strengthGlobal","PhysicsConstraintDampingTimeline","damping","dampingGlobal","PhysicsConstraintMassTimeline","massInverse","massGlobal","PhysicsConstraintWindTimeline","wind","windGlobal","PhysicsConstraintGravityTimeline","gravity","gravityGlobal","PhysicsConstraintMixTimeline","mixGlobal","PhysicsConstraintResetTimeline","toString","reset","SequenceTimeline","ENTRIES","getSlotIndex","mode","index","delay","MODE","DELAY","sequenceIndex","modeAndIndex","count","regions","SequenceModeValues","SequenceMode","hold","once","min","pingpong","onceReverse","max","loopReverse","pingpongReverse"],"mappings":"iNAgCO,MAAMA,EAETC,KACAC,UAAY,GACZC,YAAc,IAAIC,EAElBC,SACA,WAAAC,CAAYL,EAAMC,EAAWG,GACzB,IAAKJ,EACD,MAAM,IAAIM,MAAM,wBACpBC,KAAKP,KAAOA,EACZO,KAAKC,aAAaP,GAClBM,KAAKH,SAAWA,CACnB,CACD,YAAAI,CAAaP,GACT,IAAKA,EACD,MAAM,IAAIK,MAAM,6BACpBC,KAAKN,UAAYA,EACjBM,KAAKL,YAAYO,QACjB,IAAK,IAAIC,EAAI,EAAGA,EAAIT,EAAUU,OAAQD,IAClCH,KAAKL,YAAYU,OAAOX,EAAUS,GAAGG,iBAC5C,CACD,WAAAC,CAAYC,GACR,IAAK,IAAIL,EAAI,EAAGA,EAAIK,EAAIJ,OAAQD,IAC5B,GAAIH,KAAKL,YAAYc,SAASD,EAAIL,IAC9B,OAAO,EACf,OAAO,CACV,CAMD,KAAAO,CAAMC,EAAUC,EAAUC,EAAMC,EAAMC,EAAQC,EAAOC,EAAOC,GACxD,IAAKP,EACD,MAAM,IAAIZ,MAAM,4BAChBe,GAAyB,GAAjBd,KAAKH,WACbgB,GAAQb,KAAKH,SACTe,EAAW,IACXA,GAAYZ,KAAKH,WAEzB,IAAIH,EAAYM,KAAKN,UACrB,IAAK,IAAIS,EAAI,EAAGgB,EAAIzB,EAAUU,OAAQD,EAAIgB,EAAGhB,IACzCT,EAAUS,GAAGO,MAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,EAC1E,EAMK,IAACE,EA4BAC,GA3BX,SAAWD,GAGPA,EAASA,EAAgB,MAAI,GAAK,QAMlCA,EAASA,EAAgB,MAAI,GAAK,QAKlCA,EAASA,EAAkB,QAAI,GAAK,UAOpCA,EAASA,EAAc,IAAI,GAAK,KACnC,CAtBD,CAsBGA,IAAaA,EAAW,CAAE,IAM7B,SAAWC,GACPA,EAAaA,EAAoB,MAAI,GAAK,QAC1CA,EAAaA,EAAqB,OAAI,GAAK,QAC9C,CAHD,CAGGA,IAAiBA,EAAe,CAAE,IACrC,MAAMC,EAAW,CACbC,OAAQ,EACRC,EAAG,EACHC,EAAG,EACHC,OAAQ,EACRC,OAAQ,EACRC,OAAQ,EACRC,OAAQ,EACRC,QAAS,EACTC,IAAK,EACLf,MAAO,EACPgB,KAAM,GACNC,WAAY,GACZC,OAAQ,GACRC,MAAO,GACPC,UAAW,GACXC,aAAc,GACdC,oBAAqB,GACrBC,uBAAwB,GACxBC,sBAAuB,GACvBC,kBAAmB,GACnBC,yBAA0B,GAC1BC,0BAA2B,GAC3BC,yBAA0B,GAC1BC,sBAAuB,GACvBC,sBAAuB,GACvBC,yBAA0B,GAC1BC,qBAAsB,GACtBC,uBAAwB,GACxBC,SAAU,IAGP,MAAMC,EACTC,YACAC,OACA,WAAAvD,CAAYwD,EAAYF,GACpBpD,KAAKoD,YAAcA,EACnBpD,KAAKqD,OAASE,EAAMC,cAAcF,EAAatD,KAAKyD,kBACvD,CACD,cAAAnD,GACI,OAAON,KAAKoD,WACf,CACD,eAAAK,GACI,OAAO,CACV,CACD,aAAAC,GACI,OAAO1D,KAAKqD,OAAOjD,OAASJ,KAAKyD,iBACpC,CACD,WAAAE,GACI,OAAO3D,KAAKqD,OAAOrD,KAAKqD,OAAOjD,OAASJ,KAAKyD,kBAChD,CACD,cAAOG,CAAQP,EAAQxC,GACnB,IAAIM,EAAIkC,EAAOjD,OACf,IAAK,IAAID,EAAI,EAAGA,EAAIgB,EAAGhB,IACnB,GAAIkD,EAAOlD,GAAKU,EACZ,OAAOV,EAAI,EACnB,OAAOgB,EAAI,CACd,CACD,aAAO0C,CAAOR,EAAQxC,EAAMiD,GACxB,IAAI3C,EAAIkC,EAAOjD,OACf,IAAK,IAAID,EAAI2D,EAAM3D,EAAIgB,EAAGhB,GAAK2D,EAC3B,GAAIT,EAAOlD,GAAKU,EACZ,OAAOV,EAAI2D,EACnB,OAAO3C,EAAI2C,CACd,EAGE,MAAMC,UAAsBZ,EAC/Ba,OACA,WAAAlE,CAAYwD,EAAYW,EAAab,GACjCc,MAAMZ,EAAYF,GAClBpD,KAAKgE,OAAST,EAAMC,cAAcF,EAA2B,GAAdW,GAC/CjE,KAAKgE,OAAOV,EAAa,GAAK,CACjC,CAED,SAAAa,CAAUC,GACNpE,KAAKgE,OAAOI,GAAS,CACxB,CAED,UAAAC,CAAWD,GACPpE,KAAKgE,OAAOI,GAAS,CACxB,CAGD,MAAAE,CAAOL,GACH,IAAIM,EAAOvE,KAAK0D,gBAAgC,GAAdO,EAClC,GAAIjE,KAAKgE,OAAO5D,OAASmE,EAAM,CAC3B,IAAIC,EAAYjB,EAAMC,cAAce,GACpChB,EAAMkB,UAAUzE,KAAKgE,OAAQ,EAAGQ,EAAW,EAAGD,GAC9CvE,KAAKgE,OAASQ,CACjB,CACJ,CAeD,SAAAE,CAAUC,EAAQP,EAAOQ,EAAOC,EAAOC,EAAQC,EAAKC,EAAKC,EAAKC,EAAKC,EAAOC,GACtE,IAAIpB,EAAShE,KAAKgE,OACd7D,EAAIH,KAAK0D,gBAA2B,GAATiB,EAClB,GAATC,IACAZ,EAAOI,GAAS,EAAejE,GACnC,IAAIkF,EAAiC,KAAzBR,EAAc,EAANE,EAAUE,GAAaK,EAAkC,KAA1BR,EAAe,EAANE,EAAUE,GAClEK,EAA2C,MAArB,GAAbR,EAAME,GAAWJ,EAAQM,GAAgBK,EAA6C,MAAvB,GAAbR,EAAME,GAAWJ,EAASM,GACrFK,EAAa,EAAPJ,EAAWE,EAAMG,EAAa,EAAPJ,EAAWE,EACxCG,EAAqB,IAAfZ,EAAMF,GAAeQ,EAAc,UAAPE,EAAmBK,EAAsB,IAAhBZ,EAAMF,GAAgBQ,EAAc,UAAPE,EACxFhE,EAAIqD,EAAQc,EAAIlE,EAAIqD,EAASc,EACjC,IAAK,IAAIzE,EAAIhB,EAAI,GAAoBA,EAAIgB,EAAGhB,GAAK,EAC7C6D,EAAO7D,GAAKqB,EACZwC,EAAO7D,EAAI,GAAKsB,EAChBkE,GAAMF,EACNG,GAAMF,EACND,GAAOF,EACPG,GAAOF,EACPhE,GAAKmE,EACLlE,GAAKmE,CAEZ,CAKD,cAAAC,CAAehF,EAAMiF,EAAYC,EAAa5F,GAC1C,IAAI6D,EAAShE,KAAKgE,OAClB,GAAIA,EAAO7D,GAAKU,EAAM,CAClB,IAAIW,EAAIxB,KAAKqD,OAAOyC,GAAarE,EAAIzB,KAAKqD,OAAOyC,EAAaC,GAC9D,OAAOtE,GAAKZ,EAAOW,IAAMwC,EAAO7D,GAAKqB,IAAMwC,EAAO7D,EAAI,GAAKsB,EAC9D,CACD,IAAIN,EAAIhB,EAAI,GACZ,IAAKA,GAAK,EAAGA,EAAIgB,EAAGhB,GAAK,EACrB,GAAI6D,EAAO7D,IAAMU,EAAM,CACnB,IAAIW,EAAIwC,EAAO7D,EAAI,GAAIsB,EAAIuC,EAAO7D,EAAI,GACtC,OAAOsB,GAAKZ,EAAOW,IAAMwC,EAAO7D,GAAKqB,IAAMwC,EAAO7D,EAAI,GAAKsB,EAC9D,CAELqE,GAAc9F,KAAKyD,kBACnB,IAAIjC,EAAIwC,EAAO7C,EAAI,GAAIM,EAAIuC,EAAO7C,EAAI,GACtC,OAAOM,GAAKZ,EAAOW,IAAMxB,KAAKqD,OAAOyC,GAActE,IAAMxB,KAAKqD,OAAOyC,EAAaC,GAAetE,EACpG,EAEE,MAAMuE,UAAuBjC,EAChC,WAAAjE,CAAYwD,EAAYW,EAAagC,GACjC/B,MAAMZ,EAAYW,EAAa,CAACgC,GACnC,CACD,eAAAxC,GACI,OAAO,CACV,CAID,QAAAyC,CAAS9B,EAAOvD,EAAM+D,GAClBR,IAAU,EACVpE,KAAKqD,OAAOe,GAASvD,EACrBb,KAAKqD,OAAOe,EAAQ,GAAeQ,CACtC,CAED,aAAAuB,CAActF,GACV,IAAIwC,EAASrD,KAAKqD,OACdlD,EAAIkD,EAAOjD,OAAS,EACxB,IAAK,IAAIgG,EAAK,EAAGA,GAAMjG,EAAGiG,GAAM,EAC5B,GAAI/C,EAAO+C,GAAMvF,EAAM,CACnBV,EAAIiG,EAAK,EACT,KACH,CAEL,IAAIC,EAAYrG,KAAKgE,OAAO7D,GAAK,GACjC,OAAQkG,GACJ,KAAK,EACD,IAAIC,EAASjD,EAAOlD,GAAIyE,EAAQvB,EAAOlD,EAAI,GAC3C,OAAOyE,GAAS/D,EAAOyF,IAAWjD,EAAOlD,EAAI,GAAiBmG,IAAWjD,EAAOlD,EAAI,EAAgB,GAAeyE,GACvH,KAAK,EACD,OAAOvB,EAAOlD,EAAI,GAE1B,OAAOH,KAAK6F,eAAehF,EAAMV,EAAG,EAAakG,EAAY,EAChE,CACD,gBAAAE,CAAiB1F,EAAMG,EAAOC,EAAOuF,EAASC,GAC1C,GAAI5F,EAAOb,KAAKqD,OAAO,GAAI,CACvB,OAAQpC,GACJ,KAAKG,EAASqF,MACV,OAAOA,EACX,KAAKrF,EAASsF,MACV,OAAOF,GAAWC,EAAQD,GAAWxF,EAE7C,OAAOwF,CACV,CACD,IAAI5B,EAAQ5E,KAAKmG,cAActF,GAC/B,OAAQI,GACJ,KAAKG,EAASqF,MACV,OAAOA,EAAQ7B,EAAQ5D,EAC3B,KAAKI,EAASsF,MACd,KAAKtF,EAASuF,QACV/B,GAAS6B,EAAQD,EAEzB,OAAOA,EAAU5B,EAAQ5D,CAC5B,CACD,gBAAA4F,CAAiB/F,EAAMG,EAAOC,EAAOuF,EAASC,GAC1C,GAAI5F,EAAOb,KAAKqD,OAAO,GAAI,CACvB,OAAQpC,GACJ,KAAKG,EAASqF,MACV,OAAOA,EACX,KAAKrF,EAASsF,MACV,OAAOF,GAAWC,EAAQD,GAAWxF,EAE7C,OAAOwF,CACV,CACD,IAAI5B,EAAQ5E,KAAKmG,cAActF,GAC/B,OAAII,GAASG,EAASqF,MACXA,GAAS7B,EAAQ6B,GAASzF,EAC9BwF,GAAW5B,EAAQ4B,GAAWxF,CACxC,CACD,iBAAA6F,CAAkBhG,EAAMG,EAAOC,EAAOuF,EAASC,EAAO7B,GAClD,GAAI/D,EAAOb,KAAKqD,OAAO,GAAI,CACvB,OAAQpC,GACJ,KAAKG,EAASqF,MACV,OAAOA,EACX,KAAKrF,EAASsF,MACV,OAAOF,GAAWC,EAAQD,GAAWxF,EAE7C,OAAOwF,CACV,CACD,OAAIvF,GAASG,EAASqF,MACXA,GAAS7B,EAAQ6B,GAASzF,EAC9BwF,GAAW5B,EAAQ4B,GAAWxF,CACxC,CACD,aAAA8F,CAAcjG,EAAMG,EAAOC,EAAOC,EAAWsF,EAASC,GAElD,GAAI5F,EADWb,KAAKqD,OACF,GAAI,CAClB,OAAQpC,GACJ,KAAKG,EAASqF,MACV,OAAOA,EACX,KAAKrF,EAASsF,MACV,OAAOF,GAAWC,EAAQD,GAAWxF,EAE7C,OAAOwF,CACV,CACD,IAAI5B,EAAQ5E,KAAKmG,cAActF,GAAQ4F,EACvC,GAAa,GAATzF,EACA,OAAIC,GAASG,EAAS2F,IACXP,EAAU5B,EAAQ6B,EACtB7B,EAGX,GAAI1D,GAAaG,EAAa2F,OAC1B,OAAQ/F,GACJ,KAAKG,EAASqF,MACV,OAAOA,GAASQ,KAAKC,IAAItC,GAASuC,EAAUC,OAAOX,GAASA,GAASzF,EACzE,KAAKI,EAASsF,MACd,KAAKtF,EAASuF,QACV,OAAOH,GAAWS,KAAKC,IAAItC,GAASuC,EAAUC,OAAOZ,GAAWA,GAAWxF,MAGlF,CACD,IAAIqG,EAAI,EACR,OAAQpG,GACJ,KAAKG,EAASqF,MAEV,OADAY,EAAIJ,KAAKC,IAAIT,GAASU,EAAUC,OAAOxC,GAChCyC,GAAKzC,EAAQyC,GAAKrG,EAC7B,KAAKI,EAASsF,MACd,KAAKtF,EAASuF,QAEV,OADAU,EAAIJ,KAAKC,IAAIV,GAAWW,EAAUC,OAAOxC,GAClCyC,GAAKzC,EAAQyC,GAAKrG,EAEpC,CACD,OAAOwF,GAAW5B,EAAQ6B,GAASzF,CACtC,EAGE,MAAMsG,UAAuBvD,EAGhC,WAAAjE,CAAYwD,EAAYW,EAAasD,EAAaC,GAC9CtD,MAAMZ,EAAYW,EAAa,CAACsD,EAAaC,GAChD,CACD,eAAA/D,GACI,OAAO,CACV,CAID,QAAAyC,CAAS9B,EAAOvD,EAAMiE,EAAQM,GAC1BhB,GAAS,EACTpE,KAAKqD,OAAOe,GAASvD,EACrBb,KAAKqD,OAAOe,EAAQ,GAAgBU,EACpC9E,KAAKqD,OAAOe,EAAQ,GAAgBgB,CACvC,EAGE,MAAMqC,UAAuBzB,EAChC0B,UAAY,EACZ,WAAA5H,CAAYwD,EAAYW,EAAayD,GACjCxD,MAAMZ,EAAYW,EAAa3C,EAASC,OAAS,IAAMmG,GACvD1H,KAAK0H,UAAYA,CACpB,CACD,KAAAhH,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIyG,EAAOhH,EAASiH,MAAM5H,KAAK0H,WAC3BC,EAAKE,SACLF,EAAKG,SAAW9H,KAAKuG,iBAAiB1F,EAAMG,EAAOC,EAAO0G,EAAKG,SAAUH,EAAKI,KAAKD,UAC1F,EAGE,MAAME,UAA0BV,EACnCI,UAAY,EACZ,WAAA5H,CAAYwD,EAAYW,EAAayD,GACjCxD,MAAMZ,EAAYW,EAAa3C,EAASE,EAAI,IAAMkG,EAAWpG,EAASG,EAAI,IAAMiG,GAChF1H,KAAK0H,UAAYA,CACpB,CACD,KAAAhH,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIyG,EAAOhH,EAASiH,MAAM5H,KAAK0H,WAC/B,IAAKC,EAAKE,OACN,OACJ,IAAIxE,EAASrD,KAAKqD,OAClB,GAAIxC,EAAOwC,EAAO,GAAI,CAClB,OAAQpC,GACJ,KAAKG,EAASqF,MAGV,OAFAkB,EAAKnG,EAAImG,EAAKI,KAAKvG,OACnBmG,EAAKlG,EAAIkG,EAAKI,KAAKtG,GAEvB,KAAKL,EAASsF,MACViB,EAAKnG,IAAMmG,EAAKI,KAAKvG,EAAImG,EAAKnG,GAAKR,EACnC2G,EAAKlG,IAAMkG,EAAKI,KAAKtG,EAAIkG,EAAKlG,GAAKT,EAE3C,MACH,CACD,IAAIQ,EAAI,EAAGC,EAAI,EACXtB,EAAIgD,EAASU,OAAOR,EAAQxC,EAAM,GAClCwF,EAAYrG,KAAKgE,OAAO7D,EAAI,GAChC,OAAQkG,GACJ,KAAK,EACD,IAAIC,EAASjD,EAAOlD,GACpBqB,EAAI6B,EAAOlD,EAAI,GACfsB,EAAI4B,EAAOlD,EAAI,GACf,IAAI8H,GAAKpH,EAAOyF,IAAWjD,EAAOlD,EAAI,GAAiBmG,GACvD9E,IAAM6B,EAAOlD,EAAI,EAAgB,GAAgBqB,GAAKyG,EACtDxG,IAAM4B,EAAOlD,EAAI,EAAgB,GAAgBsB,GAAKwG,EACtD,MACJ,KAAK,EACDzG,EAAI6B,EAAOlD,EAAI,GACfsB,EAAI4B,EAAOlD,EAAI,GACf,MACJ,QACIqB,EAAIxB,KAAK6F,eAAehF,EAAMV,EAAG,EAAckG,EAAY,GAC3D5E,EAAIzB,KAAK6F,eAAehF,EAAMV,EAAG,EAAckG,EAAY,GAAqB,GAExF,OAAQpF,GACJ,KAAKG,EAASqF,MACVkB,EAAKnG,EAAImG,EAAKI,KAAKvG,EAAIA,EAAIR,EAC3B2G,EAAKlG,EAAIkG,EAAKI,KAAKtG,EAAIA,EAAIT,EAC3B,MACJ,KAAKI,EAASsF,MACd,KAAKtF,EAASuF,QACVgB,EAAKnG,IAAMmG,EAAKI,KAAKvG,EAAIA,EAAImG,EAAKnG,GAAKR,EACvC2G,EAAKlG,IAAMkG,EAAKI,KAAKtG,EAAIA,EAAIkG,EAAKlG,GAAKT,EACvC,MACJ,KAAKI,EAAS2F,IACVY,EAAKnG,GAAKA,EAAIR,EACd2G,EAAKlG,GAAKA,EAAIT,EAEzB,EAGE,MAAMkH,UAA2BlC,EACpC0B,UAAY,EACZ,WAAA5H,CAAYwD,EAAYW,EAAayD,GACjCxD,MAAMZ,EAAYW,EAAa3C,EAASE,EAAI,IAAMkG,GAClD1H,KAAK0H,UAAYA,CACpB,CACD,KAAAhH,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIyG,EAAOhH,EAASiH,MAAM5H,KAAK0H,WAC3BC,EAAKE,SACLF,EAAKnG,EAAIxB,KAAKuG,iBAAiB1F,EAAMG,EAAOC,EAAO0G,EAAKnG,EAAGmG,EAAKI,KAAKvG,GAC5E,EAGE,MAAM2G,UAA2BnC,EACpC0B,UAAY,EACZ,WAAA5H,CAAYwD,EAAYW,EAAayD,GACjCxD,MAAMZ,EAAYW,EAAa3C,EAASG,EAAI,IAAMiG,GAClD1H,KAAK0H,UAAYA,CACpB,CACD,KAAAhH,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIyG,EAAOhH,EAASiH,MAAM5H,KAAK0H,WAC3BC,EAAKE,SACLF,EAAKlG,EAAIzB,KAAKuG,iBAAiB1F,EAAMG,EAAOC,EAAO0G,EAAKlG,EAAGkG,EAAKI,KAAKtG,GAC5E,EAGE,MAAM2G,UAAsBd,EAC/BI,UAAY,EACZ,WAAA5H,CAAYwD,EAAYW,EAAayD,GACjCxD,MAAMZ,EAAYW,EAAa3C,EAASI,OAAS,IAAMgG,EAAWpG,EAASK,OAAS,IAAM+F,GAC1F1H,KAAK0H,UAAYA,CACpB,CACD,KAAAhH,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIyG,EAAOhH,EAASiH,MAAM5H,KAAK0H,WAC/B,IAAKC,EAAKE,OACN,OACJ,IAaIrG,EAAGC,EAbH4B,EAASrD,KAAKqD,OAClB,GAAIxC,EAAOwC,EAAO,GAAI,CAClB,OAAQpC,GACJ,KAAKG,EAASqF,MAGV,OAFAkB,EAAKjG,OAASiG,EAAKI,KAAKrG,YACxBiG,EAAKhG,OAASgG,EAAKI,KAAKpG,QAE5B,KAAKP,EAASsF,MACViB,EAAKjG,SAAWiG,EAAKI,KAAKrG,OAASiG,EAAKjG,QAAUV,EAClD2G,EAAKhG,SAAWgG,EAAKI,KAAKpG,OAASgG,EAAKhG,QAAUX,EAE1D,MACH,CAED,IAAIb,EAAIgD,EAASU,OAAOR,EAAQxC,EAAM,GAClCwF,EAAYrG,KAAKgE,OAAO7D,EAAI,GAChC,OAAQkG,GACJ,KAAK,EACD,IAAIC,EAASjD,EAAOlD,GACpBqB,EAAI6B,EAAOlD,EAAI,GACfsB,EAAI4B,EAAOlD,EAAI,GACf,IAAI8H,GAAKpH,EAAOyF,IAAWjD,EAAOlD,EAAI,GAAiBmG,GACvD9E,IAAM6B,EAAOlD,EAAI,EAAgB,GAAgBqB,GAAKyG,EACtDxG,IAAM4B,EAAOlD,EAAI,EAAgB,GAAgBsB,GAAKwG,EACtD,MACJ,KAAK,EACDzG,EAAI6B,EAAOlD,EAAI,GACfsB,EAAI4B,EAAOlD,EAAI,GACf,MACJ,QACIqB,EAAIxB,KAAK6F,eAAehF,EAAMV,EAAG,EAAckG,EAAY,GAC3D5E,EAAIzB,KAAK6F,eAAehF,EAAMV,EAAG,EAAckG,EAAY,GAAqB,GAIxF,GAFA7E,GAAKmG,EAAKI,KAAKrG,OACfD,GAAKkG,EAAKI,KAAKpG,OACF,GAATX,EACIC,GAASG,EAAS2F,KAClBY,EAAKjG,QAAUF,EAAImG,EAAKI,KAAKrG,OAC7BiG,EAAKhG,QAAUF,EAAIkG,EAAKI,KAAKpG,SAG7BgG,EAAKjG,OAASF,EACdmG,EAAKhG,OAASF,OAGjB,CACD,IAAI4G,EAAK,EAAGC,EAAK,EACjB,GAAIpH,GAAaG,EAAa2F,OAC1B,OAAQ/F,GACJ,KAAKG,EAASqF,MACV4B,EAAKV,EAAKI,KAAKrG,OACf4G,EAAKX,EAAKI,KAAKpG,OACfgG,EAAKjG,OAAS2G,GAAMpB,KAAKC,IAAI1F,GAAK2F,EAAUC,OAAOiB,GAAMA,GAAMrH,EAC/D2G,EAAKhG,OAAS2G,GAAMrB,KAAKC,IAAIzF,GAAK0F,EAAUC,OAAOkB,GAAMA,GAAMtH,EAC/D,MACJ,KAAKI,EAASsF,MACd,KAAKtF,EAASuF,QACV0B,EAAKV,EAAKjG,OACV4G,EAAKX,EAAKhG,OACVgG,EAAKjG,OAAS2G,GAAMpB,KAAKC,IAAI1F,GAAK2F,EAAUC,OAAOiB,GAAMA,GAAMrH,EAC/D2G,EAAKhG,OAAS2G,GAAMrB,KAAKC,IAAIzF,GAAK0F,EAAUC,OAAOkB,GAAMA,GAAMtH,EAC/D,MACJ,KAAKI,EAAS2F,IACVY,EAAKjG,SAAWF,EAAImG,EAAKI,KAAKrG,QAAUV,EACxC2G,EAAKhG,SAAWF,EAAIkG,EAAKI,KAAKpG,QAAUX,OAIhD,OAAQC,GACJ,KAAKG,EAASqF,MACV4B,EAAKpB,KAAKC,IAAIS,EAAKI,KAAKrG,QAAUyF,EAAUC,OAAO5F,GACnD8G,EAAKrB,KAAKC,IAAIS,EAAKI,KAAKpG,QAAUwF,EAAUC,OAAO3F,GACnDkG,EAAKjG,OAAS2G,GAAM7G,EAAI6G,GAAMrH,EAC9B2G,EAAKhG,OAAS2G,GAAM7G,EAAI6G,GAAMtH,EAC9B,MACJ,KAAKI,EAASsF,MACd,KAAKtF,EAASuF,QACV0B,EAAKpB,KAAKC,IAAIS,EAAKjG,QAAUyF,EAAUC,OAAO5F,GAC9C8G,EAAKrB,KAAKC,IAAIS,EAAKhG,QAAUwF,EAAUC,OAAO3F,GAC9CkG,EAAKjG,OAAS2G,GAAM7G,EAAI6G,GAAMrH,EAC9B2G,EAAKhG,OAAS2G,GAAM7G,EAAI6G,GAAMtH,EAC9B,MACJ,KAAKI,EAAS2F,IACVY,EAAKjG,SAAWF,EAAImG,EAAKI,KAAKrG,QAAUV,EACxC2G,EAAKhG,SAAWF,EAAIkG,EAAKI,KAAKpG,QAAUX,EAGvD,CACJ,EAGE,MAAMuH,UAAuBvC,EAChC0B,UAAY,EACZ,WAAA5H,CAAYwD,EAAYW,EAAayD,GACjCxD,MAAMZ,EAAYW,EAAa3C,EAASI,OAAS,IAAMgG,GACvD1H,KAAK0H,UAAYA,CACpB,CACD,KAAAhH,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIyG,EAAOhH,EAASiH,MAAM5H,KAAK0H,WAC3BC,EAAKE,SACLF,EAAKjG,OAAS1B,KAAK8G,cAAcjG,EAAMG,EAAOC,EAAOC,EAAWyG,EAAKjG,OAAQiG,EAAKI,KAAKrG,QAC9F,EAGE,MAAM8G,UAAuBxC,EAChC0B,UAAY,EACZ,WAAA5H,CAAYwD,EAAYW,EAAayD,GACjCxD,MAAMZ,EAAYW,EAAa3C,EAASK,OAAS,IAAM+F,GACvD1H,KAAK0H,UAAYA,CACpB,CACD,KAAAhH,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIyG,EAAOhH,EAASiH,MAAM5H,KAAK0H,WAC3BC,EAAKE,SACLF,EAAKhG,OAAS3B,KAAK8G,cAAcjG,EAAMG,EAAOC,EAAOC,EAAWyG,EAAKhG,OAAQgG,EAAKI,KAAKpG,QAC9F,EAGE,MAAM8G,UAAsBnB,EAC/BI,UAAY,EACZ,WAAA5H,CAAYwD,EAAYW,EAAayD,GACjCxD,MAAMZ,EAAYW,EAAa3C,EAASM,OAAS,IAAM8F,EAAWpG,EAASO,OAAS,IAAM6F,GAC1F1H,KAAK0H,UAAYA,CACpB,CACD,KAAAhH,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIyG,EAAOhH,EAASiH,MAAM5H,KAAK0H,WAC/B,IAAKC,EAAKE,OACN,OACJ,IAAIxE,EAASrD,KAAKqD,OAClB,GAAIxC,EAAOwC,EAAO,GAAI,CAClB,OAAQpC,GACJ,KAAKG,EAASqF,MAGV,OAFAkB,EAAK/F,OAAS+F,EAAKI,KAAKnG,YACxB+F,EAAK9F,OAAS8F,EAAKI,KAAKlG,QAE5B,KAAKT,EAASsF,MACViB,EAAK/F,SAAW+F,EAAKI,KAAKnG,OAAS+F,EAAK/F,QAAUZ,EAClD2G,EAAK9F,SAAW8F,EAAKI,KAAKlG,OAAS8F,EAAK9F,QAAUb,EAE1D,MACH,CACD,IAAIQ,EAAI,EAAGC,EAAI,EACXtB,EAAIgD,EAASU,OAAOR,EAAQxC,EAAM,GAClCwF,EAAYrG,KAAKgE,OAAO7D,EAAI,GAChC,OAAQkG,GACJ,KAAK,EACD,IAAIC,EAASjD,EAAOlD,GACpBqB,EAAI6B,EAAOlD,EAAI,GACfsB,EAAI4B,EAAOlD,EAAI,GACf,IAAI8H,GAAKpH,EAAOyF,IAAWjD,EAAOlD,EAAI,GAAiBmG,GACvD9E,IAAM6B,EAAOlD,EAAI,EAAgB,GAAgBqB,GAAKyG,EACtDxG,IAAM4B,EAAOlD,EAAI,EAAgB,GAAgBsB,GAAKwG,EACtD,MACJ,KAAK,EACDzG,EAAI6B,EAAOlD,EAAI,GACfsB,EAAI4B,EAAOlD,EAAI,GACf,MACJ,QACIqB,EAAIxB,KAAK6F,eAAehF,EAAMV,EAAG,EAAckG,EAAY,GAC3D5E,EAAIzB,KAAK6F,eAAehF,EAAMV,EAAG,EAAckG,EAAY,GAAqB,GAExF,OAAQpF,GACJ,KAAKG,EAASqF,MACVkB,EAAK/F,OAAS+F,EAAKI,KAAKnG,OAASJ,EAAIR,EACrC2G,EAAK9F,OAAS8F,EAAKI,KAAKlG,OAASJ,EAAIT,EACrC,MACJ,KAAKI,EAASsF,MACd,KAAKtF,EAASuF,QACVgB,EAAK/F,SAAW+F,EAAKI,KAAKnG,OAASJ,EAAImG,EAAK/F,QAAUZ,EACtD2G,EAAK9F,SAAW8F,EAAKI,KAAKlG,OAASJ,EAAIkG,EAAK9F,QAAUb,EACtD,MACJ,KAAKI,EAAS2F,IACVY,EAAK/F,QAAUJ,EAAIR,EACnB2G,EAAK9F,QAAUJ,EAAIT,EAE9B,EAGE,MAAM0H,UAAuB1C,EAChC0B,UAAY,EACZ,WAAA5H,CAAYwD,EAAYW,EAAayD,GACjCxD,MAAMZ,EAAYW,EAAa3C,EAASM,OAAS,IAAM8F,GACvD1H,KAAK0H,UAAYA,CACpB,CACD,KAAAhH,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIyG,EAAOhH,EAASiH,MAAM5H,KAAK0H,WAC3BC,EAAKE,SACLF,EAAK/F,OAAS5B,KAAKuG,iBAAiB1F,EAAMG,EAAOC,EAAO0G,EAAK/F,OAAQ+F,EAAKI,KAAKnG,QACtF,EAGE,MAAM+G,UAAuB3C,EAChC0B,UAAY,EACZ,WAAA5H,CAAYwD,EAAYW,EAAayD,GACjCxD,MAAMZ,EAAYW,EAAa3C,EAASO,OAAS,IAAM6F,GACvD1H,KAAK0H,UAAYA,CACpB,CACD,KAAAhH,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIyG,EAAOhH,EAASiH,MAAM5H,KAAK0H,WAC3BC,EAAKE,SACLF,EAAK9F,OAAS7B,KAAKuG,iBAAiB1F,EAAMG,EAAOC,EAAO0G,EAAK9F,OAAQ8F,EAAKI,KAAKlG,QACtF,EAEE,MAAM+G,UAAwBzF,EACjCuE,UAAY,EACZ,WAAA5H,CAAYwD,EAAYoE,GACpBxD,MAAMZ,EAAY,CAAChC,EAASQ,QAAU,IAAM4F,IAC5C1H,KAAK0H,UAAYA,CACpB,CACD,eAAAjE,GACI,OAAO,CACV,CAID,QAAAyC,CAAS9B,EAAOvD,EAAMiB,GAClBsC,GAAS,EACTpE,KAAKqD,OAAOe,GAASvD,EACrBb,KAAKqD,OAAOe,EAAQ,GAAiBtC,CACxC,CACD,KAAApB,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIyG,EAAOhH,EAASiH,MAAM5H,KAAK0H,WAC/B,IAAKC,EAAKE,OACN,OACJ,IAAIxE,EAASrD,KAAKqD,OACdxC,EAAOwC,EAAO,GACVpC,GAASG,EAASqF,OAASxF,GAASG,EAASsF,QAC7CiB,EAAK7F,QAAU6F,EAAKI,KAAKjG,SAGjC6F,EAAK7F,QAAU9B,KAAKqD,OAAOF,EAASU,OAAOR,EAAQxC,EAAM,GAAiB,EAC7E,EAGE,MAAMgI,UAAqB9E,EAC9B+E,UAAY,EACZ,WAAAhJ,CAAYwD,EAAYW,EAAa6E,GACjC5E,MAAMZ,EAAYW,EAAa,CAC3B3C,EAASS,IAAM,IAAM+G,EACrBxH,EAASN,MAAQ,IAAM8H,IAE3B9I,KAAK8I,UAAYA,CACpB,CACD,eAAArF,GACI,OAAO,CACV,CAED,QAAAyC,CAAS9B,EAAOvD,EAAMkI,EAAGC,EAAGC,EAAGC,GAC3B9E,GAAS,EACTpE,KAAKqD,OAAOe,GAASvD,EACrBb,KAAKqD,OAAOe,EAAQ,GAAW2E,EAC/B/I,KAAKqD,OAAOe,EAAQ,GAAW4E,EAC/BhJ,KAAKqD,OAAOe,EAAQ,GAAW6E,EAC/BjJ,KAAKqD,OAAOe,EAAQ,GAAW8E,CAClC,CACD,KAAAxI,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIiI,EAAOxI,EAASyI,MAAMpJ,KAAK8I,WAC/B,IAAKK,EAAKxB,KAAKE,OACX,OACJ,IAAIxE,EAASrD,KAAKqD,OACdgG,EAAQF,EAAKE,MACjB,GAAIxI,EAAOwC,EAAO,GAAI,CAClB,IAAIoD,EAAQ0C,EAAKpB,KAAKsB,MACtB,OAAQpI,GACJ,KAAKG,EAASqF,MAEV,YADA4C,EAAMC,aAAa7C,GAEvB,KAAKrF,EAASsF,MACV2C,EAAMtC,KAAKN,EAAMsC,EAAIM,EAAMN,GAAK/H,GAAQyF,EAAMuC,EAAIK,EAAML,GAAKhI,GAAQyF,EAAMwC,EAAII,EAAMJ,GAAKjI,GAAQyF,EAAMyC,EAAIG,EAAMH,GAAKlI,GAE/H,MACH,CACD,IAAI+H,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EACzB/I,EAAIgD,EAASU,OAAOR,EAAQxC,EAAM,GAClCwF,EAAYrG,KAAKgE,OAAO7D,EAAI,GAChC,OAAQkG,GACJ,KAAK,EACD,IAAIC,EAASjD,EAAOlD,GACpB4I,EAAI1F,EAAOlD,EAAI,GACf6I,EAAI3F,EAAOlD,EAAI,GACf8I,EAAI5F,EAAOlD,EAAI,GACf+I,EAAI7F,EAAOlD,EAAI,GACf,IAAI8H,GAAKpH,EAAOyF,IAAWjD,EAAOlD,EAAI,GAAiBmG,GACvDyC,IAAM1F,EAAOlD,EAAI,EAAgB,GAAW4I,GAAKd,EACjDe,IAAM3F,EAAOlD,EAAI,EAAgB,GAAW6I,GAAKf,EACjDgB,IAAM5F,EAAOlD,EAAI,EAAgB,GAAW8I,GAAKhB,EACjDiB,IAAM7F,EAAOlD,EAAI,EAAgB,GAAW+I,GAAKjB,EACjD,MACJ,KAAK,EACDc,EAAI1F,EAAOlD,EAAI,GACf6I,EAAI3F,EAAOlD,EAAI,GACf8I,EAAI5F,EAAOlD,EAAI,GACf+I,EAAI7F,EAAOlD,EAAI,GACf,MACJ,QACI4I,EAAI/I,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GACtD2C,EAAIhJ,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAqB,GAC3E4C,EAAIjJ,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAyB,GAC/E6C,EAAIlJ,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAyB,GAE1E,GAATrF,EACAqI,EAAME,IAAIR,EAAGC,EAAGC,EAAGC,IAEfjI,GAASG,EAASqF,OAClB4C,EAAMC,aAAaH,EAAKpB,KAAKsB,OACjCA,EAAMtC,KAAKgC,EAAIM,EAAMN,GAAK/H,GAAQgI,EAAIK,EAAML,GAAKhI,GAAQiI,EAAII,EAAMJ,GAAKjI,GAAQkI,EAAIG,EAAMH,GAAKlI,GAEtG,EAGE,MAAMwI,UAAoBzF,EAC7B+E,UAAY,EACZ,WAAAhJ,CAAYwD,EAAYW,EAAa6E,GACjC5E,MAAMZ,EAAYW,EAAa,CAC3B3C,EAASS,IAAM,IAAM+G,IAEzB9I,KAAK8I,UAAYA,CACpB,CACD,eAAArF,GACI,OAAO,CACV,CAED,QAAAyC,CAAS9B,EAAOvD,EAAMkI,EAAGC,EAAGC,GACxB7E,IAAU,EACVpE,KAAKqD,OAAOe,GAASvD,EACrBb,KAAKqD,OAAOe,EAAQ,GAAW2E,EAC/B/I,KAAKqD,OAAOe,EAAQ,GAAW4E,EAC/BhJ,KAAKqD,OAAOe,EAAQ,GAAW6E,CAClC,CACD,KAAAvI,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIiI,EAAOxI,EAASyI,MAAMpJ,KAAK8I,WAC/B,IAAKK,EAAKxB,KAAKE,OACX,OACJ,IAAIxE,EAASrD,KAAKqD,OACdgG,EAAQF,EAAKE,MACjB,GAAIxI,EAAOwC,EAAO,GAAI,CAClB,IAAIoD,EAAQ0C,EAAKpB,KAAKsB,MACtB,OAAQpI,GACJ,KAAKG,EAASqF,MAIV,OAHA4C,EAAMN,EAAItC,EAAMsC,EAChBM,EAAML,EAAIvC,EAAMuC,OAChBK,EAAMJ,EAAIxC,EAAMwC,GAEpB,KAAK7H,EAASsF,MACV2C,EAAMN,IAAMtC,EAAMsC,EAAIM,EAAMN,GAAK/H,EACjCqI,EAAML,IAAMvC,EAAMuC,EAAIK,EAAML,GAAKhI,EACjCqI,EAAMJ,IAAMxC,EAAMwC,EAAII,EAAMJ,GAAKjI,EAEzC,MACH,CACD,IAAI+H,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAClB9I,EAAIgD,EAASU,OAAOR,EAAQxC,EAAM,GAClCwF,EAAYrG,KAAKgE,OAAO7D,GAAK,GACjC,OAAQkG,GACJ,KAAK,EACD,IAAIC,EAASjD,EAAOlD,GACpB4I,EAAI1F,EAAOlD,EAAI,GACf6I,EAAI3F,EAAOlD,EAAI,GACf8I,EAAI5F,EAAOlD,EAAI,GACf,IAAI8H,GAAKpH,EAAOyF,IAAWjD,EAAOlD,EAAI,GAAiBmG,GACvDyC,IAAM1F,EAAOlD,EAAI,EAAgB,GAAW4I,GAAKd,EACjDe,IAAM3F,EAAOlD,EAAI,EAAgB,GAAW6I,GAAKf,EACjDgB,IAAM5F,EAAOlD,EAAI,EAAgB,GAAW8I,GAAKhB,EACjD,MACJ,KAAK,EACDc,EAAI1F,EAAOlD,EAAI,GACf6I,EAAI3F,EAAOlD,EAAI,GACf8I,EAAI5F,EAAOlD,EAAI,GACf,MACJ,QACI4I,EAAI/I,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GACtD2C,EAAIhJ,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAqB,GAC3E4C,EAAIjJ,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAyB,GAEvF,GAAa,GAATrF,EACAqI,EAAMN,EAAIA,EACVM,EAAML,EAAIA,EACVK,EAAMJ,EAAIA,MAET,CACD,GAAIhI,GAASG,EAASqF,MAAO,CACzB,IAAIA,EAAQ0C,EAAKpB,KAAKsB,MACtBA,EAAMN,EAAItC,EAAMsC,EAChBM,EAAML,EAAIvC,EAAMuC,EAChBK,EAAMJ,EAAIxC,EAAMwC,CACnB,CACDI,EAAMN,IAAMA,EAAIM,EAAMN,GAAK/H,EAC3BqI,EAAML,IAAMA,EAAIK,EAAML,GAAKhI,EAC3BqI,EAAMJ,IAAMA,EAAII,EAAMJ,GAAKjI,CAC9B,CACJ,EAGE,MAAMyI,UAAsBzD,EAC/B8C,UAAY,EACZ,WAAAhJ,CAAYwD,EAAYW,EAAa6E,GACjC5E,MAAMZ,EAAYW,EAAa3C,EAASN,MAAQ,IAAM8H,GACtD9I,KAAK8I,UAAYA,CACpB,CACD,KAAApI,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIiI,EAAOxI,EAASyI,MAAMpJ,KAAK8I,WAC/B,IAAKK,EAAKxB,KAAKE,OACX,OACJ,IAAIwB,EAAQF,EAAKE,MACjB,GAAIxI,EAAOb,KAAKqD,OAAO,GAAI,CACvB,IAAIoD,EAAQ0C,EAAKpB,KAAKsB,MACtB,OAAQpI,GACJ,KAAKG,EAASqF,MAEV,YADA4C,EAAMH,EAAIzC,EAAMyC,GAEpB,KAAK9H,EAASsF,MACV2C,EAAMH,IAAMzC,EAAMyC,EAAIG,EAAMH,GAAKlI,EAEzC,MACH,CACD,IAAIkI,EAAIlJ,KAAKmG,cAActF,GACd,GAATG,EACAqI,EAAMH,EAAIA,GAENjI,GAASG,EAASqF,QAClB4C,EAAMH,EAAIC,EAAKpB,KAAKsB,MAAMH,GAC9BG,EAAMH,IAAMA,EAAIG,EAAMH,GAAKlI,EAElC,EAGE,MAAM0I,UAAsB3F,EAC/B+E,UAAY,EACZ,WAAAhJ,CAAYwD,EAAYW,EAAa6E,GACjC5E,MAAMZ,EAAYW,EAAa,CAC3B3C,EAASS,IAAM,IAAM+G,EACrBxH,EAASN,MAAQ,IAAM8H,EACvBxH,EAASU,KAAO,IAAM8G,IAE1B9I,KAAK8I,UAAYA,CACpB,CACD,eAAArF,GACI,OAAO,CACV,CAED,QAAAyC,CAAS9B,EAAOvD,EAAMkI,EAAGC,EAAGC,EAAGC,EAAGS,EAAIC,EAAIC,GACtCzF,IAAU,EACVpE,KAAKqD,OAAOe,GAASvD,EACrBb,KAAKqD,OAAOe,EAAQ,GAAW2E,EAC/B/I,KAAKqD,OAAOe,EAAQ,GAAW4E,EAC/BhJ,KAAKqD,OAAOe,EAAQ,GAAW6E,EAC/BjJ,KAAKqD,OAAOe,EAAQ,GAAW8E,EAC/BlJ,KAAKqD,OAAOe,EAAQ,GAAYuF,EAChC3J,KAAKqD,OAAOe,EAAQ,GAAYwF,EAChC5J,KAAKqD,OAAOe,EAAQ,GAAYyF,CACnC,CACD,KAAAnJ,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIiI,EAAOxI,EAASyI,MAAMpJ,KAAK8I,WAC/B,IAAKK,EAAKxB,KAAKE,OACX,OACJ,IAAIxE,EAASrD,KAAKqD,OACdyG,EAAQX,EAAKE,MAAOU,EAAOZ,EAAKa,UACpC,GAAInJ,EAAOwC,EAAO,GAAI,CAClB,IAAI4G,EAAad,EAAKpB,KAAKsB,MAAOa,EAAYf,EAAKpB,KAAKiC,UACxD,OAAQ/I,GACJ,KAAKG,EAASqF,MAKV,OAJAqD,EAAMR,aAAaW,GACnBF,EAAKhB,EAAImB,EAAUnB,EACnBgB,EAAKf,EAAIkB,EAAUlB,OACnBe,EAAKd,EAAIiB,EAAUjB,GAEvB,KAAK7H,EAASsF,MACVoD,EAAM/C,KAAKkD,EAAWlB,EAAIe,EAAMf,GAAK/H,GAAQiJ,EAAWjB,EAAIc,EAAMd,GAAKhI,GAAQiJ,EAAWhB,EAAIa,EAAMb,GAAKjI,GAAQiJ,EAAWf,EAAIY,EAAMZ,GAAKlI,GAC3I+I,EAAKhB,IAAMmB,EAAUnB,EAAIgB,EAAKhB,GAAK/H,EACnC+I,EAAKf,IAAMkB,EAAUlB,EAAIe,EAAKf,GAAKhI,EACnC+I,EAAKd,IAAMiB,EAAUjB,EAAIc,EAAKd,GAAKjI,EAE3C,MACH,CACD,IAAI+H,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGS,EAAK,EAAGC,EAAK,EAAGC,EAAK,EACjD1J,EAAIgD,EAASU,OAAOR,EAAQxC,EAAM,GAClCwF,EAAYrG,KAAKgE,OAAO7D,GAAK,GACjC,OAAQkG,GACJ,KAAK,EACD,IAAIC,EAASjD,EAAOlD,GACpB4I,EAAI1F,EAAOlD,EAAI,GACf6I,EAAI3F,EAAOlD,EAAI,GACf8I,EAAI5F,EAAOlD,EAAI,GACf+I,EAAI7F,EAAOlD,EAAI,GACfwJ,EAAKtG,EAAOlD,EAAI,GAChByJ,EAAKvG,EAAOlD,EAAI,GAChB0J,EAAKxG,EAAOlD,EAAI,GAChB,IAAI8H,GAAKpH,EAAOyF,IAAWjD,EAAOlD,EAAI,GAAiBmG,GACvDyC,IAAM1F,EAAOlD,EAAI,EAAgB,GAAW4I,GAAKd,EACjDe,IAAM3F,EAAOlD,EAAI,EAAgB,GAAW6I,GAAKf,EACjDgB,IAAM5F,EAAOlD,EAAI,EAAgB,GAAW8I,GAAKhB,EACjDiB,IAAM7F,EAAOlD,EAAI,EAAgB,GAAW+I,GAAKjB,EACjD0B,IAAOtG,EAAOlD,EAAI,EAAgB,GAAYwJ,GAAM1B,EACpD2B,IAAOvG,EAAOlD,EAAI,EAAgB,GAAYyJ,GAAM3B,EACpD4B,IAAOxG,EAAOlD,EAAI,EAAgB,GAAY0J,GAAM5B,EACpD,MACJ,KAAK,EACDc,EAAI1F,EAAOlD,EAAI,GACf6I,EAAI3F,EAAOlD,EAAI,GACf8I,EAAI5F,EAAOlD,EAAI,GACf+I,EAAI7F,EAAOlD,EAAI,GACfwJ,EAAKtG,EAAOlD,EAAI,GAChByJ,EAAKvG,EAAOlD,EAAI,GAChB0J,EAAKxG,EAAOlD,EAAI,GAChB,MACJ,QACI4I,EAAI/I,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GACtD2C,EAAIhJ,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAqB,GAC3E4C,EAAIjJ,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAyB,GAC/E6C,EAAIlJ,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAyB,GAC/EsD,EAAK3J,KAAK6F,eAAehF,EAAMV,EAAG,EAAUkG,EAAY,GAAyB,GACjFuD,EAAK5J,KAAK6F,eAAehF,EAAMV,EAAG,EAAUkG,EAAY,GAAyB,GACjFwD,EAAK7J,KAAK6F,eAAehF,EAAMV,EAAG,EAAUkG,EAAY,IAAyB,GAEzF,GAAa,GAATrF,EACA8I,EAAMP,IAAIR,EAAGC,EAAGC,EAAGC,GACnBa,EAAKhB,EAAIY,EACTI,EAAKf,EAAIY,EACTG,EAAKd,EAAIY,MAER,CACD,GAAI5I,GAASG,EAASqF,MAAO,CACzBqD,EAAMR,aAAaH,EAAKpB,KAAKsB,OAC7B,IAAIa,EAAYf,EAAKpB,KAAKiC,UAC1BD,EAAKhB,EAAImB,EAAUnB,EACnBgB,EAAKf,EAAIkB,EAAUlB,EACnBe,EAAKd,EAAIiB,EAAUjB,CACtB,CACDa,EAAM/C,KAAKgC,EAAIe,EAAMf,GAAK/H,GAAQgI,EAAIc,EAAMd,GAAKhI,GAAQiI,EAAIa,EAAMb,GAAKjI,GAAQkI,EAAIY,EAAMZ,GAAKlI,GAC/F+I,EAAKhB,IAAMY,EAAKI,EAAKhB,GAAK/H,EAC1B+I,EAAKf,IAAMY,EAAKG,EAAKf,GAAKhI,EAC1B+I,EAAKd,IAAMY,EAAKE,EAAKd,GAAKjI,CAC7B,CACJ,EAGE,MAAMmJ,UAAqBpG,EAC9B+E,UAAY,EACZ,WAAAhJ,CAAYwD,EAAYW,EAAa6E,GACjC5E,MAAMZ,EAAYW,EAAa,CAC3B3C,EAASS,IAAM,IAAM+G,EACrBxH,EAASU,KAAO,IAAM8G,IAE1B9I,KAAK8I,UAAYA,CACpB,CACD,eAAArF,GACI,OAAO,CACV,CAED,QAAAyC,CAAS9B,EAAOvD,EAAMkI,EAAGC,EAAGC,EAAGU,EAAIC,EAAIC,GACnCzF,GAAS,EACTpE,KAAKqD,OAAOe,GAASvD,EACrBb,KAAKqD,OAAOe,EAAQ,GAAW2E,EAC/B/I,KAAKqD,OAAOe,EAAQ,GAAW4E,EAC/BhJ,KAAKqD,OAAOe,EAAQ,GAAW6E,EAC/BjJ,KAAKqD,OAAOe,EAAQ,GAAYuF,EAChC3J,KAAKqD,OAAOe,EAAQ,GAAYwF,EAChC5J,KAAKqD,OAAOe,EAAQ,GAAYyF,CACnC,CACD,KAAAnJ,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIiI,EAAOxI,EAASyI,MAAMpJ,KAAK8I,WAC/B,IAAKK,EAAKxB,KAAKE,OACX,OACJ,IAAIxE,EAASrD,KAAKqD,OACdyG,EAAQX,EAAKE,MAAOU,EAAOZ,EAAKa,UACpC,GAAInJ,EAAOwC,EAAO,GAAI,CAClB,IAAI4G,EAAad,EAAKpB,KAAKsB,MAAOa,EAAYf,EAAKpB,KAAKiC,UACxD,OAAQ/I,GACJ,KAAKG,EAASqF,MAOV,OANAqD,EAAMf,EAAIkB,EAAWlB,EACrBe,EAAMd,EAAIiB,EAAWjB,EACrBc,EAAMb,EAAIgB,EAAWhB,EACrBc,EAAKhB,EAAImB,EAAUnB,EACnBgB,EAAKf,EAAIkB,EAAUlB,OACnBe,EAAKd,EAAIiB,EAAUjB,GAEvB,KAAK7H,EAASsF,MACVoD,EAAMf,IAAMkB,EAAWlB,EAAIe,EAAMf,GAAK/H,EACtC8I,EAAMd,IAAMiB,EAAWjB,EAAIc,EAAMd,GAAKhI,EACtC8I,EAAMb,IAAMgB,EAAWhB,EAAIa,EAAMb,GAAKjI,EACtC+I,EAAKhB,IAAMmB,EAAUnB,EAAIgB,EAAKhB,GAAK/H,EACnC+I,EAAKf,IAAMkB,EAAUlB,EAAIe,EAAKf,GAAKhI,EACnC+I,EAAKd,IAAMiB,EAAUjB,EAAIc,EAAKd,GAAKjI,EAE3C,MACH,CACE,IAAC+H,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAUU,EAAK,EAAGC,EAAK,EAAGC,EAAK,EACjD1J,EAAIgD,EAASU,OAAOR,EAAQxC,EAAM,GAClCwF,EAAYrG,KAAKgE,OAAO7D,EAAI,GAChC,OAAQkG,GACJ,KAAK,EACD,IAAIC,EAASjD,EAAOlD,GACpB4I,EAAI1F,EAAOlD,EAAI,GACf6I,EAAI3F,EAAOlD,EAAI,GACf8I,EAAI5F,EAAOlD,EAAI,GACfwJ,EAAKtG,EAAOlD,EAAI,GAChByJ,EAAKvG,EAAOlD,EAAI,GAChB0J,EAAKxG,EAAOlD,EAAI,GAChB,IAAI8H,GAAKpH,EAAOyF,IAAWjD,EAAOlD,EAAI,GAAiBmG,GACvDyC,IAAM1F,EAAOlD,EAAI,EAAgB,GAAW4I,GAAKd,EACjDe,IAAM3F,EAAOlD,EAAI,EAAgB,GAAW6I,GAAKf,EACjDgB,IAAM5F,EAAOlD,EAAI,EAAgB,GAAW8I,GAAKhB,EACjD0B,IAAOtG,EAAOlD,EAAI,EAAgB,GAAYwJ,GAAM1B,EACpD2B,IAAOvG,EAAOlD,EAAI,EAAgB,GAAYyJ,GAAM3B,EACpD4B,IAAOxG,EAAOlD,EAAI,EAAgB,GAAY0J,GAAM5B,EACpD,MACJ,KAAK,EACDc,EAAI1F,EAAOlD,EAAI,GACf6I,EAAI3F,EAAOlD,EAAI,GACf8I,EAAI5F,EAAOlD,EAAI,GACfwJ,EAAKtG,EAAOlD,EAAI,GAChByJ,EAAKvG,EAAOlD,EAAI,GAChB0J,EAAKxG,EAAOlD,EAAI,GAChB,MACJ,QACI4I,EAAI/I,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GACtD2C,EAAIhJ,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAqB,GAC3E4C,EAAIjJ,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAyB,GAC/EsD,EAAK3J,KAAK6F,eAAehF,EAAMV,EAAG,EAAUkG,EAAY,GAAyB,GACjFuD,EAAK5J,KAAK6F,eAAehF,EAAMV,EAAG,EAAUkG,EAAY,GAAyB,GACjFwD,EAAK7J,KAAK6F,eAAehF,EAAMV,EAAG,EAAUkG,EAAY,GAAyB,GAEzF,GAAa,GAATrF,EACA8I,EAAMf,EAAIA,EACVe,EAAMd,EAAIA,EACVc,EAAMb,EAAIA,EACVc,EAAKhB,EAAIY,EACTI,EAAKf,EAAIY,EACTG,EAAKd,EAAIY,MAER,CACD,GAAI5I,GAASG,EAASqF,MAAO,CACzB,IAAIwD,EAAad,EAAKpB,KAAKsB,MAAOa,EAAYf,EAAKpB,KAAKiC,UACxDF,EAAMf,EAAIkB,EAAWlB,EACrBe,EAAMd,EAAIiB,EAAWjB,EACrBc,EAAMb,EAAIgB,EAAWhB,EACrBc,EAAKhB,EAAImB,EAAUnB,EACnBgB,EAAKf,EAAIkB,EAAUlB,EACnBe,EAAKd,EAAIiB,EAAUjB,CACtB,CACDa,EAAMf,IAAMA,EAAIe,EAAMf,GAAK/H,EAC3B8I,EAAMd,IAAMA,EAAIc,EAAMd,GAAKhI,EAC3B8I,EAAMb,IAAMA,EAAIa,EAAMb,GAAKjI,EAC3B+I,EAAKhB,IAAMY,EAAKI,EAAKhB,GAAK/H,EAC1B+I,EAAKf,IAAMY,EAAKG,EAAKf,GAAKhI,EAC1B+I,EAAKd,IAAMY,EAAKE,EAAKd,GAAKjI,CAC7B,CACJ,EAGE,MAAMoJ,UAA2BjH,EACpC2F,UAAY,EAEZuB,gBACA,WAAAvK,CAAYwD,EAAYwF,GACpB5E,MAAMZ,EAAY,CACdhC,EAASW,WAAa,IAAM6G,IAEhC9I,KAAK8I,UAAYA,EACjB9I,KAAKqK,gBAAkB,IAAIC,MAAMhH,EACpC,CACD,aAAAI,GACI,OAAO1D,KAAKqD,OAAOjD,MACtB,CAED,QAAA8F,CAAS9B,EAAOvD,EAAM0J,GAClBvK,KAAKqD,OAAOe,GAASvD,EACrBb,KAAKqK,gBAAgBjG,GAASmG,CACjC,CACD,KAAA7J,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIiI,EAAOxI,EAASyI,MAAMpJ,KAAK8I,WAC1BK,EAAKxB,KAAKE,SAEX3G,GAAaG,EAAa2F,OAK1BnG,EAAOb,KAAKqD,OAAO,GACfpC,GAASG,EAASqF,OAASxF,GAASG,EAASsF,OAC7C1G,KAAKwK,cAAc7J,EAAUwI,EAAMA,EAAKpB,KAAKwC,gBAGrDvK,KAAKwK,cAAc7J,EAAUwI,EAAMnJ,KAAKqK,gBAAgBlH,EAASS,QAAQ5D,KAAKqD,OAAQxC,KAT9EI,GAASG,EAASqF,OAClBzG,KAAKwK,cAAc7J,EAAUwI,EAAMA,EAAKpB,KAAKwC,gBASxD,CACD,aAAAC,CAAc7J,EAAUwI,EAAMoB,GAC1BpB,EAAKqB,cAAeD,EAAwB5J,EAAS8J,cAAczK,KAAK8I,UAAWyB,GAA9C,KACxC,EAGE,MAAMG,UAAuB3G,EAChC+E,UAAY,EAEZ7G,WAEA0I,SACA,WAAA7K,CAAYwD,EAAYW,EAAa6E,EAAW7G,GAC5CiC,MAAMZ,EAAYW,EAAa,CAC3B3C,EAASY,OAAS,IAAM4G,EAAY,IAAM7G,EAAW2I,KAEzD5K,KAAK8I,UAAYA,EACjB9I,KAAKiC,WAAaA,EAClBjC,KAAK2K,SAAW,IAAIL,MAAMhH,EAC7B,CACD,aAAAI,GACI,OAAO1D,KAAKqD,OAAOjD,MACtB,CAGD,QAAA8F,CAAS9B,EAAOvD,EAAM8J,GAClB3K,KAAKqD,OAAOe,GAASvD,EACrBb,KAAK2K,SAASvG,GAASuG,CAC1B,CAGD,SAAAjG,CAAUC,EAAQP,EAAOQ,EAAOC,EAAOC,EAAQC,EAAKC,EAAKC,EAAKC,EAAKC,EAAOC,GACtE,IAAIpB,EAAShE,KAAKgE,OACd7D,EAAIH,KAAK0D,gBAA2B,GAATiB,EAClB,GAATC,IACAZ,EAAOI,GAAS,EAAejE,GACnC,IAAIkF,EAAiC,KAAzBR,EAAc,EAANE,EAAUE,GAAaK,EAAa,IAANJ,EAAmB,IAANF,EAC3DO,EAA2C,MAArB,GAAbR,EAAME,GAAWJ,EAAQM,GAAgBK,EAAkC,MAA1BR,EAAME,EAAM,WACtEO,EAAa,EAAPJ,EAAWE,EAAMG,EAAa,EAAPJ,EAAWE,EACxCG,EAAqB,IAAfZ,EAAMF,GAAeQ,EAAc,UAAPE,EAAmBK,EAAW,GAANZ,EAAYM,EAAc,UAAPE,EAC7EhE,EAAIqD,EAAQc,EAAIlE,EAAImE,EACxB,IAAK,IAAIzE,EAAIhB,EAAI,GAAoBA,EAAIgB,EAAGhB,GAAK,EAC7C6D,EAAO7D,GAAKqB,EACZwC,EAAO7D,EAAI,GAAKsB,EAChBkE,GAAMF,EACNG,GAAMF,EACND,GAAOF,EACPG,GAAOF,EACPhE,GAAKmE,EACLlE,GAAKmE,CAEZ,CACD,eAAAiF,CAAgBhK,EAAMuD,GAClB,IAAIJ,EAAShE,KAAKgE,OACd7D,EAAI6D,EAAOI,GACf,OAAQjE,GACJ,KAAK,EACD,IAAIqB,EAAIxB,KAAKqD,OAAOe,GACpB,OAAQvD,EAAOW,IAAMxB,KAAKqD,OAAOe,EAAQpE,KAAKyD,mBAAqBjC,GACvE,KAAK,EACD,OAAO,EAGf,GADArB,GAAK,EACD6D,EAAO7D,GAAKU,EAAM,CAClB,IAAIW,EAAIxB,KAAKqD,OAAOe,GACpB,OAAOJ,EAAO7D,EAAI,IAAMU,EAAOW,IAAMwC,EAAO7D,GAAKqB,EACpD,CACD,IAAIL,EAAIhB,EAAI,GACZ,IAAKA,GAAK,EAAGA,EAAIgB,EAAGhB,GAAK,EACrB,GAAI6D,EAAO7D,IAAMU,EAAM,CACnB,IAAIW,EAAIwC,EAAO7D,EAAI,GAAIsB,EAAIuC,EAAO7D,EAAI,GACtC,OAAOsB,GAAKZ,EAAOW,IAAMwC,EAAO7D,GAAKqB,IAAMwC,EAAO7D,EAAI,GAAKsB,EAC9D,CAEL,IAAID,EAAIwC,EAAO7C,EAAI,GAAIM,EAAIuC,EAAO7C,EAAI,GACtC,OAAOM,GAAK,EAAIA,IAAMZ,EAAOW,IAAMxB,KAAKqD,OAAOe,EAAQpE,KAAKyD,mBAAqBjC,EACpF,CACD,KAAAd,CAAMC,EAAUC,EAAUC,EAAMiK,EAAa9J,EAAOC,EAAOC,GACvD,IAAIiI,EAAOxI,EAASyI,MAAMpJ,KAAK8I,WAC/B,IAAKK,EAAKxB,KAAKE,OACX,OACJ,IAAIkD,EAAiB5B,EAAKsB,gBAC1B,IAAKM,EACD,OACJ,KAAMA,aAA0BC,IAAqBD,EAAeE,oBAAsBjL,KAAKiC,WAC3F,OACJ,IAAIC,EAASiH,EAAKjH,OACG,GAAjBA,EAAO9B,SACPa,EAAQG,EAASqF,OACrB,IAAIkE,EAAW3K,KAAK2K,SAChBO,EAAcP,EAAS,GAAGvK,OAC1BiD,EAASrD,KAAKqD,OAClB,GAAIxC,EAAOwC,EAAO,GAAI,CAClB,OAAQpC,GACJ,KAAKG,EAASqF,MAEV,YADAvE,EAAO9B,OAAS,GAEpB,KAAKgB,EAASsF,MACV,GAAa,GAAT1F,EAEA,YADAkB,EAAO9B,OAAS,GAGpB8B,EAAO9B,OAAS8K,EAChB,IAAIC,EAAmBJ,EACvB,GAAKI,EAAiBvD,MAMjB,CAED5G,EAAQ,EAAIA,EACZ,IAASb,EAAI,EAAGA,EAAI+K,EAAa/K,IAC7B+B,EAAO/B,IAAMa,CACpB,KAX4B,CAEzB,IAAIoK,EAAgBD,EAAiBR,SACrC,IAAK,IAAIxK,EAAI,EAAGA,EAAI+K,EAAa/K,IAC7B+B,EAAO/B,KAAOiL,EAAcjL,GAAK+B,EAAO/B,IAAMa,CACrD,EAQT,MACH,CAED,GADAkB,EAAO9B,OAAS8K,EACZrK,GAAQwC,EAAOA,EAAOjD,OAAS,GAAI,CACnC,IAAIiL,EAAeV,EAAStH,EAAOjD,OAAS,GAC5C,GAAa,GAATY,EACA,GAAIC,GAASG,EAAS2F,IAAK,CACvB,IAAIoE,EAAmBJ,EACvB,GAAKI,EAAiBvD,MAQlB,IAAK,IAAIzH,EAAI,EAAGA,EAAI+K,EAAa/K,IAC7B+B,EAAO/B,IAAMkL,EAAalL,OATL,CAEzB,IAAIiL,EAAgBD,EAAiBR,SACrC,IAAK,IAAIxK,EAAI,EAAGA,EAAI+K,EAAa/K,IAC7B+B,EAAO/B,IAAMkL,EAAalL,GAAKiL,EAAcjL,EACpD,CAMJ,MAEGoD,EAAMkB,UAAU4G,EAAc,EAAGnJ,EAAQ,EAAGgJ,QAGhD,OAAQjK,GACJ,KAAKG,EAASqF,MAAO,CACjB,IAAI0E,EAAmBJ,EACvB,GAAKI,EAAiBvD,MAUlB,IAAK,IAAIzH,EAAI,EAAGA,EAAI+K,EAAa/K,IAC7B+B,EAAO/B,GAAKkL,EAAalL,GAAKa,MAXT,CAEzB,IAAIoK,EAAgBD,EAAiBR,SACrC,IAAK,IAAIxK,EAAI,EAAGA,EAAI+K,EAAa/K,IAAK,CAClC,IAAIsG,EAAQ2E,EAAcjL,GAC1B+B,EAAO/B,GAAKsG,GAAS4E,EAAalL,GAAKsG,GAASzF,CACnD,CACJ,CAMD,KACH,CACD,KAAKI,EAASsF,MACd,KAAKtF,EAASuF,QACV,IAAK,IAAIxG,EAAI,EAAGA,EAAI+K,EAAa/K,IAC7B+B,EAAO/B,KAAOkL,EAAalL,GAAK+B,EAAO/B,IAAMa,EACjD,MACJ,KAAKI,EAAS2F,IACV,IAAIoE,EAAmBJ,EACvB,GAAKI,EAAiBvD,MAQlB,IAAK,IAAIzH,EAAI,EAAGA,EAAI+K,EAAa/K,IAC7B+B,EAAO/B,IAAMkL,EAAalL,GAAKa,MATV,CAEzB,IAAIoK,EAAgBD,EAAiBR,SACrC,IAAK,IAAIxK,EAAI,EAAGA,EAAI+K,EAAa/K,IAC7B+B,EAAO/B,KAAOkL,EAAalL,GAAKiL,EAAcjL,IAAMa,CAC3D,EAQb,MACH,CAED,IAAIoD,EAAQjB,EAASS,QAAQP,EAAQxC,GACjCyK,EAAUtL,KAAK6K,gBAAgBhK,EAAMuD,GACrCmH,EAAeZ,EAASvG,GACxBoH,EAAeb,EAASvG,EAAQ,GACpC,GAAa,GAATpD,EACA,GAAIC,GAASG,EAAS2F,IAAK,CACvB,IAAIoE,EAAmBJ,EACvB,GAAKI,EAAiBvD,MAUlB,IAAK,IAAIzH,EAAI,EAAGA,EAAI+K,EAAa/K,IAAK,CAClC,IAAIsL,EAAOF,EAAapL,GACxB+B,EAAO/B,IAAMsL,GAAQD,EAAarL,GAAKsL,GAAQH,CAClD,KAbwB,CAEzB,IAAIF,EAAgBD,EAAiBR,SACrC,IAAK,IAAIxK,EAAI,EAAGA,EAAI+K,EAAa/K,IAAK,CAClC,IAAIsL,EAAOF,EAAapL,GACxB+B,EAAO/B,IAAMsL,GAAQD,EAAarL,GAAKsL,GAAQH,EAAUF,EAAcjL,EAC1E,CACJ,CAQJ,MAEG,IAAK,IAAIA,EAAI,EAAGA,EAAI+K,EAAa/K,IAAK,CAClC,IAAIsL,EAAOF,EAAapL,GACxB+B,EAAO/B,GAAKsL,GAAQD,EAAarL,GAAKsL,GAAQH,CACjD,MAIL,OAAQrK,GACJ,KAAKG,EAASqF,MAAO,CACjB,IAAI0E,EAAmBJ,EACvB,GAAKI,EAAiBvD,MAUlB,IAAK,IAAIzH,EAAI,EAAGA,EAAI+K,EAAa/K,IAAK,CAClC,IAAIsL,EAAOF,EAAapL,GACxB+B,EAAO/B,IAAMsL,GAAQD,EAAarL,GAAKsL,GAAQH,GAAWtK,CAC7D,KAbwB,CAEzB,IAAIoK,EAAgBD,EAAiBR,SACrC,IAAK,IAAIxK,EAAI,EAAGA,EAAI+K,EAAa/K,IAAK,CAClC,IAAIsL,EAAOF,EAAapL,GAAIsG,EAAQ2E,EAAcjL,GAClD+B,EAAO/B,GAAKsG,GAASgF,GAAQD,EAAarL,GAAKsL,GAAQH,EAAU7E,GAASzF,CAC7E,CACJ,CAQD,KACH,CACD,KAAKI,EAASsF,MACd,KAAKtF,EAASuF,QACV,IAAK,IAAIxG,EAAI,EAAGA,EAAI+K,EAAa/K,IAAK,CAClC,IAAIsL,EAAOF,EAAapL,GACxB+B,EAAO/B,KAAOsL,GAAQD,EAAarL,GAAKsL,GAAQH,EAAUpJ,EAAO/B,IAAMa,CAC1E,CACD,MACJ,KAAKI,EAAS2F,IACV,IAAIoE,EAAmBJ,EACvB,GAAKI,EAAiBvD,MAUlB,IAAK,IAAIzH,EAAI,EAAGA,EAAI+K,EAAa/K,IAAK,CAClC,IAAIsL,EAAOF,EAAapL,GACxB+B,EAAO/B,KAAOsL,GAAQD,EAAarL,GAAKsL,GAAQH,GAAWtK,CAC9D,KAbwB,CAEzB,IAAIoK,EAAgBD,EAAiBR,SACrC,IAAK,IAAIxK,EAAI,EAAGA,EAAI+K,EAAa/K,IAAK,CAClC,IAAIsL,EAAOF,EAAapL,GACxB+B,EAAO/B,KAAOsL,GAAQD,EAAarL,GAAKsL,GAAQH,EAAUF,EAAcjL,IAAMa,CACjF,CACJ,EAUhB,EAGE,MAAM0K,UAAsBvI,EAC/BwI,mBAAqB,CAAC,GAAKrK,EAASa,OAEpCpB,OACA,WAAAjB,CAAYwD,GACRY,MAAMZ,EAAYoI,EAActI,aAChCpD,KAAKe,OAAS,IAAIuJ,MAAMhH,EAC3B,CACD,aAAAI,GACI,OAAO1D,KAAKqD,OAAOjD,MACtB,CAED,QAAA8F,CAAS9B,EAAOjC,GACZnC,KAAKqD,OAAOe,GAASjC,EAAMtB,KAC3Bb,KAAKe,OAAOqD,GAASjC,CACxB,CAED,KAAAzB,CAAMC,EAAUC,EAAUC,EAAMiK,EAAa9J,EAAOC,EAAOC,GACvD,IAAK4J,EACD,OACJ,IAAIzH,EAASrD,KAAKqD,OACdC,EAAatD,KAAKqD,OAAOjD,OAC7B,GAAIQ,EAAWC,EACXb,KAAKU,MAAMC,EAAUC,EAAUgL,OAAOC,UAAWf,EAAa9J,EAAOC,EAAOC,GAC5EN,GAAY,OAEX,GAAIA,GAAYyC,EAAOC,EAAa,GACrC,OACJ,GAAIzC,EAAOwC,EAAO,GACd,OACJ,IAAIlD,EAAI,EACR,GAAIS,EAAWyC,EAAO,GAClBlD,EAAI,MACH,CACDA,EAAIgD,EAASS,QAAQP,EAAQzC,GAAY,EACzC,IAAIkL,EAAYzI,EAAOlD,GACvB,KAAOA,EAAI,GACHkD,EAAOlD,EAAI,IAAM2L,GAErB3L,GAEP,CACD,KAAOA,EAAImD,GAAczC,GAAQwC,EAAOlD,GAAIA,IACxC2K,EAAYiB,KAAK/L,KAAKe,OAAOZ,GACpC,EAGE,MAAM6L,UAA0B7I,EACnCwI,mBAAqB,CAAC,GAAKrK,EAASc,WAEpC6J,WACA,WAAAnM,CAAYwD,GACRY,MAAMZ,EAAY0I,EAAkB5I,aACpCpD,KAAKiM,WAAa,IAAI3B,MAAMhH,EAC/B,CACD,aAAAI,GACI,OAAO1D,KAAKqD,OAAOjD,MACtB,CAID,QAAA8F,CAAS9B,EAAOvD,EAAMuB,GAClBpC,KAAKqD,OAAOe,GAASvD,EACrBb,KAAKiM,WAAW7H,GAAShC,CAC5B,CACD,KAAA1B,CAAMC,EAAUC,EAAUC,EAAMiK,EAAa9J,EAAOC,EAAOC,GACvD,GAAIA,GAAaG,EAAa2F,OAG1B,YAFI/F,GAASG,EAASqF,OAClBlD,EAAMkB,UAAU9D,EAASyI,MAAO,EAAGzI,EAASyB,UAAW,EAAGzB,EAASyI,MAAMhJ,SAGjF,GAAIS,EAAOb,KAAKqD,OAAO,GAGnB,YAFIpC,GAASG,EAASqF,OAASxF,GAASG,EAASsF,OAC7CnD,EAAMkB,UAAU9D,EAASyI,MAAO,EAAGzI,EAASyB,UAAW,EAAGzB,EAASyI,MAAMhJ,SAGjF,IAAI8L,EAAM/I,EAASS,QAAQ5D,KAAKqD,OAAQxC,GACpCsL,EAAwBnM,KAAKiM,WAAWC,GAC5C,GAAKC,EAEA,CACD,IAAI/J,EAAYzB,EAASyB,UACrBgH,EAAQzI,EAASyI,MACrB,IAAK,IAAIjJ,EAAI,EAAGgB,EAAIgL,EAAsB/L,OAAQD,EAAIgB,EAAGhB,IACrDiC,EAAUjC,GAAKiJ,EAAM+C,EAAsBhM,GAClD,MANGoD,EAAMkB,UAAU9D,EAASyI,MAAO,EAAGzI,EAASyB,UAAW,EAAGzB,EAASyI,MAAMhJ,OAOhF,EAIE,MAAMgM,UAA6BrI,EAEtCsI,gBAAkB,EAClB,WAAAvM,CAAYwD,EAAYW,EAAaqI,GACjCpI,MAAMZ,EAAYW,EAAa,CAC3B3C,EAASe,aAAe,IAAMiK,IAElCtM,KAAKqM,gBAAkBC,CAC1B,CACD,eAAA7I,GACI,OAAO,CACV,CAED,QAAAyC,CAAS9B,EAAOvD,EAAM0L,EAAKC,EAAUC,EAAeC,EAAUC,GAC1DvI,GAAS,EACTpE,KAAKqD,OAAOe,GAASvD,EACrBb,KAAKqD,OAAOe,EAAQ,GAAamI,EACjCvM,KAAKqD,OAAOe,EAAQ,GAAkBoI,EACtCxM,KAAKqD,OAAOe,EAAQ,GAAwBqI,EAC5CzM,KAAKqD,OAAOe,EAAQ,GAAkBsI,EAAW,EAAI,EACrD1M,KAAKqD,OAAOe,EAAQ,GAAiBuI,EAAU,EAAI,CACtD,CACD,KAAAjM,CAAMC,EAAUC,EAAUC,EAAMiK,EAAa9J,EAAOC,EAAOC,GACvD,IAAI0L,EAAajM,EAASkM,cAAc7M,KAAKqM,iBAC7C,IAAKO,EAAW/E,OACZ,OACJ,IAAIxE,EAASrD,KAAKqD,OAClB,GAAIxC,EAAOwC,EAAO,GAAI,CAClB,OAAQpC,GACJ,KAAKG,EAASqF,MAMV,OALAmG,EAAWL,IAAMK,EAAW7E,KAAKwE,IACjCK,EAAWJ,SAAWI,EAAW7E,KAAKyE,SACtCI,EAAWH,cAAgBG,EAAW7E,KAAK0E,cAC3CG,EAAWF,SAAWE,EAAW7E,KAAK2E,cACtCE,EAAWD,QAAUC,EAAW7E,KAAK4E,SAEzC,KAAKvL,EAASsF,MACVkG,EAAWL,MAAQK,EAAW7E,KAAKwE,IAAMK,EAAWL,KAAOvL,EAC3D4L,EAAWJ,WAAaI,EAAW7E,KAAKyE,SAAWI,EAAWJ,UAAYxL,EAC1E4L,EAAWH,cAAgBG,EAAW7E,KAAK0E,cAC3CG,EAAWF,SAAWE,EAAW7E,KAAK2E,SACtCE,EAAWD,QAAUC,EAAW7E,KAAK4E,QAE7C,MACH,CACD,IAAIJ,EAAM,EAAGC,EAAW,EACpBrM,EAAIgD,EAASU,OAAOR,EAAQxC,EAAM,GAClCwF,EAAYrG,KAAKgE,OAAO7D,EAAI,GAChC,OAAQkG,GACJ,KAAK,EACD,IAAIC,EAASjD,EAAOlD,GACpBoM,EAAMlJ,EAAOlD,EAAI,GACjBqM,EAAWnJ,EAAOlD,EAAI,GACtB,IAAI8H,GAAKpH,EAAOyF,IAAWjD,EAAOlD,EAAI,GAAiBmG,GACvDiG,IAAQlJ,EAAOlD,EAAI,EAAgB,GAAaoM,GAAOtE,EACvDuE,IAAanJ,EAAOlD,EAAI,EAAgB,GAAkBqM,GAAYvE,EACtE,MACJ,KAAK,EACDsE,EAAMlJ,EAAOlD,EAAI,GACjBqM,EAAWnJ,EAAOlD,EAAI,GACtB,MACJ,QACIoM,EAAMvM,KAAK6F,eAAehF,EAAMV,EAAG,EAAWkG,EAAY,GAC1DmG,EAAWxM,KAAK6F,eAAehF,EAAMV,EAAG,EAAgBkG,EAAY,GAAqB,GAE7FpF,GAASG,EAASqF,OAClBmG,EAAWL,IAAMK,EAAW7E,KAAKwE,KAAOA,EAAMK,EAAW7E,KAAKwE,KAAOvL,EACrE4L,EAAWJ,SAAWI,EAAW7E,KAAKyE,UAAYA,EAAWI,EAAW7E,KAAKyE,UAAYxL,EACrFE,GAAaG,EAAa2F,QAC1B4F,EAAWH,cAAgBG,EAAW7E,KAAK0E,cAC3CG,EAAWF,SAAWE,EAAW7E,KAAK2E,SACtCE,EAAWD,QAAUC,EAAW7E,KAAK4E,UAGrCC,EAAWH,cAAgBpJ,EAAOlD,EAAI,GACtCyM,EAAWF,SAAyC,GAA9BrJ,EAAOlD,EAAI,GACjCyM,EAAWD,QAAuC,GAA7BtJ,EAAOlD,EAAI,MAIpCyM,EAAWL,MAAQA,EAAMK,EAAWL,KAAOvL,EAC3C4L,EAAWJ,WAAaA,EAAWI,EAAWJ,UAAYxL,EACtDE,GAAaG,EAAayL,QAC1BF,EAAWH,cAAgBpJ,EAAOlD,EAAI,GACtCyM,EAAWF,SAAyC,GAA9BrJ,EAAOlD,EAAI,GACjCyM,EAAWD,QAAuC,GAA7BtJ,EAAOlD,EAAI,IAG3C,EAIE,MAAM4M,UAAoChJ,EAE7CsI,gBAAkB,EAClB,WAAAvM,CAAYwD,EAAYW,EAAa+I,GACjC9I,MAAMZ,EAAYW,EAAa,CAC3B3C,EAASgB,oBAAsB,IAAM0K,IAEzChN,KAAKqM,gBAAkBW,CAC1B,CACD,eAAAvJ,GACI,OAAO,CACV,CAED,QAAAyC,CAAS9B,EAAOvD,EAAMoM,EAAWC,EAAMC,EAAMC,EAAWC,EAAWC,GAC/D,IAAIjK,EAASrD,KAAKqD,OAElBA,EADAe,GAAS,GACOvD,EAChBwC,EAAOe,EAAQ,GAAgB6I,EAC/B5J,EAAOe,EAAQ,GAAW8I,EAC1B7J,EAAOe,EAAQ,GAAW+I,EAC1B9J,EAAOe,EAAQ,GAAgBgJ,EAC/B/J,EAAOe,EAAQ,GAAgBiJ,EAC/BhK,EAAOe,EAAQ,GAAgBkJ,CAClC,CACD,KAAA5M,CAAMC,EAAUC,EAAUC,EAAMiK,EAAa9J,EAAOC,EAAOC,GACvD,IAAI0L,EAAajM,EAAS4M,qBAAqBvN,KAAKqM,iBACpD,IAAKO,EAAW/E,OACZ,OACJ,IAsBItG,EAAQC,EAAGC,EAAGC,EAAQC,EAAQE,EAtB9BwB,EAASrD,KAAKqD,OAClB,GAAIxC,EAAOwC,EAAO,GAAI,CAClB,IAAI0E,EAAO6E,EAAW7E,KACtB,OAAQ9G,GACJ,KAAKG,EAASqF,MAOV,OANAmG,EAAWK,UAAYlF,EAAKkF,UAC5BL,EAAWM,KAAOnF,EAAKmF,KACvBN,EAAWO,KAAOpF,EAAKoF,KACvBP,EAAWQ,UAAYrF,EAAKqF,UAC5BR,EAAWS,UAAYtF,EAAKsF,eAC5BT,EAAWU,UAAYvF,EAAKuF,WAEhC,KAAKlM,EAASsF,MACVkG,EAAWK,YAAclF,EAAKkF,UAAYL,EAAWK,WAAajM,EAClE4L,EAAWM,OAASnF,EAAKmF,KAAON,EAAWM,MAAQlM,EACnD4L,EAAWO,OAASpF,EAAKoF,KAAOP,EAAWO,MAAQnM,EACnD4L,EAAWQ,YAAcrF,EAAKqF,UAAYR,EAAWQ,WAAapM,EAClE4L,EAAWS,YAActF,EAAKsF,UAAYT,EAAWS,WAAarM,EAClE4L,EAAWU,YAAcvF,EAAKuF,UAAYV,EAAWU,WAAatM,EAE1E,MACH,CAED,IAAIb,EAAIgD,EAASU,OAAOR,EAAQxC,EAAM,GAClCwF,EAAYrG,KAAKgE,OAAO7D,EAAI,GAChC,OAAQkG,GACJ,KAAK,EACD,IAAIC,EAASjD,EAAOlD,GACpBoB,EAAS8B,EAAOlD,EAAI,GACpBqB,EAAI6B,EAAOlD,EAAI,GACfsB,EAAI4B,EAAOlD,EAAI,GACfuB,EAAS2B,EAAOlD,EAAI,GACpBwB,EAAS0B,EAAOlD,EAAI,GACpB0B,EAASwB,EAAOlD,EAAI,GACpB,IAAI8H,GAAKpH,EAAOyF,IAAWjD,EAAOlD,EAAI,GAAiBmG,GACvD/E,IAAW8B,EAAOlD,EAAI,EAAgB,GAAgBoB,GAAU0G,EAChEzG,IAAM6B,EAAOlD,EAAI,EAAgB,GAAWqB,GAAKyG,EACjDxG,IAAM4B,EAAOlD,EAAI,EAAgB,GAAWsB,GAAKwG,EACjDvG,IAAW2B,EAAOlD,EAAI,EAAgB,GAAgBuB,GAAUuG,EAChEtG,IAAW0B,EAAOlD,EAAI,EAAgB,GAAgBwB,GAAUsG,EAChEpG,IAAWwB,EAAOlD,EAAI,EAAgB,GAAgB0B,GAAUoG,EAChE,MACJ,KAAK,EACD1G,EAAS8B,EAAOlD,EAAI,GACpBqB,EAAI6B,EAAOlD,EAAI,GACfsB,EAAI4B,EAAOlD,EAAI,GACfuB,EAAS2B,EAAOlD,EAAI,GACpBwB,EAAS0B,EAAOlD,EAAI,GACpB0B,EAASwB,EAAOlD,EAAI,GACpB,MACJ,QACIoB,EAASvB,KAAK6F,eAAehF,EAAMV,EAAG,EAAckG,EAAY,GAChE7E,EAAIxB,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAqB,GAC3E5E,EAAIzB,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAyB,GAC/E3E,EAAS1B,KAAK6F,eAAehF,EAAMV,EAAG,EAAckG,EAAY,GAAyB,GACzF1E,EAAS3B,KAAK6F,eAAehF,EAAMV,EAAG,EAAckG,EAAY,GAAyB,GACzFxE,EAAS7B,KAAK6F,eAAehF,EAAMV,EAAG,EAAckG,EAAY,GAAyB,GAEjG,GAAIpF,GAASG,EAASqF,MAAO,CACzB,IAAIsB,EAAO6E,EAAW7E,KACtB6E,EAAWK,UAAYlF,EAAKkF,WAAa1L,EAASwG,EAAKkF,WAAajM,EACpE4L,EAAWM,KAAOnF,EAAKmF,MAAQ1L,EAAIuG,EAAKmF,MAAQlM,EAChD4L,EAAWO,KAAOpF,EAAKoF,MAAQ1L,EAAIsG,EAAKoF,MAAQnM,EAChD4L,EAAWQ,UAAYrF,EAAKqF,WAAa1L,EAASqG,EAAKqF,WAAapM,EACpE4L,EAAWS,UAAYtF,EAAKsF,WAAa1L,EAASoG,EAAKsF,WAAarM,EACpE4L,EAAWU,UAAYvF,EAAKuF,WAAazL,EAASkG,EAAKuF,WAAatM,CACvE,MAEG4L,EAAWK,YAAc1L,EAASqL,EAAWK,WAAajM,EAC1D4L,EAAWM,OAAS1L,EAAIoL,EAAWM,MAAQlM,EAC3C4L,EAAWO,OAAS1L,EAAImL,EAAWO,MAAQnM,EAC3C4L,EAAWQ,YAAc1L,EAASkL,EAAWQ,WAAapM,EAC1D4L,EAAWS,YAAc1L,EAASiL,EAAWS,WAAarM,EAC1D4L,EAAWU,YAAczL,EAAS+K,EAAWU,WAAatM,CAEjE,EAGE,MAAMwM,UAAuCxH,EAGhDqG,gBAAkB,EAClB,WAAAvM,CAAYwD,EAAYW,EAAawJ,GACjCvJ,MAAMZ,EAAYW,EAAa3C,EAASiB,uBAAyB,IAAMkL,GACvEzN,KAAKqM,gBAAkBoB,CAC1B,CACD,KAAA/M,CAAMC,EAAUC,EAAUC,EAAMiK,EAAa9J,EAAOC,EAAOC,GACvD,IAAI0L,EAAajM,EAAS+M,gBAAgB1N,KAAKqM,iBAC3CO,EAAW/E,SACX+E,EAAWe,SAAW3N,KAAK4G,iBAAiB/F,EAAMG,EAAOC,EAAO2L,EAAWe,SAAUf,EAAW7E,KAAK4F,UAC5G,EAGE,MAAMC,UAAsC5H,EAG/CqG,gBAAkB,EAClB,WAAAvM,CAAYwD,EAAYW,EAAawJ,GACjCvJ,MAAMZ,EAAYW,EAAa3C,EAASkB,sBAAwB,IAAMiL,GACtEzN,KAAKqM,gBAAkBoB,CAC1B,CACD,KAAA/M,CAAMC,EAAUC,EAAUC,EAAMiK,EAAa9J,EAAOC,EAAOC,GACvD,IAAI0L,EAAajM,EAAS+M,gBAAgB1N,KAAKqM,iBAC3CO,EAAW/E,SACX+E,EAAWiB,QAAU7N,KAAK4G,iBAAiB/F,EAAMG,EAAOC,EAAO2L,EAAWiB,QAASjB,EAAW7E,KAAK8F,SAC1G,EAIE,MAAMC,UAAkC/J,EAG3CsI,gBAAkB,EAClB,WAAAvM,CAAYwD,EAAYW,EAAawJ,GACjCvJ,MAAMZ,EAAYW,EAAa,CAC3B3C,EAASmB,kBAAoB,IAAMgL,IAEvCzN,KAAKqM,gBAAkBoB,CAC1B,CACD,eAAAhK,GACI,OAAO,CACV,CACD,QAAAyC,CAAS9B,EAAOvD,EAAMoM,EAAWC,EAAMC,GACnC,IAAI9J,EAASrD,KAAKqD,OAElBA,EADAe,IAAU,GACMvD,EAChBwC,EAAOe,EAAQ,GAAgB6I,EAC/B5J,EAAOe,EAAQ,GAAW8I,EAC1B7J,EAAOe,EAAQ,GAAW+I,CAC7B,CACD,KAAAzM,CAAMC,EAAUC,EAAUC,EAAMiK,EAAa9J,EAAOC,EAAOC,GACvD,IAAI0L,EAAajM,EAAS+M,gBAAgB1N,KAAKqM,iBAC/C,IAAKO,EAAW/E,OACZ,OACJ,IAeItG,EAAQC,EAAGC,EAfX4B,EAASrD,KAAKqD,OAClB,GAAIxC,EAAOwC,EAAO,GAAI,CAClB,OAAQpC,GACJ,KAAKG,EAASqF,MAIV,OAHAmG,EAAWK,UAAYL,EAAW7E,KAAKkF,UACvCL,EAAWM,KAAON,EAAW7E,KAAKmF,UAClCN,EAAWO,KAAOP,EAAW7E,KAAKoF,MAEtC,KAAK/L,EAASsF,MACVkG,EAAWK,YAAcL,EAAW7E,KAAKkF,UAAYL,EAAWK,WAAajM,EAC7E4L,EAAWM,OAASN,EAAW7E,KAAKmF,KAAON,EAAWM,MAAQlM,EAC9D4L,EAAWO,OAASP,EAAW7E,KAAKoF,KAAOP,EAAWO,MAAQnM,EAEtE,MACH,CAED,IAAIb,EAAIgD,EAASU,OAAOR,EAAQxC,EAAM,GAClCwF,EAAYrG,KAAKgE,OAAO7D,GAAK,GACjC,OAAQkG,GACJ,KAAK,EACD,IAAIC,EAASjD,EAAOlD,GACpBoB,EAAS8B,EAAOlD,EAAI,GACpBqB,EAAI6B,EAAOlD,EAAI,GACfsB,EAAI4B,EAAOlD,EAAI,GACf,IAAI8H,GAAKpH,EAAOyF,IAAWjD,EAAOlD,EAAI,GAAiBmG,GACvD/E,IAAW8B,EAAOlD,EAAI,EAAgB,GAAgBoB,GAAU0G,EAChEzG,IAAM6B,EAAOlD,EAAI,EAAgB,GAAWqB,GAAKyG,EACjDxG,IAAM4B,EAAOlD,EAAI,EAAgB,GAAWsB,GAAKwG,EACjD,MACJ,KAAK,EACD1G,EAAS8B,EAAOlD,EAAI,GACpBqB,EAAI6B,EAAOlD,EAAI,GACfsB,EAAI4B,EAAOlD,EAAI,GACf,MACJ,QACIoB,EAASvB,KAAK6F,eAAehF,EAAMV,EAAG,EAAckG,EAAY,GAChE7E,EAAIxB,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAqB,GAC3E5E,EAAIzB,KAAK6F,eAAehF,EAAMV,EAAG,EAASkG,EAAY,GAAyB,GAEvF,GAAIpF,GAASG,EAASqF,MAAO,CACzB,IAAIsB,EAAO6E,EAAW7E,KACtB6E,EAAWK,UAAYlF,EAAKkF,WAAa1L,EAASwG,EAAKkF,WAAajM,EACpE4L,EAAWM,KAAOnF,EAAKmF,MAAQ1L,EAAIuG,EAAKmF,MAAQlM,EAChD4L,EAAWO,KAAOpF,EAAKoF,MAAQ1L,EAAIsG,EAAKoF,MAAQnM,CACnD,MAEG4L,EAAWK,YAAc1L,EAASqL,EAAWK,WAAajM,EAC1D4L,EAAWM,OAAS1L,EAAIoL,EAAWM,MAAQlM,EAC3C4L,EAAWO,OAAS1L,EAAImL,EAAWO,MAAQnM,CAElD,EAGE,MAAM+M,UAAkC/H,EAG3CqG,gBAAkB,EAElB,WAAAvM,CAAYwD,EAAYW,EAAa+J,EAAwBC,GACzD/J,MAAMZ,EAAYW,EAAagK,EAAW,IAAMD,GAChDhO,KAAKqM,gBAAkB2B,CAC1B,CACD,KAAAtN,CAAMC,EAAUC,EAAUC,EAAMiK,EAAa9J,EAAOC,EAAOC,GACvD,IAAI0L,EACJ,IAA6B,GAAzB5M,KAAKqM,gBAAuB,CAC5B,MAAMzH,EAAQ/D,GAAQb,KAAKqD,OAAO,GAAKrD,KAAKmG,cAActF,GAAQ,EAClE,IAAK,MAAM+L,KAAcjM,EAASuN,mBAC1BtB,EAAW/E,QAAU7H,KAAKmO,OAAOvB,EAAW7E,OAC5C/H,KAAKuJ,IAAIqD,EAAY5M,KAAK6G,kBAAkBhG,EAAMG,EAAOC,EAAOjB,KAAKoO,IAAIxB,GAAa5M,KAAKyG,MAAMmG,GAAahI,GAEzH,MAEGgI,EAAajM,EAASuN,mBAAmBlO,KAAKqM,iBAC1CO,EAAW/E,QACX7H,KAAKuJ,IAAIqD,EAAY5M,KAAK4G,iBAAiB/F,EAAMG,EAAOC,EAAOjB,KAAKoO,IAAIxB,GAAa5M,KAAKyG,MAAMmG,IAE3G,EAGE,MAAMyB,UAAyCN,EAClD,WAAAjO,CAAYwD,EAAYW,EAAa+J,GACjC9J,MAAMZ,EAAYW,EAAa+J,EAAwB1M,EAASoB,yBACnE,CACD,KAAA+D,CAAMmG,GACF,OAAOA,EAAW7E,KAAKuG,OAC1B,CACD,GAAAF,CAAIxB,GACA,OAAOA,EAAW0B,OACrB,CACD,GAAA/E,CAAIqD,EAAYhI,GACZgI,EAAW0B,QAAU1J,CACxB,CACD,MAAAuJ,CAAOvB,GACH,OAAOA,EAAW2B,aACrB,EAGE,MAAMC,UAA0CT,EACnD,WAAAjO,CAAYwD,EAAYW,EAAa+J,GACjC9J,MAAMZ,EAAYW,EAAa+J,EAAwB1M,EAASqB,0BACnE,CACD,KAAA8D,CAAMmG,GACF,OAAOA,EAAW7E,KAAK0G,QAC1B,CACD,GAAAL,CAAIxB,GACA,OAAOA,EAAW6B,QACrB,CACD,GAAAlF,CAAIqD,EAAYhI,GACZgI,EAAW6B,SAAW7J,CACzB,CACD,MAAAuJ,CAAOvB,GACH,OAAOA,EAAW8B,cACrB,EAGE,MAAMC,UAAyCZ,EAClD,WAAAjO,CAAYwD,EAAYW,EAAa+J,GACjC9J,MAAMZ,EAAYW,EAAa+J,EAAwB1M,EAASsB,yBACnE,CACD,KAAA6D,CAAMmG,GACF,OAAOA,EAAW7E,KAAK6G,OAC1B,CACD,GAAAR,CAAIxB,GACA,OAAOA,EAAWgC,OACrB,CACD,GAAArF,CAAIqD,EAAYhI,GACZgI,EAAWgC,QAAUhK,CACxB,CACD,MAAAuJ,CAAOvB,GACH,OAAOA,EAAWiC,aACrB,EAGE,MAAMC,UAAsCf,EAC/C,WAAAjO,CAAYwD,EAAYW,EAAa+J,GACjC9J,MAAMZ,EAAYW,EAAa+J,EAAwB1M,EAASuB,sBACnE,CACD,KAAA4D,CAAMmG,GACF,OAAO,EAAIA,EAAW7E,KAAKgH,WAC9B,CACD,GAAAX,CAAIxB,GACA,OAAO,EAAIA,EAAWmC,WACzB,CACD,GAAAxF,CAAIqD,EAAYhI,GACZgI,EAAWmC,YAAc,EAAInK,CAChC,CACD,MAAAuJ,CAAOvB,GACH,OAAOA,EAAWoC,UACrB,EAGE,MAAMC,UAAsClB,EAC/C,WAAAjO,CAAYwD,EAAYW,EAAa+J,GACjC9J,MAAMZ,EAAYW,EAAa+J,EAAwB1M,EAASwB,sBACnE,CACD,KAAA2D,CAAMmG,GACF,OAAOA,EAAW7E,KAAKmH,IAC1B,CACD,GAAAd,CAAIxB,GACA,OAAOA,EAAWsC,IACrB,CACD,GAAA3F,CAAIqD,EAAYhI,GACZgI,EAAWsC,KAAOtK,CACrB,CACD,MAAAuJ,CAAOvB,GACH,OAAOA,EAAWuC,UACrB,EAGE,MAAMC,UAAyCrB,EAClD,WAAAjO,CAAYwD,EAAYW,EAAa+J,GACjC9J,MAAMZ,EAAYW,EAAa+J,EAAwB1M,EAASyB,yBACnE,CACD,KAAA0D,CAAMmG,GACF,OAAOA,EAAW7E,KAAKsH,OAC1B,CACD,GAAAjB,CAAIxB,GACA,OAAOA,EAAWyC,OACrB,CACD,GAAA9F,CAAIqD,EAAYhI,GACZgI,EAAWyC,QAAUzK,CACxB,CACD,MAAAuJ,CAAOvB,GACH,OAAOA,EAAW0C,aACrB,EAGE,MAAMC,UAAqCxB,EAC9C,WAAAjO,CAAYwD,EAAYW,EAAa+J,GACjC9J,MAAMZ,EAAYW,EAAa+J,EAAwB1M,EAAS0B,qBACnE,CACD,KAAAyD,CAAMmG,GACF,OAAOA,EAAW7E,KAAKwE,GAC1B,CACD,GAAA6B,CAAIxB,GACA,OAAOA,EAAWL,GACrB,CACD,GAAAhD,CAAIqD,EAAYhI,GACZgI,EAAWL,IAAM3H,CACpB,CACD,MAAAuJ,CAAOvB,GACH,OAAOA,EAAW4C,SACrB,EAGE,MAAMC,UAAuCtM,EAChDwI,mBAAqB,CAACrK,EAAS2B,uBAAuByM,YAGtDrD,gBAEA,WAAAvM,CAAYwD,EAAY0K,GACpB9J,MAAMZ,EAAYmM,EAA+BrM,aACjDpD,KAAKqM,gBAAkB2B,CAC1B,CACD,aAAAtK,GACI,OAAO1D,KAAKqD,OAAOjD,MACtB,CAGD,QAAA8F,CAAS9B,EAAOvD,GACZb,KAAKqD,OAAOe,GAASvD,CACxB,CAED,KAAAH,CAAMC,EAAUC,EAAUC,EAAMiK,EAAa9J,EAAOC,EAAOC,GACvD,IAAI0L,EACJ,IAA6B,GAAzB5M,KAAKqM,kBACLO,EAAajM,EAASuN,mBAAmBlO,KAAKqM,kBACzCO,EAAW/E,QACZ,OAER,MAAMxE,EAASrD,KAAKqD,OACpB,GAAIzC,EAAWC,EACXb,KAAKU,MAAMC,EAAUC,EAAUgL,OAAOC,UAAW,GAAI7K,EAAOC,EAAOC,GACnEN,GAAY,OAEX,GAAIA,GAAYyC,EAAOA,EAAOjD,OAAS,GACxC,OACJ,KAAIS,EAAOwC,EAAO,MAEdzC,EAAWyC,EAAO,IAAMxC,GAAQwC,EAAOF,EAASS,QAAQP,EAAQzC,GAAY,IAC5E,GAAkB,MAAdgM,EACAA,EAAW+C,aAEX,IAAK,MAAM/C,KAAcjM,EAASuN,mBAC1BtB,EAAW/E,QACX+E,EAAW+C,OAI9B,EAGE,MAAMC,UAAyBzM,EAClCwI,eAAiB,EACjBA,YAAc,EACdA,aAAe,EACf7C,UACA7G,WACA,WAAAnC,CAAYwD,EAAYwF,EAAW7G,GAC/BiC,MAAMZ,EAAY,CACdhC,EAAS4B,SAAW,IAAM4F,EAAY,IAAM7G,EAAWiB,SAAS0H,KAEpE5K,KAAK8I,UAAYA,EACjB9I,KAAKiC,WAAaA,CACrB,CACD,eAAAwB,GACI,OAAOmM,EAAiBC,OAC3B,CACD,YAAAC,GACI,OAAO9P,KAAK8I,SACf,CACD,aAAA2B,GACI,OAAOzK,KAAKiC,UACf,CAID,QAAAiE,CAAS9B,EAAOvD,EAAMkP,EAAMC,EAAOC,GAC/B,IAAI5M,EAASrD,KAAKqD,OAElBA,EADAe,GAASwL,EAAiBC,SACVhP,EAChBwC,EAAOe,EAAQwL,EAAiBM,MAAQH,EAAQC,GAAS,EACzD3M,EAAOe,EAAQwL,EAAiBO,OAASF,CAC5C,CACD,KAAAvP,CAAMC,EAAUC,EAAUC,EAAME,EAAQC,EAAOC,EAAOC,GAClD,IAAIiI,EAAOxI,EAASyI,MAAMpJ,KAAK8I,WAC/B,IAAKK,EAAKxB,KAAKE,OACX,OACJ,IAAIkD,EAAiB5B,EAAKlH,WACtBA,EAAajC,KAAKiC,WACtB,KAAI8I,GAAkB9I,GACZ8I,aAA0BC,GACzBD,EAAeE,oBAAsBhJ,GACxC,OAER,IAAIoB,EAASrD,KAAKqD,OAClB,GAAIxC,EAAOwC,EAAO,GAGd,YAFIpC,GAASG,EAASqF,OAASxF,GAASG,EAASsF,QAC7CyC,EAAKiH,eAAiB,IAG9B,IAAIjQ,EAAIgD,EAASU,OAAOR,EAAQxC,EAAM+O,EAAiBC,SACnDvJ,EAASjD,EAAOlD,GAChBkQ,EAAehN,EAAOlD,EAAIyP,EAAiBM,MAC3CD,EAAQ5M,EAAOlD,EAAIyP,EAAiBO,OACxC,IAAKnQ,KAAKiC,WAAWiB,SACjB,OACJ,IAAI8M,EAAQK,GAAgB,EAAGC,EAAQtQ,KAAKiC,WAAWiB,SAASqN,QAAQnQ,OACpE2P,EAAOS,EAAkC,GAAfH,GAC9B,GAAIN,GAAQU,EAAaC,KAErB,OADAV,IAAYnP,EAAOyF,GAAU2J,EAAQ,KAAW,EACxCF,GACJ,KAAKU,EAAaE,KACdX,EAAQ/I,KAAK2J,IAAIN,EAAQ,EAAGN,GAC5B,MACJ,KAAKS,EAAa3P,KACdkP,GAASM,EACT,MACJ,KAAKG,EAAaI,SAAU,CACxB,IAAI1P,GAAKmP,GAAS,GAAK,EACvBN,EAAa,GAAL7O,EAAS,EAAI6O,EAAQ7O,EACzB6O,GAASM,IACTN,EAAQ7O,EAAI6O,GAChB,KACH,CACD,KAAKS,EAAaK,YACdd,EAAQ/I,KAAK8J,IAAIT,EAAQ,EAAIN,EAAO,GACpC,MACJ,KAAKS,EAAaO,YACdhB,EAAQM,EAAQ,EAAKN,EAAQM,EAC7B,MACJ,KAAKG,EAAaQ,gBAAiB,CAC/B,IAAI9P,GAAKmP,GAAS,GAAK,EACvBN,EAAa,GAAL7O,EAAS,GAAK6O,EAAQM,EAAQ,GAAKnP,EACvC6O,GAASM,IACTN,EAAQ7O,EAAI6O,EACnB,EAGT7G,EAAKiH,cAAgBJ,CACxB"}