@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 木鳐 <zhubei.zb@antgroup.com> (Ant Financial)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,79 @@
1
+
2
+
3
+ # Galacean Engine spine runtime
4
+ ![Jun-12-2021 18-37-22.gif](https://gw.alipayobjects.com/mdn/mybank_yul/afts/img/A*am1ySYTDBQAAAAAAAAAAAAAAARQnAQ)
5
+
6
+
7
+ ![](https://img.shields.io/npm/v/@galacean/engine-spine#id=QfHW0&originHeight=20&originWidth=80&originalType=binary&ratio=1&status=done&style=none)
8
+ ![](https://img.shields.io/bundlephobia/minzip/@galacean/engine-spine#id=yUnp4&originHeight=20&originWidth=144&originalType=binary&ratio=1&status=done&style=none)
9
+ ![](https://img.shields.io/npm/dm/@galacean/engine-spine#id=lqs8U&originHeight=20&originWidth=134&originalType=binary&ratio=1&status=done&style=none)
10
+
11
+ ---
12
+
13
+
14
+
15
+ Spine runtime for [Galacean engine](https://github.com/galacean/engine).
16
+ ##
17
+ ## Usage
18
+
19
+
20
+ ```typescript
21
+ import { SpineAnimation } from '@galacean/engine-spine';
22
+
23
+ // init oasis
24
+ addSpine();
25
+
26
+ async function addSpine() {
27
+ const spineEntity = await engine.resourceManager.load(
28
+ {
29
+ url: 'https://sbfkcel.github.io/pixi-spine-debug/assets/spine/spineboy-pro.json',
30
+ type: 'spine',
31
+ },
32
+ );
33
+ rootEntity.addChild(spineEntity);
34
+ const spineAnimation = spineEntity.getComponent(SpineAnimation);
35
+ spineAnimation.state.setAnimation(0, 'walk', true);
36
+ }
37
+ ```
38
+
39
+
40
+ ## npm
41
+ ```sh
42
+ npm install @galacean/engine-spine
43
+ ```
44
+
45
+
46
+
47
+
48
+ ## Version
49
+ @galacean/engine-spine currently only supports spine version 3.8
50
+
51
+
52
+ ## Feature
53
+
54
+ - Simple in usage
55
+ - High performance.
56
+ - Intergrated with galacean engine.
57
+ - Component based API.
58
+
59
+
60
+
61
+ ## Contributing
62
+ Everyone is welcome to join us! Whether you find a bug, have a great feature request or you fancy owning a task from the road map feel free to get in touch.
63
+
64
+
65
+ Make sure to read the [Contributing Guide](.github/HOW_TO_CONTRIBUTE.md) before submitting changes.
66
+
67
+
68
+ ## Links
69
+
70
+ - [Examples](https://oasisengine.cn/#/examples/latest/spine-animation)
71
+ - [Documentation](https://oasisengine.cn/#/docs/latest/cn/spine)
72
+ - [GalaceanEngine](https://oasisengine.cn/)
73
+
74
+
75
+
76
+ ## License
77
+
78
+
79
+ The Oasis Engine is released under the [MIT](https://opensource.org/licenses/MIT) license. See LICENSE file.
@@ -0,0 +1 @@
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@galacean/engine")):"function"==typeof define&&define.amd?define(["exports","@galacean/engine"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).Galacean=t.Galacean||{},t.Galacean.Spine={}),t.Galacean)}(this,(function(t,e){"use strict";function s(t,e,s,i){var n,r=arguments.length,a=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,s,i);else for(var o=t.length-1;o>=0;o--)(n=t[o])&&(a=(r<3?n(a):r>3?n(e,s,a):n(e,s))||a);return r>3&&a&&Object.defineProperty(e,s,a),a}"function"==typeof SuppressedError&&SuppressedError;class i{entries={};size=0;add(t){let e=this.entries[t];return this.entries[t]=!0,!e&&(this.size++,!0)}addAll(t){let e=this.size;for(var s=0,i=t.length;s<i;s++)this.add(t[s]);return e!=this.size}contains(t){return this.entries[t]}clear(){this.entries={},this.size=0}}class n{r;g;b;a;static WHITE=new n(1,1,1,1);static RED=new n(1,0,0,1);static GREEN=new n(0,1,0,1);static BLUE=new n(0,0,1,1);static MAGENTA=new n(1,0,1,1);constructor(t=0,e=0,s=0,i=0){this.r=t,this.g=e,this.b=s,this.a=i}set(t,e,s,i){return this.r=t,this.g=e,this.b=s,this.a=i,this.clamp()}setFromColor(t){return this.r=t.r,this.g=t.g,this.b=t.b,this.a=t.a,this}setFromString(t){return t="#"==t.charAt(0)?t.substr(1):t,this.r=parseInt(t.substr(0,2),16)/255,this.g=parseInt(t.substr(2,2),16)/255,this.b=parseInt(t.substr(4,2),16)/255,this.a=8!=t.length?1:parseInt(t.substr(6,2),16)/255,this}add(t,e,s,i){return this.r+=t,this.g+=e,this.b+=s,this.a+=i,this.clamp()}clamp(){return this.r<0?this.r=0:this.r>1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(t,e){t.r=((4278190080&e)>>>24)/255,t.g=((16711680&e)>>>16)/255,t.b=((65280&e)>>>8)/255,t.a=(255&e)/255}static rgb888ToColor(t,e){t.r=((16711680&e)>>>16)/255,t.g=((65280&e)>>>8)/255,t.b=(255&e)/255}toRgb888(){const t=t=>("0"+(255*t).toString(16)).slice(-2);return Number("0x"+t(this.r)+t(this.g)+t(this.b))}static fromString(t){return(new n).setFromString(t)}}class r{static PI=3.1415927;static PI2=2*r.PI;static invPI2=1/r.PI2;static radiansToDegrees=180/r.PI;static radDeg=r.radiansToDegrees;static degreesToRadians=r.PI/180;static degRad=r.degreesToRadians;static clamp(t,e,s){return t<e?e:t>s?s:t}static cosDeg(t){return Math.cos(t*r.degRad)}static sinDeg(t){return Math.sin(t*r.degRad)}static atan2Deg(t,e){return Math.atan2(t,e)*r.degRad}static signum(t){return t>0?1:t<0?-1:0}static toInt(t){return t>0?Math.floor(t):Math.ceil(t)}static cbrt(t){let e=Math.pow(Math.abs(t),1/3);return t<0?-e:e}static randomTriangular(t,e){return r.randomTriangularWith(t,e,.5*(t+e))}static randomTriangularWith(t,e,s){let i=Math.random(),n=e-t;return i<=(s-t)/n?t+Math.sqrt(i*n*(s-t)):e-Math.sqrt((1-i)*n*(e-s))}static isPowerOfTwo(t){return t&&!(t&t-1)}}class a{apply(t,e,s){return t+(e-t)*this.applyInternal(s)}}class o extends a{power=2;constructor(t){super(),this.power=t}applyInternal(t){return t<=.5?Math.pow(2*t,this.power)/2:Math.pow(2*(t-1),this.power)/(this.power%2==0?-2:2)+1}}class l{static SUPPORTS_TYPED_ARRAYS="undefined"!=typeof Float32Array;static arrayCopy(t,e,s,i,n){for(let r=e,a=i;r<e+n;r++,a++)s[a]=t[r]}static arrayFill(t,e,s,i){for(let n=e;n<s;n++)t[n]=i}static setArraySize(t,e,s=0){let i=t.length;if(i==e)return t;if(t.length=e,i<e)for(let n=i;n<e;n++)t[n]=s;return t}static ensureArrayCapacity(t,e,s=0){return t.length>=e?t:l.setArraySize(t,e,s)}static newArray(t,e){let s=new Array(t);for(let i=0;i<t;i++)s[i]=e;return s}static newFloatArray(t){if(l.SUPPORTS_TYPED_ARRAYS)return new Float32Array(t);{let e=new Array(t);for(let t=0;t<e.length;t++)e[t]=0;return e}}static newShortArray(t){if(l.SUPPORTS_TYPED_ARRAYS)return new Int16Array(t);{let e=new Array(t);for(let t=0;t<e.length;t++)e[t]=0;return e}}static toFloatArray(t){return l.SUPPORTS_TYPED_ARRAYS?new Float32Array(t):t}static toSinglePrecision(t){return l.SUPPORTS_TYPED_ARRAYS?Math.fround(t):t}static webkit602BugfixHelper(t,e){}static contains(t,e,s=!0){for(var i=0;i<t.length;i++)if(t[i]==e)return!0;return!1}static enumValue(t,e){return t[e[0].toUpperCase()+e.slice(1)]}}class h{items=new Array;instantiator;constructor(t){this.instantiator=t}obtain(){return this.items.length>0?this.items.pop():this.instantiator()}free(t){t.reset&&t.reset(),this.items.push(t)}freeAll(t){for(let e=0;e<t.length;e++)this.free(t[e])}clear(){this.items.length=0}}class c{x;y;constructor(t=0,e=0){this.x=t,this.y=e}set(t,e){return this.x=t,this.y=e,this}length(){let t=this.x,e=this.y;return Math.sqrt(t*t+e*e)}normalize(){let t=this.length();return 0!=t&&(this.x/=t,this.y/=t),this}}class d{name;constructor(t){if(!t)throw new Error("name cannot be null.");this.name=t}}class u extends d{static nextID=0;id=u.nextID++;bones=null;vertices=[];worldVerticesLength=0;timelineAttachment=this;constructor(t){super(t)}computeWorldVertices(t,e,s,i,n,r){s=n+(s>>1)*r;let a=t.bone.skeleton,o=t.deform,l=this.vertices,h=this.bones;if(!h){o.length>0&&(l=o);let a=t.bone,h=a.worldX,c=a.worldY,d=a.a,u=a.b,f=a.c,m=a.d;for(let t=e,a=n;a<s;t+=2,a+=r){let e=l[t],s=l[t+1];i[a]=e*d+s*u+h,i[a+1]=e*f+s*m+c}return}let c=0,d=0;for(let t=0;t<e;t+=2){let t=h[c];c+=t+1,d+=t}let u=a.bones;if(0==o.length)for(let t=n,e=3*d;t<s;t+=r){let s=0,n=0,r=h[c++];for(r+=c;c<r;c++,e+=3){let t=u[h[c]],i=l[e],r=l[e+1],a=l[e+2];s+=(i*t.a+r*t.b+t.worldX)*a,n+=(i*t.c+r*t.d+t.worldY)*a}i[t]=s,i[t+1]=n}else{let t=o;for(let e=n,a=3*d,o=d<<1;e<s;e+=r){let s=0,n=0,r=h[c++];for(r+=c;c<r;c++,a+=3,o+=2){let e=u[h[c]],i=l[a]+t[o],r=l[a+1]+t[o+1],d=l[a+2];s+=(i*e.a+r*e.b+e.worldX)*d,n+=(i*e.c+r*e.d+e.worldY)*d}i[e]=s,i[e+1]=n}}}copyTo(t){this.bones?(t.bones=new Array(this.bones.length),l.arrayCopy(this.bones,0,t.bones,0,this.bones.length)):t.bones=null,this.vertices&&(t.vertices=l.newFloatArray(this.vertices.length),l.arrayCopy(this.vertices,0,t.vertices,0,this.vertices.length)),t.worldVerticesLength=this.worldVerticesLength,t.timelineAttachment=this.timelineAttachment}}class f{static _nextID=0;id=f.nextID();regions;start=0;digits=0;setupIndex=0;constructor(t){this.regions=new Array(t)}copy(){let t=new f(this.regions.length);return l.arrayCopy(this.regions,0,t.regions,0,this.regions.length),t.start=this.start,t.digits=this.digits,t.setupIndex=this.setupIndex,t}apply(t,e){let s=t.sequenceIndex;-1==s&&(s=this.setupIndex),s>=this.regions.length&&(s=this.regions.length-1);let i=this.regions[s];e.region!=i&&(e.region=i,e.updateRegion())}getPath(t,e){let s=t,i=(this.start+e).toString();for(let t=this.digits-i.length;t>0;t--)s+="0";return s+=i,s}static nextID(){return f._nextID++}}var m;!function(t){t[t.hold=0]="hold",t[t.once=1]="once",t[t.loop=2]="loop",t[t.pingpong=3]="pingpong",t[t.onceReverse=4]="onceReverse",t[t.loopReverse=5]="loopReverse",t[t.pingpongReverse=6]="pingpongReverse"}(m||(m={}));const g=[m.hold,m.once,m.loop,m.pingpong,m.onceReverse,m.loopReverse,m.pingpongReverse];class p{name;timelines=[];timelineIds=new i;duration;constructor(t,e,s){if(!t)throw new Error("name cannot be null.");this.name=t,this.setTimelines(e),this.duration=s}setTimelines(t){if(!t)throw new Error("timelines cannot be null.");this.timelines=t,this.timelineIds.clear();for(var e=0;e<t.length;e++)this.timelineIds.addAll(t[e].getPropertyIds())}hasTimeline(t){for(let e=0;e<t.length;e++)if(this.timelineIds.contains(t[e]))return!0;return!1}apply(t,e,s,i,n,r,a,o){if(!t)throw new Error("skeleton cannot be null.");i&&0!=this.duration&&(s%=this.duration,e>0&&(e%=this.duration));let l=this.timelines;for(let i=0,h=l.length;i<h;i++)l[i].apply(t,e,s,n,r,a,o)}}var x,w;t.MixBlend=void 0,(x=t.MixBlend||(t.MixBlend={}))[x.setup=0]="setup",x[x.first=1]="first",x[x.replace=2]="replace",x[x.add=3]="add",t.MixDirection=void 0,(w=t.MixDirection||(t.MixDirection={}))[w.mixIn=0]="mixIn",w[w.mixOut=1]="mixOut";const b={rotate:0,x:1,y:2,scaleX:3,scaleY:4,shearX:5,shearY:6,inherit:7,rgb:8,alpha:9,rgb2:10,attachment:11,deform:12,event:13,drawOrder:14,ikConstraint:15,transformConstraint:16,pathConstraintPosition:17,pathConstraintSpacing:18,pathConstraintMix:19,physicsConstraintInertia:20,physicsConstraintStrength:21,physicsConstraintDamping:22,physicsConstraintMass:23,physicsConstraintWind:24,physicsConstraintGravity:25,physicsConstraintMix:26,physicsConstraintReset:27,sequence:28};class y{propertyIds;frames;constructor(t,e){this.propertyIds=e,this.frames=l.newFloatArray(t*this.getFrameEntries())}getPropertyIds(){return this.propertyIds}getFrameEntries(){return 1}getFrameCount(){return this.frames.length/this.getFrameEntries()}getDuration(){return this.frames[this.frames.length-this.getFrameEntries()]}static search1(t,e){let s=t.length;for(let i=1;i<s;i++)if(t[i]>e)return i-1;return s-1}static search(t,e,s){let i=t.length;for(let n=s;n<i;n+=s)if(t[n]>e)return n-s;return i-s}}class M extends y{curves;constructor(t,e,s){super(t,s),this.curves=l.newFloatArray(t+18*e),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){let e=this.getFrameCount()+18*t;if(this.curves.length>e){let t=l.newFloatArray(e);l.arrayCopy(this.curves,0,t,0,e),this.curves=t}}setBezier(t,e,s,i,n,r,a,o,l,h,c){let d=this.curves,u=this.getFrameCount()+18*t;0==s&&(d[e]=2+u);let f=.03*(i-2*r+o),m=.03*(n-2*a+l),g=.006*(3*(r-o)-i+h),p=.006*(3*(a-l)-n+c),x=2*f+g,w=2*m+p,b=.3*(r-i)+f+.16666667*g,y=.3*(a-n)+m+.16666667*p,M=i+b,v=n+y;for(let t=u+18;u<t;u+=2)d[u]=M,d[u+1]=v,b+=x,y+=w,x+=g,w+=p,M+=b,v+=y}getBezierValue(t,e,s,i){let n=this.curves;if(n[i]>t){let r=this.frames[e],a=this.frames[e+s];return a+(t-r)/(n[i]-r)*(n[i+1]-a)}let r=i+18;for(i+=2;i<r;i+=2)if(n[i]>=t){let e=n[i-2],s=n[i-1];return s+(t-e)/(n[i]-e)*(n[i+1]-s)}e+=this.getFrameEntries();let a=n[r-2],o=n[r-1];return o+(t-a)/(this.frames[e]-a)*(this.frames[e+s]-o)}}class v extends M{constructor(t,e,s){super(t,e,[s])}getFrameEntries(){return 2}setFrame(t,e,s){t<<=1,this.frames[t]=e,this.frames[t+1]=s}getCurveValue(t){let e=this.frames,s=e.length-2;for(let i=2;i<=s;i+=2)if(e[i]>t){s=i-2;break}let i=this.curves[s>>1];switch(i){case 0:let i=e[s],n=e[s+1];return n+(t-i)/(e[s+2]-i)*(e[s+2+1]-n);case 1:return e[s+1]}return this.getBezierValue(t,s,1,i-2)}getRelativeValue(e,s,i,n,r){if(e<this.frames[0]){switch(i){case t.MixBlend.setup:return r;case t.MixBlend.first:return n+(r-n)*s}return n}let a=this.getCurveValue(e);switch(i){case t.MixBlend.setup:return r+a*s;case t.MixBlend.first:case t.MixBlend.replace:a+=r-n}return n+a*s}getAbsoluteValue(e,s,i,n,r){if(e<this.frames[0]){switch(i){case t.MixBlend.setup:return r;case t.MixBlend.first:return n+(r-n)*s}return n}let a=this.getCurveValue(e);return i==t.MixBlend.setup?r+(a-r)*s:n+(a-n)*s}getAbsoluteValue2(e,s,i,n,r,a){if(e<this.frames[0]){switch(i){case t.MixBlend.setup:return r;case t.MixBlend.first:return n+(r-n)*s}return n}return i==t.MixBlend.setup?r+(a-r)*s:n+(a-n)*s}getScaleValue(e,s,i,n,a,o){if(e<this.frames[0]){switch(i){case t.MixBlend.setup:return o;case t.MixBlend.first:return a+(o-a)*s}return a}let l=this.getCurveValue(e)*o;if(1==s)return i==t.MixBlend.add?a+l-o:l;if(n==t.MixDirection.mixOut)switch(i){case t.MixBlend.setup:return o+(Math.abs(l)*r.signum(o)-o)*s;case t.MixBlend.first:case t.MixBlend.replace:return a+(Math.abs(l)*r.signum(a)-a)*s}else{let e=0;switch(i){case t.MixBlend.setup:return e=Math.abs(o)*r.signum(l),e+(l-e)*s;case t.MixBlend.first:case t.MixBlend.replace:return e=Math.abs(a)*r.signum(l),e+(l-e)*s}}return a+(l-o)*s}}class S extends M{constructor(t,e,s,i){super(t,e,[s,i])}getFrameEntries(){return 3}setFrame(t,e,s,i){t*=3,this.frames[t]=e,this.frames[t+1]=s,this.frames[t+2]=i}}class k extends v{boneIndex=0;constructor(t,e,s){super(t,e,b.rotate+"|"+s),this.boneIndex=s}apply(t,e,s,i,n,r,a){let o=t.bones[this.boneIndex];o.active&&(o.rotation=this.getRelativeValue(s,n,r,o.rotation,o.data.rotation))}}class I extends S{boneIndex=0;constructor(t,e,s){super(t,e,b.x+"|"+s,b.y+"|"+s),this.boneIndex=s}apply(e,s,i,n,r,a,o){let l=e.bones[this.boneIndex];if(!l.active)return;let h=this.frames;if(i<h[0]){switch(a){case t.MixBlend.setup:return l.x=l.data.x,void(l.y=l.data.y);case t.MixBlend.first:l.x+=(l.data.x-l.x)*r,l.y+=(l.data.y-l.y)*r}return}let c=0,d=0,u=y.search(h,i,3),f=this.curves[u/3];switch(f){case 0:let t=h[u];c=h[u+1],d=h[u+2];let e=(i-t)/(h[u+3]-t);c+=(h[u+3+1]-c)*e,d+=(h[u+3+2]-d)*e;break;case 1:c=h[u+1],d=h[u+2];break;default:c=this.getBezierValue(i,u,1,f-2),d=this.getBezierValue(i,u,2,f+18-2)}switch(a){case t.MixBlend.setup:l.x=l.data.x+c*r,l.y=l.data.y+d*r;break;case t.MixBlend.first:case t.MixBlend.replace:l.x+=(l.data.x+c-l.x)*r,l.y+=(l.data.y+d-l.y)*r;break;case t.MixBlend.add:l.x+=c*r,l.y+=d*r}}}class A extends v{boneIndex=0;constructor(t,e,s){super(t,e,b.x+"|"+s),this.boneIndex=s}apply(t,e,s,i,n,r,a){let o=t.bones[this.boneIndex];o.active&&(o.x=this.getRelativeValue(s,n,r,o.x,o.data.x))}}class B extends v{boneIndex=0;constructor(t,e,s){super(t,e,b.y+"|"+s),this.boneIndex=s}apply(t,e,s,i,n,r,a){let o=t.bones[this.boneIndex];o.active&&(o.y=this.getRelativeValue(s,n,r,o.y,o.data.y))}}class T extends S{boneIndex=0;constructor(t,e,s){super(t,e,b.scaleX+"|"+s,b.scaleY+"|"+s),this.boneIndex=s}apply(e,s,i,n,a,o,l){let h=e.bones[this.boneIndex];if(!h.active)return;let c,d,u=this.frames;if(i<u[0]){switch(o){case t.MixBlend.setup:return h.scaleX=h.data.scaleX,void(h.scaleY=h.data.scaleY);case t.MixBlend.first:h.scaleX+=(h.data.scaleX-h.scaleX)*a,h.scaleY+=(h.data.scaleY-h.scaleY)*a}return}let f=y.search(u,i,3),m=this.curves[f/3];switch(m){case 0:let t=u[f];c=u[f+1],d=u[f+2];let e=(i-t)/(u[f+3]-t);c+=(u[f+3+1]-c)*e,d+=(u[f+3+2]-d)*e;break;case 1:c=u[f+1],d=u[f+2];break;default:c=this.getBezierValue(i,f,1,m-2),d=this.getBezierValue(i,f,2,m+18-2)}if(c*=h.data.scaleX,d*=h.data.scaleY,1==a)o==t.MixBlend.add?(h.scaleX+=c-h.data.scaleX,h.scaleY+=d-h.data.scaleY):(h.scaleX=c,h.scaleY=d);else{let e=0,s=0;if(l==t.MixDirection.mixOut)switch(o){case t.MixBlend.setup:e=h.data.scaleX,s=h.data.scaleY,h.scaleX=e+(Math.abs(c)*r.signum(e)-e)*a,h.scaleY=s+(Math.abs(d)*r.signum(s)-s)*a;break;case t.MixBlend.first:case t.MixBlend.replace:e=h.scaleX,s=h.scaleY,h.scaleX=e+(Math.abs(c)*r.signum(e)-e)*a,h.scaleY=s+(Math.abs(d)*r.signum(s)-s)*a;break;case t.MixBlend.add:h.scaleX+=(c-h.data.scaleX)*a,h.scaleY+=(d-h.data.scaleY)*a}else switch(o){case t.MixBlend.setup:e=Math.abs(h.data.scaleX)*r.signum(c),s=Math.abs(h.data.scaleY)*r.signum(d),h.scaleX=e+(c-e)*a,h.scaleY=s+(d-s)*a;break;case t.MixBlend.first:case t.MixBlend.replace:e=Math.abs(h.scaleX)*r.signum(c),s=Math.abs(h.scaleY)*r.signum(d),h.scaleX=e+(c-e)*a,h.scaleY=s+(d-s)*a;break;case t.MixBlend.add:h.scaleX+=(c-h.data.scaleX)*a,h.scaleY+=(d-h.data.scaleY)*a}}}}class C extends v{boneIndex=0;constructor(t,e,s){super(t,e,b.scaleX+"|"+s),this.boneIndex=s}apply(t,e,s,i,n,r,a){let o=t.bones[this.boneIndex];o.active&&(o.scaleX=this.getScaleValue(s,n,r,a,o.scaleX,o.data.scaleX))}}class F extends v{boneIndex=0;constructor(t,e,s){super(t,e,b.scaleY+"|"+s),this.boneIndex=s}apply(t,e,s,i,n,r,a){let o=t.bones[this.boneIndex];o.active&&(o.scaleY=this.getScaleValue(s,n,r,a,o.scaleY,o.data.scaleY))}}class E extends S{boneIndex=0;constructor(t,e,s){super(t,e,b.shearX+"|"+s,b.shearY+"|"+s),this.boneIndex=s}apply(e,s,i,n,r,a,o){let l=e.bones[this.boneIndex];if(!l.active)return;let h=this.frames;if(i<h[0]){switch(a){case t.MixBlend.setup:return l.shearX=l.data.shearX,void(l.shearY=l.data.shearY);case t.MixBlend.first:l.shearX+=(l.data.shearX-l.shearX)*r,l.shearY+=(l.data.shearY-l.shearY)*r}return}let c=0,d=0,u=y.search(h,i,3),f=this.curves[u/3];switch(f){case 0:let t=h[u];c=h[u+1],d=h[u+2];let e=(i-t)/(h[u+3]-t);c+=(h[u+3+1]-c)*e,d+=(h[u+3+2]-d)*e;break;case 1:c=h[u+1],d=h[u+2];break;default:c=this.getBezierValue(i,u,1,f-2),d=this.getBezierValue(i,u,2,f+18-2)}switch(a){case t.MixBlend.setup:l.shearX=l.data.shearX+c*r,l.shearY=l.data.shearY+d*r;break;case t.MixBlend.first:case t.MixBlend.replace:l.shearX+=(l.data.shearX+c-l.shearX)*r,l.shearY+=(l.data.shearY+d-l.shearY)*r;break;case t.MixBlend.add:l.shearX+=c*r,l.shearY+=d*r}}}class R extends v{boneIndex=0;constructor(t,e,s){super(t,e,b.shearX+"|"+s),this.boneIndex=s}apply(t,e,s,i,n,r,a){let o=t.bones[this.boneIndex];o.active&&(o.shearX=this.getRelativeValue(s,n,r,o.shearX,o.data.shearX))}}class Y extends v{boneIndex=0;constructor(t,e,s){super(t,e,b.shearY+"|"+s),this.boneIndex=s}apply(t,e,s,i,n,r,a){let o=t.bones[this.boneIndex];o.active&&(o.shearY=this.getRelativeValue(s,n,r,o.shearY,o.data.shearY))}}class P extends y{boneIndex=0;constructor(t,e){super(t,[b.inherit+"|"+e]),this.boneIndex=e}getFrameEntries(){return 2}setFrame(t,e,s){t*=2,this.frames[t]=e,this.frames[t+1]=s}apply(e,s,i,n,r,a,o){let l=e.bones[this.boneIndex];if(!l.active)return;let h=this.frames;i<h[0]?a!=t.MixBlend.setup&&a!=t.MixBlend.first||(l.inherit=l.data.inherit):l.inherit=this.frames[y.search(h,i,2)+1]}}class X extends M{slotIndex=0;constructor(t,e,s){super(t,e,[b.rgb+"|"+s,b.alpha+"|"+s]),this.slotIndex=s}getFrameEntries(){return 5}setFrame(t,e,s,i,n,r){t*=5,this.frames[t]=e,this.frames[t+1]=s,this.frames[t+2]=i,this.frames[t+3]=n,this.frames[t+4]=r}apply(e,s,i,n,r,a,o){let l=e.slots[this.slotIndex];if(!l.bone.active)return;let h=this.frames,c=l.color;if(i<h[0]){let e=l.data.color;switch(a){case t.MixBlend.setup:return void c.setFromColor(e);case t.MixBlend.first:c.add((e.r-c.r)*r,(e.g-c.g)*r,(e.b-c.b)*r,(e.a-c.a)*r)}return}let d=0,u=0,f=0,m=0,g=y.search(h,i,5),p=this.curves[g/5];switch(p){case 0:let t=h[g];d=h[g+1],u=h[g+2],f=h[g+3],m=h[g+4];let e=(i-t)/(h[g+5]-t);d+=(h[g+5+1]-d)*e,u+=(h[g+5+2]-u)*e,f+=(h[g+5+3]-f)*e,m+=(h[g+5+4]-m)*e;break;case 1:d=h[g+1],u=h[g+2],f=h[g+3],m=h[g+4];break;default:d=this.getBezierValue(i,g,1,p-2),u=this.getBezierValue(i,g,2,p+18-2),f=this.getBezierValue(i,g,3,p+36-2),m=this.getBezierValue(i,g,4,p+54-2)}1==r?c.set(d,u,f,m):(a==t.MixBlend.setup&&c.setFromColor(l.data.color),c.add((d-c.r)*r,(u-c.g)*r,(f-c.b)*r,(m-c.a)*r))}}class _ extends M{slotIndex=0;constructor(t,e,s){super(t,e,[b.rgb+"|"+s]),this.slotIndex=s}getFrameEntries(){return 4}setFrame(t,e,s,i,n){t<<=2,this.frames[t]=e,this.frames[t+1]=s,this.frames[t+2]=i,this.frames[t+3]=n}apply(e,s,i,n,r,a,o){let l=e.slots[this.slotIndex];if(!l.bone.active)return;let h=this.frames,c=l.color;if(i<h[0]){let e=l.data.color;switch(a){case t.MixBlend.setup:return c.r=e.r,c.g=e.g,void(c.b=e.b);case t.MixBlend.first:c.r+=(e.r-c.r)*r,c.g+=(e.g-c.g)*r,c.b+=(e.b-c.b)*r}return}let d=0,u=0,f=0,m=y.search(h,i,4),g=this.curves[m>>2];switch(g){case 0:let t=h[m];d=h[m+1],u=h[m+2],f=h[m+3];let e=(i-t)/(h[m+4]-t);d+=(h[m+4+1]-d)*e,u+=(h[m+4+2]-u)*e,f+=(h[m+4+3]-f)*e;break;case 1:d=h[m+1],u=h[m+2],f=h[m+3];break;default:d=this.getBezierValue(i,m,1,g-2),u=this.getBezierValue(i,m,2,g+18-2),f=this.getBezierValue(i,m,3,g+36-2)}if(1==r)c.r=d,c.g=u,c.b=f;else{if(a==t.MixBlend.setup){let t=l.data.color;c.r=t.r,c.g=t.g,c.b=t.b}c.r+=(d-c.r)*r,c.g+=(u-c.g)*r,c.b+=(f-c.b)*r}}}class V extends v{slotIndex=0;constructor(t,e,s){super(t,e,b.alpha+"|"+s),this.slotIndex=s}apply(e,s,i,n,r,a,o){let l=e.slots[this.slotIndex];if(!l.bone.active)return;let h=l.color;if(i<this.frames[0]){let e=l.data.color;switch(a){case t.MixBlend.setup:return void(h.a=e.a);case t.MixBlend.first:h.a+=(e.a-h.a)*r}return}let c=this.getCurveValue(i);1==r?h.a=c:(a==t.MixBlend.setup&&(h.a=l.data.color.a),h.a+=(c-h.a)*r)}}class D extends M{slotIndex=0;constructor(t,e,s){super(t,e,[b.rgb+"|"+s,b.alpha+"|"+s,b.rgb2+"|"+s]),this.slotIndex=s}getFrameEntries(){return 8}setFrame(t,e,s,i,n,r,a,o,l){t<<=3,this.frames[t]=e,this.frames[t+1]=s,this.frames[t+2]=i,this.frames[t+3]=n,this.frames[t+4]=r,this.frames[t+5]=a,this.frames[t+6]=o,this.frames[t+7]=l}apply(e,s,i,n,r,a,o){let l=e.slots[this.slotIndex];if(!l.bone.active)return;let h=this.frames,c=l.color,d=l.darkColor;if(i<h[0]){let e=l.data.color,s=l.data.darkColor;switch(a){case t.MixBlend.setup:return c.setFromColor(e),d.r=s.r,d.g=s.g,void(d.b=s.b);case t.MixBlend.first:c.add((e.r-c.r)*r,(e.g-c.g)*r,(e.b-c.b)*r,(e.a-c.a)*r),d.r+=(s.r-d.r)*r,d.g+=(s.g-d.g)*r,d.b+=(s.b-d.b)*r}return}let u=0,f=0,m=0,g=0,p=0,x=0,w=0,b=y.search(h,i,8),M=this.curves[b>>3];switch(M){case 0:let t=h[b];u=h[b+1],f=h[b+2],m=h[b+3],g=h[b+4],p=h[b+5],x=h[b+6],w=h[b+7];let e=(i-t)/(h[b+8]-t);u+=(h[b+8+1]-u)*e,f+=(h[b+8+2]-f)*e,m+=(h[b+8+3]-m)*e,g+=(h[b+8+4]-g)*e,p+=(h[b+8+5]-p)*e,x+=(h[b+8+6]-x)*e,w+=(h[b+8+7]-w)*e;break;case 1:u=h[b+1],f=h[b+2],m=h[b+3],g=h[b+4],p=h[b+5],x=h[b+6],w=h[b+7];break;default:u=this.getBezierValue(i,b,1,M-2),f=this.getBezierValue(i,b,2,M+18-2),m=this.getBezierValue(i,b,3,M+36-2),g=this.getBezierValue(i,b,4,M+54-2),p=this.getBezierValue(i,b,5,M+72-2),x=this.getBezierValue(i,b,6,M+90-2),w=this.getBezierValue(i,b,7,M+108-2)}if(1==r)c.set(u,f,m,g),d.r=p,d.g=x,d.b=w;else{if(a==t.MixBlend.setup){c.setFromColor(l.data.color);let t=l.data.darkColor;d.r=t.r,d.g=t.g,d.b=t.b}c.add((u-c.r)*r,(f-c.g)*r,(m-c.b)*r,(g-c.a)*r),d.r+=(p-d.r)*r,d.g+=(x-d.g)*r,d.b+=(w-d.b)*r}}}class O extends M{slotIndex=0;constructor(t,e,s){super(t,e,[b.rgb+"|"+s,b.rgb2+"|"+s]),this.slotIndex=s}getFrameEntries(){return 7}setFrame(t,e,s,i,n,r,a,o){t*=7,this.frames[t]=e,this.frames[t+1]=s,this.frames[t+2]=i,this.frames[t+3]=n,this.frames[t+4]=r,this.frames[t+5]=a,this.frames[t+6]=o}apply(e,s,i,n,r,a,o){let l=e.slots[this.slotIndex];if(!l.bone.active)return;let h=this.frames,c=l.color,d=l.darkColor;if(i<h[0]){let e=l.data.color,s=l.data.darkColor;switch(a){case t.MixBlend.setup:return c.r=e.r,c.g=e.g,c.b=e.b,d.r=s.r,d.g=s.g,void(d.b=s.b);case t.MixBlend.first:c.r+=(e.r-c.r)*r,c.g+=(e.g-c.g)*r,c.b+=(e.b-c.b)*r,d.r+=(s.r-d.r)*r,d.g+=(s.g-d.g)*r,d.b+=(s.b-d.b)*r}return}let u=0,f=0,m=0,g=0,p=0,x=0,w=y.search(h,i,7),b=this.curves[w/7];switch(b){case 0:let t=h[w];u=h[w+1],f=h[w+2],m=h[w+3],g=h[w+4],p=h[w+5],x=h[w+6];let e=(i-t)/(h[w+7]-t);u+=(h[w+7+1]-u)*e,f+=(h[w+7+2]-f)*e,m+=(h[w+7+3]-m)*e,g+=(h[w+7+4]-g)*e,p+=(h[w+7+5]-p)*e,x+=(h[w+7+6]-x)*e;break;case 1:u=h[w+1],f=h[w+2],m=h[w+3],g=h[w+4],p=h[w+5],x=h[w+6];break;default:u=this.getBezierValue(i,w,1,b-2),f=this.getBezierValue(i,w,2,b+18-2),m=this.getBezierValue(i,w,3,b+36-2),g=this.getBezierValue(i,w,4,b+54-2),p=this.getBezierValue(i,w,5,b+72-2),x=this.getBezierValue(i,w,6,b+90-2)}if(1==r)c.r=u,c.g=f,c.b=m,d.r=g,d.g=p,d.b=x;else{if(a==t.MixBlend.setup){let t=l.data.color,e=l.data.darkColor;c.r=t.r,c.g=t.g,c.b=t.b,d.r=e.r,d.g=e.g,d.b=e.b}c.r+=(u-c.r)*r,c.g+=(f-c.g)*r,c.b+=(m-c.b)*r,d.r+=(g-d.r)*r,d.g+=(p-d.g)*r,d.b+=(x-d.b)*r}}}class N extends y{slotIndex=0;attachmentNames;constructor(t,e){super(t,[b.attachment+"|"+e]),this.slotIndex=e,this.attachmentNames=new Array(t)}getFrameCount(){return this.frames.length}setFrame(t,e,s){this.frames[t]=e,this.attachmentNames[t]=s}apply(e,s,i,n,r,a,o){let l=e.slots[this.slotIndex];l.bone.active&&(o!=t.MixDirection.mixOut?i<this.frames[0]?a!=t.MixBlend.setup&&a!=t.MixBlend.first||this.setAttachment(e,l,l.data.attachmentName):this.setAttachment(e,l,this.attachmentNames[y.search1(this.frames,i)]):a==t.MixBlend.setup&&this.setAttachment(e,l,l.data.attachmentName))}setAttachment(t,e,s){e.setAttachment(s?t.getAttachment(this.slotIndex,s):null)}}class L extends M{slotIndex=0;attachment;vertices;constructor(t,e,s,i){super(t,e,[b.deform+"|"+s+"|"+i.id]),this.slotIndex=s,this.attachment=i,this.vertices=new Array(t)}getFrameCount(){return this.frames.length}setFrame(t,e,s){this.frames[t]=e,this.vertices[t]=s}setBezier(t,e,s,i,n,r,a,o,l,h,c){let d=this.curves,u=this.getFrameCount()+18*t;0==s&&(d[e]=2+u);let f=.03*(i-2*r+o),m=.03*l-.06*a,g=.006*(3*(r-o)-i+h),p=.018*(a-l+.33333333),x=2*f+g,w=2*m+p,b=.3*(r-i)+f+.16666667*g,y=.3*a+m+.16666667*p,M=i+b,v=y;for(let t=u+18;u<t;u+=2)d[u]=M,d[u+1]=v,b+=x,y+=w,x+=g,w+=p,M+=b,v+=y}getCurvePercent(t,e){let s=this.curves,i=s[e];switch(i){case 0:let s=this.frames[e];return(t-s)/(this.frames[e+this.getFrameEntries()]-s);case 1:return 0}if(i-=2,s[i]>t){let n=this.frames[e];return s[i+1]*(t-n)/(s[i]-n)}let n=i+18;for(i+=2;i<n;i+=2)if(s[i]>=t){let e=s[i-2],n=s[i-1];return n+(t-e)/(s[i]-e)*(s[i+1]-n)}let r=s[n-2],a=s[n-1];return a+(1-a)*(t-r)/(this.frames[e+this.getFrameEntries()]-r)}apply(e,s,i,n,r,a,o){let h=e.slots[this.slotIndex];if(!h.bone.active)return;let c=h.getAttachment();if(!c)return;if(!(c instanceof u)||c.timelineAttachment!=this.attachment)return;let d=h.deform;0==d.length&&(a=t.MixBlend.setup);let f=this.vertices,m=f[0].length,g=this.frames;if(i<g[0]){switch(a){case t.MixBlend.setup:return void(d.length=0);case t.MixBlend.first:if(1==r)return void(d.length=0);d.length=m;let e=c;if(e.bones){r=1-r;for(p=0;p<m;p++)d[p]*=r}else{let t=e.vertices;for(var p=0;p<m;p++)d[p]+=(t[p]-d[p])*r}}return}if(d.length=m,i>=g[g.length-1]){let e=f[g.length-1];if(1==r)if(a==t.MixBlend.add){let t=c;if(t.bones)for(let t=0;t<m;t++)d[t]+=e[t];else{let s=t.vertices;for(let t=0;t<m;t++)d[t]+=e[t]-s[t]}}else l.arrayCopy(e,0,d,0,m);else switch(a){case t.MixBlend.setup:{let t=c;if(t.bones)for(let t=0;t<m;t++)d[t]=e[t]*r;else{let s=t.vertices;for(let t=0;t<m;t++){let i=s[t];d[t]=i+(e[t]-i)*r}}break}case t.MixBlend.first:case t.MixBlend.replace:for(let t=0;t<m;t++)d[t]+=(e[t]-d[t])*r;break;case t.MixBlend.add:let s=c;if(s.bones)for(let t=0;t<m;t++)d[t]+=e[t]*r;else{let t=s.vertices;for(let s=0;s<m;s++)d[s]+=(e[s]-t[s])*r}}return}let x=y.search1(g,i),w=this.getCurvePercent(i,x),b=f[x],M=f[x+1];if(1==r)if(a==t.MixBlend.add){let t=c;if(t.bones)for(let t=0;t<m;t++){let e=b[t];d[t]+=e+(M[t]-e)*w}else{let e=t.vertices;for(let t=0;t<m;t++){let s=b[t];d[t]+=s+(M[t]-s)*w-e[t]}}}else for(let t=0;t<m;t++){let e=b[t];d[t]=e+(M[t]-e)*w}else switch(a){case t.MixBlend.setup:{let t=c;if(t.bones)for(let t=0;t<m;t++){let e=b[t];d[t]=(e+(M[t]-e)*w)*r}else{let e=t.vertices;for(let t=0;t<m;t++){let s=b[t],i=e[t];d[t]=i+(s+(M[t]-s)*w-i)*r}}break}case t.MixBlend.first:case t.MixBlend.replace:for(let t=0;t<m;t++){let e=b[t];d[t]+=(e+(M[t]-e)*w-d[t])*r}break;case t.MixBlend.add:let e=c;if(e.bones)for(let t=0;t<m;t++){let e=b[t];d[t]+=(e+(M[t]-e)*w)*r}else{let t=e.vertices;for(let e=0;e<m;e++){let s=b[e];d[e]+=(s+(M[e]-s)*w-t[e])*r}}}}}class q extends y{static propertyIds=[""+b.event];events;constructor(t){super(t,q.propertyIds),this.events=new Array(t)}getFrameCount(){return this.frames.length}setFrame(t,e){this.frames[t]=e.time,this.events[t]=e}apply(t,e,s,i,n,r,a){if(!i)return;let o=this.frames,l=this.frames.length;if(e>s)this.apply(t,e,Number.MAX_VALUE,i,n,r,a),e=-1;else if(e>=o[l-1])return;if(s<o[0])return;let h=0;if(e<o[0])h=0;else{h=y.search1(o,e)+1;let t=o[h];for(;h>0&&o[h-1]==t;)h--}for(;h<l&&s>=o[h];h++)i.push(this.events[h])}}class W extends y{static propertyIds=[""+b.drawOrder];drawOrders;constructor(t){super(t,W.propertyIds),this.drawOrders=new Array(t)}getFrameCount(){return this.frames.length}setFrame(t,e,s){this.frames[t]=e,this.drawOrders[t]=s}apply(e,s,i,n,r,a,o){if(o==t.MixDirection.mixOut)return void(a==t.MixBlend.setup&&l.arrayCopy(e.slots,0,e.drawOrder,0,e.slots.length));if(i<this.frames[0])return void(a!=t.MixBlend.setup&&a!=t.MixBlend.first||l.arrayCopy(e.slots,0,e.drawOrder,0,e.slots.length));let h=y.search1(this.frames,i),c=this.drawOrders[h];if(c){let t=e.drawOrder,s=e.slots;for(let e=0,i=c.length;e<i;e++)t[e]=s[c[e]]}else l.arrayCopy(e.slots,0,e.drawOrder,0,e.slots.length)}}class U extends M{constraintIndex=0;constructor(t,e,s){super(t,e,[b.ikConstraint+"|"+s]),this.constraintIndex=s}getFrameEntries(){return 6}setFrame(t,e,s,i,n,r,a){t*=6,this.frames[t]=e,this.frames[t+1]=s,this.frames[t+2]=i,this.frames[t+3]=n,this.frames[t+4]=r?1:0,this.frames[t+5]=a?1:0}apply(e,s,i,n,r,a,o){let l=e.ikConstraints[this.constraintIndex];if(!l.active)return;let h=this.frames;if(i<h[0]){switch(a){case t.MixBlend.setup:return l.mix=l.data.mix,l.softness=l.data.softness,l.bendDirection=l.data.bendDirection,l.compress=l.data.compress,void(l.stretch=l.data.stretch);case t.MixBlend.first:l.mix+=(l.data.mix-l.mix)*r,l.softness+=(l.data.softness-l.softness)*r,l.bendDirection=l.data.bendDirection,l.compress=l.data.compress,l.stretch=l.data.stretch}return}let c=0,d=0,u=y.search(h,i,6),f=this.curves[u/6];switch(f){case 0:let t=h[u];c=h[u+1],d=h[u+2];let e=(i-t)/(h[u+6]-t);c+=(h[u+6+1]-c)*e,d+=(h[u+6+2]-d)*e;break;case 1:c=h[u+1],d=h[u+2];break;default:c=this.getBezierValue(i,u,1,f-2),d=this.getBezierValue(i,u,2,f+18-2)}a==t.MixBlend.setup?(l.mix=l.data.mix+(c-l.data.mix)*r,l.softness=l.data.softness+(d-l.data.softness)*r,o==t.MixDirection.mixOut?(l.bendDirection=l.data.bendDirection,l.compress=l.data.compress,l.stretch=l.data.stretch):(l.bendDirection=h[u+3],l.compress=0!=h[u+4],l.stretch=0!=h[u+5])):(l.mix+=(c-l.mix)*r,l.softness+=(d-l.softness)*r,o==t.MixDirection.mixIn&&(l.bendDirection=h[u+3],l.compress=0!=h[u+4],l.stretch=0!=h[u+5]))}}class z extends M{constraintIndex=0;constructor(t,e,s){super(t,e,[b.transformConstraint+"|"+s]),this.constraintIndex=s}getFrameEntries(){return 7}setFrame(t,e,s,i,n,r,a,o){let l=this.frames;l[t*=7]=e,l[t+1]=s,l[t+2]=i,l[t+3]=n,l[t+4]=r,l[t+5]=a,l[t+6]=o}apply(e,s,i,n,r,a,o){let l=e.transformConstraints[this.constraintIndex];if(!l.active)return;let h,c,d,u,f,m,g=this.frames;if(i<g[0]){let e=l.data;switch(a){case t.MixBlend.setup:return l.mixRotate=e.mixRotate,l.mixX=e.mixX,l.mixY=e.mixY,l.mixScaleX=e.mixScaleX,l.mixScaleY=e.mixScaleY,void(l.mixShearY=e.mixShearY);case t.MixBlend.first:l.mixRotate+=(e.mixRotate-l.mixRotate)*r,l.mixX+=(e.mixX-l.mixX)*r,l.mixY+=(e.mixY-l.mixY)*r,l.mixScaleX+=(e.mixScaleX-l.mixScaleX)*r,l.mixScaleY+=(e.mixScaleY-l.mixScaleY)*r,l.mixShearY+=(e.mixShearY-l.mixShearY)*r}return}let p=y.search(g,i,7),x=this.curves[p/7];switch(x){case 0:let t=g[p];h=g[p+1],c=g[p+2],d=g[p+3],u=g[p+4],f=g[p+5],m=g[p+6];let e=(i-t)/(g[p+7]-t);h+=(g[p+7+1]-h)*e,c+=(g[p+7+2]-c)*e,d+=(g[p+7+3]-d)*e,u+=(g[p+7+4]-u)*e,f+=(g[p+7+5]-f)*e,m+=(g[p+7+6]-m)*e;break;case 1:h=g[p+1],c=g[p+2],d=g[p+3],u=g[p+4],f=g[p+5],m=g[p+6];break;default:h=this.getBezierValue(i,p,1,x-2),c=this.getBezierValue(i,p,2,x+18-2),d=this.getBezierValue(i,p,3,x+36-2),u=this.getBezierValue(i,p,4,x+54-2),f=this.getBezierValue(i,p,5,x+72-2),m=this.getBezierValue(i,p,6,x+90-2)}if(a==t.MixBlend.setup){let t=l.data;l.mixRotate=t.mixRotate+(h-t.mixRotate)*r,l.mixX=t.mixX+(c-t.mixX)*r,l.mixY=t.mixY+(d-t.mixY)*r,l.mixScaleX=t.mixScaleX+(u-t.mixScaleX)*r,l.mixScaleY=t.mixScaleY+(f-t.mixScaleY)*r,l.mixShearY=t.mixShearY+(m-t.mixShearY)*r}else l.mixRotate+=(h-l.mixRotate)*r,l.mixX+=(c-l.mixX)*r,l.mixY+=(d-l.mixY)*r,l.mixScaleX+=(u-l.mixScaleX)*r,l.mixScaleY+=(f-l.mixScaleY)*r,l.mixShearY+=(m-l.mixShearY)*r}}class G extends v{constraintIndex=0;constructor(t,e,s){super(t,e,b.pathConstraintPosition+"|"+s),this.constraintIndex=s}apply(t,e,s,i,n,r,a){let o=t.pathConstraints[this.constraintIndex];o.active&&(o.position=this.getAbsoluteValue(s,n,r,o.position,o.data.position))}}class $ extends v{constraintIndex=0;constructor(t,e,s){super(t,e,b.pathConstraintSpacing+"|"+s),this.constraintIndex=s}apply(t,e,s,i,n,r,a){let o=t.pathConstraints[this.constraintIndex];o.active&&(o.spacing=this.getAbsoluteValue(s,n,r,o.spacing,o.data.spacing))}}class H extends M{constraintIndex=0;constructor(t,e,s){super(t,e,[b.pathConstraintMix+"|"+s]),this.constraintIndex=s}getFrameEntries(){return 4}setFrame(t,e,s,i,n){let r=this.frames;r[t<<=2]=e,r[t+1]=s,r[t+2]=i,r[t+3]=n}apply(e,s,i,n,r,a,o){let l=e.pathConstraints[this.constraintIndex];if(!l.active)return;let h,c,d,u=this.frames;if(i<u[0]){switch(a){case t.MixBlend.setup:return l.mixRotate=l.data.mixRotate,l.mixX=l.data.mixX,void(l.mixY=l.data.mixY);case t.MixBlend.first:l.mixRotate+=(l.data.mixRotate-l.mixRotate)*r,l.mixX+=(l.data.mixX-l.mixX)*r,l.mixY+=(l.data.mixY-l.mixY)*r}return}let f=y.search(u,i,4),m=this.curves[f>>2];switch(m){case 0:let t=u[f];h=u[f+1],c=u[f+2],d=u[f+3];let e=(i-t)/(u[f+4]-t);h+=(u[f+4+1]-h)*e,c+=(u[f+4+2]-c)*e,d+=(u[f+4+3]-d)*e;break;case 1:h=u[f+1],c=u[f+2],d=u[f+3];break;default:h=this.getBezierValue(i,f,1,m-2),c=this.getBezierValue(i,f,2,m+18-2),d=this.getBezierValue(i,f,3,m+36-2)}if(a==t.MixBlend.setup){let t=l.data;l.mixRotate=t.mixRotate+(h-t.mixRotate)*r,l.mixX=t.mixX+(c-t.mixX)*r,l.mixY=t.mixY+(d-t.mixY)*r}else l.mixRotate+=(h-l.mixRotate)*r,l.mixX+=(c-l.mixX)*r,l.mixY+=(d-l.mixY)*r}}class j extends v{constraintIndex=0;constructor(t,e,s,i){super(t,e,i+"|"+s),this.constraintIndex=s}apply(t,e,s,i,n,r,a){let o;if(-1==this.constraintIndex){const e=s>=this.frames[0]?this.getCurveValue(s):0;for(const i of t.physicsConstraints)i.active&&this.global(i.data)&&this.set(i,this.getAbsoluteValue2(s,n,r,this.get(i),this.setup(i),e))}else o=t.physicsConstraints[this.constraintIndex],o.active&&this.set(o,this.getAbsoluteValue(s,n,r,this.get(o),this.setup(o)))}}class J extends j{constructor(t,e,s){super(t,e,s,b.physicsConstraintInertia)}setup(t){return t.data.inertia}get(t){return t.inertia}set(t,e){t.inertia=e}global(t){return t.inertiaGlobal}}class K extends j{constructor(t,e,s){super(t,e,s,b.physicsConstraintStrength)}setup(t){return t.data.strength}get(t){return t.strength}set(t,e){t.strength=e}global(t){return t.strengthGlobal}}class Z extends j{constructor(t,e,s){super(t,e,s,b.physicsConstraintDamping)}setup(t){return t.data.damping}get(t){return t.damping}set(t,e){t.damping=e}global(t){return t.dampingGlobal}}class Q extends j{constructor(t,e,s){super(t,e,s,b.physicsConstraintMass)}setup(t){return 1/t.data.massInverse}get(t){return 1/t.massInverse}set(t,e){t.massInverse=1/e}global(t){return t.massGlobal}}class tt extends j{constructor(t,e,s){super(t,e,s,b.physicsConstraintWind)}setup(t){return t.data.wind}get(t){return t.wind}set(t,e){t.wind=e}global(t){return t.windGlobal}}class et extends j{constructor(t,e,s){super(t,e,s,b.physicsConstraintGravity)}setup(t){return t.data.gravity}get(t){return t.gravity}set(t,e){t.gravity=e}global(t){return t.gravityGlobal}}class st extends j{constructor(t,e,s){super(t,e,s,b.physicsConstraintMix)}setup(t){return t.data.mix}get(t){return t.mix}set(t,e){t.mix=e}global(t){return t.mixGlobal}}class it extends y{static propertyIds=[b.physicsConstraintReset.toString()];constraintIndex;constructor(t,e){super(t,it.propertyIds),this.constraintIndex=e}getFrameCount(){return this.frames.length}setFrame(t,e){this.frames[t]=e}apply(t,e,s,i,n,r,a){let o;if(-1!=this.constraintIndex&&(o=t.physicsConstraints[this.constraintIndex],!o.active))return;const l=this.frames;if(e>s)this.apply(t,e,Number.MAX_VALUE,[],n,r,a),e=-1;else if(e>=l[l.length-1])return;if(!(s<l[0])&&(e<l[0]||s>=l[y.search1(l,e)+1]))if(null!=o)o.reset();else for(const e of t.physicsConstraints)e.active&&e.reset()}}class nt extends y{static ENTRIES=3;static MODE=1;static DELAY=2;slotIndex;attachment;constructor(t,e,s){super(t,[b.sequence+"|"+e+"|"+s.sequence.id]),this.slotIndex=e,this.attachment=s}getFrameEntries(){return nt.ENTRIES}getSlotIndex(){return this.slotIndex}getAttachment(){return this.attachment}setFrame(t,e,s,i,n){let r=this.frames;r[t*=nt.ENTRIES]=e,r[t+nt.MODE]=s|i<<4,r[t+nt.DELAY]=n}apply(e,s,i,n,r,a,o){let l=e.slots[this.slotIndex];if(!l.bone.active)return;let h=l.attachment,c=this.attachment;if(!(h==c||h instanceof u&&h.timelineAttachment==c))return;let d=this.frames;if(i<d[0])return void(a!=t.MixBlend.setup&&a!=t.MixBlend.first||(l.sequenceIndex=-1));let f=y.search(d,i,nt.ENTRIES),p=d[f],x=d[f+nt.MODE],w=d[f+nt.DELAY];if(!this.attachment.sequence)return;let b=x>>4,M=this.attachment.sequence.regions.length,v=g[15&x];if(v!=m.hold)switch(b+=(i-p)/w+1e-5|0,v){case m.once:b=Math.min(M-1,b);break;case m.loop:b%=M;break;case m.pingpong:{let t=(M<<1)-2;b=0==t?0:b%t,b>=M&&(b=t-b);break}case m.onceReverse:b=Math.max(M-1-b,0);break;case m.loopReverse:b=M-1-b%M;break;case m.pingpongReverse:{let t=(M<<1)-2;b=0==t?0:(b+M-1)%t,b>=M&&(b=t-b)}}l.sequenceIndex=b}}class rt{static _emptyAnimation=new p("<empty>",[],0);static emptyAnimation(){return rt._emptyAnimation}data;tracks=new Array;timeScale=1;unkeyedState=0;events=new Array;listeners=new Array;queue=new ot(this);propertyIDs=new i;animationsChanged=!1;trackEntryPool=new h((()=>new at));constructor(t){this.data=t}update(t){t*=this.timeScale;let e=this.tracks;for(let s=0,i=e.length;s<i;s++){let i=e[s];if(!i)continue;i.animationLast=i.nextAnimationLast,i.trackLast=i.nextTrackLast;let n=t*i.timeScale;if(i.delay>0){if(i.delay-=n,i.delay>0)continue;n=-i.delay,i.delay=0}let r=i.next;if(r){let e=i.trackLast-r.delay;if(e>=0){for(r.delay=0,r.trackTime+=0==i.timeScale?0:(e/i.timeScale+t)*r.timeScale,i.trackTime+=n,this.setCurrent(s,r,!0);r.mixingFrom;)r.mixTime+=t,r=r.mixingFrom;continue}}else if(i.trackLast>=i.trackEnd&&!i.mixingFrom){e[s]=null,this.queue.end(i),this.clearNext(i);continue}if(i.mixingFrom&&this.updateMixingFrom(i,t)){let t=i.mixingFrom;for(i.mixingFrom=null,t&&(t.mixingTo=null);t;)this.queue.end(t),t=t.mixingFrom}i.trackTime+=n}this.queue.drain()}updateMixingFrom(t,e){let s=t.mixingFrom;if(!s)return!0;let i=this.updateMixingFrom(s,e);return s.animationLast=s.nextAnimationLast,s.trackLast=s.nextTrackLast,t.mixTime>0&&t.mixTime>=t.mixDuration?(0!=s.totalAlpha&&0!=t.mixDuration||(t.mixingFrom=s.mixingFrom,s.mixingFrom&&(s.mixingFrom.mixingTo=t),t.interruptAlpha=s.interruptAlpha,this.queue.end(s)),i):(s.trackTime+=e*s.timeScale,t.mixTime+=e,!1)}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();let s=this.events,i=this.tracks,n=!1;for(let a=0,o=i.length;a<o;a++){let o=i[a];if(!o||o.delay>0)continue;n=!0;let h=0==a?t.MixBlend.first:o.mixBlend,c=o.alpha;o.mixingFrom?c*=this.applyMixingFrom(o,e,h):o.trackTime>=o.trackEnd&&!o.next&&(c=0);let d=c>=o.alphaAttachmentThreshold,u=o.animationLast,f=o.getAnimationTime(),m=f,g=s;o.reverse&&(m=o.animation.duration-m,g=null);let p=o.animation.timelines,x=p.length;if(0==a&&1==c||h==t.MixBlend.add){0==a&&(d=!0);for(let s=0;s<x;s++){l.webkit602BugfixHelper(c,h);var r=p[s];r instanceof N?this.applyAttachmentTimeline(r,e,m,h,d):r.apply(e,u,m,g,c,h,t.MixDirection.mixIn)}}else{let s=o.timelineMode,i=o.shortestRotation,n=!i&&o.timelinesRotation.length!=x<<1;n&&(o.timelinesRotation.length=x<<1);for(let r=0;r<x;r++){let a=p[r],f=s[r]==ht?h:t.MixBlend.setup;!i&&a instanceof k?this.applyRotateTimeline(a,e,m,c,f,o.timelinesRotation,r<<1,n):a instanceof N?this.applyAttachmentTimeline(a,e,m,h,d):(l.webkit602BugfixHelper(c,h),a.apply(e,u,m,g,c,f,t.MixDirection.mixIn))}}this.queueEvents(o,f),s.length=0,o.nextAnimationLast=f,o.nextTrackLast=o.trackTime}for(var a=this.unkeyedState+mt,o=e.slots,h=0,c=e.slots.length;h<c;h++){var d=o[h];if(d.attachmentState==a){var u=d.data.attachmentName;d.setAttachment(u?e.getAttachment(d.data.index,u):null)}}return this.unkeyedState+=2,this.queue.drain(),n}applyMixingFrom(e,s,i){let n=e.mixingFrom;n.mixingFrom&&this.applyMixingFrom(n,s,i);let r=0;0==e.mixDuration?(r=1,i==t.MixBlend.first&&(i=t.MixBlend.setup)):(r=e.mixTime/e.mixDuration,r>1&&(r=1),i!=t.MixBlend.first&&(i=n.mixBlend));let a=r<n.mixAttachmentThreshold,o=r<n.mixDrawOrderThreshold,h=n.animation.timelines,c=h.length,d=n.alpha*e.interruptAlpha,u=d*(1-r),f=n.animationLast,m=n.getAnimationTime(),g=m,p=null;if(n.reverse?g=n.animation.duration-g:r<n.eventThreshold&&(p=this.events),i==t.MixBlend.add)for(let e=0;e<c;e++)h[e].apply(s,f,g,p,u,i,t.MixDirection.mixOut);else{let e=n.timelineMode,r=n.timelineHoldMix,m=n.shortestRotation,x=!m&&n.timelinesRotation.length!=c<<1;x&&(n.timelinesRotation.length=c<<1),n.totalAlpha=0;for(let w=0;w<c;w++){let c,b=h[w],y=t.MixDirection.mixOut,M=0;switch(e[w]){case ht:if(!o&&b instanceof W)continue;c=i,M=u;break;case ct:c=t.MixBlend.setup,M=u;break;case dt:c=i,M=d;break;case ut:c=t.MixBlend.setup,M=d;break;default:c=t.MixBlend.setup;let e=r[w];M=d*Math.max(0,1-e.mixTime/e.mixDuration)}n.totalAlpha+=M,!m&&b instanceof k?this.applyRotateTimeline(b,s,g,M,c,n.timelinesRotation,w<<1,x):b instanceof N?this.applyAttachmentTimeline(b,s,g,c,a&&M>=n.alphaAttachmentThreshold):(l.webkit602BugfixHelper(M,i),o&&b instanceof W&&c==t.MixBlend.setup&&(y=t.MixDirection.mixIn),b.apply(s,f,g,p,M,c,y))}}return e.mixDuration>0&&this.queueEvents(n,m),this.events.length=0,n.nextAnimationLast=m,n.nextTrackLast=n.trackTime,r}applyAttachmentTimeline(e,s,i,n,r){var a=s.slots[e.slotIndex];a.bone.active&&(i<e.frames[0]?n!=t.MixBlend.setup&&n!=t.MixBlend.first||this.setAttachment(s,a,a.data.attachmentName,r):this.setAttachment(s,a,e.attachmentNames[y.search1(e.frames,i)],r),a.attachmentState<=this.unkeyedState&&(a.attachmentState=this.unkeyedState+mt))}setAttachment(t,e,s,i){e.setAttachment(s?t.getAttachment(e.data.index,s):null),i&&(e.attachmentState=this.unkeyedState+gt)}applyRotateTimeline(e,s,i,n,a,o,l,h){if(h&&(o[l]=0),1==n)return void e.apply(s,0,i,null,1,a,t.MixDirection.mixIn);let c=s.bones[e.boneIndex];if(!c.active)return;let d=0,u=0;if(i<e.frames[0])switch(a){case t.MixBlend.setup:c.rotation=c.data.rotation;default:return;case t.MixBlend.first:d=c.rotation,u=c.data.rotation}else d=a==t.MixBlend.setup?c.data.rotation:c.rotation,u=c.data.rotation+e.getCurveValue(i);let f=0,m=u-d;if(m-=360*Math.ceil(m/360-.5),0==m)f=o[l];else{let t=0,e=0;h?(t=0,e=m):(t=o[l],e=o[l+1]);let s=t-t%360;f=m+s;let i=m>=0,n=t>=0;Math.abs(e)<=90&&r.signum(e)!=r.signum(m)&&(Math.abs(t-s)>180?(f+=360*r.signum(t),n=i):0!=s?f-=360*r.signum(t):n=i),n!=i&&(f+=360*r.signum(t)),o[l]=f}o[l+1]=m,c.rotation=d+f*n}queueEvents(t,e){let s=t.animationStart,i=t.animationEnd,n=i-s,r=t.trackLast%n,a=this.events,o=0,l=a.length;for(;o<l;o++){let e=a[o];if(e.time<r)break;e.time>i||this.queue.event(t,e)}let h=!1;if(t.loop)if(0==n)h=!0;else{const e=Math.floor(t.trackTime/n);h=e>0&&e>Math.floor(t.trackLast/n)}else h=e>=i&&t.animationLast<i;for(h&&this.queue.complete(t);o<l;o++){let e=a[o];e.time<s||this.queue.event(t,e)}}clearTracks(){let t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let t=0,e=this.tracks.length;t<e;t++)this.clearTrack(t);this.tracks.length=0,this.queue.drainDisabled=t,this.queue.drain()}clearTrack(t){if(t>=this.tracks.length)return;let e=this.tracks[t];if(!e)return;this.queue.end(e),this.clearNext(e);let s=e;for(;;){let t=s.mixingFrom;if(!t)break;this.queue.end(t),s.mixingFrom=null,s.mixingTo=null,s=t}this.tracks[e.trackIndex]=null,this.queue.drain()}setCurrent(t,e,s){let i=this.expandToIndex(t);this.tracks[t]=e,e.previous=null,i&&(s&&this.queue.interrupt(i),e.mixingFrom=i,i.mixingTo=e,e.mixTime=0,i.mixingFrom&&i.mixDuration>0&&(e.interruptAlpha*=Math.min(1,i.mixTime/i.mixDuration)),i.timelinesRotation.length=0),this.queue.start(e)}setAnimation(t,e,s=!1){let i=this.data.skeletonData.findAnimation(e);if(!i)throw new Error("Animation not found: "+e);return this.setAnimationWith(t,i,s)}setAnimationWith(t,e,s=!1){if(!e)throw new Error("animation cannot be null.");let i=!0,n=this.expandToIndex(t);n&&(-1==n.nextTrackLast?(this.tracks[t]=n.mixingFrom,this.queue.interrupt(n),this.queue.end(n),this.clearNext(n),n=n.mixingFrom,i=!1):this.clearNext(n));let r=this.trackEntry(t,e,s,n);return this.setCurrent(t,r,i),this.queue.drain(),r}addAnimation(t,e,s=!1,i=0){let n=this.data.skeletonData.findAnimation(e);if(!n)throw new Error("Animation not found: "+e);return this.addAnimationWith(t,n,s,i)}addAnimationWith(t,e,s=!1,i=0){if(!e)throw new Error("animation cannot be null.");let n=this.expandToIndex(t);if(n)for(;n.next;)n=n.next;let r=this.trackEntry(t,e,s,n);return n?(n.next=r,r.previous=n,i<=0&&(i+=n.getTrackComplete()-r.mixDuration)):(this.setCurrent(t,r,!0),this.queue.drain()),r.delay=i,r}setEmptyAnimation(t,e=0){let s=this.setAnimationWith(t,rt.emptyAnimation(),!1);return s.mixDuration=e,s.trackEnd=e,s}addEmptyAnimation(t,e=0,s=0){let i=this.addAnimationWith(t,rt.emptyAnimation(),!1,s);return s<=0&&(i.delay+=i.mixDuration-e),i.mixDuration=e,i.trackEnd=e,i}setEmptyAnimations(t=0){let e=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let e=0,s=this.tracks.length;e<s;e++){let s=this.tracks[e];s&&this.setEmptyAnimation(s.trackIndex,t)}this.queue.drainDisabled=e,this.queue.drain()}expandToIndex(t){return t<this.tracks.length?this.tracks[t]:(l.ensureArrayCapacity(this.tracks,t+1,null),this.tracks.length=t+1,null)}trackEntry(e,s,i,n){let r=this.trackEntryPool.obtain();return r.reset(),r.trackIndex=e,r.animation=s,r.loop=i,r.holdPrevious=!1,r.reverse=!1,r.shortestRotation=!1,r.eventThreshold=0,r.alphaAttachmentThreshold=0,r.mixAttachmentThreshold=0,r.mixDrawOrderThreshold=0,r.animationStart=0,r.animationEnd=s.duration,r.animationLast=-1,r.nextAnimationLast=-1,r.delay=0,r.trackTime=0,r.trackLast=-1,r.nextTrackLast=-1,r.trackEnd=Number.MAX_VALUE,r.timeScale=1,r.alpha=1,r.mixTime=0,r.mixDuration=n?this.data.getMix(n.animation,s):0,r.interruptAlpha=1,r.totalAlpha=0,r.mixBlend=t.MixBlend.replace,r}clearNext(t){let e=t.next;for(;e;)this.queue.dispose(e),e=e.next;t.next=null}_animationsChanged(){this.animationsChanged=!1,this.propertyIDs.clear();let e=this.tracks;for(let s=0,i=e.length;s<i;s++){let i=e[s];if(i){for(;i.mixingFrom;)i=i.mixingFrom;do{i.mixingTo&&i.mixBlend==t.MixBlend.add||this.computeHold(i),i=i.mixingTo}while(i)}}}computeHold(t){let e=t.mixingTo,s=t.animation.timelines,i=t.animation.timelines.length,n=t.timelineMode;n.length=i;let r=t.timelineHoldMix;r.length=0;let a=this.propertyIDs;if(e&&e.holdPrevious)for(let t=0;t<i;t++)n[t]=a.addAll(s[t].getPropertyIds())?ut:dt;else t:for(let o=0;o<i;o++){let i=s[o],l=i.getPropertyIds();if(a.addAll(l))if(!e||i instanceof N||i instanceof W||i instanceof q||!e.animation.hasTimeline(l))n[o]=ct;else{for(let s=e.mixingTo;s;s=s.mixingTo)if(!s.animation.hasTimeline(l)){if(t.mixDuration>0){n[o]=ft,r[o]=s;continue t}break}n[o]=ut}else n[o]=ht}}getCurrent(t){return t>=this.tracks.length?null:this.tracks[t]}addListener(t){if(!t)throw new Error("listener cannot be null.");this.listeners.push(t)}removeListener(t){let e=this.listeners.indexOf(t);e>=0&&this.listeners.splice(e,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}}class at{animation=null;previous=null;next=null;mixingFrom=null;mixingTo=null;listener=null;trackIndex=0;loop=!1;holdPrevious=!1;reverse=!1;shortestRotation=!1;eventThreshold=0;mixAttachmentThreshold=0;alphaAttachmentThreshold=0;mixDrawOrderThreshold=0;animationStart=0;animationEnd=0;animationLast=0;nextAnimationLast=0;delay=0;trackTime=0;trackLast=0;nextTrackLast=0;trackEnd=0;timeScale=0;alpha=0;mixTime=0;_mixDuration=0;interruptAlpha=0;totalAlpha=0;get mixDuration(){return this._mixDuration}set mixDuration(t){this._mixDuration=t}setMixDurationWithDelay(t,e){this._mixDuration=t,null!=this.previous&&e<=0&&(e+=this.previous.getTrackComplete()-t),this.delay=e}mixBlend=t.MixBlend.replace;timelineMode=new Array;timelineHoldMix=new Array;timelinesRotation=new Array;reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(this.loop){let t=this.animationEnd-this.animationStart;return 0==t?this.animationStart:this.trackTime%t+this.animationStart}return Math.min(this.trackTime+this.animationStart,this.animationEnd)}setAnimationLast(t){this.animationLast=t,this.nextAnimationLast=t}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){let t=this.animationEnd-this.animationStart;if(0!=t){if(this.loop)return t*(1+(this.trackTime/t|0));if(this.trackTime<t)return t}return this.trackTime}wasApplied(){return-1!=this.nextTrackLast}isNextReady(){return null!=this.next&&this.nextTrackLast-this.next.delay>=0}}class ot{objects=[];drainDisabled=!1;animState;constructor(t){this.animState=t}start(e){this.objects.push(t.EventType.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(t.EventType.interrupt),this.objects.push(e)}end(e){this.objects.push(t.EventType.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(t.EventType.dispose),this.objects.push(e)}complete(e){this.objects.push(t.EventType.complete),this.objects.push(e)}event(e,s){this.objects.push(t.EventType.event),this.objects.push(e),this.objects.push(s)}drain(){if(this.drainDisabled)return;this.drainDisabled=!0;let e=this.objects,s=this.animState.listeners;for(let i=0;i<e.length;i+=2){let n=e[i],r=e[i+1];switch(n){case t.EventType.start:r.listener&&r.listener.start&&r.listener.start(r);for(let t=0;t<s.length;t++){let e=s[t];e.start&&e.start(r)}break;case t.EventType.interrupt:r.listener&&r.listener.interrupt&&r.listener.interrupt(r);for(let t=0;t<s.length;t++){let e=s[t];e.interrupt&&e.interrupt(r)}break;case t.EventType.end:r.listener&&r.listener.end&&r.listener.end(r);for(let t=0;t<s.length;t++){let e=s[t];e.end&&e.end(r)}case t.EventType.dispose:r.listener&&r.listener.dispose&&r.listener.dispose(r);for(let t=0;t<s.length;t++){let e=s[t];e.dispose&&e.dispose(r)}this.animState.trackEntryPool.free(r);break;case t.EventType.complete:r.listener&&r.listener.complete&&r.listener.complete(r);for(let t=0;t<s.length;t++){let e=s[t];e.complete&&e.complete(r)}break;case t.EventType.event:let n=e[2+i++];r.listener&&r.listener.event&&r.listener.event(r,n);for(let t=0;t<s.length;t++){let e=s[t];e.event&&e.event(r,n)}}}this.clear(),this.drainDisabled=!1}clear(){this.objects.length=0}}var lt;t.EventType=void 0,(lt=t.EventType||(t.EventType={}))[lt.start=0]="start",lt[lt.interrupt=1]="interrupt",lt[lt.end=2]="end",lt[lt.dispose=3]="dispose",lt[lt.complete=4]="complete",lt[lt.event=5]="event";const ht=0,ct=1,dt=2,ut=3,ft=4,mt=1,gt=2;class pt{skeletonData;animationToMixTime={};defaultMix=0;constructor(t){if(!t)throw new Error("skeletonData cannot be null.");this.skeletonData=t}setMix(t,e,s){let i=this.skeletonData.findAnimation(t);if(!i)throw new Error("Animation not found: "+t);let n=this.skeletonData.findAnimation(e);if(!n)throw new Error("Animation not found: "+e);this.setMixWith(i,n,s)}setMixWith(t,e,s){if(!t)throw new Error("from cannot be null.");if(!e)throw new Error("to cannot be null.");let i=t.name+"."+e.name;this.animationToMixTime[i]=s}getMix(t,e){let s=t.name+"."+e.name,i=this.animationToMixTime[s];return void 0===i?this.defaultMix:i}}class xt extends u{color=new n(1,1,1,1);constructor(t){super(t)}copy(){let t=new xt(this.name);return this.copyTo(t),t.color.setFromColor(this.color),t}}class wt extends u{endSlot=null;color=new n(.2275,.2275,.8078,1);constructor(t){super(t)}copy(){let t=new wt(this.name);return this.copyTo(t),t.endSlot=this.endSlot,t.color.setFromColor(this.color),t}}class bt{_image;constructor(t){this._image=t}getImage(){return this._image}}var yt,Mt,vt,St,kt,It,At,Bt,Tt;t.TextureFilter=void 0,(yt=t.TextureFilter||(t.TextureFilter={}))[yt.Nearest=9728]="Nearest",yt[yt.Linear=9729]="Linear",yt[yt.MipMap=9987]="MipMap",yt[yt.MipMapNearestNearest=9984]="MipMapNearestNearest",yt[yt.MipMapLinearNearest=9985]="MipMapLinearNearest",yt[yt.MipMapNearestLinear=9986]="MipMapNearestLinear",yt[yt.MipMapLinearLinear=9987]="MipMapLinearLinear",t.TextureWrap=void 0,(Mt=t.TextureWrap||(t.TextureWrap={}))[Mt.MirroredRepeat=33648]="MirroredRepeat",Mt[Mt.ClampToEdge=33071]="ClampToEdge",Mt[Mt.Repeat=10497]="Repeat";class Ct{texture;u=0;v=0;u2=0;v2=0;width=0;height=0;degrees=0;offsetX=0;offsetY=0;originalWidth=0;originalHeight=0}class Ft{pages=new Array;regions=new Array;constructor(e){let s=new Et(e),i=new Array(4),n={size:t=>{t.width=parseInt(i[1]),t.height=parseInt(i[2])},format:()=>{},filter:e=>{e.minFilter=l.enumValue(t.TextureFilter,i[1]),e.magFilter=l.enumValue(t.TextureFilter,i[2])},repeat:e=>{-1!=i[1].indexOf("x")&&(e.uWrap=t.TextureWrap.Repeat),-1!=i[1].indexOf("y")&&(e.vWrap=t.TextureWrap.Repeat)},pma:t=>{t.pma="true"==i[1]}};var r={xy:t=>{t.x=parseInt(i[1]),t.y=parseInt(i[2])},size:t=>{t.width=parseInt(i[1]),t.height=parseInt(i[2])},bounds:t=>{t.x=parseInt(i[1]),t.y=parseInt(i[2]),t.width=parseInt(i[3]),t.height=parseInt(i[4])},offset:t=>{t.offsetX=parseInt(i[1]),t.offsetY=parseInt(i[2])},orig:t=>{t.originalWidth=parseInt(i[1]),t.originalHeight=parseInt(i[2])},offsets:t=>{t.offsetX=parseInt(i[1]),t.offsetY=parseInt(i[2]),t.originalWidth=parseInt(i[3]),t.originalHeight=parseInt(i[4])},rotate:t=>{let e=i[1];"true"==e?t.degrees=90:"false"!=e&&(t.degrees=parseInt(e))},index:t=>{t.index=parseInt(i[1])}};let a=s.readLine();for(;a&&0==a.trim().length;)a=s.readLine();for(;a&&0!=a.trim().length&&0!=s.readEntry(i,a);)a=s.readLine();let o=null,h=null,c=null;for(;null!==a;)if(0==a.trim().length)o=null,a=s.readLine();else if(o){let t=new Yt(o,a);for(;;){let e=s.readEntry(i,a=s.readLine());if(0==e)break;let n=r[i[0]];if(n)n(t);else{h||(h=[]),c||(c=[]),h.push(i[0]);let t=[];for(let s=0;s<e;s++)t.push(parseInt(i[s+1]));c.push(t)}}0==t.originalWidth&&0==t.originalHeight&&(t.originalWidth=t.width,t.originalHeight=t.height),h&&h.length>0&&c&&c.length>0&&(t.names=h,t.values=c,h=null,c=null),t.u=t.x/o.width,t.v=t.y/o.height,90==t.degrees?(t.u2=(t.x+t.height)/o.width,t.v2=(t.y+t.width)/o.height):(t.u2=(t.x+t.width)/o.width,t.v2=(t.y+t.height)/o.height),this.regions.push(t)}else{for(o=new Rt(a.trim());0!=s.readEntry(i,a=s.readLine());){let t=n[i[0]];t&&t(o)}this.pages.push(o)}}findRegion(t){for(let e=0;e<this.regions.length;e++)if(this.regions[e].name==t)return this.regions[e];return null}setTextures(t,e=""){for(let s of this.pages)s.setTexture(t.get(e+s.name))}dispose(){for(let t=0;t<this.pages.length;t++)this.pages[t].texture?.dispose()}}class Et{lines;index=0;constructor(t){this.lines=t.split(/\r\n|\r|\n/)}readLine(){return this.index>=this.lines.length?null:this.lines[this.index++]}readEntry(t,e){if(!e)return 0;if(0==(e=e.trim()).length)return 0;let s=e.indexOf(":");if(-1==s)return 0;t[0]=e.substr(0,s).trim();for(let i=1,n=s+1;;i++){let s=e.indexOf(",",n);if(-1==s)return t[i]=e.substr(n).trim(),i;if(t[i]=e.substr(n,s-n).trim(),n=s+1,4==i)return 4}}}class Rt{name;minFilter=t.TextureFilter.Nearest;magFilter=t.TextureFilter.Nearest;uWrap=t.TextureWrap.ClampToEdge;vWrap=t.TextureWrap.ClampToEdge;texture=null;width=0;height=0;pma=!1;regions=new Array;constructor(t){this.name=t}setTexture(t){this.texture=t,t.setFilters(this.minFilter,this.magFilter),t.setWraps(this.uWrap,this.vWrap);for(let e of this.regions)e.texture=t}}class Yt extends Ct{page;name;x=0;y=0;offsetX=0;offsetY=0;originalWidth=0;originalHeight=0;index=0;degrees=0;names=null;values=null;constructor(t,e){super(),this.page=t,this.name=e,t.regions.push(this)}}class Pt extends u{region=null;path;regionUVs=[];uvs=[];triangles=[];color=new n(1,1,1,1);width=0;height=0;hullLength=0;edges=[];parentMesh=null;sequence=null;tempColor=new n(0,0,0,0);constructor(t,e){super(t),this.path=e}updateRegion(){if(!this.region)throw new Error("Region not set.");let t=this.regionUVs;this.uvs&&this.uvs.length==t.length||(this.uvs=l.newFloatArray(t.length));let e=this.uvs,s=this.uvs.length,i=this.region.u,n=this.region.v,r=0,a=0;if(this.region instanceof Yt){let o=this.region,l=o.page,h=l.width,c=l.height;switch(o.degrees){case 90:i-=(o.originalHeight-o.offsetY-o.height)/h,n-=(o.originalWidth-o.offsetX-o.width)/c,r=o.originalHeight/h,a=o.originalWidth/c;for(let o=0;o<s;o+=2)e[o]=i+t[o+1]*r,e[o+1]=n+(1-t[o])*a;return;case 180:i-=(o.originalWidth-o.offsetX-o.width)/h,n-=o.offsetY/c,r=o.originalWidth/h,a=o.originalHeight/c;for(let o=0;o<s;o+=2)e[o]=i+(1-t[o])*r,e[o+1]=n+(1-t[o+1])*a;return;case 270:i-=o.offsetY/h,n-=o.offsetX/c,r=o.originalHeight/h,a=o.originalWidth/c;for(let o=0;o<s;o+=2)e[o]=i+(1-t[o+1])*r,e[o+1]=n+t[o]*a;return}i-=o.offsetX/h,n-=(o.originalHeight-o.offsetY-o.height)/c,r=o.originalWidth/h,a=o.originalHeight/c}else this.region?(r=this.region.u2-i,a=this.region.v2-n):(i=n=0,r=a=1);for(let o=0;o<s;o+=2)e[o]=i+t[o]*r,e[o+1]=n+t[o+1]*a}getParentMesh(){return this.parentMesh}setParentMesh(t){this.parentMesh=t,t&&(this.bones=t.bones,this.vertices=t.vertices,this.worldVerticesLength=t.worldVerticesLength,this.regionUVs=t.regionUVs,this.triangles=t.triangles,this.hullLength=t.hullLength,this.worldVerticesLength=t.worldVerticesLength)}copy(){if(this.parentMesh)return this.newLinkedMesh();let t=new Pt(this.name,this.path);return t.region=this.region,t.color.setFromColor(this.color),this.copyTo(t),t.regionUVs=new Array(this.regionUVs.length),l.arrayCopy(this.regionUVs,0,t.regionUVs,0,this.regionUVs.length),t.uvs=new Array(this.uvs.length),l.arrayCopy(this.uvs,0,t.uvs,0,this.uvs.length),t.triangles=new Array(this.triangles.length),l.arrayCopy(this.triangles,0,t.triangles,0,this.triangles.length),t.hullLength=this.hullLength,t.sequence=null!=this.sequence?this.sequence.copy():null,this.edges&&(t.edges=new Array(this.edges.length),l.arrayCopy(this.edges,0,t.edges,0,this.edges.length)),t.width=this.width,t.height=this.height,t}computeWorldVertices(t,e,s,i,n,r){null!=this.sequence&&this.sequence.apply(t,this),super.computeWorldVertices(t,e,s,i,n,r)}newLinkedMesh(){let t=new Pt(this.name,this.path);return t.region=this.region,t.color.setFromColor(this.color),t.timelineAttachment=this.timelineAttachment,t.setParentMesh(this.parentMesh?this.parentMesh:this),null!=t.region&&t.updateRegion(),t}}class Xt extends u{lengths=[];closed=!1;constantSpeed=!1;color=new n(1,1,1,1);constructor(t){super(t)}copy(){let t=new Xt(this.name);return this.copyTo(t),t.lengths=new Array(this.lengths.length),l.arrayCopy(this.lengths,0,t.lengths,0,this.lengths.length),t.closed=closed,t.constantSpeed=this.constantSpeed,t.color.setFromColor(this.color),t}}class _t extends u{x=0;y=0;rotation=0;color=new n(.38,.94,0,1);constructor(t){super(t)}computeWorldPosition(t,e){return e.x=this.x*t.a+this.y*t.b+t.worldX,e.y=this.x*t.c+this.y*t.d+t.worldY,e}computeWorldRotation(t){const e=this.rotation*r.degRad,s=Math.cos(e),i=Math.sin(e),n=s*t.a+i*t.b,a=s*t.c+i*t.d;return r.atan2Deg(a,n)}copy(){let t=new _t(this.name);return t.x=this.x,t.y=this.y,t.rotation=this.rotation,t.color.setFromColor(this.color),t}}class Vt extends d{x=0;y=0;scaleX=1;scaleY=1;rotation=0;width=0;height=0;color=new n(1,1,1,1);path;region=null;sequence=null;offset=l.newFloatArray(8);uvs=l.newFloatArray(8);tempColor=new n(1,1,1,1);constructor(t,e){super(t),this.path=e}updateRegion(){if(!this.region)throw new Error("Region not set.");let t=this.region,e=this.uvs;if(null==t)return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e[4]=1,e[5]=1,e[6]=1,void(e[7]=0);let s=this.width/this.region.originalWidth*this.scaleX,i=this.height/this.region.originalHeight*this.scaleY,n=-this.width/2*this.scaleX+this.region.offsetX*s,a=-this.height/2*this.scaleY+this.region.offsetY*i,o=n+this.region.width*s,l=a+this.region.height*i,h=this.rotation*r.degRad,c=Math.cos(h),d=Math.sin(h),u=this.x,f=this.y,m=n*c+u,g=n*d,p=a*c+f,x=a*d,w=o*c+u,b=o*d,y=l*c+f,M=l*d,v=this.offset;v[0]=m-x,v[1]=p+g,v[2]=m-M,v[3]=y+g,v[4]=w-M,v[5]=y+b,v[6]=w-x,v[7]=p+b,90==t.degrees?(e[0]=t.u2,e[1]=t.v2,e[2]=t.u,e[3]=t.v2,e[4]=t.u,e[5]=t.v,e[6]=t.u2,e[7]=t.v):(e[0]=t.u,e[1]=t.v2,e[2]=t.u,e[3]=t.v,e[4]=t.u2,e[5]=t.v,e[6]=t.u2,e[7]=t.v2)}computeWorldVertices(t,e,s,i){null!=this.sequence&&this.sequence.apply(t,this);let n=t.bone,r=this.offset,a=n.worldX,o=n.worldY,l=n.a,h=n.b,c=n.c,d=n.d,u=0,f=0;u=r[0],f=r[1],e[s]=u*l+f*h+a,e[s+1]=u*c+f*d+o,s+=i,u=r[2],f=r[3],e[s]=u*l+f*h+a,e[s+1]=u*c+f*d+o,s+=i,u=r[4],f=r[5],e[s]=u*l+f*h+a,e[s+1]=u*c+f*d+o,s+=i,u=r[6],f=r[7],e[s]=u*l+f*h+a,e[s+1]=u*c+f*d+o}copy(){let t=new Vt(this.name,this.path);return t.region=this.region,t.x=this.x,t.y=this.y,t.scaleX=this.scaleX,t.scaleY=this.scaleY,t.rotation=this.rotation,t.width=this.width,t.height=this.height,l.arrayCopy(this.uvs,0,t.uvs,0,8),l.arrayCopy(this.offset,0,t.offset,0,8),t.color.setFromColor(this.color),t.sequence=null!=this.sequence?this.sequence.copy():null,t}static X1=0;static Y1=1;static C1R=2;static C1G=3;static C1B=4;static C1A=5;static U1=6;static V1=7;static X2=8;static Y2=9;static C2R=10;static C2G=11;static C2B=12;static C2A=13;static U2=14;static V2=15;static X3=16;static Y3=17;static C3R=18;static C3G=19;static C3B=20;static C3A=21;static U3=22;static V3=23;static X4=24;static Y4=25;static C4R=26;static C4G=27;static C4B=28;static C4A=29;static U4=30;static V4=31}class Dt{atlas;constructor(t){this.atlas=t}loadSequence(t,e,s){let i=s.regions;for(let n=0,r=i.length;n<r;n++){let r=s.getPath(e,n),a=this.atlas.findRegion(r);if(null==a)throw new Error("Region not found in atlas: "+r+" (sequence: "+t+")");i[n]=a}}newRegionAttachment(t,e,s,i){let n=new Vt(e,s);if(null!=i)this.loadSequence(e,s,i);else{let t=this.atlas.findRegion(s);if(!t)throw new Error("Region not found in atlas: "+s+" (region attachment: "+e+")");n.region=t}return n}newMeshAttachment(t,e,s,i){let n=new Pt(e,s);if(null!=i)this.loadSequence(e,s,i);else{let t=this.atlas.findRegion(s);if(!t)throw new Error("Region not found in atlas: "+s+" (mesh attachment: "+e+")");n.region=t}return n}newBoundingBoxAttachment(t,e){return new xt(e)}newPathAttachment(t,e){return new Xt(e)}newPointAttachment(t,e){return new _t(e)}newClippingAttachment(t,e){return new wt(e)}}class Ot{index=0;name;parent=null;length=0;x=0;y=0;rotation=0;scaleX=1;scaleY=1;shearX=0;shearY=0;inherit=t.Inherit.Normal;skinRequired=!1;color=new n;icon;visible=!1;constructor(t,e,s){if(t<0)throw new Error("index must be >= 0.");if(!e)throw new Error("name cannot be null.");this.index=t,this.name=e,this.parent=s}}t.Inherit=void 0,(vt=t.Inherit||(t.Inherit={}))[vt.Normal=0]="Normal",vt[vt.OnlyTranslation=1]="OnlyTranslation",vt[vt.NoRotationOrReflection=2]="NoRotationOrReflection",vt[vt.NoScale=3]="NoScale",vt[vt.NoScaleOrReflection=4]="NoScaleOrReflection";class Nt{data;skeleton;parent=null;children=new Array;x=0;y=0;rotation=0;scaleX=0;scaleY=0;shearX=0;shearY=0;ax=0;ay=0;arotation=0;ascaleX=0;ascaleY=0;ashearX=0;ashearY=0;a=0;b=0;c=0;d=0;worldY=0;worldX=0;inherit=t.Inherit.Normal;sorted=!1;active=!1;constructor(t,e,s){if(!t)throw new Error("data cannot be null.");if(!e)throw new Error("skeleton cannot be null.");this.data=t,this.skeleton=e,this.parent=s,this.setToSetupPose()}isActive(){return this.active}update(t){this.updateWorldTransformWith(this.ax,this.ay,this.arotation,this.ascaleX,this.ascaleY,this.ashearX,this.ashearY)}updateWorldTransform(){this.updateWorldTransformWith(this.x,this.y,this.rotation,this.scaleX,this.scaleY,this.shearX,this.shearY)}updateWorldTransformWith(e,s,i,n,a,o,l){this.ax=e,this.ay=s,this.arotation=i,this.ascaleX=n,this.ascaleY=a,this.ashearX=o,this.ashearY=l;let h=this.parent;if(!h){let t=this.skeleton;const h=t.scaleX,c=t.scaleY,d=(i+o)*r.degRad,u=(i+90+l)*r.degRad;return this.a=Math.cos(d)*n*h,this.b=Math.cos(u)*a*h,this.c=Math.sin(d)*n*c,this.d=Math.sin(u)*a*c,this.worldX=e*h+t.x,void(this.worldY=s*c+t.y)}let c=h.a,d=h.b,u=h.c,f=h.d;switch(this.worldX=c*e+d*s+h.worldX,this.worldY=u*e+f*s+h.worldY,this.inherit){case t.Inherit.Normal:{const t=(i+o)*r.degRad,e=(i+90+l)*r.degRad,s=Math.cos(t)*n,h=Math.cos(e)*a,m=Math.sin(t)*n,g=Math.sin(e)*a;return this.a=c*s+d*m,this.b=c*h+d*g,this.c=u*s+f*m,void(this.d=u*h+f*g)}case t.Inherit.OnlyTranslation:{const t=(i+o)*r.degRad,e=(i+90+l)*r.degRad;this.a=Math.cos(t)*n,this.b=Math.cos(e)*a,this.c=Math.sin(t)*n,this.d=Math.sin(e)*a;break}case t.Inherit.NoRotationOrReflection:{let t=c*c+u*u,e=0;t>1e-4?(t=Math.abs(c*f-d*u)/t,c/=this.skeleton.scaleX,u/=this.skeleton.scaleY,d=u*t,f=c*t,e=Math.atan2(u,c)*r.radDeg):(c=0,u=0,e=90-Math.atan2(f,d)*r.radDeg);const s=(i+o-e)*r.degRad,h=(i+l-e+90)*r.degRad,m=Math.cos(s)*n,g=Math.cos(h)*a,p=Math.sin(s)*n,x=Math.sin(h)*a;this.a=c*m-d*p,this.b=c*g-d*x,this.c=u*m+f*p,this.d=u*g+f*x;break}case t.Inherit.NoScale:case t.Inherit.NoScaleOrReflection:{i*=r.degRad;const e=Math.cos(i),s=Math.sin(i);let h=(c*e+d*s)/this.skeleton.scaleX,m=(u*e+f*s)/this.skeleton.scaleY,g=Math.sqrt(h*h+m*m);g>1e-5&&(g=1/g),h*=g,m*=g,g=Math.sqrt(h*h+m*m),this.inherit==t.Inherit.NoScale&&c*f-d*u<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(g=-g),i=Math.PI/2+Math.atan2(m,h);const p=Math.cos(i)*g,x=Math.sin(i)*g;o*=r.degRad,l=(90+l)*r.degRad;const w=Math.cos(o)*n,b=Math.cos(l)*a,y=Math.sin(o)*n,M=Math.sin(l)*a;this.a=h*w+p*y,this.b=h*b+p*M,this.c=m*w+x*y,this.d=m*b+x*M;break}}this.a*=this.skeleton.scaleX,this.b*=this.skeleton.scaleX,this.c*=this.skeleton.scaleY,this.d*=this.skeleton.scaleY}setToSetupPose(){let t=this.data;this.x=t.x,this.y=t.y,this.rotation=t.rotation,this.scaleX=t.scaleX,this.scaleY=t.scaleY,this.shearX=t.shearX,this.shearY=t.shearY,this.inherit=t.inherit}updateAppliedTransform(){let e=this.parent;if(!e)return this.ax=this.worldX-this.skeleton.x,this.ay=this.worldY-this.skeleton.y,this.arotation=Math.atan2(this.c,this.a)*r.radDeg,this.ascaleX=Math.sqrt(this.a*this.a+this.c*this.c),this.ascaleY=Math.sqrt(this.b*this.b+this.d*this.d),this.ashearX=0,void(this.ashearY=Math.atan2(this.a*this.b+this.c*this.d,this.a*this.d-this.b*this.c)*r.radDeg);let s,i,n,a,o=e.a,l=e.b,h=e.c,c=e.d,d=1/(o*c-l*h),u=c*d,f=l*d,m=h*d,g=o*d,p=this.worldX-e.worldX,x=this.worldY-e.worldY;if(this.ax=p*u-x*f,this.ay=x*g-p*m,this.inherit==t.Inherit.OnlyTranslation)s=this.a,i=this.b,n=this.c,a=this.d;else{switch(this.inherit){case t.Inherit.NoRotationOrReflection:{let t=Math.abs(o*c-l*h)/(o*o+h*h),e=o/this.skeleton.scaleX;l=-(h/this.skeleton.scaleY)*t*this.skeleton.scaleX,c=e*t*this.skeleton.scaleY,d=1/(o*c-l*h),u=c*d,f=l*d;break}case t.Inherit.NoScale:case t.Inherit.NoScaleOrReflection:let e=r.cosDeg(this.rotation),s=r.sinDeg(this.rotation);o=(o*e+l*s)/this.skeleton.scaleX,h=(h*e+c*s)/this.skeleton.scaleY;let i=Math.sqrt(o*o+h*h);i>1e-5&&(i=1/i),o*=i,h*=i,i=Math.sqrt(o*o+h*h),this.inherit==t.Inherit.NoScale&&d<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(i=-i);let n=r.PI/2+Math.atan2(h,o);l=Math.cos(n)*i,c=Math.sin(n)*i,d=1/(o*c-l*h),u=c*d,f=l*d,m=h*d,g=o*d}s=u*this.a-f*this.c,i=u*this.b-f*this.d,n=g*this.c-m*this.a,a=g*this.d-m*this.b}if(this.ashearX=0,this.ascaleX=Math.sqrt(s*s+n*n),this.ascaleX>1e-4){let t=s*a-i*n;this.ascaleY=t/this.ascaleX,this.ashearY=-Math.atan2(s*i+n*a,t)*r.radDeg,this.arotation=Math.atan2(n,s)*r.radDeg}else this.ascaleX=0,this.ascaleY=Math.sqrt(i*i+a*a),this.ashearY=0,this.arotation=90-Math.atan2(a,i)*r.radDeg}getWorldRotationX(){return Math.atan2(this.c,this.a)*r.radDeg}getWorldRotationY(){return Math.atan2(this.d,this.b)*r.radDeg}getWorldScaleX(){return Math.sqrt(this.a*this.a+this.c*this.c)}getWorldScaleY(){return Math.sqrt(this.b*this.b+this.d*this.d)}worldToLocal(t){let e=1/(this.a*this.d-this.b*this.c),s=t.x-this.worldX,i=t.y-this.worldY;return t.x=s*this.d*e-i*this.b*e,t.y=i*this.a*e-s*this.c*e,t}localToWorld(t){let e=t.x,s=t.y;return t.x=e*this.a+s*this.b+this.worldX,t.y=e*this.c+s*this.d+this.worldY,t}worldToParent(t){if(null==t)throw new Error("world cannot be null.");return null==this.parent?t:this.parent.worldToLocal(t)}parentToWorld(t){if(null==t)throw new Error("world cannot be null.");return null==this.parent?t:this.parent.localToWorld(t)}worldToLocalRotation(t){let e=r.sinDeg(t),s=r.cosDeg(t);return Math.atan2(this.a*e-this.c*s,this.d*s-this.b*e)*r.radDeg+this.rotation-this.shearX}localToWorldRotation(t){t-=this.rotation-this.shearX;let e=r.sinDeg(t),s=r.cosDeg(t);return Math.atan2(s*this.c+e*this.d,s*this.a+e*this.b)*r.radDeg}rotateWorld(t){t*=r.degRad;const e=Math.sin(t),s=Math.cos(t),i=this.a,n=this.b;this.a=s*i-e*this.c,this.b=s*n-e*this.d,this.c=e*i+s*this.c,this.d=e*n+s*this.d}}class Lt{name;order;skinRequired;constructor(t,e,s){this.name=t,this.order=e,this.skinRequired=s}}class qt{callbacks={};rawDataUris={};dataUriToString(t){if(!t.startsWith("data:"))throw new Error("Not a data URI.");let e=t.indexOf("base64,");return-1!=e?(e+=7,atob(t.substr(e))):t.substr(t.indexOf(",")+1)}base64ToUint8Array(t){for(var e=window.atob(t),s=e.length,i=new Uint8Array(s),n=0;n<s;n++)i[n]=e.charCodeAt(n);return i}dataUriToUint8Array(t){if(!t.startsWith("data:"))throw new Error("Not a data URI.");let e=t.indexOf("base64,");if(-1==e)throw new Error("Not a binary data URI.");return e+=7,this.base64ToUint8Array(t.substr(e))}downloadText(t,e,s){if(this.start(t,e,s))return;if(this.rawDataUris[t]){try{let e=this.rawDataUris[t];this.finish(t,200,this.dataUriToString(e))}catch(e){this.finish(t,400,JSON.stringify(e))}return}let i=new XMLHttpRequest;i.overrideMimeType("text/html"),i.open("GET",t,!0);let n=()=>{this.finish(t,i.status,i.responseText)};i.onload=n,i.onerror=n,i.send()}downloadJson(t,e,s){this.downloadText(t,(t=>{e(JSON.parse(t))}),s)}downloadBinary(t,e,s){if(this.start(t,e,s))return;if(this.rawDataUris[t]){try{let e=this.rawDataUris[t];this.finish(t,200,this.dataUriToUint8Array(e))}catch(e){this.finish(t,400,JSON.stringify(e))}return}let i=new XMLHttpRequest;i.open("GET",t,!0),i.responseType="arraybuffer";let n=()=>{this.finish(t,i.status,i.response)};i.onload=()=>{200==i.status||0==i.status?this.finish(t,200,new Uint8Array(i.response)):n()},i.onerror=n,i.send()}start(t,e,s){let i=this.callbacks[t];try{if(i)return!0;this.callbacks[t]=i=[]}finally{i.push(e,s)}}finish(t,e,s){let i=this.callbacks[t];delete this.callbacks[t];let n=200==e||0==e?[s]:[e,s];for(let t=n.length-1,e=i.length;t<e;t+=2)i[t].apply(null,n)}}class Wt{data;intValue=0;floatValue=0;stringValue=null;time=0;volume=0;balance=0;constructor(t,e){if(!e)throw new Error("data cannot be null.");this.time=t,this.data=e}}class Ut{name;intValue=0;floatValue=0;stringValue=null;audioPath=null;volume=0;balance=0;constructor(t){this.name=t}}class zt{data;bones;target;bendDirection=0;compress=!1;stretch=!1;mix=1;softness=0;active=!1;constructor(t,e){if(!t)throw new Error("data cannot be null.");if(!e)throw new Error("skeleton cannot be null.");this.data=t,this.bones=new Array;for(let s=0;s<t.bones.length;s++){let i=e.findBone(t.bones[s].name);if(!i)throw new Error(`Couldn't find bone ${t.bones[s].name}`);this.bones.push(i)}let s=e.findBone(t.target.name);if(!s)throw new Error(`Couldn't find bone ${t.target.name}`);this.target=s,this.mix=t.mix,this.softness=t.softness,this.bendDirection=t.bendDirection,this.compress=t.compress,this.stretch=t.stretch}isActive(){return this.active}setToSetupPose(){const t=this.data;this.mix=t.mix,this.softness=t.softness,this.bendDirection=t.bendDirection,this.compress=t.compress,this.stretch=t.stretch}update(t){if(0==this.mix)return;let e=this.target,s=this.bones;switch(s.length){case 1:this.apply1(s[0],e.worldX,e.worldY,this.compress,this.stretch,this.data.uniform,this.mix);break;case 2:this.apply2(s[0],s[1],e.worldX,e.worldY,this.bendDirection,this.stretch,this.data.uniform,this.softness,this.mix)}}apply1(e,s,i,n,a,o,l){let h=e.parent;if(!h)throw new Error("IK bone must have parent.");let c=h.a,d=h.b,u=h.c,f=h.d,m=-e.ashearX-e.arotation,g=0,p=0;switch(e.inherit){case t.Inherit.OnlyTranslation:g=(s-e.worldX)*r.signum(e.skeleton.scaleX),p=(i-e.worldY)*r.signum(e.skeleton.scaleY);break;case t.Inherit.NoRotationOrReflection:let n=Math.abs(c*f-d*u)/Math.max(1e-4,c*c+u*u),a=c/e.skeleton.scaleX,o=u/e.skeleton.scaleY;d=-o*n*e.skeleton.scaleX,f=a*n*e.skeleton.scaleY,m+=Math.atan2(o,a)*r.radDeg;default:let l=s-h.worldX,x=i-h.worldY,w=c*f-d*u;Math.abs(w)<=1e-4?(g=0,p=0):(g=(l*f-x*d)/w-e.ax,p=(x*c-l*u)/w-e.ay)}m+=Math.atan2(p,g)*r.radDeg,e.ascaleX<0&&(m+=180),m>180?m-=360:m<-180&&(m+=360);let x=e.ascaleX,w=e.ascaleY;if(n||a){switch(e.inherit){case t.Inherit.NoScale:case t.Inherit.NoScaleOrReflection:g=s-e.worldX,p=i-e.worldY}const r=e.data.length*x;if(r>1e-4){const t=g*g+p*p;if(n&&t<r*r||a&&t>r*r){const e=(Math.sqrt(t)/r-1)*l+1;x*=e,o&&(w*=e)}}}e.updateWorldTransformWith(e.ax,e.ay,e.arotation+m*l,x,w,e.ashearX,e.ashearY)}apply2(e,s,i,n,a,o,l,h,c){if(e.inherit!=t.Inherit.Normal||s.inherit!=t.Inherit.Normal)return;let d=e.ax,u=e.ay,f=e.ascaleX,m=e.ascaleY,g=f,p=m,x=s.ascaleX,w=0,b=0,y=0;f<0?(f=-f,w=180,y=-1):(w=0,y=1),m<0&&(m=-m,y=-y),x<0?(x=-x,b=180):b=0;let M=s.ax,v=0,S=0,k=0,I=e.a,A=e.b,B=e.c,T=e.d,C=Math.abs(f-m)<=1e-4;!C||o?(v=0,S=I*M+e.worldX,k=B*M+e.worldY):(v=s.ay,S=I*M+A*v+e.worldX,k=B*M+T*v+e.worldY);let F=e.parent;if(!F)throw new Error("IK parent must itself have a parent.");I=F.a,A=F.b,B=F.c,T=F.d;let E=I*T-A*B,R=S-F.worldX,Y=k-F.worldY;E=Math.abs(E)<=1e-4?0:1/E;let P,X,_=(R*T-Y*A)*E-d,V=(Y*I-R*B)*E-u,D=Math.sqrt(_*_+V*V),O=s.data.length*x;if(D<1e-4)return this.apply1(e,i,n,!1,o,!1,c),void s.updateWorldTransformWith(M,v,0,s.ascaleX,s.ascaleY,s.ashearX,s.ashearY);R=i-F.worldX,Y=n-F.worldY;let N=(R*T-Y*A)*E-d,L=(Y*I-R*B)*E-u,q=N*N+L*L;if(0!=h){h*=f*(x+1)*.5;let t=Math.sqrt(q),e=t-D-O*f+h;if(e>0){let s=Math.min(1,e/(2*h))-1;s=(e-h*(1-s*s))/t,N-=s*N,L-=s*L,q=N*N+L*L}}t:if(C){O*=f;let t=(q-D*D-O*O)/(2*D*O);t<-1?(t=-1,X=Math.PI*a):t>1?(t=1,X=0,o&&(I=(Math.sqrt(q)/(D+O)-1)*c+1,g*=I,l&&(p*=I))):X=Math.acos(t)*a,I=D+O*t,A=O*Math.sin(X),P=Math.atan2(L*I-N*A,N*I+L*A)}else{I=f*O,A=m*O;let t=I*I,e=A*A,s=Math.atan2(L,N);B=e*D*D+t*q-t*e;let i=-2*e*D,n=e-t;if(T=i*i-4*n*B,T>=0){let t=Math.sqrt(T);i<0&&(t=-t),t=.5*-(i+t);let e=t/n,r=B/t,o=Math.abs(e)<Math.abs(r)?e:r;if(o*o<=q){Y=Math.sqrt(q-o*o)*a,P=s-Math.atan2(Y,o),X=Math.atan2(Y/m,(o-D)/f);break t}}let o=r.PI,l=D-I,h=l*l,c=0,d=0,u=D+I,g=u*u,p=0;B=-I*D/(t-e),B>=-1&&B<=1&&(B=Math.acos(B),R=I*Math.cos(B)+D,Y=A*Math.sin(B),T=R*R+Y*Y,T<h&&(o=B,h=T,l=R,c=Y),T>g&&(d=B,g=T,u=R,p=Y)),q<=.5*(h+g)?(P=s-Math.atan2(c*a,l),X=o*a):(P=s-Math.atan2(p*a,u),X=d*a)}let W=Math.atan2(v,M)*y,U=e.arotation;P=(P-W)*r.radDeg+w-U,P>180?P-=360:P<-180&&(P+=360),e.updateWorldTransformWith(d,u,U+P*c,g,p,0,0),U=s.arotation,X=((X+W)*r.radDeg-s.ashearX)*y+b-U,X>180?X-=360:X<-180&&(X+=360),s.updateWorldTransformWith(M,v,U+X*c,s.ascaleX,s.ascaleY,s.ashearX,s.ashearY)}}class Gt extends Lt{bones=new Array;_target=null;set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}bendDirection=0;compress=!1;stretch=!1;uniform=!1;mix=0;softness=0;constructor(t){super(t,0,!1)}}class $t extends Lt{bones=new Array;_target=null;set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("SlotData not set.")}positionMode=t.PositionMode.Fixed;spacingMode=t.SpacingMode.Fixed;rotateMode=t.RotateMode.Chain;offsetRotation=0;position=0;spacing=0;mixRotate=0;mixX=0;mixY=0;constructor(t){super(t,0,!1)}}t.PositionMode=void 0,(St=t.PositionMode||(t.PositionMode={}))[St.Fixed=0]="Fixed",St[St.Percent=1]="Percent",t.SpacingMode=void 0,(kt=t.SpacingMode||(t.SpacingMode={}))[kt.Length=0]="Length",kt[kt.Fixed=1]="Fixed",kt[kt.Percent=2]="Percent",kt[kt.Proportional=3]="Proportional",t.RotateMode=void 0,(It=t.RotateMode||(t.RotateMode={}))[It.Tangent=0]="Tangent",It[It.Chain=1]="Chain",It[It.ChainScale=2]="ChainScale";class Ht{static NONE=-1;static BEFORE=-2;static AFTER=-3;static epsilon=1e-5;data;bones;target;position=0;spacing=0;mixRotate=0;mixX=0;mixY=0;spaces=new Array;positions=new Array;world=new Array;curves=new Array;lengths=new Array;segments=new Array;active=!1;constructor(t,e){if(!t)throw new Error("data cannot be null.");if(!e)throw new Error("skeleton cannot be null.");this.data=t,this.bones=new Array;for(let s=0,i=t.bones.length;s<i;s++){let i=e.findBone(t.bones[s].name);if(!i)throw new Error(`Couldn't find bone ${t.bones[s].name}.`);this.bones.push(i)}let s=e.findSlot(t.target.name);if(!s)throw new Error(`Couldn't find target bone ${t.target.name}`);this.target=s,this.position=t.position,this.spacing=t.spacing,this.mixRotate=t.mixRotate,this.mixX=t.mixX,this.mixY=t.mixY}isActive(){return this.active}setToSetupPose(){const t=this.data;this.position=t.position,this.spacing=t.spacing,this.mixRotate=t.mixRotate,this.mixX=t.mixX,this.mixY=t.mixY}update(e){let s=this.target.getAttachment();if(!(s instanceof Xt))return;let i=this.mixRotate,n=this.mixX,a=this.mixY;if(0==i&&0==n&&0==a)return;let o=this.data,h=o.rotateMode==t.RotateMode.Tangent,c=o.rotateMode==t.RotateMode.ChainScale,d=this.bones,u=d.length,f=h?u:u+1,m=l.setArraySize(this.spaces,f),g=c?this.lengths=l.setArraySize(this.lengths,u):[],p=this.spacing;switch(o.spacingMode){case t.SpacingMode.Percent:if(c)for(let t=0,e=f-1;t<e;t++){let e=d[t],s=e.data.length,i=s*e.a,n=s*e.c;g[t]=Math.sqrt(i*i+n*n)}l.arrayFill(m,1,f,p);break;case t.SpacingMode.Proportional:let e=0;for(let t=0,s=f-1;t<s;){let s=d[t],i=s.data.length;if(i<Ht.epsilon)c&&(g[t]=0),m[++t]=p;else{let n=i*s.a,r=i*s.c,a=Math.sqrt(n*n+r*r);c&&(g[t]=a),m[++t]=a,e+=a}}if(e>0){e=f/e*p;for(let t=1;t<f;t++)m[t]*=e}break;default:let s=o.spacingMode==t.SpacingMode.Length;for(let t=0,e=f-1;t<e;){let e=d[t],i=e.data.length;if(i<Ht.epsilon)c&&(g[t]=0),m[++t]=p;else{let n=i*e.a,r=i*e.c,a=Math.sqrt(n*n+r*r);c&&(g[t]=a),m[++t]=(s?i+p:p)*a/i}}}let x=this.computeWorldPositions(s,f,h),w=x[0],b=x[1],y=o.offsetRotation,M=!1;if(0==y)M=o.rotateMode==t.RotateMode.Chain;else{M=!1;let t=this.target.bone;y*=t.a*t.d-t.b*t.c>0?r.degRad:-r.degRad}for(let t=0,e=3;t<u;t++,e+=3){let s=d[t];s.worldX+=(w-s.worldX)*n,s.worldY+=(b-s.worldY)*a;let o=x[e],l=x[e+1],u=o-w,f=l-b;if(c){let e=g[t];if(0!=e){let t=(Math.sqrt(u*u+f*f)/e-1)*i+1;s.a*=t,s.c*=t}}if(w=o,b=l,i>0){let n=s.a,a=s.b,o=s.c,l=s.d,c=0,d=0,g=0;if(c=h?x[e-1]:0==m[t+1]?x[e+2]:Math.atan2(f,u),c-=Math.atan2(o,n),M){d=Math.cos(c),g=Math.sin(c);let t=s.data.length;w+=(t*(d*n-g*o)-u)*i,b+=(t*(g*n+d*o)-f)*i}else c+=y;c>r.PI?c-=r.PI2:c<-r.PI&&(c+=r.PI2),c*=i,d=Math.cos(c),g=Math.sin(c),s.a=d*n-g*o,s.b=d*a-g*l,s.c=g*n+d*o,s.d=g*a+d*l}s.updateAppliedTransform()}}computeWorldPositions(e,s,i){let n=this.target,r=this.position,a=this.spaces,o=l.setArraySize(this.positions,3*s+2),h=this.world,c=e.closed,d=e.worldVerticesLength,u=d/6,f=Ht.NONE;if(!e.constantSpeed){let m=e.lengths;u-=c?1:2;let g,p=m[u];switch(this.data.positionMode==t.PositionMode.Percent&&(r*=p),this.data.spacingMode){case t.SpacingMode.Percent:g=p;break;case t.SpacingMode.Proportional:g=p/s;break;default:g=1}h=l.setArraySize(this.world,8);for(let t=0,l=0,x=0;t<s;t++,l+=3){let s=a[t]*g;r+=s;let w=r;if(c)w%=p,w<0&&(w+=p),x=0;else{if(w<0){f!=Ht.BEFORE&&(f=Ht.BEFORE,e.computeWorldVertices(n,2,4,h,0,2)),this.addBeforePosition(w,h,0,o,l);continue}if(w>p){f!=Ht.AFTER&&(f=Ht.AFTER,e.computeWorldVertices(n,d-6,4,h,0,2)),this.addAfterPosition(w-p,h,0,o,l);continue}}for(;;x++){let t=m[x];if(!(w>t)){if(0==x)w/=t;else{let e=m[x-1];w=(w-e)/(t-e)}break}}x!=f&&(f=x,c&&x==u?(e.computeWorldVertices(n,d-4,4,h,0,2),e.computeWorldVertices(n,0,4,h,4,2)):e.computeWorldVertices(n,6*x+2,8,h,0,2)),this.addCurvePosition(w,h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],o,l,i||t>0&&0==s)}return o}c?(d+=2,h=l.setArraySize(this.world,d),e.computeWorldVertices(n,2,d-4,h,0,2),e.computeWorldVertices(n,0,2,h,d-4,2),h[d-2]=h[0],h[d-1]=h[1]):(u--,d-=4,h=l.setArraySize(this.world,d),e.computeWorldVertices(n,2,d,h,0,2));let m,g=l.setArraySize(this.curves,u),p=0,x=h[0],w=h[1],b=0,y=0,M=0,v=0,S=0,k=0,I=0,A=0,B=0,T=0,C=0,F=0,E=0,R=0;for(let t=0,e=2;t<u;t++,e+=6)b=h[e],y=h[e+1],M=h[e+2],v=h[e+3],S=h[e+4],k=h[e+5],I=.1875*(x-2*b+M),A=.1875*(w-2*y+v),B=.09375*(3*(b-M)-x+S),T=.09375*(3*(y-v)-w+k),C=2*I+B,F=2*A+T,E=.75*(b-x)+I+.16666667*B,R=.75*(y-w)+A+.16666667*T,p+=Math.sqrt(E*E+R*R),E+=C,R+=F,C+=B,F+=T,p+=Math.sqrt(E*E+R*R),E+=C,R+=F,p+=Math.sqrt(E*E+R*R),E+=C+B,R+=F+T,p+=Math.sqrt(E*E+R*R),g[t]=p,x=S,w=k;switch(this.data.positionMode==t.PositionMode.Percent&&(r*=p),this.data.spacingMode){case t.SpacingMode.Percent:m=p;break;case t.SpacingMode.Proportional:m=p/s;break;default:m=1}let Y=this.segments,P=0;for(let t=0,e=0,n=0,l=0;t<s;t++,e+=3){let s=a[t]*m;r+=s;let u=r;if(c)u%=p,u<0&&(u+=p),n=0;else{if(u<0){this.addBeforePosition(u,h,0,o,e);continue}if(u>p){this.addAfterPosition(u-p,h,d-4,o,e);continue}}for(;;n++){let t=g[n];if(!(u>t)){if(0==n)u/=t;else{let e=g[n-1];u=(u-e)/(t-e)}break}}if(n!=f){f=n;let t=6*n;for(x=h[t],w=h[t+1],b=h[t+2],y=h[t+3],M=h[t+4],v=h[t+5],S=h[t+6],k=h[t+7],I=.03*(x-2*b+M),A=.03*(w-2*y+v),B=.006*(3*(b-M)-x+S),T=.006*(3*(y-v)-w+k),C=2*I+B,F=2*A+T,E=.3*(b-x)+I+.16666667*B,R=.3*(y-w)+A+.16666667*T,P=Math.sqrt(E*E+R*R),Y[0]=P,t=1;t<8;t++)E+=C,R+=F,C+=B,F+=T,P+=Math.sqrt(E*E+R*R),Y[t]=P;E+=C,R+=F,P+=Math.sqrt(E*E+R*R),Y[8]=P,E+=C+B,R+=F+T,P+=Math.sqrt(E*E+R*R),Y[9]=P,l=0}for(u*=P;;l++){let t=Y[l];if(!(u>t)){if(0==l)u/=t;else{let e=Y[l-1];u=l+(u-e)/(t-e)}break}}this.addCurvePosition(.1*u,x,w,b,y,M,v,S,k,o,e,i||t>0&&0==s)}return o}addBeforePosition(t,e,s,i,n){let r=e[s],a=e[s+1],o=e[s+2]-r,l=e[s+3]-a,h=Math.atan2(l,o);i[n]=r+t*Math.cos(h),i[n+1]=a+t*Math.sin(h),i[n+2]=h}addAfterPosition(t,e,s,i,n){let r=e[s+2],a=e[s+3],o=r-e[s],l=a-e[s+1],h=Math.atan2(l,o);i[n]=r+t*Math.cos(h),i[n+1]=a+t*Math.sin(h),i[n+2]=h}addCurvePosition(t,e,s,i,n,r,a,o,l,h,c,d){if(0==t||isNaN(t))return h[c]=e,h[c+1]=s,void(h[c+2]=Math.atan2(n-s,i-e));let u=t*t,f=u*t,m=1-t,g=m*m,p=g*m,x=m*t,w=3*x,b=m*w,y=w*t,M=e*p+i*b+r*y+o*f,v=s*p+n*b+a*y+l*f;h[c]=M,h[c+1]=v,d&&(h[c+2]=t<.001?Math.atan2(n-s,i-e):Math.atan2(v-(s*g+n*x*2+a*u),M-(e*g+i*x*2+r*u)))}}class jt{data;_bone=null;set bone(t){this._bone=t}get bone(){if(this._bone)return this._bone;throw new Error("Bone not set.")}inertia=0;strength=0;damping=0;massInverse=0;wind=0;gravity=0;mix=0;_reset=!0;ux=0;uy=0;cx=0;cy=0;tx=0;ty=0;xOffset=0;xVelocity=0;yOffset=0;yVelocity=0;rotateOffset=0;rotateVelocity=0;scaleOffset=0;scaleVelocity=0;active=!1;skeleton;remaining=0;lastTime=0;constructor(t,e){this.data=t,this.skeleton=e,this.bone=e.bones[t.bone.index],this.inertia=t.inertia,this.strength=t.strength,this.damping=t.damping,this.massInverse=t.massInverse,this.wind=t.wind,this.gravity=t.gravity,this.mix=t.mix}reset(){this.remaining=0,this.lastTime=this.skeleton.time,this._reset=!0,this.xOffset=0,this.xVelocity=0,this.yOffset=0,this.yVelocity=0,this.rotateOffset=0,this.rotateVelocity=0,this.scaleOffset=0,this.scaleVelocity=0}setToSetupPose(){const t=this.data;this.inertia=t.inertia,this.strength=t.strength,this.damping=t.damping,this.massInverse=t.massInverse,this.wind=t.wind,this.gravity=t.gravity,this.mix=t.mix}isActive(){return this.active}update(e){const s=this.mix;if(0==s)return;const i=this.data.x>0,n=this.data.y>0,a=this.data.rotate>0||this.data.shearX>0,o=this.data.scaleX>0,l=this.bone,h=l.data.length;switch(e){case t.Physics.none:return;case t.Physics.reset:this.reset();case t.Physics.update:const e=Math.max(this.skeleton.time-this.lastTime,0);this.remaining+=e,this.lastTime=this.skeleton.time;const c=l.worldX,d=l.worldY;if(this._reset)this._reset=!1,this.ux=c,this.uy=d;else{let t=this.remaining,u=this.inertia,f=this.data.limit*e,m=this.data.step,g=this.skeleton.data.referenceScale,p=-1;if(i||n){if(i){const t=(this.ux-c)*u;this.xOffset+=t>f?f:t<-f?-f:t,this.ux=c}if(n){const t=(this.uy-d)*u;this.yOffset+=t>f?f:t<-f?-f:t,this.uy=d}if(t>=m){p=Math.pow(this.damping,60*m);const e=this.massInverse*m,s=this.strength,r=this.wind*g,a=(Zt.yDown?-this.gravity:this.gravity)*g;do{i&&(this.xVelocity+=(r-this.xOffset*s)*e,this.xOffset+=this.xVelocity*m,this.xVelocity*=p),n&&(this.yVelocity-=(a+this.yOffset*s)*e,this.yOffset+=this.yVelocity*m,this.yVelocity*=p),t-=m}while(t>=m)}i&&(l.worldX+=this.xOffset*s*this.data.x),n&&(l.worldY+=this.yOffset*s*this.data.y)}if(a||o){let e=Math.atan2(l.c,l.a),i=0,n=0,c=0,d=this.cx-l.worldX,x=this.cy-l.worldY;if(d>f?d=f:d<-f&&(d=-f),x>f?x=f:x<-f&&(x=-f),a){c=(this.data.rotate+this.data.shearX)*s;let t=Math.atan2(x+this.ty,d+this.tx)-e-this.rotateOffset*c;this.rotateOffset+=(t-Math.ceil(t*r.invPI2-.5)*r.PI2)*u,t=this.rotateOffset*c+e,i=Math.cos(t),n=Math.sin(t),o&&(t=h*l.getWorldScaleX(),t>0&&(this.scaleOffset+=(d*i+x*n)*u/t))}else{i=Math.cos(e),n=Math.sin(e);const t=h*l.getWorldScaleX();t>0&&(this.scaleOffset+=(d*i+x*n)*u/t)}if(t=this.remaining,t>=m){-1==p&&(p=Math.pow(this.damping,60*m));const s=this.massInverse*m,r=this.strength,l=this.wind,d=Zt.yDown?-this.gravity:this.gravity,u=h/g;for(;;)if(t-=m,o&&(this.scaleVelocity+=(l*i-d*n-this.scaleOffset*r)*s,this.scaleOffset+=this.scaleVelocity*m,this.scaleVelocity*=p),a){if(this.rotateVelocity-=((l*n+d*i)*u+this.rotateOffset*r)*s,this.rotateOffset+=this.rotateVelocity*m,this.rotateVelocity*=p,t<m)break;const a=this.rotateOffset*c+e;i=Math.cos(a),n=Math.sin(a)}else if(t<m)break}}this.remaining=t}this.cx=l.worldX,this.cy=l.worldY;break;case t.Physics.pose:i&&(l.worldX+=this.xOffset*s*this.data.x),n&&(l.worldY+=this.yOffset*s*this.data.y)}if(a){let t=this.rotateOffset*s,e=0,i=0,n=0;if(this.data.shearX>0){let s=0;this.data.rotate>0&&(s=t*this.data.rotate,e=Math.sin(s),i=Math.cos(s),n=l.b,l.b=i*n-e*l.d,l.d=e*n+i*l.d),s+=t*this.data.shearX,e=Math.sin(s),i=Math.cos(s),n=l.a,l.a=i*n-e*l.c,l.c=e*n+i*l.c}else t*=this.data.rotate,e=Math.sin(t),i=Math.cos(t),n=l.a,l.a=i*n-e*l.c,l.c=e*n+i*l.c,n=l.b,l.b=i*n-e*l.d,l.d=e*n+i*l.d}if(o){const t=1+this.scaleOffset*s*this.data.scaleX;l.a*=t,l.c*=t}e!=t.Physics.pose&&(this.tx=h*l.a,this.ty=h*l.c),l.updateAppliedTransform()}translate(t,e){this.ux-=t,this.uy-=e,this.cx-=t,this.cy-=e}rotate(t,e,s){const i=s*r.degRad,n=Math.cos(i),a=Math.sin(i),o=this.cx-t,l=this.cy-e;this.translate(o*n-l*a-o,o*a+l*n-l)}}class Jt{data;bone;color;darkColor=null;attachment=null;attachmentState=0;sequenceIndex=-1;deform=new Array;constructor(t,e){if(!t)throw new Error("data cannot be null.");if(!e)throw new Error("bone cannot be null.");this.data=t,this.bone=e,this.color=new n,this.darkColor=t.darkColor?new n:null,this.setToSetupPose()}getSkeleton(){return this.bone.skeleton}getAttachment(){return this.attachment}setAttachment(t){this.attachment!=t&&(t instanceof u&&this.attachment instanceof u&&t.timelineAttachment==this.attachment.timelineAttachment||(this.deform.length=0),this.attachment=t,this.sequenceIndex=-1)}setToSetupPose(){this.color.setFromColor(this.data.color),this.darkColor&&this.darkColor.setFromColor(this.data.darkColor),this.data.attachmentName?(this.attachment=null,this.setAttachment(this.bone.skeleton.getAttachment(this.data.index,this.data.attachmentName))):this.attachment=null}}class Kt{data;bones;target;mixRotate=0;mixX=0;mixY=0;mixScaleX=0;mixScaleY=0;mixShearY=0;temp=new c;active=!1;constructor(t,e){if(!t)throw new Error("data cannot be null.");if(!e)throw new Error("skeleton cannot be null.");this.data=t,this.bones=new Array;for(let s=0;s<t.bones.length;s++){let i=e.findBone(t.bones[s].name);if(!i)throw new Error(`Couldn't find bone ${t.bones[s].name}.`);this.bones.push(i)}let s=e.findBone(t.target.name);if(!s)throw new Error(`Couldn't find target bone ${t.target.name}.`);this.target=s,this.mixRotate=t.mixRotate,this.mixX=t.mixX,this.mixY=t.mixY,this.mixScaleX=t.mixScaleX,this.mixScaleY=t.mixScaleY,this.mixShearY=t.mixShearY}isActive(){return this.active}setToSetupPose(){const t=this.data;this.mixRotate=t.mixRotate,this.mixX=t.mixX,this.mixY=t.mixY,this.mixScaleX=t.mixScaleX,this.mixScaleY=t.mixScaleY,this.mixShearY=t.mixShearY}update(t){0==this.mixRotate&&0==this.mixX&&0==this.mixY&&0==this.mixScaleX&&0==this.mixScaleY&&0==this.mixShearY||(this.data.local?this.data.relative?this.applyRelativeLocal():this.applyAbsoluteLocal():this.data.relative?this.applyRelativeWorld():this.applyAbsoluteWorld())}applyAbsoluteWorld(){let t=this.mixRotate,e=this.mixX,s=this.mixY,i=this.mixScaleX,n=this.mixScaleY,a=this.mixShearY,o=0!=e||0!=s,l=this.target,h=l.a,c=l.b,d=l.c,u=l.d,f=h*u-c*d>0?r.degRad:-r.degRad,m=this.data.offsetRotation*f,g=this.data.offsetShearY*f,p=this.bones;for(let f=0,x=p.length;f<x;f++){let x=p[f];if(0!=t){let e=x.a,s=x.b,i=x.c,n=x.d,a=Math.atan2(d,h)-Math.atan2(i,e)+m;a>r.PI?a-=r.PI2:a<-r.PI&&(a+=r.PI2),a*=t;let o=Math.cos(a),l=Math.sin(a);x.a=o*e-l*i,x.b=o*s-l*n,x.c=l*e+o*i,x.d=l*s+o*n}if(o){let t=this.temp;l.localToWorld(t.set(this.data.offsetX,this.data.offsetY)),x.worldX+=(t.x-x.worldX)*e,x.worldY+=(t.y-x.worldY)*s}if(0!=i){let t=Math.sqrt(x.a*x.a+x.c*x.c);0!=t&&(t=(t+(Math.sqrt(h*h+d*d)-t+this.data.offsetScaleX)*i)/t),x.a*=t,x.c*=t}if(0!=n){let t=Math.sqrt(x.b*x.b+x.d*x.d);0!=t&&(t=(t+(Math.sqrt(c*c+u*u)-t+this.data.offsetScaleY)*n)/t),x.b*=t,x.d*=t}if(a>0){let t=x.b,e=x.d,s=Math.atan2(e,t),i=Math.atan2(u,c)-Math.atan2(d,h)-(s-Math.atan2(x.c,x.a));i>r.PI?i-=r.PI2:i<-r.PI&&(i+=r.PI2),i=s+(i+g)*a;let n=Math.sqrt(t*t+e*e);x.b=Math.cos(i)*n,x.d=Math.sin(i)*n}x.updateAppliedTransform()}}applyRelativeWorld(){let t=this.mixRotate,e=this.mixX,s=this.mixY,i=this.mixScaleX,n=this.mixScaleY,a=this.mixShearY,o=0!=e||0!=s,l=this.target,h=l.a,c=l.b,d=l.c,u=l.d,f=h*u-c*d>0?r.degRad:-r.degRad,m=this.data.offsetRotation*f,g=this.data.offsetShearY*f,p=this.bones;for(let f=0,x=p.length;f<x;f++){let x=p[f];if(0!=t){let e=x.a,s=x.b,i=x.c,n=x.d,a=Math.atan2(d,h)+m;a>r.PI?a-=r.PI2:a<-r.PI&&(a+=r.PI2),a*=t;let o=Math.cos(a),l=Math.sin(a);x.a=o*e-l*i,x.b=o*s-l*n,x.c=l*e+o*i,x.d=l*s+o*n}if(o){let t=this.temp;l.localToWorld(t.set(this.data.offsetX,this.data.offsetY)),x.worldX+=t.x*e,x.worldY+=t.y*s}if(0!=i){let t=(Math.sqrt(h*h+d*d)-1+this.data.offsetScaleX)*i+1;x.a*=t,x.c*=t}if(0!=n){let t=(Math.sqrt(c*c+u*u)-1+this.data.offsetScaleY)*n+1;x.b*=t,x.d*=t}if(a>0){let t=Math.atan2(u,c)-Math.atan2(d,h);t>r.PI?t-=r.PI2:t<-r.PI&&(t+=r.PI2);let e=x.b,s=x.d;t=Math.atan2(s,e)+(t-r.PI/2+g)*a;let i=Math.sqrt(e*e+s*s);x.b=Math.cos(t)*i,x.d=Math.sin(t)*i}x.updateAppliedTransform()}}applyAbsoluteLocal(){let t=this.mixRotate,e=this.mixX,s=this.mixY,i=this.mixScaleX,n=this.mixScaleY,r=this.mixShearY,a=this.target,o=this.bones;for(let l=0,h=o.length;l<h;l++){let h=o[l],c=h.arotation;0!=t&&(c+=(a.arotation-c+this.data.offsetRotation)*t);let d=h.ax,u=h.ay;d+=(a.ax-d+this.data.offsetX)*e,u+=(a.ay-u+this.data.offsetY)*s;let f=h.ascaleX,m=h.ascaleY;0!=i&&0!=f&&(f=(f+(a.ascaleX-f+this.data.offsetScaleX)*i)/f),0!=n&&0!=m&&(m=(m+(a.ascaleY-m+this.data.offsetScaleY)*n)/m);let g=h.ashearY;0!=r&&(g+=(a.ashearY-g+this.data.offsetShearY)*r),h.updateWorldTransformWith(d,u,c,f,m,h.ashearX,g)}}applyRelativeLocal(){let t=this.mixRotate,e=this.mixX,s=this.mixY,i=this.mixScaleX,n=this.mixScaleY,r=this.mixShearY,a=this.target,o=this.bones;for(let l=0,h=o.length;l<h;l++){let h=o[l],c=h.arotation+(a.arotation+this.data.offsetRotation)*t,d=h.ax+(a.ax+this.data.offsetX)*e,u=h.ay+(a.ay+this.data.offsetY)*s,f=h.ascaleX*((a.ascaleX-1+this.data.offsetScaleX)*i+1),m=h.ascaleY*((a.ascaleY-1+this.data.offsetScaleY)*n+1),g=h.ashearY+(a.ashearY+this.data.offsetShearY)*r;h.updateWorldTransformWith(d,u,c,f,m,h.ashearX,g)}}}class Zt{static quadTriangles=[0,1,2,2,3,0];static yDown=!1;data;bones;slots;drawOrder;ikConstraints;transformConstraints;pathConstraints;physicsConstraints;_updateCache=new Array;skin=null;color;scaleX=1;_scaleY=1;get scaleY(){return Zt.yDown?-this._scaleY:this._scaleY}set scaleY(t){this._scaleY=t}x=0;y=0;time=0;constructor(t){if(!t)throw new Error("data cannot be null.");this.data=t,this.bones=new Array;for(let e=0;e<t.bones.length;e++){let s,i=t.bones[e];if(i.parent){let t=this.bones[i.parent.index];s=new Nt(i,this,t),t.children.push(s)}else s=new Nt(i,this,null);this.bones.push(s)}this.slots=new Array,this.drawOrder=new Array;for(let e=0;e<t.slots.length;e++){let s=t.slots[e],i=this.bones[s.boneData.index],n=new Jt(s,i);this.slots.push(n),this.drawOrder.push(n)}this.ikConstraints=new Array;for(let e=0;e<t.ikConstraints.length;e++){let s=t.ikConstraints[e];this.ikConstraints.push(new zt(s,this))}this.transformConstraints=new Array;for(let e=0;e<t.transformConstraints.length;e++){let s=t.transformConstraints[e];this.transformConstraints.push(new Kt(s,this))}this.pathConstraints=new Array;for(let e=0;e<t.pathConstraints.length;e++){let s=t.pathConstraints[e];this.pathConstraints.push(new Ht(s,this))}this.physicsConstraints=new Array;for(let e=0;e<t.physicsConstraints.length;e++){let s=t.physicsConstraints[e];this.physicsConstraints.push(new jt(s,this))}this.color=new n(1,1,1,1),this.updateCache()}updateCache(){this._updateCache.length=0;let t=this.bones;for(let e=0,s=t.length;e<s;e++){let s=t[e];s.sorted=s.data.skinRequired,s.active=!s.sorted}if(this.skin){let t=this.skin.bones;for(let e=0,s=this.skin.bones.length;e<s;e++){let s=this.bones[t[e].index];do{s.sorted=!1,s.active=!0,s=s.parent}while(s)}}let e=this.ikConstraints,s=this.transformConstraints,i=this.pathConstraints,n=this.physicsConstraints,r=e.length,a=s.length,o=i.length,l=this.physicsConstraints.length,h=r+a+o+l;t:for(let t=0;t<h;t++){for(let s=0;s<r;s++){let i=e[s];if(i.data.order==t){this.sortIkConstraint(i);continue t}}for(let e=0;e<a;e++){let i=s[e];if(i.data.order==t){this.sortTransformConstraint(i);continue t}}for(let e=0;e<o;e++){let s=i[e];if(s.data.order==t){this.sortPathConstraint(s);continue t}}for(let e=0;e<l;e++){const s=n[e];if(s.data.order==t){this.sortPhysicsConstraint(s);continue t}}}for(let e=0,s=t.length;e<s;e++)this.sortBone(t[e])}sortIkConstraint(t){if(t.active=t.target.isActive()&&(!t.data.skinRequired||this.skin&&l.contains(this.skin.constraints,t.data,!0)),!t.active)return;let e=t.target;this.sortBone(e);let s=t.bones,i=s[0];if(this.sortBone(i),1==s.length)this._updateCache.push(t),this.sortReset(i.children);else{let e=s[s.length-1];this.sortBone(e),this._updateCache.push(t),this.sortReset(i.children),e.sorted=!0}}sortPathConstraint(t){if(t.active=t.target.bone.isActive()&&(!t.data.skinRequired||this.skin&&l.contains(this.skin.constraints,t.data,!0)),!t.active)return;let e=t.target,s=e.data.index,i=e.bone;this.skin&&this.sortPathConstraintAttachment(this.skin,s,i),this.data.defaultSkin&&this.data.defaultSkin!=this.skin&&this.sortPathConstraintAttachment(this.data.defaultSkin,s,i);for(let t=0,e=this.data.skins.length;t<e;t++)this.sortPathConstraintAttachment(this.data.skins[t],s,i);let n=e.getAttachment();n instanceof Xt&&this.sortPathConstraintAttachmentWith(n,i);let r=t.bones,a=r.length;for(let t=0;t<a;t++)this.sortBone(r[t]);this._updateCache.push(t);for(let t=0;t<a;t++)this.sortReset(r[t].children);for(let t=0;t<a;t++)r[t].sorted=!0}sortTransformConstraint(t){if(t.active=t.target.isActive()&&(!t.data.skinRequired||this.skin&&l.contains(this.skin.constraints,t.data,!0)),!t.active)return;this.sortBone(t.target);let e=t.bones,s=e.length;if(t.data.local)for(let t=0;t<s;t++){let s=e[t];this.sortBone(s.parent),this.sortBone(s)}else for(let t=0;t<s;t++)this.sortBone(e[t]);this._updateCache.push(t);for(let t=0;t<s;t++)this.sortReset(e[t].children);for(let t=0;t<s;t++)e[t].sorted=!0}sortPathConstraintAttachment(t,e,s){let i=t.attachments[e];if(i)for(let t in i)this.sortPathConstraintAttachmentWith(i[t],s)}sortPathConstraintAttachmentWith(t,e){if(!(t instanceof Xt))return;let s=t.bones;if(s){let t=this.bones;for(let e=0,i=s.length;e<i;){let i=s[e++];for(i+=e;e<i;)this.sortBone(t[s[e++]])}}else this.sortBone(e)}sortPhysicsConstraint(t){const e=t.bone;t.active=e.active&&(!t.data.skinRequired||null!=this.skin&&l.contains(this.skin.constraints,t.data,!0)),t.active&&(this.sortBone(e),this._updateCache.push(t),this.sortReset(e.children),e.sorted=!0)}sortBone(t){if(!t)return;if(t.sorted)return;let e=t.parent;e&&this.sortBone(e),t.sorted=!0,this._updateCache.push(t)}sortReset(t){for(let e=0,s=t.length;e<s;e++){let s=t[e];s.active&&(s.sorted&&this.sortReset(s.children),s.sorted=!1)}}updateWorldTransform(t){if(null==t)throw new Error("physics is undefined");let e=this.bones;for(let t=0,s=e.length;t<s;t++){let s=e[t];s.ax=s.x,s.ay=s.y,s.arotation=s.rotation,s.ascaleX=s.scaleX,s.ascaleY=s.scaleY,s.ashearX=s.shearX,s.ashearY=s.shearY}let s=this._updateCache;for(let e=0,i=s.length;e<i;e++)s[e].update(t)}updateWorldTransformWith(t,e){let s=this.getRootBone();if(!s)throw new Error("Root bone must not be null.");let i=e.a,n=e.b,a=e.c,o=e.d;s.worldX=i*this.x+n*this.y+e.worldX,s.worldY=a*this.x+o*this.y+e.worldY;const l=(s.rotation+s.shearX)*r.degRad,h=(s.rotation+90+s.shearY)*r.degRad,c=Math.cos(l)*s.scaleX,d=Math.cos(h)*s.scaleY,u=Math.sin(l)*s.scaleX,f=Math.sin(h)*s.scaleY;s.a=(i*c+n*u)*this.scaleX,s.b=(i*d+n*f)*this.scaleX,s.c=(a*c+o*u)*this.scaleY,s.d=(a*d+o*f)*this.scaleY;let m=this._updateCache;for(let e=0,i=m.length;e<i;e++){let i=m[e];i!=s&&i.update(t)}}setToSetupPose(){this.setBonesToSetupPose(),this.setSlotsToSetupPose()}setBonesToSetupPose(){for(const t of this.bones)t.setToSetupPose();for(const t of this.ikConstraints)t.setToSetupPose();for(const t of this.transformConstraints)t.setToSetupPose();for(const t of this.pathConstraints)t.setToSetupPose();for(const t of this.physicsConstraints)t.setToSetupPose()}setSlotsToSetupPose(){let t=this.slots;l.arrayCopy(t,0,this.drawOrder,0,t.length);for(let e=0,s=t.length;e<s;e++)t[e].setToSetupPose()}getRootBone(){return 0==this.bones.length?null:this.bones[0]}findBone(t){if(!t)throw new Error("boneName cannot be null.");let e=this.bones;for(let s=0,i=e.length;s<i;s++){let i=e[s];if(i.data.name==t)return i}return null}findSlot(t){if(!t)throw new Error("slotName cannot be null.");let e=this.slots;for(let s=0,i=e.length;s<i;s++){let i=e[s];if(i.data.name==t)return i}return null}setSkinByName(t){let e=this.data.findSkin(t);if(!e)throw new Error("Skin not found: "+t);this.setSkin(e)}setSkin(t){if(t!=this.skin){if(t)if(this.skin)t.attachAll(this,this.skin);else{let e=this.slots;for(let s=0,i=e.length;s<i;s++){let i=e[s],n=i.data.attachmentName;if(n){let e=t.getAttachment(s,n);e&&i.setAttachment(e)}}}this.skin=t,this.updateCache()}}getAttachmentByName(t,e){let s=this.data.findSlot(t);if(!s)throw new Error(`Can't find slot with name ${t}`);return this.getAttachment(s.index,e)}getAttachment(t,e){if(!e)throw new Error("attachmentName cannot be null.");if(this.skin){let s=this.skin.getAttachment(t,e);if(s)return s}return this.data.defaultSkin?this.data.defaultSkin.getAttachment(t,e):null}setAttachment(t,e){if(!t)throw new Error("slotName cannot be null.");let s=this.slots;for(let i=0,n=s.length;i<n;i++){let n=s[i];if(n.data.name==t){let s=null;if(e&&(s=this.getAttachment(i,e),!s))throw new Error("Attachment not found: "+e+", for slot: "+t);return void n.setAttachment(s)}}throw new Error("Slot not found: "+t)}findIkConstraint(t){if(!t)throw new Error("constraintName cannot be null.");return this.ikConstraints.find((e=>e.data.name==t))??null}findTransformConstraint(t){if(!t)throw new Error("constraintName cannot be null.");return this.transformConstraints.find((e=>e.data.name==t))??null}findPathConstraint(t){if(!t)throw new Error("constraintName cannot be null.");return this.pathConstraints.find((e=>e.data.name==t))??null}findPhysicsConstraint(t){if(null==t)throw new Error("constraintName cannot be null.");return this.physicsConstraints.find((e=>e.data.name==t))??null}getBoundsRect(){let t=new c,e=new c;return this.getBounds(t,e),{x:t.x,y:t.y,width:e.x,height:e.y}}getBounds(t,e,s=new Array(2),i=null){if(!t)throw new Error("offset cannot be null.");if(!e)throw new Error("size cannot be null.");let n=this.drawOrder,r=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,h=Number.NEGATIVE_INFINITY;for(let t=0,e=n.length;t<e;t++){let e=n[t];if(!e.bone.active)continue;let c=0,d=null,u=null,f=e.getAttachment();if(f instanceof Vt)c=8,d=l.setArraySize(s,c,0),f.computeWorldVertices(e,d,0,2),u=Zt.quadTriangles;else if(f instanceof Pt){let t=f;c=t.worldVerticesLength,d=l.setArraySize(s,c,0),t.computeWorldVertices(e,0,c,d,0,2),u=t.triangles}else if(f instanceof wt&&null!=i){i.clipStart(e,f);continue}if(d&&u){null!=i&&i.isClipping()&&(i.clipTriangles(d,u,u.length),d=i.clippedVertices,c=i.clippedVertices.length);for(let t=0,e=d.length;t<e;t+=2){let e=d[t],s=d[t+1];r=Math.min(r,e),a=Math.min(a,s),o=Math.max(o,e),h=Math.max(h,s)}}null!=i&&i.clipEndWithSlot(e)}null!=i&&i.clipEnd(),t.set(r,a),e.set(o-r,h-a)}update(t){this.time+=t}physicsTranslate(t,e){const s=this.physicsConstraints;for(let i=0,n=s.length;i<n;i++)s[i].translate(t,e)}physicsRotate(t,e,s){const i=this.physicsConstraints;for(let n=0,r=i.length;n<r;n++)i[n].rotate(t,e,s)}}t.Physics=void 0,(At=t.Physics||(t.Physics={}))[At.none=0]="none",At[At.reset=1]="reset",At[At.update=2]="update",At[At.pose=3]="pose";class Qt extends Lt{_bone=null;set bone(t){this._bone=t}get bone(){if(this._bone)return this._bone;throw new Error("BoneData not set.")}x=0;y=0;rotate=0;scaleX=0;shearX=0;limit=0;step=0;inertia=0;strength=0;damping=0;massInverse=0;wind=0;gravity=0;mix=0;inertiaGlobal=!1;strengthGlobal=!1;dampingGlobal=!1;massGlobal=!1;windGlobal=!1;gravityGlobal=!1;mixGlobal=!1;constructor(t){super(t,0,!1)}}class te{name=null;bones=new Array;slots=new Array;skins=new Array;defaultSkin=null;events=new Array;animations=new Array;ikConstraints=new Array;transformConstraints=new Array;pathConstraints=new Array;physicsConstraints=new Array;x=0;y=0;width=0;height=0;referenceScale=100;version=null;hash=null;fps=0;imagesPath=null;audioPath=null;findBone(t){if(!t)throw new Error("boneName cannot be null.");let e=this.bones;for(let s=0,i=e.length;s<i;s++){let i=e[s];if(i.name==t)return i}return null}findSlot(t){if(!t)throw new Error("slotName cannot be null.");let e=this.slots;for(let s=0,i=e.length;s<i;s++){let i=e[s];if(i.name==t)return i}return null}findSkin(t){if(!t)throw new Error("skinName cannot be null.");let e=this.skins;for(let s=0,i=e.length;s<i;s++){let i=e[s];if(i.name==t)return i}return null}findEvent(t){if(!t)throw new Error("eventDataName cannot be null.");let e=this.events;for(let s=0,i=e.length;s<i;s++){let i=e[s];if(i.name==t)return i}return null}findAnimation(t){if(!t)throw new Error("animationName cannot be null.");let e=this.animations;for(let s=0,i=e.length;s<i;s++){let i=e[s];if(i.name==t)return i}return null}findIkConstraint(t){if(!t)throw new Error("constraintName cannot be null.");const e=this.ikConstraints;for(let s=0,i=e.length;s<i;s++){const i=e[s];if(i.name==t)return i}return null}findTransformConstraint(t){if(!t)throw new Error("constraintName cannot be null.");const e=this.transformConstraints;for(let s=0,i=e.length;s<i;s++){const i=e[s];if(i.name==t)return i}return null}findPathConstraint(t){if(!t)throw new Error("constraintName cannot be null.");const e=this.pathConstraints;for(let s=0,i=e.length;s<i;s++){const i=e[s];if(i.name==t)return i}return null}findPhysicsConstraint(t){if(!t)throw new Error("constraintName cannot be null.");const e=this.physicsConstraints;for(let s=0,i=e.length;s<i;s++){const i=e[s];if(i.name==t)return i}return null}}class ee{slotIndex;name;attachment;constructor(t=0,e,s){this.slotIndex=t,this.name=e,this.attachment=s}}class se{name;attachments=new Array;bones=Array();constraints=new Array;color=new n(.99607843,.61960787,.30980393,1);constructor(t){if(!t)throw new Error("name cannot be null.");this.name=t}setAttachment(t,e,s){if(!s)throw new Error("attachment cannot be null.");let i=this.attachments;t>=i.length&&(i.length=t+1),i[t]||(i[t]={}),i[t][e]=s}addSkin(t){for(let e=0;e<t.bones.length;e++){let s=t.bones[e],i=!1;for(let t=0;t<this.bones.length;t++)if(this.bones[t]==s){i=!0;break}i||this.bones.push(s)}for(let e=0;e<t.constraints.length;e++){let s=t.constraints[e],i=!1;for(let t=0;t<this.constraints.length;t++)if(this.constraints[t]==s){i=!0;break}i||this.constraints.push(s)}let e=t.getAttachments();for(let t=0;t<e.length;t++){var s=e[t];this.setAttachment(s.slotIndex,s.name,s.attachment)}}copySkin(t){for(let e=0;e<t.bones.length;e++){let s=t.bones[e],i=!1;for(let t=0;t<this.bones.length;t++)if(this.bones[t]==s){i=!0;break}i||this.bones.push(s)}for(let e=0;e<t.constraints.length;e++){let s=t.constraints[e],i=!1;for(let t=0;t<this.constraints.length;t++)if(this.constraints[t]==s){i=!0;break}i||this.constraints.push(s)}let e=t.getAttachments();for(let t=0;t<e.length;t++){var s=e[t];s.attachment&&(s.attachment instanceof Pt?(s.attachment=s.attachment.newLinkedMesh(),this.setAttachment(s.slotIndex,s.name,s.attachment)):(s.attachment=s.attachment.copy(),this.setAttachment(s.slotIndex,s.name,s.attachment)))}}getAttachment(t,e){let s=this.attachments[t];return s?s[e]:null}removeAttachment(t,e){let s=this.attachments[t];s&&delete s[e]}getAttachments(){let t=new Array;for(var e=0;e<this.attachments.length;e++){let s=this.attachments[e];if(s)for(let i in s){let n=s[i];n&&t.push(new ee(e,i,n))}}return t}getAttachmentsForSlot(t,e){let s=this.attachments[t];if(s)for(let i in s){let n=s[i];n&&e.push(new ee(t,i,n))}}clear(){this.attachments.length=0,this.bones.length=0,this.constraints.length=0}attachAll(t,e){let s=0;for(let i=0;i<t.slots.length;i++){let n=t.slots[i],r=n.getAttachment();if(r&&s<e.attachments.length){let t=e.attachments[s];for(let e in t){if(r==t[e]){let t=this.getAttachment(s,e);t&&n.setAttachment(t);break}}}s++}}}class ie{index=0;name;boneData;color=new n(1,1,1,1);darkColor=null;attachmentName=null;blendMode=t.BlendMode.Normal;visible=!0;constructor(t,e,s){if(t<0)throw new Error("index must be >= 0.");if(!e)throw new Error("name cannot be null.");if(!s)throw new Error("boneData cannot be null.");this.index=t,this.name=e,this.boneData=s}}t.BlendMode=void 0,(Bt=t.BlendMode||(t.BlendMode={}))[Bt.Normal=0]="Normal",Bt[Bt.Additive=1]="Additive",Bt[Bt.Multiply=2]="Multiply",Bt[Bt.Screen=3]="Screen";class ne extends Lt{bones=new Array;_target=null;set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}mixRotate=0;mixX=0;mixY=0;mixScaleX=0;mixScaleY=0;mixShearY=0;offsetRotation=0;offsetX=0;offsetY=0;offsetScaleX=0;offsetScaleY=0;offsetShearY=0;relative=!1;local=!1;constructor(t){super(t,0,!1)}}class re{scale=1;attachmentLoader;linkedMeshes=new Array;constructor(t){this.attachmentLoader=t}readSkeletonData(e){let s=this.scale,i=new te;i.name="";let r=new ae(e),a=r.readInt32(),o=r.readInt32();i.hash=0==o&&0==a?null:o.toString(16)+a.toString(16),i.version=r.readString(),i.x=r.readFloat(),i.y=r.readFloat(),i.width=r.readFloat(),i.height=r.readFloat(),i.referenceScale=r.readFloat()*s;let h=r.readBoolean();h&&(i.fps=r.readFloat(),i.imagesPath=r.readString(),i.audioPath=r.readString());let c=0;c=r.readInt(!0);for(let t=0;t<c;t++){let t=r.readString();if(!t)throw new Error("String in string table must not be null.");r.strings.push(t)}c=r.readInt(!0);for(let t=0;t<c;t++){let e=r.readString();if(!e)throw new Error("Bone name must not be null.");let a=0==t?null:i.bones[r.readInt(!0)],o=new Ot(t,e,a);o.rotation=r.readFloat(),o.x=r.readFloat()*s,o.y=r.readFloat()*s,o.scaleX=r.readFloat(),o.scaleY=r.readFloat(),o.shearX=r.readFloat(),o.shearY=r.readFloat(),o.length=r.readFloat()*s,o.inherit=r.readByte(),o.skinRequired=r.readBoolean(),h&&(n.rgba8888ToColor(o.color,r.readInt32()),o.icon=r.readString()??void 0,o.visible=r.readBoolean()),i.bones.push(o)}c=r.readInt(!0);for(let t=0;t<c;t++){let e=r.readString();if(!e)throw new Error("Slot name must not be null.");let s=i.bones[r.readInt(!0)],a=new ie(t,e,s);n.rgba8888ToColor(a.color,r.readInt32());let o=r.readInt32();-1!=o&&n.rgb888ToColor(a.darkColor=new n,o),a.attachmentName=r.readStringRef(),a.blendMode=r.readInt(!0),h&&(a.visible=r.readBoolean()),i.slots.push(a)}c=r.readInt(!0);for(let t,e=0;e<c;e++){let e=r.readString();if(!e)throw new Error("IK constraint data name must not be null.");let n=new Gt(e);n.order=r.readInt(!0),t=r.readInt(!0);for(let e=0;e<t;e++)n.bones.push(i.bones[r.readInt(!0)]);n.target=i.bones[r.readInt(!0)];let a=r.readByte();n.skinRequired=!!(1&a),n.bendDirection=2&a?1:-1,n.compress=!!(4&a),n.stretch=!!(8&a),n.uniform=!!(16&a),32&a&&(n.mix=64&a?r.readFloat():1),128&a&&(n.softness=r.readFloat()*s),i.ikConstraints.push(n)}c=r.readInt(!0);for(let t,e=0;e<c;e++){let e=r.readString();if(!e)throw new Error("Transform constraint data name must not be null.");let n=new ne(e);n.order=r.readInt(!0),t=r.readInt(!0);for(let e=0;e<t;e++)n.bones.push(i.bones[r.readInt(!0)]);n.target=i.bones[r.readInt(!0)];let a=r.readByte();n.skinRequired=!!(1&a),n.local=!!(2&a),n.relative=!!(4&a),8&a&&(n.offsetRotation=r.readFloat()),16&a&&(n.offsetX=r.readFloat()*s),32&a&&(n.offsetY=r.readFloat()*s),64&a&&(n.offsetScaleX=r.readFloat()),128&a&&(n.offsetScaleY=r.readFloat()),a=r.readByte(),1&a&&(n.offsetShearY=r.readFloat()),2&a&&(n.mixRotate=r.readFloat()),4&a&&(n.mixX=r.readFloat()),8&a&&(n.mixY=r.readFloat()),16&a&&(n.mixScaleX=r.readFloat()),32&a&&(n.mixScaleY=r.readFloat()),64&a&&(n.mixShearY=r.readFloat()),i.transformConstraints.push(n)}c=r.readInt(!0);for(let e,n=0;n<c;n++){let n=r.readString();if(!n)throw new Error("Path constraint data name must not be null.");let a=new $t(n);a.order=r.readInt(!0),a.skinRequired=r.readBoolean(),e=r.readInt(!0);for(let t=0;t<e;t++)a.bones.push(i.bones[r.readInt(!0)]);a.target=i.slots[r.readInt(!0)];const o=r.readByte();a.positionMode=1&o,a.spacingMode=o>>1&3,a.rotateMode=o>>3&3,128&o&&(a.offsetRotation=r.readFloat()),a.position=r.readFloat(),a.positionMode==t.PositionMode.Fixed&&(a.position*=s),a.spacing=r.readFloat(),a.spacingMode!=t.SpacingMode.Length&&a.spacingMode!=t.SpacingMode.Fixed||(a.spacing*=s),a.mixRotate=r.readFloat(),a.mixX=r.readFloat(),a.mixY=r.readFloat(),i.pathConstraints.push(a)}c=r.readInt(!0);for(let t=0;t<c;t++){const t=r.readString();if(!t)throw new Error("Physics constraint data name must not be null.");const e=new Qt(t);e.order=r.readInt(!0),e.bone=i.bones[r.readInt(!0)];let n=r.readByte();e.skinRequired=!!(1&n),2&n&&(e.x=r.readFloat()),4&n&&(e.y=r.readFloat()),8&n&&(e.rotate=r.readFloat()),16&n&&(e.scaleX=r.readFloat()),32&n&&(e.shearX=r.readFloat()),e.limit=(64&n?r.readFloat():5e3)*s,e.step=1/r.readUnsignedByte(),e.inertia=r.readFloat(),e.strength=r.readFloat(),e.damping=r.readFloat(),e.massInverse=128&n?r.readFloat():1,e.wind=r.readFloat(),e.gravity=r.readFloat(),n=r.readByte(),1&n&&(e.inertiaGlobal=!0),2&n&&(e.strengthGlobal=!0),4&n&&(e.dampingGlobal=!0),8&n&&(e.massGlobal=!0),16&n&&(e.windGlobal=!0),32&n&&(e.gravityGlobal=!0),64&n&&(e.mixGlobal=!0),e.mix=128&n?r.readFloat():1,i.physicsConstraints.push(e)}let d=this.readSkin(r,i,!0,h);d&&(i.defaultSkin=d,i.skins.push(d));{let t=i.skins.length;for(l.setArraySize(i.skins,c=t+r.readInt(!0));t<c;t++){let e=this.readSkin(r,i,!1,h);if(!e)throw new Error("readSkin() should not have returned null.");i.skins[t]=e}}c=this.linkedMeshes.length;for(let t=0;t<c;t++){let e=this.linkedMeshes[t];const s=i.skins[e.skinIndex];if(!e.parent)throw new Error("Linked mesh parent must not be null");let n=s.getAttachment(e.slotIndex,e.parent);if(!n)throw new Error(`Parent mesh not found: ${e.parent}`);e.mesh.timelineAttachment=e.inheritTimeline?n:e.mesh,e.mesh.setParentMesh(n),null!=e.mesh.region&&e.mesh.updateRegion()}this.linkedMeshes.length=0,c=r.readInt(!0);for(let t=0;t<c;t++){let t=r.readString();if(!t)throw new Error("Event data name must not be null");let e=new Ut(t);e.intValue=r.readInt(!1),e.floatValue=r.readFloat(),e.stringValue=r.readString(),e.audioPath=r.readString(),e.audioPath&&(e.volume=r.readFloat(),e.balance=r.readFloat()),i.events.push(e)}c=r.readInt(!0);for(let t=0;t<c;t++){let t=r.readString();if(!t)throw new Error("Animatio name must not be null.");i.animations.push(this.readAnimation(r,t,i))}return i}readSkin(t,e,s,i){let r=null,a=0;if(s){if(a=t.readInt(!0),0==a)return null;r=new se("default")}else{let s=t.readString();if(!s)throw new Error("Skin name must not be null.");r=new se(s),i&&n.rgba8888ToColor(r.color,t.readInt32()),r.bones.length=t.readInt(!0);for(let s=0,i=r.bones.length;s<i;s++)r.bones[s]=e.bones[t.readInt(!0)];for(let s=0,i=t.readInt(!0);s<i;s++)r.constraints.push(e.ikConstraints[t.readInt(!0)]);for(let s=0,i=t.readInt(!0);s<i;s++)r.constraints.push(e.transformConstraints[t.readInt(!0)]);for(let s=0,i=t.readInt(!0);s<i;s++)r.constraints.push(e.pathConstraints[t.readInt(!0)]);for(let s=0,i=t.readInt(!0);s<i;s++)r.constraints.push(e.physicsConstraints[t.readInt(!0)]);a=t.readInt(!0)}for(let s=0;s<a;s++){let s=t.readInt(!0);for(let n=0,a=t.readInt(!0);n<a;n++){let n=t.readStringRef();if(!n)throw new Error("Attachment name must not be null");let a=this.readAttachment(t,e,r,s,n,i);a&&r.setAttachment(s,n,a)}}return r}readAttachment(t,e,s,i,r,a){let o=this.scale,h=t.readByte();const c=8&h?t.readStringRef():r;if(!c)throw new Error("Attachment name must not be null");switch(7&h){case Tt.Region:{let e=16&h?t.readStringRef():null;const i=32&h?t.readInt32():4294967295,r=64&h?this.readSequence(t):null;let a=128&h?t.readFloat():0,l=t.readFloat(),d=t.readFloat(),u=t.readFloat(),f=t.readFloat(),m=t.readFloat(),g=t.readFloat();e||(e=c);let p=this.attachmentLoader.newRegionAttachment(s,c,e,r);return p?(p.path=e,p.x=l*o,p.y=d*o,p.scaleX=u,p.scaleY=f,p.rotation=a,p.width=m*o,p.height=g*o,n.rgba8888ToColor(p.color,i),p.sequence=r,null==r&&p.updateRegion(),p):null}case Tt.BoundingBox:{let e=this.readVertices(t,!!(16&h)),i=a?t.readInt32():0,r=this.attachmentLoader.newBoundingBoxAttachment(s,c);return r?(r.worldVerticesLength=e.length,r.vertices=e.vertices,r.bones=e.bones,a&&n.rgba8888ToColor(r.color,i),r):null}case Tt.Mesh:{let e=16&h?t.readStringRef():c;const i=32&h?t.readInt32():4294967295,r=64&h?this.readSequence(t):null,l=t.readInt(!0),d=this.readVertices(t,!!(128&h)),u=this.readFloatArray(t,d.length,1),f=this.readShortArray(t,3*(d.length-l-2));let m=[],g=0,p=0;a&&(m=this.readShortArray(t,t.readInt(!0)),g=t.readFloat(),p=t.readFloat()),e||(e=c);let x=this.attachmentLoader.newMeshAttachment(s,c,e,r);return x?(x.path=e,n.rgba8888ToColor(x.color,i),x.bones=d.bones,x.vertices=d.vertices,x.worldVerticesLength=d.length,x.triangles=f,x.regionUVs=u,null==r&&x.updateRegion(),x.hullLength=l<<1,x.sequence=r,a&&(x.edges=m,x.width=g*o,x.height=p*o),x):null}case Tt.LinkedMesh:{const e=16&h?t.readStringRef():c;if(null==e)throw new Error("Path of linked mesh must not be null");const r=32&h?t.readInt32():4294967295,l=64&h?this.readSequence(t):null,d=!!(128&h),u=t.readInt(!0),f=t.readStringRef();let m=0,g=0;a&&(m=t.readFloat(),g=t.readFloat());let p=this.attachmentLoader.newMeshAttachment(s,c,e,l);return p?(p.path=e,n.rgba8888ToColor(p.color,r),p.sequence=l,a&&(p.width=m*o,p.height=g*o),this.linkedMeshes.push(new oe(p,u,i,f,d)),p):null}case Tt.Path:{const e=!!(16&h),i=!!(32&h),r=this.readVertices(t,!!(64&h)),d=l.newArray(r.length/6,0);for(let e=0,s=d.length;e<s;e++)d[e]=t.readFloat()*o;const u=a?t.readInt32():0,f=this.attachmentLoader.newPathAttachment(s,c);return f?(f.closed=e,f.constantSpeed=i,f.worldVerticesLength=r.length,f.vertices=r.vertices,f.bones=r.bones,f.lengths=d,a&&n.rgba8888ToColor(f.color,u),f):null}case Tt.Point:{const e=t.readFloat(),i=t.readFloat(),r=t.readFloat(),l=a?t.readInt32():0,h=this.attachmentLoader.newPointAttachment(s,c);return h?(h.x=i*o,h.y=r*o,h.rotation=e,a&&n.rgba8888ToColor(h.color,l),h):null}case Tt.Clipping:{const i=t.readInt(!0),r=this.readVertices(t,!!(16&h));let o=a?t.readInt32():0,l=this.attachmentLoader.newClippingAttachment(s,c);return l?(l.endSlot=e.slots[i],l.worldVerticesLength=r.length,l.vertices=r.vertices,l.bones=r.bones,a&&n.rgba8888ToColor(l.color,o),l):null}}return null}readSequence(t){let e=new f(t.readInt(!0));return e.start=t.readInt(!0),e.digits=t.readInt(!0),e.setupIndex=t.readInt(!0),e}readVertices(t,e){const s=this.scale,i=t.readInt(!0),n=new le;if(n.length=i<<1,!e)return n.vertices=this.readFloatArray(t,n.length,s),n;let r=new Array,a=new Array;for(let e=0;e<i;e++){let e=t.readInt(!0);a.push(e);for(let i=0;i<e;i++)a.push(t.readInt(!0)),r.push(t.readFloat()*s),r.push(t.readFloat()*s),r.push(t.readFloat())}return n.vertices=l.toFloatArray(r),n.bones=a,n}readFloatArray(t,e,s){let i=new Array(e);if(1==s)for(let s=0;s<e;s++)i[s]=t.readFloat();else for(let n=0;n<e;n++)i[n]=t.readFloat()*s;return i}readShortArray(t,e){let s=new Array(e);for(let i=0;i<e;i++)s[i]=t.readInt(!0);return s}readAnimation(e,s,i){e.readInt(!0);let n=new Array,r=this.scale;for(let t=0,s=e.readInt(!0);t<s;t++){let t=e.readInt(!0);for(let s=0,i=e.readInt(!0);s<i;s++){let s=e.readByte(),i=e.readInt(!0),r=i-1;switch(s){case Se:{let s=new N(i,t);for(let t=0;t<i;t++)s.setFrame(t,e.readFloat(),e.readStringRef());n.push(s);break}case ke:{let s=e.readInt(!0),a=new X(i,s,t),o=e.readFloat(),l=e.readUnsignedByte()/255,h=e.readUnsignedByte()/255,c=e.readUnsignedByte()/255,d=e.readUnsignedByte()/255;for(let t=0,s=0;a.setFrame(t,o,l,h,c,d),t!=r;t++){let i=e.readFloat(),n=e.readUnsignedByte()/255,r=e.readUnsignedByte()/255,u=e.readUnsignedByte()/255,f=e.readUnsignedByte()/255;switch(e.readByte()){case qe:a.setStepped(t);break;case We:de(e,a,s++,t,0,o,i,l,n,1),de(e,a,s++,t,1,o,i,h,r,1),de(e,a,s++,t,2,o,i,c,u,1),de(e,a,s++,t,3,o,i,d,f,1)}o=i,l=n,h=r,c=u,d=f}n.push(a);break}case Ie:{let s=e.readInt(!0),a=new _(i,s,t),o=e.readFloat(),l=e.readUnsignedByte()/255,h=e.readUnsignedByte()/255,c=e.readUnsignedByte()/255;for(let t=0,s=0;a.setFrame(t,o,l,h,c),t!=r;t++){let i=e.readFloat(),n=e.readUnsignedByte()/255,r=e.readUnsignedByte()/255,d=e.readUnsignedByte()/255;switch(e.readByte()){case qe:a.setStepped(t);break;case We:de(e,a,s++,t,0,o,i,l,n,1),de(e,a,s++,t,1,o,i,h,r,1),de(e,a,s++,t,2,o,i,c,d,1)}o=i,l=n,h=r,c=d}n.push(a);break}case Ae:{let s=e.readInt(!0),a=new D(i,s,t),o=e.readFloat(),l=e.readUnsignedByte()/255,h=e.readUnsignedByte()/255,c=e.readUnsignedByte()/255,d=e.readUnsignedByte()/255,u=e.readUnsignedByte()/255,f=e.readUnsignedByte()/255,m=e.readUnsignedByte()/255;for(let t=0,s=0;a.setFrame(t,o,l,h,c,d,u,f,m),t!=r;t++){let i=e.readFloat(),n=e.readUnsignedByte()/255,r=e.readUnsignedByte()/255,g=e.readUnsignedByte()/255,p=e.readUnsignedByte()/255,x=e.readUnsignedByte()/255,w=e.readUnsignedByte()/255,b=e.readUnsignedByte()/255;switch(e.readByte()){case qe:a.setStepped(t);break;case We:de(e,a,s++,t,0,o,i,l,n,1),de(e,a,s++,t,1,o,i,h,r,1),de(e,a,s++,t,2,o,i,c,g,1),de(e,a,s++,t,3,o,i,d,p,1),de(e,a,s++,t,4,o,i,u,x,1),de(e,a,s++,t,5,o,i,f,w,1),de(e,a,s++,t,6,o,i,m,b,1)}o=i,l=n,h=r,c=g,d=p,u=x,f=w,m=b}n.push(a);break}case Be:{let s=e.readInt(!0),a=new O(i,s,t),o=e.readFloat(),l=e.readUnsignedByte()/255,h=e.readUnsignedByte()/255,c=e.readUnsignedByte()/255,d=e.readUnsignedByte()/255,u=e.readUnsignedByte()/255,f=e.readUnsignedByte()/255;for(let t=0,s=0;a.setFrame(t,o,l,h,c,d,u,f),t!=r;t++){let i=e.readFloat(),n=e.readUnsignedByte()/255,r=e.readUnsignedByte()/255,m=e.readUnsignedByte()/255,g=e.readUnsignedByte()/255,p=e.readUnsignedByte()/255,x=e.readUnsignedByte()/255;switch(e.readByte()){case qe:a.setStepped(t);break;case We:de(e,a,s++,t,0,o,i,l,n,1),de(e,a,s++,t,1,o,i,h,r,1),de(e,a,s++,t,2,o,i,c,m,1),de(e,a,s++,t,3,o,i,d,g,1),de(e,a,s++,t,4,o,i,u,p,1),de(e,a,s++,t,5,o,i,f,x,1)}o=i,l=n,h=r,c=m,d=g,u=p,f=x}n.push(a);break}case Te:{let s=new V(i,e.readInt(!0),t),a=e.readFloat(),o=e.readUnsignedByte()/255;for(let t=0,i=0;s.setFrame(t,a,o),t!=r;t++){let n=e.readFloat(),r=e.readUnsignedByte()/255;switch(e.readByte()){case qe:s.setStepped(t);break;case We:de(e,s,i++,t,0,a,n,o,r,1)}a=n,o=r}n.push(s)}}}}for(let t=0,s=e.readInt(!0);t<s;t++){let t=e.readInt(!0);for(let s=0,i=e.readInt(!0);s<i;s++){let s=e.readByte(),i=e.readInt(!0);if(s==ve){let s=new P(i,t);for(let t=0;t<i;t++)s.setFrame(t,e.readFloat(),e.readByte());n.push(s);continue}let a=e.readInt(!0);switch(s){case ue:n.push(he(e,new k(i,a,t),1));break;case fe:n.push(ce(e,new I(i,a,t),r));break;case me:n.push(he(e,new A(i,a,t),r));break;case ge:n.push(he(e,new B(i,a,t),r));break;case pe:n.push(ce(e,new T(i,a,t),1));break;case xe:n.push(he(e,new C(i,a,t),1));break;case we:n.push(he(e,new F(i,a,t),1));break;case be:n.push(ce(e,new E(i,a,t),1));break;case ye:n.push(he(e,new R(i,a,t),1));break;case Me:n.push(he(e,new Y(i,a,t),1))}}}for(let t=0,s=e.readInt(!0);t<s;t++){let t=e.readInt(!0),s=e.readInt(!0),i=s-1,a=new U(s,e.readInt(!0),t),o=e.readByte(),l=e.readFloat(),h=1&o?2&o?e.readFloat():1:0,c=4&o?e.readFloat()*r:0;for(let t=0,s=0;a.setFrame(t,l,h,c,8&o?1:-1,!!(16&o),!!(32&o)),t!=i;t++){o=e.readByte();const i=e.readFloat(),n=1&o?2&o?e.readFloat():1:0,d=4&o?e.readFloat()*r:0;64&o?a.setStepped(t):128&o&&(de(e,a,s++,t,0,l,i,h,n,1),de(e,a,s++,t,1,l,i,c,d,r)),l=i,h=n,c=d}n.push(a)}for(let t=0,s=e.readInt(!0);t<s;t++){let t=e.readInt(!0),s=e.readInt(!0),i=s-1,r=new z(s,e.readInt(!0),t),a=e.readFloat(),o=e.readFloat(),l=e.readFloat(),h=e.readFloat(),c=e.readFloat(),d=e.readFloat(),u=e.readFloat();for(let t=0,s=0;r.setFrame(t,a,o,l,h,c,d,u),t!=i;t++){let i=e.readFloat(),n=e.readFloat(),f=e.readFloat(),m=e.readFloat(),g=e.readFloat(),p=e.readFloat(),x=e.readFloat();switch(e.readByte()){case qe:r.setStepped(t);break;case We:de(e,r,s++,t,0,a,i,o,n,1),de(e,r,s++,t,1,a,i,l,f,1),de(e,r,s++,t,2,a,i,h,m,1),de(e,r,s++,t,3,a,i,c,g,1),de(e,r,s++,t,4,a,i,d,p,1),de(e,r,s++,t,5,a,i,u,x,1)}a=i,o=n,l=f,h=m,c=g,d=p,u=x}n.push(r)}for(let s=0,a=e.readInt(!0);s<a;s++){let s=e.readInt(!0),a=i.pathConstraints[s];for(let i=0,o=e.readInt(!0);i<o;i++){const i=e.readByte(),o=e.readInt(!0),l=e.readInt(!0);switch(i){case Ee:n.push(he(e,new G(o,l,s),a.positionMode==t.PositionMode.Fixed?r:1));break;case Re:n.push(he(e,new $(o,l,s),a.spacingMode==t.SpacingMode.Length||a.spacingMode==t.SpacingMode.Fixed?r:1));break;case Ye:let i=new H(o,l,s),h=e.readFloat(),c=e.readFloat(),d=e.readFloat(),u=e.readFloat();for(let t=0,s=0,n=i.getFrameCount()-1;i.setFrame(t,h,c,d,u),t!=n;t++){let n=e.readFloat(),r=e.readFloat(),a=e.readFloat(),o=e.readFloat();switch(e.readByte()){case qe:i.setStepped(t);break;case We:de(e,i,s++,t,0,h,n,c,r,1),de(e,i,s++,t,1,h,n,d,a,1),de(e,i,s++,t,2,h,n,u,o,1)}h=n,c=r,d=a,u=o}n.push(i)}}}for(let t=0,s=e.readInt(!0);t<s;t++){const t=e.readInt(!0)-1;for(let s=0,i=e.readInt(!0);s<i;s++){const s=e.readByte(),i=e.readInt(!0);if(s==Le){const s=new it(i,t);for(let t=0;t<i;t++)s.setFrame(t,e.readFloat());n.push(s);continue}const r=e.readInt(!0);switch(s){case Pe:n.push(he(e,new J(i,r,t),1));break;case Xe:n.push(he(e,new K(i,r,t),1));break;case _e:n.push(he(e,new Z(i,r,t),1));break;case Ve:n.push(he(e,new Q(i,r,t),1));break;case De:n.push(he(e,new tt(i,r,t),1));break;case Oe:n.push(he(e,new et(i,r,t),1));break;case Ne:n.push(he(e,new st(i,r,t),1))}}}for(let t=0,s=e.readInt(!0);t<s;t++){let t=i.skins[e.readInt(!0)];for(let s=0,i=e.readInt(!0);s<i;s++){let s=e.readInt(!0);for(let i=0,a=e.readInt(!0);i<a;i++){let i=e.readStringRef();if(!i)throw new Error("attachmentName must not be null.");let a=t.getAttachment(s,i),o=e.readByte(),h=e.readInt(!0),c=h-1;switch(o){case Ce:{let t=a,i=t.bones,o=t.vertices,d=i?o.length/3*2:o.length,u=e.readInt(!0),f=new L(h,u,s,t),m=e.readFloat();for(let t=0,s=0;;t++){let n,a=e.readInt(!0);if(0==a)n=i?l.newFloatArray(d):o;else{n=l.newFloatArray(d);let t=e.readInt(!0);if(a+=t,1==r)for(let s=t;s<a;s++)n[s]=e.readFloat();else for(let s=t;s<a;s++)n[s]=e.readFloat()*r;if(!i)for(let t=0,e=n.length;t<e;t++)n[t]+=o[t]}if(f.setFrame(t,m,n),t==c)break;let h=e.readFloat();switch(e.readByte()){case qe:f.setStepped(t);break;case We:de(e,f,s++,t,0,m,h,0,1,1)}m=h}n.push(f);break}case Fe:{let t=new nt(h,s,a);for(let s=0;s<h;s++){let i=e.readFloat(),n=e.readInt32();t.setFrame(s,i,g[15&n],n>>4,e.readFloat())}n.push(t);break}}}}}let a=e.readInt(!0);if(a>0){let t=new W(a),s=i.slots.length;for(let i=0;i<a;i++){let n=e.readFloat(),r=e.readInt(!0),a=l.newArray(s,0);for(let t=s-1;t>=0;t--)a[t]=-1;let o=l.newArray(s-r,0),h=0,c=0;for(let t=0;t<r;t++){let t=e.readInt(!0);for(;h!=t;)o[c++]=h++;a[h+e.readInt(!0)]=h++}for(;h<s;)o[c++]=h++;for(let t=s-1;t>=0;t--)-1==a[t]&&(a[t]=o[--c]);t.setFrame(i,n,a)}n.push(t)}let o=e.readInt(!0);if(o>0){let t=new q(o);for(let s=0;s<o;s++){let n=e.readFloat(),r=i.events[e.readInt(!0)],a=new Wt(n,r);a.intValue=e.readInt(!1),a.floatValue=e.readFloat(),a.stringValue=e.readString(),null==a.stringValue&&(a.stringValue=r.stringValue),a.data.audioPath&&(a.volume=e.readFloat(),a.balance=e.readFloat()),t.setFrame(s,a)}n.push(t)}let h=0;for(let t=0,e=n.length;t<e;t++)h=Math.max(h,n[t].getDuration());return new p(s,n,h)}}class ae{strings;index;buffer;constructor(t,e=new Array,s=0,i=new DataView(t.buffer)){this.strings=e,this.index=s,this.buffer=i}readByte(){return this.buffer.getInt8(this.index++)}readUnsignedByte(){return this.buffer.getUint8(this.index++)}readShort(){let t=this.buffer.getInt16(this.index);return this.index+=2,t}readInt32(){let t=this.buffer.getInt32(this.index);return this.index+=4,t}readInt(t){let e=this.readByte(),s=127&e;return 128&e&&(e=this.readByte(),s|=(127&e)<<7,128&e&&(e=this.readByte(),s|=(127&e)<<14,128&e&&(e=this.readByte(),s|=(127&e)<<21,128&e&&(e=this.readByte(),s|=(127&e)<<28)))),t?s:s>>>1^-(1&s)}readStringRef(){let t=this.readInt(!0);return 0==t?null:this.strings[t-1]}readString(){let t=this.readInt(!0);switch(t){case 0:return null;case 1:return""}t--;let e="";for(let s=0;s<t;){let t=this.readUnsignedByte();switch(t>>4){case 12:case 13:e+=String.fromCharCode((31&t)<<6|63&this.readByte()),s+=2;break;case 14:e+=String.fromCharCode((15&t)<<12|(63&this.readByte())<<6|63&this.readByte()),s+=3;break;default:e+=String.fromCharCode(t),s++}}return e}readFloat(){let t=this.buffer.getFloat32(this.index);return this.index+=4,t}readBoolean(){return 0!=this.readByte()}}class oe{parent;skinIndex;slotIndex;mesh;inheritTimeline;constructor(t,e,s,i,n){this.mesh=t,this.skinIndex=e,this.slotIndex=s,this.parent=i,this.inheritTimeline=n}}class le{bones;vertices;length;constructor(t=null,e=null,s=0){this.bones=t,this.vertices=e,this.length=s}}function he(t,e,s){let i=t.readFloat(),n=t.readFloat()*s;for(let r=0,a=0,o=e.getFrameCount()-1;e.setFrame(r,i,n),r!=o;r++){let o=t.readFloat(),l=t.readFloat()*s;switch(t.readByte()){case qe:e.setStepped(r);break;case We:de(t,e,a++,r,0,i,o,n,l,s)}i=o,n=l}return e}function ce(t,e,s){let i=t.readFloat(),n=t.readFloat()*s,r=t.readFloat()*s;for(let a=0,o=0,l=e.getFrameCount()-1;e.setFrame(a,i,n,r),a!=l;a++){let l=t.readFloat(),h=t.readFloat()*s,c=t.readFloat()*s;switch(t.readByte()){case qe:e.setStepped(a);break;case We:de(t,e,o++,a,0,i,l,n,h,s),de(t,e,o++,a,1,i,l,r,c,s)}i=l,n=h,r=c}return e}function de(t,e,s,i,n,r,a,o,l,h){e.setBezier(s,i,n,r,o,t.readFloat(),t.readFloat()*h,t.readFloat(),t.readFloat()*h,a,l)}!function(t){t[t.Region=0]="Region",t[t.BoundingBox=1]="BoundingBox",t[t.Mesh=2]="Mesh",t[t.LinkedMesh=3]="LinkedMesh",t[t.Path=4]="Path",t[t.Point=5]="Point",t[t.Clipping=6]="Clipping"}(Tt||(Tt={}));const ue=0,fe=1,me=2,ge=3,pe=4,xe=5,we=6,be=7,ye=8,Me=9,ve=10,Se=0,ke=1,Ie=2,Ae=3,Be=4,Te=5,Ce=0,Fe=1,Ee=0,Re=1,Ye=2,Pe=0,Xe=1,_e=2,Ve=4,De=5,Oe=6,Ne=7,Le=8,qe=1,We=2;class Ue{convexPolygons=new Array;convexPolygonsIndices=new Array;indicesArray=new Array;isConcaveArray=new Array;triangles=new Array;polygonPool=new h((()=>new Array));polygonIndicesPool=new h((()=>new Array));triangulate(t){let e=t,s=t.length>>1,i=this.indicesArray;i.length=0;for(let t=0;t<s;t++)i[t]=t;let n=this.isConcaveArray;n.length=0;for(let t=0,r=s;t<r;++t)n[t]=Ue.isConcave(t,s,e,i);let r=this.triangles;for(r.length=0;s>3;){let t=s-1,a=0,o=1;for(;;){t:if(!n[a]){let r=i[t]<<1,l=i[a]<<1,h=i[o]<<1,c=e[r],d=e[r+1],u=e[l],f=e[l+1],m=e[h],g=e[h+1];for(let r=(o+1)%s;r!=t;r=(r+1)%s){if(!n[r])continue;let t=i[r]<<1,s=e[t],a=e[t+1];if(Ue.positiveArea(m,g,c,d,s,a)&&Ue.positiveArea(c,d,u,f,s,a)&&Ue.positiveArea(u,f,m,g,s,a))break t}break}if(0==o){do{if(!n[a])break;a--}while(a>0);break}t=a,a=o,o=(o+1)%s}r.push(i[(s+a-1)%s]),r.push(i[a]),r.push(i[(a+1)%s]),i.splice(a,1),n.splice(a,1),s--;let l=(s+a-1)%s,h=a==s?0:a;n[l]=Ue.isConcave(l,s,e,i),n[h]=Ue.isConcave(h,s,e,i)}return 3==s&&(r.push(i[2]),r.push(i[0]),r.push(i[1])),r}decompose(t,e){let s=t,i=this.convexPolygons;this.polygonPool.freeAll(i),i.length=0;let n=this.convexPolygonsIndices;this.polygonIndicesPool.freeAll(n),n.length=0;let r=this.polygonIndicesPool.obtain();r.length=0;let a=this.polygonPool.obtain();a.length=0;let o=-1,l=0;for(let t=0,h=e.length;t<h;t+=3){let h=e[t]<<1,c=e[t+1]<<1,d=e[t+2]<<1,u=s[h],f=s[h+1],m=s[c],g=s[c+1],p=s[d],x=s[d+1],w=!1;if(o==h){let t=a.length-4,e=Ue.winding(a[t],a[t+1],a[t+2],a[t+3],p,x),s=Ue.winding(p,x,a[0],a[1],a[2],a[3]);e==l&&s==l&&(a.push(p),a.push(x),r.push(d),w=!0)}w||(a.length>0?(i.push(a),n.push(r)):(this.polygonPool.free(a),this.polygonIndicesPool.free(r)),a=this.polygonPool.obtain(),a.length=0,a.push(u),a.push(f),a.push(m),a.push(g),a.push(p),a.push(x),r=this.polygonIndicesPool.obtain(),r.length=0,r.push(h),r.push(c),r.push(d),l=Ue.winding(u,f,m,g,p,x),o=h)}a.length>0&&(i.push(a),n.push(r));for(let t=0,e=i.length;t<e;t++){if(r=n[t],0==r.length)continue;let s=r[0],o=r[r.length-1];a=i[t];let l=a.length-4,h=a[l],c=a[l+1],d=a[l+2],u=a[l+3],f=a[0],m=a[1],g=a[2],p=a[3],x=Ue.winding(h,c,d,u,f,m);for(let l=0;l<e;l++){if(l==t)continue;let e=n[l];if(3!=e.length)continue;let w=e[0],b=e[1],y=e[2],M=i[l],v=M[M.length-2],S=M[M.length-1];if(w!=s||b!=o)continue;let k=Ue.winding(h,c,d,u,v,S),I=Ue.winding(v,S,f,m,g,p);k==x&&I==x&&(M.length=0,e.length=0,a.push(v),a.push(S),r.push(y),h=d,c=u,d=v,u=S,l=0)}}for(let t=i.length-1;t>=0;t--)a=i[t],0==a.length&&(i.splice(t,1),this.polygonPool.free(a),r=n[t],n.splice(t,1),this.polygonIndicesPool.free(r));return i}static isConcave(t,e,s,i){let n=i[(e+t-1)%e]<<1,r=i[t]<<1,a=i[(t+1)%e]<<1;return!this.positiveArea(s[n],s[n+1],s[r],s[r+1],s[a],s[a+1])}static positiveArea(t,e,s,i,n,r){return t*(r-i)+s*(e-r)+n*(i-e)>=0}static winding(t,e,s,i,n,r){let a=s-t,o=i-e;return n*o-r*a+a*e-t*o>=0?1:-1}}class ze{triangulator=new Ue;clippingPolygon=new Array;clipOutput=new Array;clippedVertices=new Array;clippedTriangles=new Array;scratch=new Array;clipAttachment=null;clippingPolygons=null;clipStart(t,e){if(this.clipAttachment)return 0;this.clipAttachment=e;let s=e.worldVerticesLength,i=l.setArraySize(this.clippingPolygon,s);e.computeWorldVertices(t,0,s,i,0,2);let n=this.clippingPolygon;ze.makeClockwise(n);let r=this.clippingPolygons=this.triangulator.decompose(n,this.triangulator.triangulate(n));for(let t=0,e=r.length;t<e;t++){let e=r[t];ze.makeClockwise(e),e.push(e[0]),e.push(e[1])}return r.length}clipEndWithSlot(t){this.clipAttachment&&this.clipAttachment.endSlot==t.data&&this.clipEnd()}clipEnd(){this.clipAttachment&&(this.clipAttachment=null,this.clippingPolygons=null,this.clippedVertices.length=0,this.clippedTriangles.length=0,this.clippingPolygon.length=0)}isClipping(){return null!=this.clipAttachment}clipTriangles(t,e,s,i,n,r,a){i&&n&&r&&"boolean"==typeof a?this.clipTrianglesRender(t,e,s,i,n,r,a):this.clipTrianglesNoRender(t,e,s)}clipTrianglesNoRender(t,e,s){let i=this.clipOutput,n=this.clippedVertices,r=this.clippedTriangles,a=this.clippingPolygons,o=a.length,h=0;n.length=0,r.length=0;for(let c=0;c<s;c+=3){let s=e[c]<<1,d=t[s],u=t[s+1];s=e[c+1]<<1;let f=t[s],m=t[s+1];s=e[c+2]<<1;let g=t[s],p=t[s+1];for(let t=0;t<o;t++){let e=n.length;if(!this.clip(d,u,f,m,g,p,a[t],i)){let t=l.setArraySize(n,e+6);t[e]=d,t[e+1]=u,t[e+2]=f,t[e+3]=m,t[e+4]=g,t[e+5]=p,e=r.length;let s=l.setArraySize(r,e+3);s[e]=h,s[e+1]=h+1,s[e+2]=h+2,h+=3;break}{let t=i.length;if(0==t)continue;let s=t>>1,a=this.clipOutput,o=l.setArraySize(n,e+2*s);for(let s=0;s<t;s+=2,e+=2){let t=a[s],i=a[s+1];o[e]=t,o[e+1]=i}e=r.length;let c=l.setArraySize(r,e+3*(s-2));s--;for(let t=1;t<s;t++,e+=3)c[e]=h,c[e+1]=h+t,c[e+2]=h+t+1;h+=s+1}}}}clipTrianglesRender(t,e,s,i,n,r,a){let o=this.clipOutput,h=this.clippedVertices,c=this.clippedTriangles,d=this.clippingPolygons,u=d.length,f=a?12:8,m=0;h.length=0,c.length=0;for(let g=0;g<s;g+=3){let s=e[g]<<1,p=t[s],x=t[s+1],w=i[s],b=i[s+1];s=e[g+1]<<1;let y=t[s],M=t[s+1],v=i[s],S=i[s+1];s=e[g+2]<<1;let k=t[s],I=t[s+1],A=i[s],B=i[s+1];for(let t=0;t<u;t++){let e=h.length;if(!this.clip(p,x,y,M,k,I,d[t],o)){let t=l.setArraySize(h,e+3*f);t[e]=p,t[e+1]=x,t[e+2]=n.r,t[e+3]=n.g,t[e+4]=n.b,t[e+5]=n.a,a?(t[e+6]=w,t[e+7]=b,t[e+8]=r.r,t[e+9]=r.g,t[e+10]=r.b,t[e+11]=r.a,t[e+12]=y,t[e+13]=M,t[e+14]=n.r,t[e+15]=n.g,t[e+16]=n.b,t[e+17]=n.a,t[e+18]=v,t[e+19]=S,t[e+20]=r.r,t[e+21]=r.g,t[e+22]=r.b,t[e+23]=r.a,t[e+24]=k,t[e+25]=I,t[e+26]=n.r,t[e+27]=n.g,t[e+28]=n.b,t[e+29]=n.a,t[e+30]=A,t[e+31]=B,t[e+32]=r.r,t[e+33]=r.g,t[e+34]=r.b,t[e+35]=r.a):(t[e+6]=w,t[e+7]=b,t[e+8]=y,t[e+9]=M,t[e+10]=n.r,t[e+11]=n.g,t[e+12]=n.b,t[e+13]=n.a,t[e+14]=v,t[e+15]=S,t[e+16]=k,t[e+17]=I,t[e+18]=n.r,t[e+19]=n.g,t[e+20]=n.b,t[e+21]=n.a,t[e+22]=A,t[e+23]=B),e=c.length;let s=l.setArraySize(c,e+3);s[e]=m,s[e+1]=m+1,s[e+2]=m+2,m+=3;break}{let t=o.length;if(0==t)continue;let s=M-I,i=k-y,d=p-k,u=I-x,g=1/(s*d+i*(x-I)),T=t>>1,C=this.clipOutput,F=l.setArraySize(h,e+T*f);for(let o=0;o<t;o+=2,e+=f){let t=C[o],l=C[o+1];F[e]=t,F[e+1]=l,F[e+2]=n.r,F[e+3]=n.g,F[e+4]=n.b,F[e+5]=n.a;let h=t-k,c=l-I,f=(s*h+i*c)*g,m=(u*h+d*c)*g,p=1-f-m;F[e+6]=w*f+v*m+A*p,F[e+7]=b*f+S*m+B*p,a&&(F[e+8]=r.r,F[e+9]=r.g,F[e+10]=r.b,F[e+11]=r.a)}e=c.length;let E=l.setArraySize(c,e+3*(T-2));T--;for(let t=1;t<T;t++,e+=3)E[e]=m,E[e+1]=m+t,E[e+2]=m+t+1;m+=T+1}}}}clip(t,e,s,i,n,r,a,o){let l,h=o,c=!1;a.length%4>=2?(l=o,o=this.scratch):l=this.scratch,l.length=0,l.push(t),l.push(e),l.push(s),l.push(i),l.push(n),l.push(r),l.push(t),l.push(e),o.length=0;let d=a.length-4,u=a;for(let t=0;;t+=2){let e=u[t],s=u[t+1],i=e-u[t+2],n=s-u[t+3],r=o.length,a=l;for(let t=0,r=l.length-2;t<r;){let r=a[t],l=a[t+1];t+=2;let h=a[t],d=a[t+1],u=n*(e-h)>i*(s-d),f=n*(e-r)-i*(s-l);if(f>0){if(u){o.push(h),o.push(d);continue}let t=h-r,e=d-l,s=f/(t*n-e*i);if(!(s>=0&&s<=1)){o.push(h),o.push(d);continue}o.push(r+t*s),o.push(l+e*s)}else if(u){let t=h-r,e=d-l,s=f/(t*n-e*i);if(!(s>=0&&s<=1)){o.push(h),o.push(d);continue}o.push(r+t*s),o.push(l+e*s),o.push(h),o.push(d)}c=!0}if(r==o.length)return h.length=0,!0;if(o.push(o[0]),o.push(o[1]),t==d)break;let f=o;(o=l).length=0,l=f}if(h!=o){h.length=0;for(let t=0,e=o.length-2;t<e;t++)h[t]=o[t]}else h.length=h.length-2;return c}static makeClockwise(t){let e=t,s=t.length,i=e[s-2]*e[1]-e[0]*e[s-1],n=0,r=0,a=0,o=0;for(let t=0,l=s-3;t<l;t+=2)n=e[t],r=e[t+1],a=e[t+2],o=e[t+3],i+=n*o-a*r;if(!(i<0))for(let t=0,i=s-2,n=s>>1;t<n;t+=2){let s=e[t],n=e[t+1],r=i-t;e[t]=e[r],e[t+1]=e[r+1],e[r]=s,e[r+1]=n}}}class Ge{attachmentLoader;scale=1;linkedMeshes=new Array;constructor(t){this.attachmentLoader=t}readSkeletonData(e){let s=this.scale,i=new te,r="string"==typeof e?JSON.parse(e):e,a=r.skeleton;if(a&&(i.hash=a.hash,i.version=a.spine,i.x=a.x,i.y=a.y,i.width=a.width,i.height=a.height,i.referenceScale=Ke(a,"referenceScale",100)*s,i.fps=a.fps,i.imagesPath=a.images??null,i.audioPath=a.audio??null),r.bones)for(let e=0;e<r.bones.length;e++){let n=r.bones[e],a=null,o=Ke(n,"parent",null);o&&(a=i.findBone(o));let h=new Ot(i.bones.length,n.name,a);h.length=Ke(n,"length",0)*s,h.x=Ke(n,"x",0)*s,h.y=Ke(n,"y",0)*s,h.rotation=Ke(n,"rotation",0),h.scaleX=Ke(n,"scaleX",1),h.scaleY=Ke(n,"scaleY",1),h.shearX=Ke(n,"shearX",0),h.shearY=Ke(n,"shearY",0),h.inherit=l.enumValue(t.Inherit,Ke(n,"inherit","Normal")),h.skinRequired=Ke(n,"skin",!1);let c=Ke(n,"color",null);c&&h.color.setFromString(c),i.bones.push(h)}if(r.slots)for(let e=0;e<r.slots.length;e++){let s=r.slots[e],a=s.name,o=i.findBone(s.bone);if(!o)throw new Error(`Couldn't find bone ${s.bone} for slot ${a}`);let h=new ie(i.slots.length,a,o),c=Ke(s,"color",null);c&&h.color.setFromString(c);let d=Ke(s,"dark",null);d&&(h.darkColor=n.fromString(d)),h.attachmentName=Ke(s,"attachment",null),h.blendMode=l.enumValue(t.BlendMode,Ke(s,"blend","normal")),h.visible=Ke(s,"visible",!0),i.slots.push(h)}if(r.ik)for(let t=0;t<r.ik.length;t++){let e=r.ik[t],n=new Gt(e.name);n.order=Ke(e,"order",0),n.skinRequired=Ke(e,"skin",!1);for(let t=0;t<e.bones.length;t++){let s=i.findBone(e.bones[t]);if(!s)throw new Error(`Couldn't find bone ${e.bones[t]} for IK constraint ${e.name}.`);n.bones.push(s)}let a=i.findBone(e.target);if(!a)throw new Error(`Couldn't find target bone ${e.target} for IK constraint ${e.name}.`);n.target=a,n.mix=Ke(e,"mix",1),n.softness=Ke(e,"softness",0)*s,n.bendDirection=Ke(e,"bendPositive",!0)?1:-1,n.compress=Ke(e,"compress",!1),n.stretch=Ke(e,"stretch",!1),n.uniform=Ke(e,"uniform",!1),i.ikConstraints.push(n)}if(r.transform)for(let t=0;t<r.transform.length;t++){let e=r.transform[t],n=new ne(e.name);n.order=Ke(e,"order",0),n.skinRequired=Ke(e,"skin",!1);for(let t=0;t<e.bones.length;t++){let s=e.bones[t],r=i.findBone(s);if(!r)throw new Error(`Couldn't find bone ${s} for transform constraint ${e.name}.`);n.bones.push(r)}let a=e.target,o=i.findBone(a);if(!o)throw new Error(`Couldn't find target bone ${a} for transform constraint ${e.name}.`);n.target=o,n.local=Ke(e,"local",!1),n.relative=Ke(e,"relative",!1),n.offsetRotation=Ke(e,"rotation",0),n.offsetX=Ke(e,"x",0)*s,n.offsetY=Ke(e,"y",0)*s,n.offsetScaleX=Ke(e,"scaleX",0),n.offsetScaleY=Ke(e,"scaleY",0),n.offsetShearY=Ke(e,"shearY",0),n.mixRotate=Ke(e,"mixRotate",1),n.mixX=Ke(e,"mixX",1),n.mixY=Ke(e,"mixY",n.mixX),n.mixScaleX=Ke(e,"mixScaleX",1),n.mixScaleY=Ke(e,"mixScaleY",n.mixScaleX),n.mixShearY=Ke(e,"mixShearY",1),i.transformConstraints.push(n)}if(r.path)for(let e=0;e<r.path.length;e++){let n=r.path[e],a=new $t(n.name);a.order=Ke(n,"order",0),a.skinRequired=Ke(n,"skin",!1);for(let t=0;t<n.bones.length;t++){let e=n.bones[t],s=i.findBone(e);if(!s)throw new Error(`Couldn't find bone ${e} for path constraint ${n.name}.`);a.bones.push(s)}let o=n.target,h=i.findSlot(o);if(!h)throw new Error(`Couldn't find target slot ${o} for path constraint ${n.name}.`);a.target=h,a.positionMode=l.enumValue(t.PositionMode,Ke(n,"positionMode","Percent")),a.spacingMode=l.enumValue(t.SpacingMode,Ke(n,"spacingMode","Length")),a.rotateMode=l.enumValue(t.RotateMode,Ke(n,"rotateMode","Tangent")),a.offsetRotation=Ke(n,"rotation",0),a.position=Ke(n,"position",0),a.positionMode==t.PositionMode.Fixed&&(a.position*=s),a.spacing=Ke(n,"spacing",0),a.spacingMode!=t.SpacingMode.Length&&a.spacingMode!=t.SpacingMode.Fixed||(a.spacing*=s),a.mixRotate=Ke(n,"mixRotate",1),a.mixX=Ke(n,"mixX",1),a.mixY=Ke(n,"mixY",a.mixX),i.pathConstraints.push(a)}if(r.physics)for(let t=0;t<r.physics.length;t++){const e=r.physics[t],n=new Qt(e.name);n.order=Ke(e,"order",0),n.skinRequired=Ke(e,"skin",!1);const a=e.bone,o=i.findBone(a);if(null==o)throw new Error("Physics bone not found: "+a);n.bone=o,n.x=Ke(e,"x",0),n.y=Ke(e,"y",0),n.rotate=Ke(e,"rotate",0),n.scaleX=Ke(e,"scaleX",0),n.shearX=Ke(e,"shearX",0),n.limit=Ke(e,"limit",5e3)*s,n.step=1/Ke(e,"fps",60),n.inertia=Ke(e,"inertia",1),n.strength=Ke(e,"strength",100),n.damping=Ke(e,"damping",1),n.massInverse=1/Ke(e,"mass",1),n.wind=Ke(e,"wind",0),n.gravity=Ke(e,"gravity",0),n.mix=Ke(e,"mix",1),n.inertiaGlobal=Ke(e,"inertiaGlobal",!1),n.strengthGlobal=Ke(e,"strengthGlobal",!1),n.dampingGlobal=Ke(e,"dampingGlobal",!1),n.massGlobal=Ke(e,"massGlobal",!1),n.windGlobal=Ke(e,"windGlobal",!1),n.gravityGlobal=Ke(e,"gravityGlobal",!1),n.mixGlobal=Ke(e,"mixGlobal",!1),i.physicsConstraints.push(n)}if(r.skins)for(let t=0;t<r.skins.length;t++){let e=r.skins[t],s=new se(e.name);if(e.bones)for(let t=0;t<e.bones.length;t++){let n=e.bones[t],r=i.findBone(n);if(!r)throw new Error(`Couldn't find bone ${n} for skin ${e.name}.`);s.bones.push(r)}if(e.ik)for(let t=0;t<e.ik.length;t++){let n=e.ik[t],r=i.findIkConstraint(n);if(!r)throw new Error(`Couldn't find IK constraint ${n} for skin ${e.name}.`);s.constraints.push(r)}if(e.transform)for(let t=0;t<e.transform.length;t++){let n=e.transform[t],r=i.findTransformConstraint(n);if(!r)throw new Error(`Couldn't find transform constraint ${n} for skin ${e.name}.`);s.constraints.push(r)}if(e.path)for(let t=0;t<e.path.length;t++){let n=e.path[t],r=i.findPathConstraint(n);if(!r)throw new Error(`Couldn't find path constraint ${n} for skin ${e.name}.`);s.constraints.push(r)}if(e.physics)for(let t=0;t<e.physics.length;t++){let n=e.physics[t],r=i.findPhysicsConstraint(n);if(!r)throw new Error(`Couldn't find physics constraint ${n} for skin ${e.name}.`);s.constraints.push(r)}for(let t in e.attachments){let n=i.findSlot(t);if(!n)throw new Error(`Couldn't find slot ${t} for skin ${e.name}.`);let r=e.attachments[t];for(let t in r){let e=this.readAttachment(r[t],s,n.index,t,i);e&&s.setAttachment(n.index,t,e)}}i.skins.push(s),"default"==s.name&&(i.defaultSkin=s)}for(let t=0,e=this.linkedMeshes.length;t<e;t++){let e=this.linkedMeshes[t],s=e.skin?i.findSkin(e.skin):i.defaultSkin;if(!s)throw new Error(`Skin not found: ${e.skin}`);let n=s.getAttachment(e.slotIndex,e.parent);if(!n)throw new Error(`Parent mesh not found: ${e.parent}`);e.mesh.timelineAttachment=e.inheritTimeline?n:e.mesh,e.mesh.setParentMesh(n),null!=e.mesh.region&&e.mesh.updateRegion()}if(this.linkedMeshes.length=0,r.events)for(let t in r.events){let e=r.events[t],s=new Ut(t);s.intValue=Ke(e,"int",0),s.floatValue=Ke(e,"float",0),s.stringValue=Ke(e,"string",""),s.audioPath=Ke(e,"audio",null),s.audioPath&&(s.volume=Ke(e,"volume",1),s.balance=Ke(e,"balance",0)),i.events.push(s)}if(r.animations)for(let t in r.animations){let e=r.animations[t];this.readAnimation(e,t,i)}return i}readAttachment(t,e,s,i,n){let r=this.scale;switch(i=Ke(t,"name",i),Ke(t,"type","region")){case"region":{let s=Ke(t,"path",i),n=this.readSequence(Ke(t,"sequence",null)),a=this.attachmentLoader.newRegionAttachment(e,i,s,n);if(!a)return null;a.path=s,a.x=Ke(t,"x",0)*r,a.y=Ke(t,"y",0)*r,a.scaleX=Ke(t,"scaleX",1),a.scaleY=Ke(t,"scaleY",1),a.rotation=Ke(t,"rotation",0),a.width=t.width*r,a.height=t.height*r,a.sequence=n;let o=Ke(t,"color",null);return o&&a.color.setFromString(o),null!=a.region&&a.updateRegion(),a}case"boundingbox":{let s=this.attachmentLoader.newBoundingBoxAttachment(e,i);if(!s)return null;this.readVertices(t,s,t.vertexCount<<1);let n=Ke(t,"color",null);return n&&s.color.setFromString(n),s}case"mesh":case"linkedmesh":{let n=Ke(t,"path",i),a=this.readSequence(Ke(t,"sequence",null)),o=this.attachmentLoader.newMeshAttachment(e,i,n,a);if(!o)return null;o.path=n;let l=Ke(t,"color",null);l&&o.color.setFromString(l),o.width=Ke(t,"width",0)*r,o.height=Ke(t,"height",0)*r,o.sequence=a;let h=Ke(t,"parent",null);if(h)return this.linkedMeshes.push(new $e(o,Ke(t,"skin",null),s,h,Ke(t,"timelines",!0))),o;let c=t.uvs;return this.readVertices(t,o,c.length),o.triangles=t.triangles,o.regionUVs=c,null!=o.region&&o.updateRegion(),o.edges=Ke(t,"edges",null),o.hullLength=2*Ke(t,"hull",0),o}case"path":{let s=this.attachmentLoader.newPathAttachment(e,i);if(!s)return null;s.closed=Ke(t,"closed",!1),s.constantSpeed=Ke(t,"constantSpeed",!0);let n=t.vertexCount;this.readVertices(t,s,n<<1);let a=l.newArray(n/3,0);for(let e=0;e<t.lengths.length;e++)a[e]=t.lengths[e]*r;s.lengths=a;let o=Ke(t,"color",null);return o&&s.color.setFromString(o),s}case"point":{let s=this.attachmentLoader.newPointAttachment(e,i);if(!s)return null;s.x=Ke(t,"x",0)*r,s.y=Ke(t,"y",0)*r,s.rotation=Ke(t,"rotation",0);let n=Ke(t,"color",null);return n&&s.color.setFromString(n),s}case"clipping":{let s=this.attachmentLoader.newClippingAttachment(e,i);if(!s)return null;let r=Ke(t,"end",null);r&&(s.endSlot=n.findSlot(r));let a=t.vertexCount;this.readVertices(t,s,a<<1);let o=Ke(t,"color",null);return o&&s.color.setFromString(o),s}}return null}readSequence(t){if(null==t)return null;let e=new f(Ke(t,"count",0));return e.start=Ke(t,"start",1),e.digits=Ke(t,"digits",0),e.setupIndex=Ke(t,"setup",0),e}readVertices(t,e,s){let i=this.scale;e.worldVerticesLength=s;let n=t.vertices;if(s==n.length){let t=l.toFloatArray(n);if(1!=i)for(let e=0,s=n.length;e<s;e++)t[e]*=i;return void(e.vertices=t)}let r=new Array,a=new Array;for(let t=0,e=n.length;t<e;){let e=n[t++];a.push(e);for(let s=t+4*e;t<s;t+=4)a.push(n[t]),r.push(n[t+1]*i),r.push(n[t+2]*i),r.push(n[t+3])}e.bones=a,e.vertices=l.toFloatArray(r)}readAnimation(e,s,i){let r=this.scale,a=new Array;if(e.slots)for(let t in e.slots){let s=e.slots[t],r=i.findSlot(t);if(!r)throw new Error("Slot not found: "+t);let o=r.index;for(let t in s){let e=s[t];if(!e)continue;let i=e.length;if("attachment"==t){let t=new N(i,o);for(let s=0;s<i;s++){let i=e[s];t.setFrame(s,Ke(i,"time",0),Ke(i,"name",null))}a.push(t)}else if("rgba"==t){let t=new X(i,i<<2,o),s=e[0],r=Ke(s,"time",0),l=n.fromString(s.color);for(let i=0,a=0;;i++){t.setFrame(i,r,l.r,l.g,l.b,l.a);let o=e[i+1];if(!o){t.shrink(a);break}let h=Ke(o,"time",0),c=n.fromString(o.color),d=s.curve;d&&(a=Je(d,t,a,i,0,r,h,l.r,c.r,1),a=Je(d,t,a,i,1,r,h,l.g,c.g,1),a=Je(d,t,a,i,2,r,h,l.b,c.b,1),a=Je(d,t,a,i,3,r,h,l.a,c.a,1)),r=h,l=c,s=o}a.push(t)}else if("rgb"==t){let t=new _(i,3*i,o),s=e[0],r=Ke(s,"time",0),l=n.fromString(s.color);for(let i=0,a=0;;i++){t.setFrame(i,r,l.r,l.g,l.b);let o=e[i+1];if(!o){t.shrink(a);break}let h=Ke(o,"time",0),c=n.fromString(o.color),d=s.curve;d&&(a=Je(d,t,a,i,0,r,h,l.r,c.r,1),a=Je(d,t,a,i,1,r,h,l.g,c.g,1),a=Je(d,t,a,i,2,r,h,l.b,c.b,1)),r=h,l=c,s=o}a.push(t)}else if("alpha"==t)a.push(He(e,new V(i,i,o),0,1));else if("rgba2"==t){let t=new D(i,7*i,o),s=e[0],r=Ke(s,"time",0),l=n.fromString(s.light),h=n.fromString(s.dark);for(let i=0,a=0;;i++){t.setFrame(i,r,l.r,l.g,l.b,l.a,h.r,h.g,h.b);let o=e[i+1];if(!o){t.shrink(a);break}let c=Ke(o,"time",0),d=n.fromString(o.light),u=n.fromString(o.dark),f=s.curve;f&&(a=Je(f,t,a,i,0,r,c,l.r,d.r,1),a=Je(f,t,a,i,1,r,c,l.g,d.g,1),a=Je(f,t,a,i,2,r,c,l.b,d.b,1),a=Je(f,t,a,i,3,r,c,l.a,d.a,1),a=Je(f,t,a,i,4,r,c,h.r,u.r,1),a=Je(f,t,a,i,5,r,c,h.g,u.g,1),a=Je(f,t,a,i,6,r,c,h.b,u.b,1)),r=c,l=d,h=u,s=o}a.push(t)}else if("rgb2"==t){let t=new O(i,6*i,o),s=e[0],r=Ke(s,"time",0),l=n.fromString(s.light),h=n.fromString(s.dark);for(let i=0,a=0;;i++){t.setFrame(i,r,l.r,l.g,l.b,h.r,h.g,h.b);let o=e[i+1];if(!o){t.shrink(a);break}let c=Ke(o,"time",0),d=n.fromString(o.light),u=n.fromString(o.dark),f=s.curve;f&&(a=Je(f,t,a,i,0,r,c,l.r,d.r,1),a=Je(f,t,a,i,1,r,c,l.g,d.g,1),a=Je(f,t,a,i,2,r,c,l.b,d.b,1),a=Je(f,t,a,i,3,r,c,h.r,u.r,1),a=Je(f,t,a,i,4,r,c,h.g,u.g,1),a=Je(f,t,a,i,5,r,c,h.b,u.b,1)),r=c,l=d,h=u,s=o}a.push(t)}}}if(e.bones)for(let s in e.bones){let n=e.bones[s],o=i.findBone(s);if(!o)throw new Error("Bone not found: "+s);let h=o.index;for(let e in n){let s=n[e],i=s.length;if(0!=i)if("rotate"===e)a.push(He(s,new k(i,i,h),0,1));else if("translate"===e){let t=new I(i,i<<1,h);a.push(je(s,t,"x","y",0,r))}else if("translatex"===e){let t=new A(i,i,h);a.push(He(s,t,0,r))}else if("translatey"===e){let t=new B(i,i,h);a.push(He(s,t,0,r))}else if("scale"===e){let t=new T(i,i<<1,h);a.push(je(s,t,"x","y",1,1))}else if("scalex"===e){let t=new C(i,i,h);a.push(He(s,t,1,1))}else if("scaley"===e){let t=new F(i,i,h);a.push(He(s,t,1,1))}else if("shear"===e){let t=new E(i,i<<1,h);a.push(je(s,t,"x","y",0,1))}else if("shearx"===e){let t=new R(i,i,h);a.push(He(s,t,0,1))}else if("sheary"===e){let t=new Y(i,i,h);a.push(He(s,t,0,1))}else if("inherit"===e){let e=new P(i,o.index);for(let i=0;i<s.length;i++){let n=s[i];e.setFrame(i,Ke(n,"time",0),l.enumValue(t.Inherit,Ke(n,"inherit","Normal")))}a.push(e)}}}if(e.ik)for(let t in e.ik){let s=e.ik[t],n=s[0];if(!n)continue;let o=i.findIkConstraint(t);if(!o)throw new Error("IK Constraint not found: "+t);let l=i.ikConstraints.indexOf(o),h=new U(s.length,s.length<<1,l),c=Ke(n,"time",0),d=Ke(n,"mix",1),u=Ke(n,"softness",0)*r;for(let t=0,e=0;;t++){h.setFrame(t,c,d,u,Ke(n,"bendPositive",!0)?1:-1,Ke(n,"compress",!1),Ke(n,"stretch",!1));let i=s[t+1];if(!i){h.shrink(e);break}let a=Ke(i,"time",0),o=Ke(i,"mix",1),l=Ke(i,"softness",0)*r,f=n.curve;f&&(e=Je(f,h,e,t,0,c,a,d,o,1),e=Je(f,h,e,t,1,c,a,u,l,r)),c=a,d=o,u=l,n=i}a.push(h)}if(e.transform)for(let t in e.transform){let s=e.transform[t],n=s[0];if(!n)continue;let r=i.findTransformConstraint(t);if(!r)throw new Error("Transform constraint not found: "+t);let o=i.transformConstraints.indexOf(r),l=new z(s.length,6*s.length,o),h=Ke(n,"time",0),c=Ke(n,"mixRotate",1),d=Ke(n,"mixX",1),u=Ke(n,"mixY",d),f=Ke(n,"mixScaleX",1),m=Ke(n,"mixScaleY",f),g=Ke(n,"mixShearY",1);for(let t=0,e=0;;t++){l.setFrame(t,h,c,d,u,f,m,g);let i=s[t+1];if(!i){l.shrink(e);break}let r=Ke(i,"time",0),a=Ke(i,"mixRotate",1),o=Ke(i,"mixX",1),p=Ke(i,"mixY",o),x=Ke(i,"mixScaleX",1),w=Ke(i,"mixScaleY",x),b=Ke(i,"mixShearY",1),y=n.curve;y&&(e=Je(y,l,e,t,0,h,r,c,a,1),e=Je(y,l,e,t,1,h,r,d,o,1),e=Je(y,l,e,t,2,h,r,u,p,1),e=Je(y,l,e,t,3,h,r,f,x,1),e=Je(y,l,e,t,4,h,r,m,w,1),e=Je(y,l,e,t,5,h,r,g,b,1)),h=r,c=a,d=o,u=p,f=x,m=w,f=x,n=i}a.push(l)}if(e.path)for(let s in e.path){let n=e.path[s],o=i.findPathConstraint(s);if(!o)throw new Error("Path constraint not found: "+s);let l=i.pathConstraints.indexOf(o);for(let e in n){let s=n[e],i=s[0];if(!i)continue;let h=s.length;if("position"===e){let e=new G(h,h,l);a.push(He(s,e,0,o.positionMode==t.PositionMode.Fixed?r:1))}else if("spacing"===e){let e=new $(h,h,l);a.push(He(s,e,0,o.spacingMode==t.SpacingMode.Length||o.spacingMode==t.SpacingMode.Fixed?r:1))}else if("mix"===e){let t=new H(h,3*h,l),e=Ke(i,"time",0),n=Ke(i,"mixRotate",1),r=Ke(i,"mixX",1),o=Ke(i,"mixY",r);for(let a=0,l=0;;a++){t.setFrame(a,e,n,r,o);let h=s[a+1];if(!h){t.shrink(l);break}let c=Ke(h,"time",0),d=Ke(h,"mixRotate",1),u=Ke(h,"mixX",1),f=Ke(h,"mixY",u),m=i.curve;m&&(l=Je(m,t,l,a,0,e,c,n,d,1),l=Je(m,t,l,a,1,e,c,r,u,1),l=Je(m,t,l,a,2,e,c,o,f,1)),e=c,n=d,r=u,o=f,i=h}a.push(t)}}}if(e.physics)for(let t in e.physics){let s=e.physics[t],n=-1;if(t.length>0){let e=i.findPhysicsConstraint(t);if(!e)throw new Error("Physics constraint not found: "+t);n=i.physicsConstraints.indexOf(e)}for(let t in s){let e=s[t],i=e[0];if(!i)continue;let r,o=e.length;if("reset"!=t){if("inertia"==t)r=new J(o,o,n);else if("strength"==t)r=new K(o,o,n);else if("damping"==t)r=new Z(o,o,n);else if("mass"==t)r=new Q(o,o,n);else if("wind"==t)r=new tt(o,o,n);else if("gravity"==t)r=new et(o,o,n);else{if("mix"!=t)continue;r=new st(o,o,n)}a.push(He(e,r,0,1))}else{const t=new it(o,n);for(let s=0;null!=i;i=e[s+1],s++)t.setFrame(s,Ke(i,"time",0));a.push(t)}}}if(e.attachments)for(let t in e.attachments){let s=e.attachments[t],n=i.findSkin(t);if(!n)throw new Error("Skin not found: "+t);for(let t in s){let e=s[t],o=i.findSlot(t);if(!o)throw new Error("Slot not found: "+t);let h=o.index;for(let t in e){let s=e[t],i=n.getAttachment(h,t);for(let t in s){let e=s[t],n=e[0];if(n)if("deform"==t){let t=i.bones,s=i.vertices,o=t?s.length/3*2:s.length,c=new L(e.length,e.length,h,i),d=Ke(n,"time",0);for(let i=0,a=0;;i++){let h,u=Ke(n,"vertices",null);if(u){h=l.newFloatArray(o);let e=Ke(n,"offset",0);if(l.arrayCopy(u,0,h,e,u.length),1!=r)for(let t=e,s=t+u.length;t<s;t++)h[t]*=r;if(!t)for(let t=0;t<o;t++)h[t]+=s[t]}else h=t?l.newFloatArray(o):s;c.setFrame(i,d,h);let f=e[i+1];if(!f){c.shrink(a);break}let m=Ke(f,"time",0),g=n.curve;g&&(a=Je(g,c,a,i,0,d,m,0,1,1)),d=m,n=f}a.push(c)}else if("sequence"==t){let t=new nt(e.length,h,i),s=0;for(let i=0;i<e.length;i++){let r=Ke(n,"delay",s),a=Ke(n,"time",0),o=m[Ke(n,"mode","hold")],l=Ke(n,"index",0);t.setFrame(i,a,o,l,r),s=r,n=e[i+1]}a.push(t)}}}}}if(e.drawOrder){let t=new W(e.drawOrder.length),s=i.slots.length,n=0;for(let r=0;r<e.drawOrder.length;r++,n++){let a=e.drawOrder[r],o=null,h=Ke(a,"offsets",null);if(h){o=l.newArray(s,-1);let t=l.newArray(s-h.length,0),e=0,n=0;for(let s=0;s<h.length;s++){let r=h[s],a=i.findSlot(r.slot);if(!a)throw new Error("Slot not found: "+a);let l=a.index;for(;e!=l;)t[n++]=e++;o[e+r.offset]=e++}for(;e<s;)t[n++]=e++;for(let e=s-1;e>=0;e--)-1==o[e]&&(o[e]=t[--n])}t.setFrame(n,Ke(a,"time",0),o)}a.push(t)}if(e.events){let t=new q(e.events.length),s=0;for(let n=0;n<e.events.length;n++,s++){let r=e.events[n],a=i.findEvent(r.name);if(!a)throw new Error("Event not found: "+r.name);let o=new Wt(l.toSinglePrecision(Ke(r,"time",0)),a);o.intValue=Ke(r,"int",a.intValue),o.floatValue=Ke(r,"float",a.floatValue),o.stringValue=Ke(r,"string",a.stringValue),o.data.audioPath&&(o.volume=Ke(r,"volume",1),o.balance=Ke(r,"balance",0)),t.setFrame(s,o)}a.push(t)}let o=0;for(let t=0,e=a.length;t<e;t++)o=Math.max(o,a[t].getDuration());i.animations.push(new p(s,a,o))}}class $e{parent;skin;slotIndex;mesh;inheritTimeline;constructor(t,e,s,i,n){this.mesh=t,this.skin=e,this.slotIndex=s,this.parent=i,this.inheritTimeline=n}}function He(t,e,s,i){let n=t[0],r=Ke(n,"time",0),a=Ke(n,"value",s)*i,o=0;for(let l=0;;l++){e.setFrame(l,r,a);let h=t[l+1];if(!h)return e.shrink(o),e;let c=Ke(h,"time",0),d=Ke(h,"value",s)*i;n.curve&&(o=Je(n.curve,e,o,l,0,r,c,a,d,i)),r=c,a=d,n=h}}function je(t,e,s,i,n,r){let a=t[0],o=Ke(a,"time",0),l=Ke(a,s,n)*r,h=Ke(a,i,n)*r,c=0;for(let d=0;;d++){e.setFrame(d,o,l,h);let u=t[d+1];if(!u)return e.shrink(c),e;let f=Ke(u,"time",0),m=Ke(u,s,n)*r,g=Ke(u,i,n)*r,p=a.curve;p&&(c=Je(p,e,c,d,0,o,f,l,m,r),c=Je(p,e,c,d,1,o,f,h,g,r)),o=f,l=m,h=g,a=u}}function Je(t,e,s,i,n,r,a,o,l,h){if("stepped"==t)return e.setStepped(i),s;let c=n<<2,d=t[c],u=t[c+1]*h,f=t[c+2],m=t[c+3]*h;return e.setBezier(s,i,n,r,o,d,u,f,m,a,l),s+1}function Ke(t,e,s){return void 0!==t[e]?t[e]:s}var Ze,Qe;function ts(t){return e.request(t,{type:"text"})}function es(t){return e.request(t,{type:"arraybuffer"})}function ss(t,s,i=e.AssetType.Texture2D){return s.resourceManager.load({url:t,type:i})}async function is(t,e){const s=function(t){const e=new URL(t),s=e.origin+e.pathname;return s.endsWith("/")?s:s.substring(0,s.lastIndexOf("/")+1)}(t);let i,n;const r={};try{i=await ts(t)}catch(e){throw new Error(`Spine Atlas: ${t} load error: ${e}`)}const a=new Ft(i),o=[];for(let t of a.pages){const i=s+t.name;o.push(ss(i,e))}try{n=await Promise.all(o)}catch(e){throw new Error(`Spine Texture: ${t} load error: ${e}`)}for(let t=0;t<n.length;t+=1){const e=n[t];r[s+e.name]=e}for(let t of a.pages){const e=rs(r[s+t.name]);t.setTexture(e)}return a}function ns(t,e){const s=new Ft(t);for(let t of s.pages){const s=rs(e[t.name]);t.setTexture(s)}return s}function rs(t){return new as(new Image,t)}void 0===Math.fround&&(Math.fround=(Ze=new Float32Array(1),function(t){return Ze[0]=t,Ze[0]}));class as extends bt{constructor(t,e){super(t),this.texture=e,this.texture.generateMipmaps()}getImage(){return this.texture}setFilters(s,i){s===t.TextureFilter.Nearest?this.texture.filterMode=e.TextureFilterMode.Point:i===t.TextureFilter.MipMapLinearLinear?this.texture.filterMode=e.TextureFilterMode.Trilinear:this.texture.filterMode=e.TextureFilterMode.Bilinear}setWraps(t,e){this.texture.wrapModeU=this._convertWrapMode(t),this.texture.wrapModeV=this._convertWrapMode(e)}dispose(){}_convertWrapMode(s){switch(s){case t.TextureWrap.ClampToEdge:return e.TextureWrapMode.Clamp;case t.TextureWrap.Repeat:return e.TextureWrapMode.Repeat;case t.TextureWrap.MirroredRepeat:return e.TextureWrapMode.Mirror;default:throw new Error("Unsupported texture wrap mode.")}}}function os(t,e){if(e)return e;const s=t.match(/\/([^\/?#]+)\.([a-zA-Z0-9]+)(\?|#|$)|\?[^#]*\.([a-zA-Z0-9]+)(\?|#|$)/);return s?s[2]||s[4]:null}class ls extends e.Loader{static{this.imageExtensions=["png","jpg","webp","jpeg","ktx","ktx2"]}static{this.skeletonExtensions=["skel","json","bin"]}load(t,s){return new e.AssetPromise(((i,n)=>{let r={skeletonPath:"",skeletonExtension:"",atlasPath:"",imagePaths:[],imageExtensions:[]},{fileExtensions:a}=t.params||{};if(t.urls){a=cs(a,!0);for(let e=0;e<t.urls.length;e+=1){hs(t.urls[e],a&&a[e]||null,r)}}else{const e=cs(a,!1);!function(t,e,s){const i=os(t,e);if(!i)return;s.skeletonPath=t,s.skeletonExtension=i;const n=/(\.(json|bin|skel))$/;let r;n.test(t)&&(r=t.replace(n,""));if(r){const t=r+".atlas";s.atlasPath=t}}(t.url,e,r)}const{skeletonPath:o,atlasPath:l}=r;o&&l?async function(t,s){const{skeletonPath:i,atlasPath:n,imagePaths:r,skeletonExtension:a,imageExtensions:o}=t,l="json"===a?ts:es;let h,c;if(r.length>0){let t,a;const d=[l(i),ts(n)],u=r.map(((t,i)=>{const n=o[i];let r=e.AssetType.Texture2D;return"ktx"===n&&(r=e.AssetType.KTX),"ktx2"===n&&(r=e.AssetType.KTX2),ss(t,s,r)}));d.push(e.AssetPromise.all(u));try{[h,t,a]=await Promise.all(d),c=new Ft(t);let e=0;for(let t of c.pages)if(a[e]){const s=rs(a[e]);t.setTexture(s),e++}}catch(t){throw t}}else try{[h,c]=await Promise.all([l(i),is(n,s)])}catch(t){throw t}const d=new Dt(c);return"json"===a?new Ge(d).readSkeletonData(h):new re(d).readSkeletonData(new Uint8Array(h))}(r,s.engine).then((t=>{i(t)})).catch((t=>{n(t)})):n("Failed to load spine assets. Please check the file path and ensure the file extension is included.")}))}}function hs(t,e,s){const i=ls.imageExtensions,n=ls.skeletonExtensions,r=os(t,e);r&&(n.includes(r)&&(s.skeletonPath=t,s.skeletonExtension=r),"atlas"===r&&(s.atlasPath=t),i.includes(r)&&(s.imagePaths.push(t),s.imageExtensions.push(r)))}function cs(t,e){return t?e&&!Array.isArray(t)?(console.error("Expect fileExtensions to be an array."),[]):e||"string"==typeof t?t:(console.error("Expect fileExtensions to be a string."),null):null}ls=s([e.resourceLoader("spine",["json","bin","skel"])],ls);class ds{constructor(t,e=0,s){this.data=t,this._dataView=new DataView(t.buffer,t.byteOffset+e,s??t.byteLength-e),this._position=0}nextUint16(){const t=this._dataView.getUint16(this._position,!0);return this._position+=2,t}nextStr(){const t=this.nextUint16(),e=new Uint8Array(this.data.buffer,this._position+this._dataView.byteOffset,t);return this._position+=t,function(t){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(t);let e="";for(let s=0,i=t.length;s<i;s++)e+=String.fromCharCode(t[s]);return decodeURIComponent(encodeURIComponent(e))}(e)}nextImageData(){return new Uint8Array(this.data.buffer,this.data.byteOffset+this._position)}}console.log("regist EditorSkeletonData loader");class us extends e.Loader{load(t,s){return new e.AssetPromise((async e=>{let i,n;const r=await this.request(t.url,{type:"arraybuffer"}),a=new ds(new Uint8Array(r)),o=a.nextStr();if(o.startsWith("data")){const t=new TextDecoder("utf-8").decode(new Uint8Array(r)),{data:e,atlas:s}=JSON.parse(t);n=s.refId,i=e}else n=o,i=a.nextImageData();const l=await s.getResourceByRef({refId:n}),h=new Dt(l);let c;c="string"==typeof i?new Ge(h).readSkeletonData(i):new re(h).readSkeletonData(new Uint8Array(i)),e(c)}))}}us=s([e.resourceLoader("EditorSkeletonData",["json","skel"])],us),console.log("regist EditorSpineAtlas loader");class fs extends e.Loader{load(t,s){return new e.AssetPromise((async e=>{const i=await this.request(t.url,{type:"text"}),{data:n,textures:r}=JSON.parse(i),a={},o=r.map((t=>s.getResourceByRef({refId:t.refId})));(await Promise.all(o)).forEach((t=>{a[t.name]=t}));e(ns(n,a))}))}}fs=s([e.resourceLoader("EditorSpineAtlas",["atlas"])],fs);class ms{constructor(){this.topology=e.MeshTopology.Triangles}}class gs{get primitive(){return this._primitive}get subPrimitive(){return this._subPrimitive}get indexBuffer(){return this._indexBuffer}get vertexBuffer(){return this._vertexBuffer}initialize(t,s){const i=new e.Primitive(t);this._primitive=i,i.addVertexElement(new e.VertexElement("POSITION",0,e.VertexElementFormat.Vector3,0)),i.addVertexElement(new e.VertexElement("COLOR_0",12,e.VertexElementFormat.Vector4,0)),i.addVertexElement(new e.VertexElement("TEXCOORD_0",28,e.VertexElementFormat.Vector2,0));const n=4*ps.VERTEX_STRIDE,r=n*s,a=new e.Buffer(t,e.BufferBindFlag.VertexBuffer,r,e.BufferUsage.Dynamic),o=new e.Buffer(t,e.BufferBindFlag.IndexBuffer,2*s,e.BufferUsage.Dynamic);this._indexBuffer=o,this._vertexBuffer=a;const l=new e.VertexBufferBinding(a,n);i.setVertexBufferBinding(0,l);const h=new e.IndexBufferBinding(o,e.IndexFormat.UInt16);i.setIndexBufferBinding(h);const c=new ms;c.start=0,c.count=s,this.addSubPrimitive(c)}addSubPrimitive(t){this._subPrimitive.push(t)}clearSubPrimitive(){this._subPrimitive.length=0}changeBuffer(t,s){const i=4*ps.VERTEX_STRIDE,n=i*s,r=new e.Buffer(t,e.BufferBindFlag.VertexBuffer,n,e.BufferUsage.Dynamic),a=new e.Buffer(t,e.BufferBindFlag.IndexBuffer,2*s,e.BufferUsage.Dynamic),o=this._primitive;this._indexBuffer=a,this._vertexBuffer=r;const l=new e.VertexBufferBinding(r,i);o.setVertexBufferBinding(0,l);const h=new e.IndexBufferBinding(a,e.IndexFormat.UInt16);o.setIndexBufferBinding(h)}constructor(){this._subPrimitive=[]}}class ps{static{this.QUAD_TRIANGLES=[0,1,2,2,3,0]}static{this.VERTEX_SIZE=8}static{this.VERTEX_STRIDE=9}static{this.tempColor=new n}static{this.tempDark=new n}static{this.tempBlendMode=null}static{this.tempTexture=null}get subRenderItems(){return this._subRenderItems}constructor(t,e){this._clipper=new ze,this._spinePrimitive=new gs,this._needResize=!1,this._subRenderItems=[],this.separateSlots=[],this.separateSlotTextureMap=new Map,this._engine=t,this._renderer=e}initialize(t,e){e&&(this._setting=e);const{defaultSkin:{attachments:s}}=t;let i=0;const n=ps.QUAD_TRIANGLES.length;for(let t=0,e=s.length;t<e;t++){const e=s[t];for(let t in e){const s=e[t];if(s)if(s instanceof Vt)i+=n;else{if(!(s instanceof Pt))continue;i+=s.triangles.length}}}this._vertexCount=i,this._prepareBufferData(this._vertexCount);const{_spinePrimitive:r}=this;r.initialize(this._engine,this._vertexCount),this._renderer._primitive=r.primitive}buildPrimitive(e){const{useClipping:s=!0,zSpacing:i=.01}=this._setting||{};let n=0,r=0;const a=e.drawOrder,o=a.length,{_clipper:l,_spinePrimitive:h}=this,c=this._subRenderItems;c.length=0;let d,u,f=this._vertices,m=0,g=0,p=t.BlendMode.Normal,x=null;ps.tempBlendMode=null,ps.tempTexture=null;for(let t=0;t<o;++t){const e=a[t];if(!e.bone.active){l.clipEndWithSlot(e);continue}const o=e.getAttachment();let h=null;const w=i*t;let b=0;const y=l.isClipping();let M=y?2:ps.VERTEX_SIZE;if(o instanceof Vt){let t=o;h=t.color,b=4*M,t.computeWorldVertices(e,f,0,M),d=ps.QUAD_TRIANGLES,u=t.uvs,x=t.region.texture}else if(o instanceof Pt){let t=o;h=t.color,b=(t.worldVerticesLength>>1)*M,b>f.length&&(f=this._vertices=new Float32Array(b)),t.computeWorldVertices(e,0,t.worldVerticesLength,f,0,M),d=t.triangles,u=t.uvs,x=t.region.texture}else if(o instanceof wt){if(s){let t=o;l.clipStart(e,t);continue}}else if(s){l.clipEndWithSlot(e);continue}if(null!=x){let t,s,i,a,o=e.bone.skeleton.color,v=e.color,S=o.a*v.a*h.a,k=ps.tempColor,I=ps.tempDark;if(k.set(o.r*v.r*h.r,o.g*v.g*h.g,o.b*v.b*h.b,S),y){l.clipTriangles(f,d,d.length,u,k,I,!1);let e=l.clippedVertices,n=l.clippedTriangles;t=e,s=e.length,i=n,a=n.length}else{let e=f;const{r:n,g:r,b:o,a:l}=k;for(let t=2,s=0,i=b;t<i;t+=M,s+=2)e[t]=n,e[t+1]=r,e[t+2]=o,e[t+3]=l,e[t+4]=u[s],e[t+5]=u[s+1];t=f,s=b,i=d,a=d.length}if(0==s||0==a){l.clipEndWithSlot(e);continue}let A=n/ps.VERTEX_STRIDE,B=this._verticesWithZ,T=n,C=0;for(;C<s;)B[T++]=t[C++],B[T++]=t[C++],B[T++]=w,B[T++]=t[C++],B[T++]=t[C++],B[T++]=t[C++],B[T++]=t[C++],B[T++]=t[C++],B[T++]=t[C++];n=T;let F=this._indices;for(T=r,C=0;C<a;T++,C++)F[T]=i[C]+A;r+=a;const E=e.data,R=E.name;p=E.blendMode;const Y=null!==ps.tempBlendMode&&ps.tempBlendMode!==E.blendMode,P=null!==ps.tempTexture&&ps.tempTexture!==x,X=this.separateSlots.includes(R);if(X||Y||P){if(g>0){const t=new ms;t.start=m,t.count=g,c.push({subPrimitive:t,texture:ps.tempTexture,blendMode:ps.tempBlendMode}),m+=g,g=0}if(X){const t=this.separateSlotTextureMap.get(R);if(t){const e=x.texture;t.filterMode=e.filterMode,t.wrapModeU=e.wrapModeU,t.wrapModeV=e.wrapModeV}const e=new ms;e.start=m,e.count=a,c.push({blendMode:p,subPrimitive:e,texture:x,slotName:R}),m+=a,g=0}else g+=a}else g+=a;ps.tempBlendMode=p,ps.tempTexture=x}l.clipEndWithSlot(e)}if(g>0){const t=new ms;t.start=m,t.count=g,c.push({blendMode:p,subPrimitive:t,texture:x}),g=0}if(l.clipEnd(),c.sort(((t,e)=>t.subPrimitive.start-e.subPrimitive.start)),r>0&&r!==this._vertexCount&&r>this._vertexCount)return this._vertexCount=r,this._prepareBufferData(this._vertexCount),void(this._needResize=!0);h.clearSubPrimitive();const w=this._renderer;for(let t=0,e=c.length;t<e;++t){const e=c[t],{slotName:s,blendMode:i,texture:n}=e;h.addSubPrimitive(e.subPrimitive);let r=w.getMaterial(t);r||(r=ws.getDefaultMaterial(this._engine));let a=n.texture;this.separateSlotTextureMap.has(s)&&(a=this.separateSlotTextureMap.get(s)),r.shaderData.setTexture("material_SpineTexture",a),this.setBlendMode(r,i),w.setMaterial(t,r)}this._renderer._subPrimitives=h.subPrimitive,this._needResize&&(h.changeBuffer(this._engine,this._vertexCount),this._needResize=!1),h.vertexBuffer.setData(this._verticesWithZ),h.indexBuffer.setData(this._indices)}addSeparateSlot(t){this.separateSlots.push(t)}addSeparateSlotTexture(t,e){this.separateSlotTextureMap.set(t,e)}_prepareBufferData(t){this._vertices=new Float32Array(t*ps.VERTEX_SIZE),this._verticesWithZ=new Float32Array(t*ps.VERTEX_STRIDE),this._indices=new Uint16Array(t)}setBlendMode(s,i){const n=s.renderState.blendState.targetBlendState;switch(i){case t.BlendMode.Additive:n.sourceColorBlendFactor=e.BlendFactor.SourceAlpha,n.destinationColorBlendFactor=e.BlendFactor.One,n.sourceAlphaBlendFactor=e.BlendFactor.One,n.destinationAlphaBlendFactor=e.BlendFactor.One,n.colorBlendOperation=n.alphaBlendOperation=e.BlendOperation.Add;break;case t.BlendMode.Multiply:n.sourceColorBlendFactor=e.BlendFactor.DestinationColor,n.destinationColorBlendFactor=e.BlendFactor.Zero,n.sourceAlphaBlendFactor=e.BlendFactor.One,n.destinationAlphaBlendFactor=e.BlendFactor.Zero,n.colorBlendOperation=n.alphaBlendOperation=e.BlendOperation.Add;break;case t.BlendMode.Screen:n.sourceColorBlendFactor=e.BlendFactor.One,n.destinationColorBlendFactor=e.BlendFactor.OneMinusSourceColor,n.sourceAlphaBlendFactor=e.BlendFactor.One,n.destinationAlphaBlendFactor=e.BlendFactor.OneMinusSourceColor,n.colorBlendOperation=n.alphaBlendOperation=e.BlendOperation.Add;break;default:n.sourceColorBlendFactor=e.BlendFactor.SourceAlpha,n.destinationColorBlendFactor=e.BlendFactor.OneMinusSourceAlpha,n.sourceAlphaBlendFactor=e.BlendFactor.One,n.destinationAlphaBlendFactor=e.BlendFactor.OneMinusSourceAlpha,n.colorBlendOperation=n.alphaBlendOperation=e.BlendOperation.Add}}}class xs extends e.Material{static{this._spineVS="\n uniform mat4 renderer_MVPMat;\n\n attribute vec3 POSITION;\n attribute vec2 TEXCOORD_0;\n attribute vec4 COLOR_0;\n \n varying vec2 v_uv;\n varying vec4 v_color;\n \n void main()\n {\n gl_Position = renderer_MVPMat * vec4(POSITION, 1.0);\n \n v_uv = TEXCOORD_0;\n v_color = COLOR_0;\n }\n "}static{this._spineFS="\n uniform sampler2D material_SpineTexture;\n\n varying vec2 v_uv;\n varying vec4 v_color;\n \n void main()\n {\n vec4 baseColor = texture2D(material_SpineTexture, v_uv);\n gl_FragColor = baseColor * v_color;\n }\n "}constructor(t){super(t,e.Shader.find("galacean-spine-shader")||e.Shader.create("galacean-spine-shader",xs._spineVS,xs._spineFS));const s=this.renderState,i=s.blendState.targetBlendState;i.enabled=!0,i.sourceColorBlendFactor=e.BlendFactor.SourceAlpha,i.destinationColorBlendFactor=e.BlendFactor.OneMinusSourceAlpha,i.sourceAlphaBlendFactor=e.BlendFactor.One,i.destinationAlphaBlendFactor=e.BlendFactor.OneMinusSourceAlpha,i.colorBlendOperation=i.alphaBlendOperation=e.BlendOperation.Add,s.depthState.writeEnabled=!1,s.rasterState.cullMode=e.CullMode.Off,s.renderQueueType=e.RenderQueueType.Transparent}}class ws extends e.Renderer{static{this._uvMacro=e.ShaderMacro.getByName("RENDERER_HAS_UV")}static{this._enableVertexColorMacro=e.ShaderMacro.getByName("RENDERER_ENABLE_VERTEXCOLOR")}static{this._tempOffset=new c}static{this._tempSize=new c}static{this._tempArray=[0,0]}static getDefaultMaterial(t){let e=this._defaultMaterial;if(e){if(e.engine===t)return e.clone();e.destroy(!0),e=null}return e=new xs(t),e.isGCIgnored=!0,this._defaultMaterial=e,e.clone()}set skeletonData(t){if(!t)return this._skeleton=null,this._state=null,void(this._spineGenerator=null);this._skeleton=new Zt(t);const e=new pt(t);this._state=new rt(e),this._spineGenerator.initialize(t,this.setting)}get state(){return this._state}get skeleton(){return this._skeleton}constructor(t){super(t),this.initialState={scale:1,loop:!1,animationName:null,skinName:"default"},this._spineGenerator=new ps(this.engine,this)}_onAwake(){console.log("on awake");const{skeleton:t,state:e}=this;if(t&&e){const{animationName:s,skinName:i,loop:n,scale:r}=this.initialState;t.scaleX=r,t.scaleY=r,"default"!==i&&(t.setSkinByName(i),t.setToSetupPose(),e.apply(t)),s&&e.setAnimation(0,s,n)}}addSeparateSlot(t){this._skeleton||console.error("Skeleton not found!");this._skeleton.findSlot(t)?this._spineGenerator.addSeparateSlot(t):console.warn(`Slot: ${t} not find.`)}update(e){if(!this._skeleton||!this._state)return;const s=this._state,i=this._skeleton;s.update(e),s.apply(i),i.update(e),i.updateWorldTransform(t.Physics.update)}_updateRendererShaderData(t){super._updateRendererShaderData(t),this._skeleton&&this._spineGenerator.buildPrimitive(this._skeleton)}_render(t){const e=this._primitive,s=this._subPrimitives;if(2&this._dirtyUpdateFlag){const t=this.shaderData,s=e.vertexElements;t.disableMacro(ws._uvMacro),t.disableMacro(ws._enableVertexColorMacro);for(let e=0,i=s.length;e<i;e++)switch(s[e].attribute){case"TEXCOORD_0":t.enableMacro(ws._uvMacro);break;case"COLOR_0":t.enableMacro(ws._enableVertexColorMacro)}this._dirtyUpdateFlag&=-3}const{_materials:i,_engine:n}=this,r=n._renderElementPool.get();r.set(this.priority,this._distanceForSort);const a=n._subRenderElementPool;if(s){for(let t=0,n=s.length;t<n;t++){let n=i[t];if(!n)continue;(n.destroyed||n.shader.destroyed)&&(n=this.engine._meshMagentaMaterial);const o=a.get();o.set(this,n,e,s[t]),r.addSubRenderElement(o)}t.camera._renderPipeline.pushRenderElement(t,r)}}_updateBounds(t){const s=t,i=ws._tempOffset,n=ws._tempSize,r=ws._tempArray,a=this.setting?.zSpacing||.01,o=this._skeleton;o.getBounds(i,n,r);const{x:l,y:h}=i;s.min.set(l,h,0),s.max.set(l+n.x,h+n.y,o.drawOrder.length*a),e.BoundingBox.transform(s,this.entity.transform.worldMatrix,s)}_cloneTo(t,e,s){super._cloneTo(t,e,s),t.skeletonData=this.skeletonData;const i={...this.setting};t.setting=i}_onDestroy(){const t=this._primitive,e=this._subPrimitives;t&&(t.destroyed||this._addResourceReferCount(t,-1),this._primitive=null),e&&(this._subPrimitives.length=0),this.skeletonData=null,this._skeleton=null,this._spineGenerator=null,this.setting=null,super._onDestroy()}}s([e.ignoreClone],ws.prototype,"setting",void 0),s([e.ignoreClone],ws.prototype,"initialState",void 0),s([e.ignoreClone],ws.prototype,"_primitive",void 0),s([e.ignoreClone],ws.prototype,"_subPrimitives",void 0),s([e.ignoreClone],ws.prototype,"_skeleton",void 0),s([e.ignoreClone],ws.prototype,"_state",void 0),s([e.ignoreClone],ws.prototype,"_spineGenerator",void 0),function(t){t[t.VertexElementMacro=2]="VertexElementMacro"}(Qe||(Qe={}));const bs="0.0.0-experimental-6d3110b4d9-20240531";console.log(`Galacean spine version: ${bs}`),t.AlphaTimeline=V,t.Animation=p,t.AnimationState=rt,t.AnimationStateAdapter=class{start(t){}interrupt(t){}end(t){}dispose(t){}complete(t){}event(t,e){}},t.AnimationStateData=pt,t.AssetManagerBase=class{pathPrefix="";textureLoader;downloader;assets={};errors={};toLoad=0;loaded=0;constructor(t,e="",s=new qt){this.textureLoader=t,this.pathPrefix=e,this.downloader=s}start(t){return this.toLoad++,this.pathPrefix+t}success(t,e,s){this.toLoad--,this.loaded++,this.assets[e]=s,t&&t(e,s)}error(t,e,s){this.toLoad--,this.loaded++,this.errors[e]=s,t&&t(e,s)}loadAll(){return new Promise(((t,e)=>{let s=()=>{this.isLoadingComplete()?this.hasErrors()?e(this.errors):t(this):requestAnimationFrame(s)};requestAnimationFrame(s)}))}setRawDataURI(t,e){this.downloader.rawDataUris[this.pathPrefix+t]=e}loadBinary(t,e=(()=>{}),s=(()=>{})){t=this.start(t),this.downloader.downloadBinary(t,(s=>{this.success(e,t,s)}),((e,i)=>{this.error(s,t,`Couldn't load binary ${t}: status ${e}, ${i}`)}))}loadText(t,e=(()=>{}),s=(()=>{})){t=this.start(t),this.downloader.downloadText(t,(s=>{this.success(e,t,s)}),((e,i)=>{this.error(s,t,`Couldn't load text ${t}: status ${e}, ${i}`)}))}loadJson(t,e=(()=>{}),s=(()=>{})){t=this.start(t),this.downloader.downloadJson(t,(s=>{this.success(e,t,s)}),((e,i)=>{this.error(s,t,`Couldn't load JSON ${t}: status ${e}, ${i}`)}))}loadTexture(t,e=(()=>{}),s=(()=>{})){if(t=this.start(t),!!("undefined"==typeof window||"undefined"==typeof navigator||!window.document))fetch(t,{mode:"cors"}).then((e=>e.ok?e.blob():(this.error(s,t,`Couldn't load image: ${t}`),null))).then((t=>t?createImageBitmap(t,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):null)).then((s=>{s&&this.success(e,t,this.textureLoader(s))}));else{let i=new Image;i.crossOrigin="anonymous",i.onload=()=>{this.success(e,t,this.textureLoader(i))},i.onerror=()=>{this.error(s,t,`Couldn't load image: ${t}`)},this.downloader.rawDataUris[t]&&(t=this.downloader.rawDataUris[t]),i.src=t}}loadTextureAtlas(t,e=(()=>{}),s=(()=>{}),i){let n=t.lastIndexOf("/"),r=n>=0?t.substring(0,n+1):"";t=this.start(t),this.downloader.downloadText(t,(n=>{try{let a=new Ft(n),o=a.pages.length,l=!1;for(let n of a.pages)this.loadTexture(i?i[n.name]:r+n.name,((s,i)=>{l||(n.setTexture(i),0==--o&&this.success(e,t,a))}),((e,i)=>{l||this.error(s,t,`Couldn't load texture atlas ${t} page image: ${e}`),l=!0}))}catch(e){this.error(s,t,`Couldn't parse texture atlas ${t}: ${e.message}`)}}),((e,i)=>{this.error(s,t,`Couldn't load texture atlas ${t}: status ${e}, ${i}`)}))}get(t){return this.assets[this.pathPrefix+t]}require(t){t=this.pathPrefix+t;let e=this.assets[t];if(e)return e;let s=this.errors[t];throw Error("Asset not found: "+t+(s?"\n"+s:""))}remove(t){t=this.pathPrefix+t;let e=this.assets[t];return e.dispose&&e.dispose(),delete this.assets[t],e}removeAll(){for(let t in this.assets){let e=this.assets[t];e.dispose&&e.dispose()}this.assets={}}isLoadingComplete(){return 0==this.toLoad}getToLoad(){return this.toLoad}getLoaded(){return this.loaded}dispose(){this.removeAll()}hasErrors(){return Object.keys(this.errors).length>0}getErrors(){return this.errors}},t.AtlasAttachmentLoader=Dt,t.Attachment=d,t.AttachmentTimeline=N,t.BinaryInput=ae,t.Bone=Nt,t.BoneData=Ot,t.BoundingBoxAttachment=xt,t.CURRENT=gt,t.ClippingAttachment=wt,t.Color=n,t.ConstraintData=Lt,t.CurveTimeline=M,t.CurveTimeline1=v,t.CurveTimeline2=S,t.DebugUtils=class{static logBones(t){for(let e=0;e<t.bones.length;e++){let s=t.bones[e];console.log(s.data.name+", "+s.a+", "+s.b+", "+s.c+", "+s.d+", "+s.worldX+", "+s.worldY)}}},t.DeformTimeline=L,t.Downloader=qt,t.DrawOrderTimeline=W,t.Event=Wt,t.EventData=Ut,t.EventQueue=ot,t.EventTimeline=q,t.FIRST=ct,t.FakeTexture=class extends bt{setFilters(t,e){}setWraps(t,e){}dispose(){}},t.HOLD_FIRST=ut,t.HOLD_MIX=ft,t.HOLD_SUBSEQUENT=dt,t.IkConstraint=zt,t.IkConstraintData=Gt,t.IkConstraintTimeline=U,t.InheritTimeline=P,t.IntSet=class{array=new Array;add(t){let e=this.contains(t);return this.array[0|t]=0|t,!e}contains(t){return null!=this.array[0|t]}remove(t){this.array[0|t]=void 0}clear(){this.array.length=0}},t.Interpolation=a,t.MathUtils=r,t.MeshAttachment=Pt,t.PathAttachment=Xt,t.PathConstraint=Ht,t.PathConstraintData=$t,t.PathConstraintMixTimeline=H,t.PathConstraintPositionTimeline=G,t.PathConstraintSpacingTimeline=$,t.PhysicsConstraintDampingTimeline=Z,t.PhysicsConstraintGravityTimeline=et,t.PhysicsConstraintInertiaTimeline=J,t.PhysicsConstraintMassTimeline=Q,t.PhysicsConstraintMixTimeline=st,t.PhysicsConstraintResetTimeline=it,t.PhysicsConstraintStrengthTimeline=K,t.PhysicsConstraintTimeline=j,t.PhysicsConstraintWindTimeline=tt,t.PointAttachment=_t,t.Pool=h,t.Pow=o,t.PowOut=class extends o{constructor(t){super(t)}applyInternal(t){return Math.pow(t-1,this.power)*(this.power%2==0?-1:1)+1}},t.RGB2Timeline=O,t.RGBA2Timeline=D,t.RGBATimeline=X,t.RGBTimeline=_,t.RegionAttachment=Vt,t.RotateTimeline=k,t.SETUP=mt,t.SUBSEQUENT=ht,t.ScaleTimeline=T,t.ScaleXTimeline=C,t.ScaleYTimeline=F,t.SequenceTimeline=nt,t.ShearTimeline=E,t.ShearXTimeline=R,t.ShearYTimeline=Y,t.Skeleton=Zt,t.SkeletonBinary=re,t.SkeletonBounds=class{minX=0;minY=0;maxX=0;maxY=0;boundingBoxes=new Array;polygons=new Array;polygonPool=new h((()=>l.newFloatArray(16)));update(t,e){if(!t)throw new Error("skeleton cannot be null.");let s=this.boundingBoxes,i=this.polygons,n=this.polygonPool,r=t.slots,a=r.length;s.length=0,n.freeAll(i),i.length=0;for(let t=0;t<a;t++){let e=r[t];if(!e.bone.active)continue;let a=e.getAttachment();if(a instanceof xt){let t=a;s.push(t);let r=n.obtain();r.length!=t.worldVerticesLength&&(r=l.newFloatArray(t.worldVerticesLength)),i.push(r),t.computeWorldVertices(e,0,t.worldVerticesLength,r,0,2)}}e?this.aabbCompute():(this.minX=Number.POSITIVE_INFINITY,this.minY=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY,this.maxY=Number.NEGATIVE_INFINITY)}aabbCompute(){let t=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY,i=Number.NEGATIVE_INFINITY,n=this.polygons;for(let r=0,a=n.length;r<a;r++){let a=n[r],o=a;for(let n=0,r=a.length;n<r;n+=2){let r=o[n],a=o[n+1];t=Math.min(t,r),e=Math.min(e,a),s=Math.max(s,r),i=Math.max(i,a)}}this.minX=t,this.minY=e,this.maxX=s,this.maxY=i}aabbContainsPoint(t,e){return t>=this.minX&&t<=this.maxX&&e>=this.minY&&e<=this.maxY}aabbIntersectsSegment(t,e,s,i){let n=this.minX,r=this.minY,a=this.maxX,o=this.maxY;if(t<=n&&s<=n||e<=r&&i<=r||t>=a&&s>=a||e>=o&&i>=o)return!1;let l=(i-e)/(s-t),h=l*(n-t)+e;if(h>r&&h<o)return!0;if(h=l*(a-t)+e,h>r&&h<o)return!0;let c=(r-e)/l+t;return c>n&&c<a||(c=(o-e)/l+t,c>n&&c<a)}aabbIntersectsSkeleton(t){return this.minX<t.maxX&&this.maxX>t.minX&&this.minY<t.maxY&&this.maxY>t.minY}containsPoint(t,e){let s=this.polygons;for(let i=0,n=s.length;i<n;i++)if(this.containsPointPolygon(s[i],t,e))return this.boundingBoxes[i];return null}containsPointPolygon(t,e,s){let i=t,n=t.length,r=n-2,a=!1;for(let t=0;t<n;t+=2){let n=i[t+1],o=i[r+1];if(n<s&&o>=s||o<s&&n>=s){let l=i[t];l+(s-n)/(o-n)*(i[r]-l)<e&&(a=!a)}r=t}return a}intersectsSegment(t,e,s,i){let n=this.polygons;for(let r=0,a=n.length;r<a;r++)if(this.intersectsSegmentPolygon(n[r],t,e,s,i))return this.boundingBoxes[r];return null}intersectsSegmentPolygon(t,e,s,i,n){let r=t,a=t.length,o=e-i,l=s-n,h=e*n-s*i,c=r[a-2],d=r[a-1];for(let t=0;t<a;t+=2){let a=r[t],u=r[t+1],f=c*u-d*a,m=c-a,g=d-u,p=o*g-l*m,x=(h*m-o*f)/p;if((x>=c&&x<=a||x>=a&&x<=c)&&(x>=e&&x<=i||x>=i&&x<=e)){let t=(h*g-l*f)/p;if((t>=d&&t<=u||t>=u&&t<=d)&&(t>=s&&t<=n||t>=n&&t<=s))return!0}c=a,d=u}return!1}getPolygon(t){if(!t)throw new Error("boundingBox cannot be null.");let e=this.boundingBoxes.indexOf(t);return-1==e?null:this.polygons[e]}getWidth(){return this.maxX-this.minX}getHeight(){return this.maxY-this.minY}},t.SkeletonClipping=ze,t.SkeletonData=te,t.SkeletonJson=Ge,t.Skin=se,t.SkinEntry=ee,t.Slot=Jt,t.SlotData=ie,t.SpineAnimation=ws,t.StringSet=i,t.Texture=bt,t.TextureAtlas=Ft,t.TextureAtlasPage=Rt,t.TextureAtlasRegion=Yt,t.TextureRegion=Ct,t.TimeKeeper=class{maxDelta=.064;framesPerSecond=0;delta=0;totalTime=0;lastTime=Date.now()/1e3;frameCount=0;frameTime=0;update(){let t=Date.now()/1e3;this.delta=t-this.lastTime,this.frameTime+=this.delta,this.totalTime+=this.delta,this.delta>this.maxDelta&&(this.delta=this.maxDelta),this.lastTime=t,this.frameCount++,this.frameTime>1&&(this.framesPerSecond=this.frameCount/this.frameTime,this.frameTime=0,this.frameCount=0)}},t.Timeline=y,t.TrackEntry=at,t.TransformConstraint=Kt,t.TransformConstraintData=ne,t.TransformConstraintTimeline=z,t.TranslateTimeline=I,t.TranslateXTimeline=A,t.TranslateYTimeline=B,t.Triangulator=Ue,t.Utils=l,t.Vector2=c,t.VertexAttachment=u,t.WindowedMean=class{values;addedValues=0;lastValue=0;mean=0;dirty=!0;constructor(t=32){this.values=new Array(t)}hasEnoughData(){return this.addedValues>=this.values.length}addValue(t){this.addedValues<this.values.length&&this.addedValues++,this.values[this.lastValue++]=t,this.lastValue>this.values.length-1&&(this.lastValue=0),this.dirty=!0}getMean(){if(this.hasEnoughData()){if(this.dirty){let t=0;for(let e=0;e<this.values.length;e++)t+=this.values[e];this.mean=t/this.values.length,this.dirty=!1}return this.mean}return 0}},t.generateTextureAtlas=ns,t.version=bs,Object.defineProperty(t,"__esModule",{value:!0})}));