<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
    !function() {
        "use strict";
        function t(e) {
            return (t = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function(t) {
                return typeof t
            }
            : function(t) {
                return t &amp;&amp; "function" == typeof Symbol &amp;&amp; t.constructor === Symbol &amp;&amp; t !== Symbol.prototype ? "symbol" : typeof t
            }
            )(e)
        }
        function e(t, i, a) {
            return (e = "undefined" != typeof Reflect &amp;&amp; Reflect.get ? Reflect.get : function(t, e, i) {
                var a = function(t, e) {
                    for (; !Object.prototype.hasOwnProperty.call(t, e) &amp;&amp; null !== (t = r(t)); )
                        ;
                    return t
                }(t, e);
                if (a) {
                    var s = Object.getOwnPropertyDescriptor(a, e);
                    return s.get ? s.get.call(i) : s.value
                }
            }
            )(t, i, a || t)
        }
        function i(e, i) {
            return !i || "object" !== t(i) &amp;&amp; "function" != typeof i ? a(e) : i
        }
        function a(t) {
            if (void 0 === t)
                throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return t
        }
        function r(t) {
            return (r = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
                return t.__proto__ || Object.getPrototypeOf(t)
            }
            )(t)
        }
        function s(t, e) {
            if ("function" != typeof e &amp;&amp; null !== e)
                throw new TypeError("Super expression must either be null or a function");
            t.prototype = Object.create(e &amp;&amp; e.prototype, {
                constructor: {
                    value: t,
                    writable: !0,
                    configurable: !0
                }
            }),
            e &amp;&amp; function(t, e) {
                (Object.setPrototypeOf || function(t, e) {
                    return t.__proto__ = e,
                    t
                }
                )(t, e)
            }(t, e)
        }
        function n(t, e) {
            for (var i = 0; i &lt; e.length; i++) {
                var a = e[i];
                a.enumerable = a.enumerable || !1,
                a.configurable = !0,
                "value"in a &amp;&amp; (a.writable = !0),
                Object.defineProperty(t, a.key, a)
            }
        }
        function h(t, e, i) {
            return e &amp;&amp; n(t.prototype, e),
            i &amp;&amp; n(t, i),
            t
        }
        function l(t, e) {
            if (!(t instanceof e))
                throw new TypeError("Cannot call a class as a function")
        }
        !function(t, n) {
            var o = function t() {
                l(this, t)
            };
            o.Skeleton = null,
            o.AnimationTemplet = null,
            o.Templet = null;
            var u = function t() {
                l(this, t)
            }
              , c = function t() {
                l(this, t)
            }
              , p = function t() {
                l(this, t)
            }
              , _ = function() {
                function t() {
                    l(this, t)
                }
                return h(t, null, [{
                    key: "parse",
                    value: function(t, e) {
                        var i, a, r, s, h, l, _, d = e.__getBuffer(), f = e.readUTFString();
                        t._aniClassName = f;
                        var y, m = e.readUTFString().split("\n"), g = e.getUint8(), v = e.getUint32(), x = e.getUint32();
                        v &gt; 0 &amp;&amp; (y = d.slice(v, x));
                        var M = new n.Byte(y);
                        for (x &gt; 0 &amp;&amp; (t._publicExtData = d.slice(x, d.byteLength)),
                        t._useParent = !!e.getUint8(),
                        t._anis.length = g,
                        i = 0; i &lt; g; i++) {
                            var D = t._anis[i] = new u;
                            D.nodes = [];
                            var k = D.name = m[e.getUint16()];
                            t._aniMap[k] = i,
                            D.bone3DMap = {},
                            D.playTime = e.getFloat32();
                            var I = D.nodes.length = e.getUint8();
                            for (D.totalKeyframeDatasLength = 0,
                            a = 0; a &lt; I; a++) {
                                var A = D.nodes[a] = new c;
                                A.childs = [];
                                var S = e.getInt16();
                                S &gt;= 0 &amp;&amp; (A.name = m[S],
                                D.bone3DMap[A.name] = a),
                                A.keyFrame = [],
                                A.parentIndex = e.getInt16(),
                                -1 == A.parentIndex ? A.parent = null : A.parent = D.nodes[A.parentIndex],
                                A.lerpType = e.getUint8();
                                var b = e.getUint32();
                                M.pos = b;
                                var T = A.keyframeWidth = M.getUint16();
                                if (D.totalKeyframeDatasLength += T,
                                0 === A.lerpType || 1 === A.lerpType)
                                    for (A.interpolationMethod = [],
                                    A.interpolationMethod.length = T,
                                    r = 0; r &lt; T; r++)
                                        A.interpolationMethod[r] = o.AnimationTemplet.interpolation[M.getUint8()];
                                null != A.parent &amp;&amp; A.parent.childs.push(A);
                                var C = e.getUint16();
                                C &gt; 0 &amp;&amp; (A.extenData = d.slice(e.pos, e.pos + C),
                                e.pos += C);
                                var F = e.getUint16();
                                A.keyFrame.length = F;
                                var w, P = 0;
                                for (r = 0,
                                s = F; r &lt; s; r++) {
                                    if ((w = A.keyFrame[r] = new p).duration = e.getFloat32(),
                                    w.startTime = P,
                                    2 === A.lerpType) {
                                        w.interpolationData = [];
                                        var L, U = e.getUint8();
                                        switch (L = e.getFloat32()) {
                                        case 254:
                                            for (w.interpolationData.length = T,
                                            _ = 0; _ &lt; T; _++)
                                                w.interpolationData[_] = 0;
                                            break;
                                        case 255:
                                            for (w.interpolationData.length = T,
                                            _ = 0; _ &lt; T; _++)
                                                w.interpolationData[_] = 5;
                                            break;
                                        default:
                                            for (w.interpolationData.push(L),
                                            l = 1; l &lt; U; l++)
                                                w.interpolationData.push(e.getFloat32())
                                        }
                                    }
                                    for (w.data = new Float32Array(T),
                                    w.dData = new Float32Array(T),
                                    w.nextData = new Float32Array(T),
                                    h = 0; h &lt; T; h++)
                                        w.data[h] = e.getFloat32(),
                                        w.data[h] &gt; -1e-8 &amp;&amp; w.data[h] &lt; 1e-8 &amp;&amp; (w.data[h] = 0);
                                    P += w.duration
                                }
                                w.startTime = D.playTime,
                                A.playTime = D.playTime,
                                t._calculateKeyFrame(A, F, T)
                            }
                        }
                    }
                }]),
                t
            }()
              , d = function() {
                function t() {
                    l(this, t)
                }
                return h(t, null, [{
                    key: "READ_DATA",
                    value: function() {
                        t._DATA.offset = t._reader.getUint32(),
                        t._DATA.size = t._reader.getUint32()
                    }
                }, {
                    key: "READ_BLOCK",
                    value: function() {
                        for (var e = t._BLOCK.count = t._reader.getUint16(), i = t._BLOCK.blockStarts = [], a = t._BLOCK.blockLengths = [], r = 0; r &lt; e; r++)
                            i.push(t._reader.getUint32()),
                            a.push(t._reader.getUint32())
                    }
                }, {
                    key: "READ_STRINGS",
                    value: function() {
                        var e = t._reader.getUint32()
                          , i = t._reader.getUint16()
                          , a = t._reader.pos;
                        t._reader.pos = e + t._DATA.offset;
                        for (var r = 0; r &lt; i; r++)
                            t._strings[r] = t._reader.readUTFString();
                        t._reader.pos = a
                    }
                }, {
                    key: "parse",
                    value: function(e, i) {
                        t._templet = e,
                        t._reader = i,
                        i.__getBuffer(),
                        t.READ_DATA(),
                        t.READ_BLOCK(),
                        t.READ_STRINGS();
                        for (var a = 0, r = t._BLOCK.count; a &lt; r; a++) {
                            var s = i.getUint16()
                              , n = t._strings[s]
                              , h = t["READ_" + n];
                            if (null == h)
                                throw new Error("model file err,no this function:" + s + " " + n);
                            h.call(null)
                        }
                    }
                }, {
                    key: "READ_ANIMATIONS",
                    value: function() {
                        var e, i, a, r, s = t._reader, n = s.__getBuffer(), h = s.getUint16(), l = [];
                        for (l.length = h,
                        e = 0; e &lt; h; e++)
                            l[e] = o.AnimationTemplet.interpolation[s.getByte()];
                        var _ = s.getUint8();
                        for (t._templet._anis.length = _,
                        e = 0; e &lt; _; e++) {
                            var d = t._templet._anis[e] = new u;
                            d.nodes = [];
                            var f = d.name = t._strings[s.getUint16()];
                            t._templet._aniMap[f] = e,
                            d.bone3DMap = {},
                            d.playTime = s.getFloat32();
                            var y = d.nodes.length = s.getInt16();
                            for (d.totalKeyframeDatasLength = 0,
                            i = 0; i &lt; y; i++) {
                                var m = d.nodes[i] = new c;
                                m.keyframeWidth = h,
                                m.childs = [];
                                var g = s.getUint16();
                                g &gt;= 0 &amp;&amp; (m.name = t._strings[g],
                                d.bone3DMap[m.name] = i),
                                m.keyFrame = [],
                                m.parentIndex = s.getInt16(),
                                -1 == m.parentIndex ? m.parent = null : m.parent = d.nodes[m.parentIndex],
                                d.totalKeyframeDatasLength += h,
                                m.interpolationMethod = l,
                                null != m.parent &amp;&amp; m.parent.childs.push(m);
                                var v = s.getUint16();
                                m.keyFrame.length = v;
                                var x = null
                                  , M = null;
                                for (a = 0,
                                r = v; a &lt; r; a++) {
                                    (x = m.keyFrame[a] = new p).startTime = s.getFloat32(),
                                    M &amp;&amp; (M.duration = x.startTime - M.startTime),
                                    x.dData = new Float32Array(h),
                                    x.nextData = new Float32Array(h);
                                    var D = t._DATA.offset
                                      , k = s.getUint32()
                                      , I = 4 * h
                                      , A = n.slice(D + k, D + k + I);
                                    x.data = new Float32Array(A),
                                    M = x
                                }
                                x.duration = 0,
                                m.playTime = d.playTime,
                                t._templet._calculateKeyFrame(m, v, h)
                            }
                        }
                    }
                }]),
                t
            }();
            d._strings = [],
            d._BLOCK = {
                count: 0
            },
            d._DATA = {
                offset: 0,
                size: 0
            };
            var f = function t() {
                l(this, t)
            };
            f.stopped = 0,
            f.paused = 1,
            f.playing = 2;
            var y = function(t) {
                function e() {
                    var t;
                    return l(this, e),
                    (t = i(this, r(e).call(this))).isCache = !0,
                    t.playbackRate = 1,
                    t._destroyed = !1,
                    t._currentAnimationClipIndex = -1,
                    t._currentKeyframeIndex = -1,
                    t._currentTime = 0,
                    t._overallDuration = Number.MAX_VALUE,
                    t._stopWhenCircleFinish = !1,
                    t._elapsedPlaybackTime = 0,
                    t._startUpdateLoopCount = -1,
                    t._cachePlayRate = 1,
                    t.cacheFrameRate = 60,
                    t.returnToZeroStopped = !1,
                    t
                }
                return s(e, t),
                h(e, [{
                    key: "_onTempletLoadedComputeFullKeyframeIndices",
                    value: function(t, e, i) {
                        this._templet === i &amp;&amp; this._cachePlayRate === t &amp;&amp; this._cacheFrameRate === e &amp;&amp; this._computeFullKeyframeIndices()
                    }
                }, {
                    key: "_computeFullKeyframeIndices",
                    value: function() {}
                }, {
                    key: "_onAnimationTempletLoaded",
                    value: function() {
                        this.destroyed || this._calculatePlayDuration()
                    }
                }, {
                    key: "_calculatePlayDuration",
                    value: function() {
                        if (this.state !== f.stopped) {
                            var t = this._templet.getAniDuration(this._currentAnimationClipIndex);
                            0 === this._playEnd &amp;&amp; (this._playEnd = t),
                            this._playEnd &gt; t &amp;&amp; (this._playEnd = t),
                            this._playDuration = this._playEnd - this._playStart
                        }
                    }
                }, {
                    key: "_setPlayParams",
                    value: function(t, e) {
                        this._currentTime = t,
                        this._currentKeyframeIndex = Math.floor(this.currentPlayTime / e + .01),
                        this._currentFrameTime = this._currentKeyframeIndex * e
                    }
                }, {
                    key: "_setPlayParamsWhenStop",
                    value: function(t, e) {
                        var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : -1;
                        this._currentTime = t;
                        var a = i &gt; 0 ? i : t;
                        this._currentKeyframeIndex = Math.floor(a / e + .01),
                        this._currentKeyframeIndex = Math.floor(t / e + .01),
                        this._currentFrameTime = this._currentKeyframeIndex * e,
                        this._currentAnimationClipIndex = -1
                    }
                }, {
                    key: "_update",
                    value: function(t) {
                        if (-1 !== this._currentAnimationClipIndex &amp;&amp; !this._paused &amp;&amp; this._templet) {
                            var e = this._cacheFrameRateInterval * this._cachePlayRate
                              , i = 0;
                            this._startUpdateLoopCount !== n.Stat.loopCount &amp;&amp; (i = t * this.playbackRate,
                            this._elapsedPlaybackTime += i);
                            var a = this.playDuration;
                            if (i += this._currentTime,
                            0 !== this._overallDuration &amp;&amp; this._elapsedPlaybackTime &gt;= this._overallDuration || 0 === this._overallDuration &amp;&amp; this._elapsedPlaybackTime &gt;= a || 0 === this._overallDuration &amp;&amp; i &gt;= this.playEnd)
                                return this._setPlayParamsWhenStop(a, e, this.playEnd),
                                void this.event(n.Event.STOPPED);
                            if (a &gt; 0) {
                                if (i &gt;= a)
                                    return this._stopWhenCircleFinish ? (this._setPlayParamsWhenStop(a, e),
                                    this._stopWhenCircleFinish = !1,
                                    void this.event(n.Event.STOPPED)) : (i %= a,
                                    this._setPlayParams(i, e),
                                    void this.event(n.Event.COMPLETE));
                                this._setPlayParams(i, e)
                            } else {
                                if (this._stopWhenCircleFinish)
                                    return this._setPlayParamsWhenStop(a, e),
                                    this._stopWhenCircleFinish = !1,
                                    void this.event(n.Event.STOPPED);
                                this._currentTime = this._currentFrameTime = this._currentKeyframeIndex = 0,
                                this.event(n.Event.COMPLETE)
                            }
                        }
                    }
                }, {
                    key: "_destroy",
                    value: function() {
                        this.offAll(),
                        this._templet = null,
                        this._destroyed = !0
                    }
                }, {
                    key: "play",
                    value: function() {
                        var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : 0
                          , e = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] ? arguments[1] : 1
                          , i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 2147483647
                          , a = arguments.length &gt; 3 &amp;&amp; void 0 !== arguments[3] ? arguments[3] : 0
                          , r = arguments.length &gt; 4 &amp;&amp; void 0 !== arguments[4] ? arguments[4] : 0;
                        if (!this._templet)
                            throw new Error("AnimationPlayer:templet must not be null,maybe you need to set url.");
                        if (i &lt; 0 || a &lt; 0 || r &lt; 0)
                            throw new Error("AnimationPlayer:overallDuration,playStart and playEnd must large than zero.");
                        if (0 !== r &amp;&amp; a &gt; r)
                            throw new Error("AnimationPlayer:start must less than end.");
                        this._currentTime = 0,
                        this._currentFrameTime = 0,
                        this._elapsedPlaybackTime = 0,
                        this.playbackRate = e,
                        this._overallDuration = i,
                        this._playStart = a,
                        this._playEnd = r,
                        this._paused = !1,
                        this._currentAnimationClipIndex = t,
                        this._currentKeyframeIndex = 0,
                        this._startUpdateLoopCount = n.Stat.loopCount,
                        this.event(n.Event.PLAYED),
                        this._calculatePlayDuration(),
                        this._update(0)
                    }
                }, {
                    key: "playByFrame",
                    value: function() {
                        var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : 0
                          , e = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] ? arguments[1] : 1
                          , i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 2147483647
                          , a = arguments.length &gt; 3 &amp;&amp; void 0 !== arguments[3] ? arguments[3] : 0
                          , r = arguments.length &gt; 4 &amp;&amp; void 0 !== arguments[4] ? arguments[4] : 0
                          , s = arguments.length &gt; 5 &amp;&amp; void 0 !== arguments[5] ? arguments[5] : 30
                          , n = 1e3 / s;
                        this.play(t, e, i, a * n, r * n)
                    }
                }, {
                    key: "stop",
                    value: function() {
                        var t = !(arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0]) || arguments[0];
                        t ? (this._currentTime = this._currentFrameTime = this._currentKeyframeIndex = 0,
                        this._currentAnimationClipIndex = -1,
                        this.event(n.Event.STOPPED)) : this._stopWhenCircleFinish = !0
                    }
                }, {
                    key: "destroy",
                    value: function() {}
                }, {
                    key: "templet",
                    get: function() {
                        return this._templet
                    },
                    set: function(t) {
                        this.state !== f.stopped &amp;&amp; this.stop(!0),
                        this._templet !== t &amp;&amp; (this._templet = t,
                        this._computeFullKeyframeIndices())
                    }
                }, {
                    key: "playStart",
                    get: function() {
                        return this._playStart
                    }
                }, {
                    key: "playEnd",
                    get: function() {
                        return this._playEnd
                    }
                }, {
                    key: "playDuration",
                    get: function() {
                        return this._playDuration
                    }
                }, {
                    key: "overallDuration",
                    get: function() {
                        return this._overallDuration
                    }
                }, {
                    key: "currentAnimationClipIndex",
                    get: function() {
                        return this._currentAnimationClipIndex
                    }
                }, {
                    key: "currentKeyframeIndex",
                    get: function() {
                        return this._currentKeyframeIndex
                    }
                }, {
                    key: "currentPlayTime",
                    get: function() {
                        return this._currentTime + this._playStart
                    }
                }, {
                    key: "currentFrameTime",
                    get: function() {
                        return this._currentFrameTime
                    }
                }, {
                    key: "cachePlayRate",
                    get: function() {
                        return this._cachePlayRate
                    },
                    set: function(t) {
                        this._cachePlayRate !== t &amp;&amp; (this._cachePlayRate = t,
                        this._templet &amp;&amp; this._computeFullKeyframeIndices())
                    }
                }, {
                    key: "cacheFrameRate",
                    get: function() {
                        return this._cacheFrameRate
                    },
                    set: function(t) {
                        this._cacheFrameRate !== t &amp;&amp; (this._cacheFrameRate = t,
                        this._cacheFrameRateInterval = 1e3 / this._cacheFrameRate,
                        this._templet &amp;&amp; this._computeFullKeyframeIndices())
                    }
                }, {
                    key: "currentTime",
                    set: function(t) {
                        if (-1 !== this._currentAnimationClipIndex &amp;&amp; this._templet) {
                            if (t &lt; this._playStart || t &gt; this._playEnd)
                                throw new Error("AnimationPlayer:value must large than playStartTime,small than playEndTime.");
                            this._startUpdateLoopCount = n.Stat.loopCount;
                            var e = this._cacheFrameRateInterval * this._cachePlayRate;
                            this._currentTime = t,
                            this._currentKeyframeIndex = Math.floor(this.currentPlayTime / e),
                            this._currentFrameTime = this._currentKeyframeIndex * e
                        }
                    }
                }, {
                    key: "paused",
                    get: function() {
                        return this._paused
                    },
                    set: function(t) {
                        this._paused = t,
                        t &amp;&amp; this.event(n.Event.PAUSED)
                    }
                }, {
                    key: "cacheFrameRateInterval",
                    get: function() {
                        return this._cacheFrameRateInterval
                    }
                }, {
                    key: "state",
                    get: function() {
                        return -1 === this._currentAnimationClipIndex ? f.stopped : this._paused ? f.paused : f.playing
                    }
                }, {
                    key: "destroyed",
                    get: function() {
                        return this._destroyed
                    }
                }]),
                e
            }(n.EventDispatcher)
              , m = function() {
                function t() {
                    l(this, t)
                }
                return h(t, null, [{
                    key: "getBezierRate",
                    value: function(e, i, a, r, s) {
                        var n = t._getBezierParamKey(i, a, r, s)
                          , h = 100 * n + e;
                        if (t._bezierResultCache[h])
                            return t._bezierResultCache[h];
                        var l, o, u = t._getBezierPoints(i, a, r, s, n);
                        for (o = u.length,
                        l = 0; l &lt; o; l += 2)
                            if (e &lt;= u[l])
                                return t._bezierResultCache[h] = u[l + 1],
                                u[l + 1];
                        return t._bezierResultCache[h] = 1,
                        1
                    }
                }, {
                    key: "_getBezierParamKey",
                    value: function(t, e, i, a) {
                        return 100 * (100 * (100 * (100 * t + e) + i) + a)
                    }
                }, {
                    key: "_getBezierPoints",
                    value: function(e, i, a, r, s) {
                        return t._bezierPointsCache[s] ? t._bezierPointsCache[s] : (h = [0, 0, e, i, a, r, 1, 1],
                        l = (new n.Bezier).getBezierPoints(h, 100, 3),
                        t._bezierPointsCache[s] = l,
                        l);
                        var h, l
                    }
                }]),
                t
            }();
            m._bezierResultCache = {},
            m._bezierPointsCache = {};
            var g = function(t) {
                function e() {
                    var t;
                    return l(this, e),
                    (t = i(this, r(e).call(this)))._anis = [],
                    t._aniMap = {},
                    t.unfixedLastAniIndex = -1,
                    t._fullFrames = null,
                    t._boneCurKeyFrm = [],
                    t
                }
                return s(e, t),
                h(e, [{
                    key: "parse",
                    value: function(t) {
                        var e = new n.Byte(t);
                        this._aniVersion = e.readUTFString(),
                        _.parse(this, e)
                    }
                }, {
                    key: "_calculateKeyFrame",
                    value: function(t, e, i) {
                        var a = t.keyFrame;
                        a[e] = a[0];
                        for (var r = 0; r &lt; e; r++)
                            for (var s = a[r], n = 0; n &lt; i; n++)
                                s.dData[n] = 0 === s.duration ? 0 : (a[r + 1].data[n] - s.data[n]) / s.duration,
                                s.nextData[n] = a[r + 1].data[n];
                        a.length--
                    }
                }, {
                    key: "_onAsynLoaded",
                    value: function(t) {
                        var e = new n.Byte(t);
                        switch (this._aniVersion = e.readUTFString(),
                        this._aniVersion) {
                        case "LAYAANIMATION:02":
                            d.parse(this, e);
                            break;
                        default:
                            _.parse(this, e)
                        }
                    }
                }, {
                    key: "getAnimationCount",
                    value: function() {
                        return this._anis.length
                    }
                }, {
                    key: "getAnimation",
                    value: function(t) {
                        return this._anis[t]
                    }
                }, {
                    key: "getAniDuration",
                    value: function(t) {
                        return this._anis[t].playTime
                    }
                }, {
                    key: "getNodes",
                    value: function(t) {
                        return this._anis[t].nodes
                    }
                }, {
                    key: "getNodeIndexWithName",
                    value: function(t, e) {
                        return this._anis[t].bone3DMap[e]
                    }
                }, {
                    key: "getNodeCount",
                    value: function(t) {
                        return this._anis[t].nodes.length
                    }
                }, {
                    key: "getTotalkeyframesLength",
                    value: function(t) {
                        return this._anis[t].totalKeyframeDatasLength
                    }
                }, {
                    key: "getPublicExtData",
                    value: function() {
                        return this._publicExtData
                    }
                }, {
                    key: "getAnimationDataWithCache",
                    value: function(t, e, i, a) {
                        var r = e[i];
                        if (r) {
                            var s = r[t];
                            return s ? s[a] : null
                        }
                        return null
                    }
                }, {
                    key: "setAnimationDataWithCache",
                    value: function(t, e, i, a, r) {
                        var s = e[i] || (e[i] = {});
                        (s[t] || (s[t] = []))[a] = r
                    }
                }, {
                    key: "getNodeKeyFrame",
                    value: function(t, e, i) {
                        var a = this._boneCurKeyFrm[e]
                          , r = t.length;
                        (null == a || a &gt;= r) &amp;&amp; (a = this._boneCurKeyFrm[e] = 0);
                        var s = t[a]
                          , n = i - s.startTime;
                        if (0 == n || n &gt; 0 &amp;&amp; s.duration &gt; n)
                            return a;
                        var h = 0;
                        if (n &gt; 0) {
                            for (i += .01,
                            h = a + 1; h &lt; r; h++)
                                if ((s = t[h]).startTime &lt;= i &amp;&amp; s.startTime + s.duration &gt; i)
                                    return this._boneCurKeyFrm[e] = h,
                                    h;
                            return r - 1
                        }
                        for (h = 0; h &lt; a; h++)
                            if ((s = t[h]).startTime &lt;= i &amp;&amp; s.startTime + s.duration &gt; i)
                                return this._boneCurKeyFrm[e] = h,
                                h;
                        return a
                    }
                }, {
                    key: "getOriginalData",
                    value: function(t, i, a, r, s) {
                        var n = this._anis[t].nodes
                          , h = this._boneCurKeyFrm;
                        h.length &lt; n.length &amp;&amp; (h.length = n.length);
                        for (var l = 0, o = 0, u = n.length, c = 0; o &lt; u; o++) {
                            var p, _ = n[o], d = _.keyFrame;
                            p = d[this.getNodeKeyFrame(d, o, s)],
                            _.dataOffset = c;
                            var f = s - p.startTime
                              , y = _.lerpType;
                            if (y)
                                switch (y) {
                                case 0:
                                case 1:
                                    for (l = 0; l &lt; _.keyframeWidth; )
                                        l += _.interpolationMethod[l](_, l, i, c + l, p.data, f, p.dData, p.duration, p.nextData);
                                    break;
                                case 2:
                                    var m = p.interpolationData
                                      , g = m.length
                                      , v = 0;
                                    for (l = 0; l &lt; g; ) {
                                        var x = m[l];
                                        switch (x) {
                                        case 6:
                                        case 7:
                                            l += e.interpolation[x](_, v, i, c + v, p.data, f, p.dData, p.duration, p.nextData, m, l + 1);
                                            break;
                                        default:
                                            l += e.interpolation[x](_, v, i, c + v, p.data, f, p.dData, p.duration, p.nextData)
                                        }
                                        v++
                                    }
                                }
                            else
                                for (l = 0; l &lt; _.keyframeWidth; )
                                    l += _.interpolationMethod[l](_, l, i, c + l, p.data, f, p.dData, p.duration, p.nextData);
                            c += _.keyframeWidth
                        }
                    }
                }, {
                    key: "getNodesCurrentFrameIndex",
                    value: function(t, e) {
                        var i = this._anis[t].nodes;
                        t !== this.unfixedLastAniIndex &amp;&amp; (this.unfixedCurrentFrameIndexes = new Uint32Array(i.length),
                        this.unfixedCurrentTimes = new Float32Array(i.length),
                        this.unfixedLastAniIndex = t);
                        for (var a = 0, r = i.length; a &lt; r; a++) {
                            var s = i[a];
                            for (e &lt; this.unfixedCurrentTimes[a] &amp;&amp; (this.unfixedCurrentFrameIndexes[a] = 0),
                            this.unfixedCurrentTimes[a] = e; this.unfixedCurrentFrameIndexes[a] &lt; s.keyFrame.length &amp;&amp; !(s.keyFrame[this.unfixedCurrentFrameIndexes[a]].startTime &gt; this.unfixedCurrentTimes[a]); )
                                this.unfixedCurrentFrameIndexes[a]++;
                            this.unfixedCurrentFrameIndexes[a]--
                        }
                        return this.unfixedCurrentFrameIndexes
                    }
                }, {
                    key: "getOriginalDataUnfixedRate",
                    value: function(t, i, a) {
                        var r = this._anis[t].nodes;
                        t !== this.unfixedLastAniIndex &amp;&amp; (this.unfixedCurrentFrameIndexes = new Uint32Array(r.length),
                        this.unfixedCurrentTimes = new Float32Array(r.length),
                        this.unfixedKeyframes = [],
                        this.unfixedLastAniIndex = t);
                        for (var s = 0, n = 0, h = r.length, l = 0; n &lt; h; n++) {
                            var o = r[n];
                            for (a &lt; this.unfixedCurrentTimes[n] &amp;&amp; (this.unfixedCurrentFrameIndexes[n] = 0),
                            this.unfixedCurrentTimes[n] = a; this.unfixedCurrentFrameIndexes[n] &lt; o.keyFrame.length &amp;&amp; !(o.keyFrame[this.unfixedCurrentFrameIndexes[n]].startTime &gt; this.unfixedCurrentTimes[n]); )
                                this.unfixedKeyframes[n] = o.keyFrame[this.unfixedCurrentFrameIndexes[n]],
                                this.unfixedCurrentFrameIndexes[n]++;
                            var u = this.unfixedKeyframes[n];
                            o.dataOffset = l;
                            var c = a - u.startTime;
                            if (o.lerpType)
                                switch (o.lerpType) {
                                case 0:
                                case 1:
                                    for (s = 0; s &lt; o.keyframeWidth; )
                                        s += o.interpolationMethod[s](o, s, i, l + s, u.data, c, u.dData, u.duration, u.nextData);
                                    break;
                                case 2:
                                    var p = u.interpolationData
                                      , _ = p.length
                                      , d = 0;
                                    for (s = 0; s &lt; _; ) {
                                        var f = p[s];
                                        switch (f) {
                                        case 6:
                                        case 7:
                                            s += e.interpolation[f](o, d, i, l + d, u.data, c, u.dData, u.duration, u.nextData, p, s + 1);
                                            break;
                                        default:
                                            s += e.interpolation[f](o, d, i, l + d, u.data, c, u.dData, u.duration, u.nextData)
                                        }
                                        d++
                                    }
                                }
                            else
                                for (s = 0; s &lt; o.keyframeWidth; )
                                    s += o.interpolationMethod[s](o, s, i, l + s, u.data, c, u.dData, u.duration, u.nextData);
                            l += o.keyframeWidth
                        }
                    }
                }], [{
                    key: "_LinearInterpolation_0",
                    value: function(t, e, i, a, r, s, n, h, l) {
                        return i[a] = r[e] + s * n[e],
                        1
                    }
                }, {
                    key: "_QuaternionInterpolation_1",
                    value: function(t, e, i, a, r, s, h, l, o) {
                        var u = 0 === l ? 0 : s / l;
                        return n.MathUtil.slerpQuaternionArray(r, e, o, e, u, i, a),
                        4
                    }
                }, {
                    key: "_AngleInterpolation_2",
                    value: function(t, e, i, a, r, s, n, h, l) {
                        return 0
                    }
                }, {
                    key: "_RadiansInterpolation_3",
                    value: function(t, e, i, a, r, s, n, h, l) {
                        return 0
                    }
                }, {
                    key: "_Matrix4x4Interpolation_4",
                    value: function(t, e, i, a, r, s, n, h, l) {
                        for (var o = 0; o &lt; 16; o++,
                        e++)
                            i[a + o] = r[e] + s * n[e];
                        return 16
                    }
                }, {
                    key: "_NoInterpolation_5",
                    value: function(t, e, i, a, r, s, n, h, l) {
                        return i[a] = r[e],
                        1
                    }
                }, {
                    key: "_BezierInterpolation_6",
                    value: function(t, e, i, a, r, s, n, h, l) {
                        var o = arguments.length &gt; 9 &amp;&amp; void 0 !== arguments[9] ? arguments[9] : null
                          , u = arguments.length &gt; 10 &amp;&amp; void 0 !== arguments[10] ? arguments[10] : 0;
                        return i[a] = r[e] + (l[e] - r[e]) * m.getBezierRate(s / h, o[u], o[u + 1], o[u + 2], o[u + 3]),
                        5
                    }
                }, {
                    key: "_BezierInterpolation_7",
                    value: function(t, e, i, a, r, s, n, h, l) {
                        var o = arguments.length &gt; 9 &amp;&amp; void 0 !== arguments[9] ? arguments[9] : null
                          , u = arguments.length &gt; 10 &amp;&amp; void 0 !== arguments[10] ? arguments[10] : 0;
                        return i[a] = o[u + 4] + o[u + 5] * m.getBezierRate((.001 * s + o[u + 6]) / o[u + 7], o[u], o[u + 1], o[u + 2], o[u + 3]),
                        9
                    }
                }]),
                e
            }(n.Resource);
            g.interpolation = [g._LinearInterpolation_0, g._QuaternionInterpolation_1, g._AngleInterpolation_2, g._RadiansInterpolation_3, g._Matrix4x4Interpolation_4, g._NoInterpolation_5, g._BezierInterpolation_6, g._BezierInterpolation_7],
            o.AnimationTemplet = g;
            var v = function(t) {
                function e() {
                    return l(this, e),
                    i(this, r(e).apply(this, arguments))
                }
                return s(e, t),
                h(e, [{
                    key: "drawSkin",
                    value: function(t, e) {
                        this.drawTriangles(t.texture, 0, 0, t.vertices, t.uvs, t.indexes, t.transform || n.Matrix.EMPTY, e)
                    }
                }], [{
                    key: "create",
                    value: function() {
                        return e._caches.pop() || new e
                    }
                }, {
                    key: "recycle",
                    value: function(t) {
                        t.clear(),
                        e._caches.push(t)
                    }
                }]),
                e
            }(n.Graphics);
            v._caches = [];
            var x = function() {
                function t() {
                    l(this, t),
                    this.skX = 0,
                    this.skY = 0,
                    this.scX = 1,
                    this.scY = 1,
                    this.x = 0,
                    this.y = 0,
                    this.skewX = 0,
                    this.skewY = 0
                }
                return h(t, [{
                    key: "initData",
                    value: function(t) {
                        null != t.x &amp;&amp; (this.x = t.x),
                        null != t.y &amp;&amp; (this.y = t.y),
                        null != t.skX &amp;&amp; (this.skX = t.skX),
                        null != t.skY &amp;&amp; (this.skY = t.skY),
                        null != t.scX &amp;&amp; (this.scX = t.scX),
                        null != t.scY &amp;&amp; (this.scY = t.scY)
                    }
                }, {
                    key: "getMatrix",
                    value: function() {
                        var t;
                        return (t = this.mMatrix ? this.mMatrix : this.mMatrix = new n.Matrix).identity(),
                        t.scale(this.scX, this.scY),
                        (this.skewX || this.skewY) &amp;&amp; this.skew(t, this.skewX * Math.PI / 180, this.skewY * Math.PI / 180),
                        t.rotate(this.skX * Math.PI / 180),
                        t.translate(this.x, this.y),
                        t
                    }
                }, {
                    key: "skew",
                    value: function(t, e, i) {
                        var a = Math.sin(i)
                          , r = Math.cos(i)
                          , s = Math.sin(e)
                          , n = Math.cos(e);
                        return t.setTo(t.a * n - t.b * a, t.a * s + t.b * r, t.c * n - t.d * a, t.c * s + t.d * r, t.tx * n - t.ty * a, t.tx * s + t.ty * r),
                        t
                    }
                }]),
                t
            }()
              , M = function() {
                function t() {
                    l(this, t),
                    this.length = 10,
                    this.resultTransform = new x,
                    this.resultMatrix = new n.Matrix,
                    this.inheritScale = !0,
                    this.inheritRotation = !0,
                    this.d = -1,
                    this._children = []
                }
                return h(t, [{
                    key: "setTempMatrix",
                    value: function(t) {
                        this._tempMatrix = t;
                        var e, i = 0;
                        for (i = 0,
                        e = this._children.length; i &lt; e; i++)
                            this._children[i].setTempMatrix(this._tempMatrix)
                    }
                }, {
                    key: "update",
                    value: function() {
                        var t, e = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : null;
                        if (this.rotation = this.transform.skX,
                        e)
                            t = this.resultTransform.getMatrix(),
                            n.Matrix.mul(t, e, this.resultMatrix),
                            this.resultRotation = this.rotation;
                        else if (this.resultRotation = this.rotation + this.parentBone.resultRotation,
                        this.parentBone)
                            if (this.inheritRotation &amp;&amp; this.inheritScale)
                                t = this.resultTransform.getMatrix(),
                                n.Matrix.mul(t, this.parentBone.resultMatrix, this.resultMatrix);
                            else {
                                var i, a, r, s = this.parentBone, h = this.parentBone.resultMatrix;
                                t = this.resultTransform.getMatrix();
                                var l = h.a * t.tx + h.c * t.ty + h.tx
                                  , o = h.b * t.tx + h.d * t.ty + h.ty
                                  , u = new n.Matrix;
                                this.inheritRotation ? (i = Math.atan2(s.resultMatrix.b, s.resultMatrix.a),
                                a = Math.cos(i),
                                r = Math.sin(i),
                                u.setTo(a, r, -r, a, 0, 0),
                                n.Matrix.mul(this._tempMatrix, u, n.Matrix.TEMP),
                                n.Matrix.TEMP.copyTo(u),
                                t = this.resultTransform.getMatrix(),
                                n.Matrix.mul(t, u, this.resultMatrix),
                                this.resultTransform.scX * this.resultTransform.scY &lt; 0 &amp;&amp; this.resultMatrix.rotate(.5 * Math.PI),
                                this.resultMatrix.tx = l,
                                this.resultMatrix.ty = o) : (this.inheritScale,
                                t = this.resultTransform.getMatrix(),
                                n.Matrix.TEMP.identity(),
                                n.Matrix.TEMP.d = this.d,
                                n.Matrix.mul(t, n.Matrix.TEMP, this.resultMatrix),
                                this.resultMatrix.tx = l,
                                this.resultMatrix.ty = o)
                            }
                        else
                            (t = this.resultTransform.getMatrix()).copyTo(this.resultMatrix);
                        var c = 0
                          , p = 0;
                        for (c = 0,
                        p = this._children.length; c &lt; p; c++)
                            this._children[c].update()
                    }
                }, {
                    key: "updateChild",
                    value: function() {
                        var t, e = 0;
                        for (e = 0,
                        t = this._children.length; e &lt; t; e++)
                            this._children[e].update()
                    }
                }, {
                    key: "setRotation",
                    value: function(t) {
                        this._sprite &amp;&amp; (this._sprite.rotation = 180 * t / Math.PI)
                    }
                }, {
                    key: "updateDraw",
                    value: function(e, i) {
                        t.ShowBones &amp;&amp; !t.ShowBones[this.name] || (this._sprite ? (this._sprite.x = e + this.resultMatrix.tx,
                        this._sprite.y = i + this.resultMatrix.ty) : (this._sprite = new n.Sprite,
                        this._sprite.graphics.drawCircle(0, 0, 5, "#ff0000"),
                        this._sprite.graphics.drawLine(0, 0, this.length, 0, "#00ff00"),
                        this._sprite.graphics.fillText(this.name, 0, 0, "20px Arial", "#00ff00", "center"),
                        n.ILaya.stage.addChild(this._sprite),
                        this._sprite.x = e + this.resultMatrix.tx,
                        this._sprite.y = i + this.resultMatrix.ty));
                        var a, r = 0;
                        for (r = 0,
                        a = this._children.length; r &lt; a; r++)
                            this._children[r].updateDraw(e, i)
                    }
                }, {
                    key: "addChild",
                    value: function(t) {
                        this._children.push(t),
                        t.parentBone = this
                    }
                }, {
                    key: "findBone",
                    value: function(t) {
                        if (this.name == t)
                            return this;
                        var e, i, a;
                        for (e = 0,
                        i = this._children.length; e &lt; i; e++)
                            if (a = this._children[e].findBone(t))
                                return a;
                        return null
                    }
                }, {
                    key: "localToWorld",
                    value: function(t) {
                        var e = t[0]
                          , i = t[1];
                        t[0] = e * this.resultMatrix.a + i * this.resultMatrix.c + this.resultMatrix.tx,
                        t[1] = e * this.resultMatrix.b + i * this.resultMatrix.d + this.resultMatrix.ty
                    }
                }]),
                t
            }();
            M.ShowBones = {};
            var D = function() {
                function t() {
                    l(this, t)
                }
                return h(t, null, [{
                    key: "getRelativeUV",
                    value: function(t, e) {
                        var i, a, r = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : null, s = t[0], n = t[2] - t[0], h = t[1], l = t[5] - t[1];
                        r || (r = []),
                        r.length = e.length,
                        a = r.length;
                        var o = 1 / n
                          , u = 1 / l;
                        for (i = 0; i &lt; a; i += 2)
                            r[i] = (e[i] - s) * o,
                            r[i + 1] = (e[i + 1] - h) * u;
                        return r
                    }
                }, {
                    key: "getAbsoluteUV",
                    value: function(t, e) {
                        var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : null;
                        if (0 == t[0] &amp;&amp; 0 == t[1] &amp;&amp; 1 == t[4] &amp;&amp; 1 == t[5])
                            return i ? (n.Utils.copyArray(i, e),
                            i) : e;
                        var a, r, s = t[0], h = t[2] - t[0], l = t[1], o = t[5] - t[1];
                        for (i || (i = []),
                        i.length = e.length,
                        r = i.length,
                        a = 0; a &lt; r; a += 2)
                            i[a] = e[a] * h + s,
                            i[a + 1] = e[a + 1] * o + l;
                        return i
                    }
                }]),
                t
            }()
              , k = function() {
                function t() {
                    l(this, t),
                    this.uvs = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),
                    this.vertices = new Float32Array([0, 0, 100, 0, 100, 100, 0, 100]),
                    this.indexes = new Uint16Array([0, 1, 3, 3, 1, 2]),
                    this.useUvTransform = !1,
                    this.canvasPadding = 1
                }
                return h(t, [{
                    key: "getBounds",
                    value: function() {
                        return n.Rectangle._getWrapRec(this.vertices)
                    }
                }]),
                t
            }()
              , I = function(t) {
                function e() {
                    return l(this, e),
                    i(this, r(e).call(this))
                }
                return s(e, t),
                h(e, [{
                    key: "init2",
                    value: function(t, e, i, a) {
                        this.transform &amp;&amp; (this.transform = null);
                        var r = e || [0, 1, 3, 3, 1, 2];
                        this.texture = t,
                        this.indexes = new Uint16Array(r),
                        this.vertices = new Float32Array(i),
                        this.uvs = new Float32Array(a)
                    }
                }]),
                e
            }(k)
              , A = function() {
                function t() {
                    l(this, t),
                    this.srcDisplayIndex = -1,
                    this.type = "src",
                    this.displayIndex = -1,
                    this.originalIndex = -1,
                    this._replaceDic = {}
                }
                return h(t, [{
                    key: "showSlotData",
                    value: function(t) {
                        var e = !(arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1]) || arguments[1];
                        this.currSlotData = t,
                        e &amp;&amp; (this.displayIndex = this.srcDisplayIndex),
                        this.currDisplayData = null,
                        this.currTexture = null
                    }
                }, {
                    key: "showDisplayByName",
                    value: function(t) {
                        this.currSlotData &amp;&amp; this.showDisplayByIndex(this.currSlotData.getDisplayByName(t))
                    }
                }, {
                    key: "replaceDisplayByName",
                    value: function(t, e) {
                        var i, a;
                        this.currSlotData &amp;&amp; (i = this.currSlotData.getDisplayByName(t),
                        a = this.currSlotData.getDisplayByName(e),
                        this.replaceDisplayByIndex(i, a))
                    }
                }, {
                    key: "replaceDisplayByIndex",
                    value: function(t, e) {
                        this.currSlotData &amp;&amp; (this._replaceDic[t] = e,
                        this.originalIndex == t &amp;&amp; this.showDisplayByIndex(t))
                    }
                }, {
                    key: "showDisplayByIndex",
                    value: function(t) {
                        if (this.originalIndex = t,
                        null != this._replaceDic[t] &amp;&amp; (t = this._replaceDic[t]),
                        this.currSlotData &amp;&amp; t &gt; -1 &amp;&amp; t &lt; this.currSlotData.displayArr.length) {
                            if (this.displayIndex = t,
                            this.currDisplayData = this.currSlotData.displayArr[t],
                            this.currDisplayData) {
                                var e = this.currDisplayData.name;
                                this.currTexture = this.templet.getTexture(e),
                                this.currTexture &amp;&amp; 0 == this.currDisplayData.type &amp;&amp; this.currDisplayData.uvs &amp;&amp; (this.currTexture = this.currDisplayData.createTexture(this.currTexture))
                            }
                        } else
                            this.displayIndex = -1,
                            this.currDisplayData = null,
                            this.currTexture = null
                    }
                }, {
                    key: "replaceSkin",
                    value: function(t) {
                        this._diyTexture = t,
                        this._curDiyUV &amp;&amp; (this._curDiyUV.length = 0),
                        this.currDisplayData &amp;&amp; this._diyTexture == this.currDisplayData.texture &amp;&amp; (this._diyTexture = null)
                    }
                }, {
                    key: "setParentMatrix",
                    value: function(t) {
                        this._parentMatrix = t
                    }
                }, {
                    key: "getSaveVerticle",
                    value: function(e) {
                        return t.useSameMatrixAndVerticle &amp;&amp; this._preGraphicVerticle &amp;&amp; t.isSameArr(e, this._preGraphicVerticle) ? e = this._preGraphicVerticle : (e = n.ILaya.Utils.copyArray([], e),
                        this._preGraphicVerticle = e),
                        e
                    }
                }, {
                    key: "getSaveMatrix",
                    value: function(e) {
                        if (t.useSameMatrixAndVerticle &amp;&amp; this._preGraphicMatrix &amp;&amp; t.isSameMatrix(e, this._preGraphicMatrix))
                            e = this._preGraphicMatrix;
                        else {
                            var i = e.clone();
                            e = i,
                            this._preGraphicMatrix = e
                        }
                        return e
                    }
                }, {
                    key: "draw",
                    value: function(e, i) {
                        var a = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] &amp;&amp; arguments[2]
                          , r = arguments.length &gt; 3 &amp;&amp; void 0 !== arguments[3] ? arguments[3] : 1;
                        if ((null != this._diyTexture || null != this.currTexture) &amp;&amp; null != this.currDisplayData || this.currDisplayData &amp;&amp; 3 == this.currDisplayData.type) {
                            var s, h = this.currTexture;
                            switch (this._diyTexture &amp;&amp; (h = this._diyTexture),
                            this.currDisplayData.type) {
                            case 0:
                                if (e) {
                                    var l = this.getDisplayMatrix();
                                    if (this._parentMatrix) {
                                        var o = !1;
                                        if (l) {
                                            var u;
                                            if (n.Matrix.mul(l, this._parentMatrix, n.Matrix.TEMP),
                                            a ? (null == this._resultMatrix &amp;&amp; (this._resultMatrix = new n.Matrix),
                                            u = this._resultMatrix) : u = t._tempResultMatrix,
                                            this._diyTexture &amp;&amp; this.currDisplayData.uvs) {
                                                var c = t._tempMatrix;
                                                c.identity(),
                                                this.currDisplayData.uvs[1] &gt; this.currDisplayData.uvs[5] &amp;&amp; (c.d = -1),
                                                this.currDisplayData.uvs[0] &gt; this.currDisplayData.uvs[4] &amp;&amp; this.currDisplayData.uvs[1] &gt; this.currDisplayData.uvs[5] &amp;&amp; (o = !0,
                                                c.rotate(-Math.PI / 2)),
                                                n.Matrix.mul(c, n.Matrix.TEMP, u)
                                            } else
                                                n.Matrix.TEMP.copyTo(u);
                                            a || (u = this.getSaveMatrix(u)),
                                            u._checkTransform(),
                                            o ? e.drawTexture(h, -this.currDisplayData.height / 2, -this.currDisplayData.width / 2, this.currDisplayData.height, this.currDisplayData.width, u, r) : e.drawTexture(h, -this.currDisplayData.width / 2, -this.currDisplayData.height / 2, this.currDisplayData.width, this.currDisplayData.height, u, r)
                                        }
                                    }
                                }
                                break;
                            case 1:
                                if (a ? (null == this._skinSprite &amp;&amp; (this._skinSprite = t.createSkinMesh()),
                                s = this._skinSprite) : s = t.createSkinMesh(),
                                null == s)
                                    return;
                                var p;
                                if (null == this.currDisplayData.bones) {
                                    var _, d = this.currDisplayData.weights;
                                    this.deformData &amp;&amp; (d = this.deformData),
                                    this._diyTexture ? (this._curDiyUV || (this._curDiyUV = []),
                                    0 == this._curDiyUV.length &amp;&amp; (this._curDiyUV = D.getRelativeUV(this.currTexture.uv, this.currDisplayData.uvs, this._curDiyUV),
                                    this._curDiyUV = D.getAbsoluteUV(this._diyTexture.uv, this._curDiyUV, this._curDiyUV)),
                                    _ = this._curDiyUV) : _ = this.currDisplayData.uvs,
                                    this._mVerticleArr = d,
                                    this.currDisplayData.triangles.length,
                                    p = this.currDisplayData.triangles,
                                    this.deformData &amp;&amp; (a || (this._mVerticleArr = this.getSaveVerticle(this._mVerticleArr))),
                                    s.init2(h, p, this._mVerticleArr, _);
                                    var f, y = this.getDisplayMatrix();
                                    this._parentMatrix &amp;&amp; y &amp;&amp; (n.Matrix.mul(y, this._parentMatrix, n.Matrix.TEMP),
                                    a ? (null == this._resultMatrix &amp;&amp; (this._resultMatrix = new n.Matrix),
                                    f = this._resultMatrix) : f = t._tempResultMatrix,
                                    n.Matrix.TEMP.copyTo(f),
                                    a || (f = this.getSaveMatrix(f)),
                                    s.transform = f)
                                } else
                                    this.skinMesh(i, s);
                                e.drawSkin(s, r);
                                break;
                            case 2:
                                if (a ? (null == this._skinSprite &amp;&amp; (this._skinSprite = t.createSkinMesh()),
                                s = this._skinSprite) : s = t.createSkinMesh(),
                                null == s)
                                    return;
                                this.skinMesh(i, s),
                                e.drawSkin(s, r)
                            }
                        }
                    }
                }, {
                    key: "skinMesh",
                    value: function(e, i) {
                        var a, r = this.currTexture, s = this.currDisplayData.bones;
                        this._diyTexture ? (r = this._diyTexture,
                        this._curDiyUV || (this._curDiyUV = []),
                        0 == this._curDiyUV.length &amp;&amp; (this._curDiyUV = D.getRelativeUV(this.currTexture.uv, this.currDisplayData.uvs, this._curDiyUV),
                        this._curDiyUV = D.getAbsoluteUV(this._diyTexture.uv, this._curDiyUV, this._curDiyUV)),
                        a = this._curDiyUV) : a = this.currDisplayData.uvs;
                        var n, h, l, o, u, c = this.currDisplayData.weights, p = this.currDisplayData.triangles, _ = 0, d = 0, f = 0, y = 0, m = 0, g = 0, v = 0;
                        if (t._tempVerticleArr.length = 0,
                        u = t._tempVerticleArr,
                        this.deformData &amp;&amp; this.deformData.length &gt; 0) {
                            var x = 0;
                            for (g = 0,
                            v = s.length; g &lt; v; ) {
                                for (f = s[g++] + g,
                                _ = 0,
                                d = 0; g &lt; f; g++)
                                    h = e[s[g]],
                                    l = c[y] + this.deformData[x++],
                                    o = c[y + 1] + this.deformData[x++],
                                    m = c[y + 2],
                                    _ += (l * h.a + o * h.c + h.tx) * m,
                                    d += (l * h.b + o * h.d + h.ty) * m,
                                    y += 3;
                                u.push(_, d)
                            }
                        } else
                            for (g = 0,
                            v = s.length; g &lt; v; ) {
                                for (f = s[g++] + g,
                                _ = 0,
                                d = 0; g &lt; f; g++)
                                    h = e[s[g]],
                                    l = c[y],
                                    o = c[y + 1],
                                    m = c[y + 2],
                                    _ += (l * h.a + o * h.c + h.tx) * m,
                                    d += (l * h.b + o * h.d + h.ty) * m,
                                    y += 3;
                                u.push(_, d)
                            }
                        this._mVerticleArr = u,
                        n = p,
                        this._mVerticleArr = this.getSaveVerticle(this._mVerticleArr),
                        i.init2(r, n, this._mVerticleArr, a)
                    }
                }, {
                    key: "drawBonePoint",
                    value: function(t) {
                        t &amp;&amp; this._parentMatrix &amp;&amp; t.drawCircle(this._parentMatrix.tx, this._parentMatrix.ty, 5, "#ff0000")
                    }
                }, {
                    key: "getDisplayMatrix",
                    value: function() {
                        return this.currDisplayData ? this.currDisplayData.transform.getMatrix() : null
                    }
                }, {
                    key: "getMatrix",
                    value: function() {
                        return this._resultMatrix
                    }
                }, {
                    key: "copy",
                    value: function() {
                        var e = new t;
                        return e.type = "copy",
                        e.name = this.name,
                        e.attachmentName = this.attachmentName,
                        e.srcDisplayIndex = this.srcDisplayIndex,
                        e.parent = this.parent,
                        e.displayIndex = this.displayIndex,
                        e.templet = this.templet,
                        e.currSlotData = this.currSlotData,
                        e.currTexture = this.currTexture,
                        e.currDisplayData = this.currDisplayData,
                        e
                    }
                }], [{
                    key: "createSkinMesh",
                    value: function() {
                        return new I
                    }
                }, {
                    key: "isSameArr",
                    value: function(t, e) {
                        if (t.length != e.length)
                            return !1;
                        var i, a;
                        for (a = t.length,
                        i = 0; i &lt; a; i++)
                            if (t[i] != e[i])
                                return !1;
                        return !0
                    }
                }, {
                    key: "isSameMatrix",
                    value: function(t, e) {
                        return t.a == e.a &amp;&amp; t.b == e.b &amp;&amp; t.c == e.c &amp;&amp; t.d == e.d &amp;&amp; Math.abs(t.tx - e.tx) &lt; 1e-5 &amp;&amp; Math.abs(t.ty - e.ty) &lt; 1e-5
                    }
                }]),
                t
            }();
            A._tempMatrix = new n.Matrix,
            A._tempResultMatrix = new n.Matrix,
            A.useSameMatrixAndVerticle = !0,
            A._tempVerticleArr = [];
            var S = function t() {
                l(this, t),
                this.deformSlotDataList = []
            }
              , b = function t() {
                l(this, t),
                this.deformSlotDisplayList = []
            }
              , T = function() {
                function t() {
                    l(this, t),
                    this.slotIndex = -1,
                    this.timeList = [],
                    this.vectices = [],
                    this.tweenKeyList = [],
                    this.frameIndex = 0
                }
                return h(t, [{
                    key: "binarySearch1",
                    value: function(t, e) {
                        var i = 0
                          , a = t.length - 2;
                        if (0 == a)
                            return 1;
                        for (var r = a &gt;&gt;&gt; 1; ; ) {
                            if (t[Math.floor(r + 1)] &lt;= e ? i = r + 1 : a = r,
                            i == a)
                                return i + 1;
                            r = i + a &gt;&gt;&gt; 1
                        }
                        return 0
                    }
                }, {
                    key: "apply",
                    value: function(t, e) {
                        var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 1;
                        if (t += .05,
                        !(this.timeList.length &lt;= 0)) {
                            var a = 0
                              , r = this.timeList[0];
                            if (!(t &lt; r)) {
                                var s = this.vectices[0].length
                                  , n = []
                                  , h = this.binarySearch1(this.timeList, t);
                                if (this.frameIndex = h,
                                t &gt;= this.timeList[this.timeList.length - 1]) {
                                    var l = this.vectices[this.vectices.length - 1];
                                    if (i &lt; 1)
                                        for (a = 0; a &lt; s; a++)
                                            n[a] += (l[a] - n[a]) * i;
                                    else
                                        for (a = 0; a &lt; s; a++)
                                            n[a] = l[a];
                                    this.deformData = n
                                } else {
                                    var o, u = this.vectices[this.frameIndex - 1], c = this.vectices[this.frameIndex], p = this.timeList[this.frameIndex - 1], _ = this.timeList[this.frameIndex];
                                    for (i = this.tweenKeyList[h - 1] ? (t - p) / (_ - p) : 0,
                                    a = 0; a &lt; s; a++)
                                        o = u[a],
                                        n[a] = o + (c[a] - o) * i;
                                    this.deformData = n
                                }
                            }
                        }
                    }
                }]),
                t
            }()
              , C = function t() {
                l(this, t),
                this.drawOrder = []
            }
              , F = function t() {
                l(this, t)
            }
              , w = function() {
                function t(e, i) {
                    l(this, t),
                    this.isSpine = !0,
                    this.isDebug = !1,
                    this._targetBone = i[e.targetBoneIndex],
                    this.isSpine = e.isSpine,
                    null == this._bones &amp;&amp; (this._bones = []),
                    this._bones.length = 0;
                    for (var a = 0, r = e.boneIndexs.length; a &lt; r; a++)
                        this._bones.push(i[e.boneIndexs[a]]);
                    this.name = e.name,
                    this.mix = e.mix,
                    this.bendDirection = e.bendDirection
                }
                return h(t, [{
                    key: "apply",
                    value: function() {
                        switch (this._bones.length) {
                        case 1:
                            this._applyIk1(this._bones[0], this._targetBone.resultMatrix.tx, this._targetBone.resultMatrix.ty, this.mix);
                            break;
                        case 2:
                            this.isSpine ? this._applyIk2(this._bones[0], this._bones[1], this._targetBone.resultMatrix.tx, this._targetBone.resultMatrix.ty, this.bendDirection, this.mix) : this._applyIk3(this._bones[0], this._bones[1], this._targetBone.resultMatrix.tx, this._targetBone.resultMatrix.ty, this.bendDirection, this.mix)
                        }
                    }
                }, {
                    key: "_applyIk1",
                    value: function(e, i, a, r) {
                        var s = e.parentBone
                          , n = 1 / (s.resultMatrix.a * s.resultMatrix.d - s.resultMatrix.b * s.resultMatrix.c)
                          , h = i - s.resultMatrix.tx
                          , l = a - s.resultMatrix.ty
                          , o = (h * s.resultMatrix.d - l * s.resultMatrix.c) * n - e.transform.x
                          , u = (l * s.resultMatrix.a - h * s.resultMatrix.b) * n - e.transform.y
                          , c = Math.atan2(u, o) * t.radDeg - 0 - e.transform.skX;
                        e.transform.scX &lt; 0 &amp;&amp; (c += 180),
                        c &gt; 180 ? c -= 360 : c &lt; -180 &amp;&amp; (c += 360),
                        e.transform.skX = e.transform.skY = e.transform.skX + c * r,
                        e.update()
                    }
                }, {
                    key: "updatePos",
                    value: function(t, e) {
                        this._sp &amp;&amp; this._sp.pos(t, e)
                    }
                }, {
                    key: "_applyIk2",
                    value: function(e, i, a, r, s, h) {
                        if (0 != h) {
                            var l, o, u, c = e.resultTransform.x, p = e.resultTransform.y, _ = e.transform.scX, d = e.transform.scY, f = i.transform.scX;
                            _ &lt; 0 ? (_ = -_,
                            l = 180,
                            u = -1) : (l = 0,
                            u = 1),
                            d &lt; 0 &amp;&amp; (d = -d,
                            u = -u),
                            f &lt; 0 ? (f = -f,
                            o = 180) : o = 0;
                            var y, m, g, v = i.resultTransform.x, x = e.resultMatrix.a, M = e.resultMatrix.c, D = e.resultMatrix.b, k = e.resultMatrix.d, I = Math.abs(_ - d) &lt;= 1e-4;
                            I ? (m = x * v + M * (y = i.resultTransform.y) + e.resultMatrix.tx,
                            g = D * v + k * y + e.resultMatrix.ty) : (y = 0,
                            m = x * v + e.resultMatrix.tx,
                            g = D * v + e.resultMatrix.ty),
                            this.isDebug &amp;&amp; (this._sp || (this._sp = new n.Sprite,
                            n.ILaya.stage.addChild(this._sp)),
                            this._sp.graphics.clear(),
                            this._sp.graphics.drawCircle(a, r, 15, "#ffff00"),
                            this._sp.graphics.drawCircle(m, g, 15, "#ff00ff")),
                            e.setRotation(Math.atan2(g - e.resultMatrix.ty, m - e.resultMatrix.tx));
                            var A = e.parentBone;
                            x = A.resultMatrix.a,
                            M = A.resultMatrix.c,
                            D = A.resultMatrix.b;
                            var S, b, T = 1 / (x * (k = A.resultMatrix.d) - M * D), C = a - A.resultMatrix.tx, F = r - A.resultMatrix.ty, w = (C * k - F * M) * T - c, P = (F * x - C * D) * T - p, L = ((C = m - A.resultMatrix.tx) * k - (F = g - A.resultMatrix.ty) * M) * T - c, U = (F * x - C * D) * T - p, B = Math.sqrt(L * L + U * U), E = i.length * f;
                            if (I) {
                                var R = (w * w + P * P - B * B - (E *= _) * E) / (2 * B * E);
                                R &lt; -1 ? R = -1 : R &gt; 1 &amp;&amp; (R = 1),
                                b = Math.acos(R) * s,
                                x = B + E * R,
                                M = E * Math.sin(b),
                                S = Math.atan2(P * x - w * M, w * x + P * M)
                            } else {
                                var N = (x = _ * E) * x
                                  , O = (M = d * E) * M
                                  , V = w * w + P * P
                                  , Y = Math.atan2(P, w)
                                  , K = -2 * O * B
                                  , X = O - N;
                                if ((k = K * K - 4 * X * (D = O * B * B + N * V - N * O)) &gt; 0) {
                                    var W = Math.sqrt(k);
                                    K &lt; 0 &amp;&amp; (W = -W);
                                    var z = (W = -(K + W) / 2) / X
                                      , G = D / W
                                      , q = Math.abs(z) &lt; Math.abs(G) ? z : G;
                                    q * q &lt;= V &amp;&amp; (F = Math.sqrt(V - q * q) * s,
                                    S = Y - Math.atan2(F, q),
                                    b = Math.atan2(F / d, (q - B) / _))
                                }
                                var H = 0
                                  , j = Number.MAX_VALUE
                                  , Q = 0
                                  , Z = 0
                                  , J = 0
                                  , $ = 0
                                  , tt = 0
                                  , et = 0;
                                (k = (C = B + x) * C) &gt; $ &amp;&amp; (J = 0,
                                $ = k,
                                tt = C),
                                (k = (C = B - x) * C) &lt; j &amp;&amp; (H = Math.PI,
                                j = k,
                                Q = C);
                                var it = Math.acos(-x * B / (N - O));
                                (k = (C = x * Math.cos(it) + B) * C + (F = M * Math.sin(it)) * F) &lt; j &amp;&amp; (H = it,
                                j = k,
                                Q = C,
                                Z = F),
                                k &gt; $ &amp;&amp; (J = it,
                                $ = k,
                                tt = C,
                                et = F),
                                V &lt;= (j + $) / 2 ? (S = Y - Math.atan2(Z * s, Q),
                                b = H * s) : (S = Y - Math.atan2(et * s, tt),
                                b = J * s)
                            }
                            var at = Math.atan2(y, v) * u
                              , rt = e.resultTransform.skX;
                            (S = (S - at) * t.radDeg + l - rt) &gt; 180 ? S -= 360 : S &lt; -180 &amp;&amp; (S += 360),
                            e.resultTransform.x = c,
                            e.resultTransform.y = p,
                            e.resultTransform.skX = e.resultTransform.skY = rt + S * h,
                            rt = i.resultTransform.skX,
                            rt %= 360,
                            (b = ((b + at) * t.radDeg - 0) * u + o - rt) &gt; 180 ? b -= 360 : b &lt; -180 &amp;&amp; (b += 360),
                            i.resultTransform.x = v,
                            i.resultTransform.y = y,
                            i.resultTransform.skX = i.resultTransform.skY = i.resultTransform.skY + b * h,
                            e.update()
                        }
                    }
                }, {
                    key: "_applyIk3",
                    value: function(e, i, a, r, s, h) {
                        if (0 != h) {
                            var l, o, u, c, p, _, d = i.resultMatrix.a * i.length, f = i.resultMatrix.b * i.length, y = d * d + f * f, m = Math.sqrt(y), g = e.resultMatrix.tx, v = e.resultMatrix.ty, x = i.resultMatrix.tx, M = i.resultMatrix.ty, D = x - g, k = M - v, I = D * D + k * k, A = Math.sqrt(I), S = (D = a - e.resultMatrix.tx) * D + (k = r - e.resultMatrix.ty) * k, b = Math.sqrt(S);
                            if (m + A &lt;= b || b + m &lt;= A || b + A &lt;= m) {
                                var T;
                                x = g + (T = m + A &lt;= b ? 1 : -1) * (a - g) * A / b,
                                M = v + T * (r - v) * A / b
                            } else {
                                var C = (I - y + S) / (2 * S)
                                  , F = Math.sqrt(I - C * C * S) / b
                                  , w = g + D * C
                                  , P = v + k * C
                                  , L = -k * F
                                  , U = D * F;
                                s &gt; 0 ? (x = w - L,
                                M = P - U) : (x = w + L,
                                M = P + U)
                            }
                            l = x,
                            o = M,
                            this.isDebug &amp;&amp; (this._sp || (this._sp = new n.Sprite,
                            n.ILaya.stage.addChild(this._sp)),
                            this._sp.graphics.clear(),
                            this._sp.graphics.drawCircle(g, v, 15, "#ff00ff"),
                            this._sp.graphics.drawCircle(a, r, 15, "#ffff00"),
                            this._sp.graphics.drawCircle(l, o, 15, "#ff00ff")),
                            u = Math.atan2(o - e.resultMatrix.ty, l - e.resultMatrix.tx),
                            e.setRotation(u),
                            (c = t._tempMatrix).identity(),
                            c.rotate(u),
                            c.scale(e.resultMatrix.getScaleX(), e.resultMatrix.getScaleY()),
                            c.translate(e.resultMatrix.tx, e.resultMatrix.ty),
                            c.copyTo(e.resultMatrix),
                            e.updateChild(),
                            p = Math.atan2(r - o, a - l),
                            i.setRotation(p),
                            (_ = t._tempMatrix).identity(),
                            _.rotate(p),
                            _.scale(i.resultMatrix.getScaleX(), i.resultMatrix.getScaleY()),
                            _.translate(l, o),
                            c.copyTo(i.resultMatrix),
                            i.updateChild()
                        }
                    }
                }]),
                t
            }();
            w.radDeg = 180 / Math.PI,
            w.degRad = Math.PI / 180,
            w._tempMatrix = new n.Matrix;
            var P = function t() {
                l(this, t),
                this.boneNames = [],
                this.bendDirection = 1,
                this.mix = 1,
                this.isSpine = !0,
                this.targetBoneIndex = -1,
                this.boneIndexs = []
            }
              , L = function() {
                function t(e, i) {
                    l(this, t),
                    this._debugKey = !1,
                    this._segments = [],
                    this._curves = [],
                    this.data = e,
                    this.position = e.position,
                    this.spacing = e.spacing,
                    this.rotateMix = e.rotateMix,
                    this.translateMix = e.translateMix,
                    this.bones = [];
                    for (var a = this.data.bones, r = 0, s = a.length; r &lt; s; r++)
                        this.bones.push(i[a[r]])
                }
                return h(t, [{
                    key: "apply",
                    value: function(t, e) {
                        if (this.target) {
                            var i = this.translateMix
                              , a = this.translateMix
                              , r = a &gt; 0
                              , s = this.data.spacingMode
                              , n = "length" == s
                              , h = this.data.rotateMode
                              , l = "tangent" == h
                              , o = "chainScale" == h
                              , u = []
                              , c = this.bones.length
                              , p = l ? c : c + 1
                              , _ = [];
                            this._spaces = _,
                            _[0] = this.position;
                            var d = this.spacing;
                            if (o || n)
                                for (var f = 0, y = p - 1; f &lt; y; ) {
                                    var m = this.bones[f]
                                      , g = m.length
                                      , v = g * m.resultMatrix.a
                                      , x = g * m.resultMatrix.b;
                                    g = Math.sqrt(v * v + x * x),
                                    o &amp;&amp; (u[f] = g),
                                    _[++f] = n ? Math.max(0, g + d) : d
                                }
                            else
                                for (f = 1; f &lt; p; f++)
                                    _[f] = d;
                            var M = this.computeWorldPositions(this.target, t, e, p, l, "percent" == this.data.positionMode, "percent" == s);
                            if (this._debugKey) {
                                for (f = 0; f &lt; M.length; f++)
                                    e.drawCircle(M[f++], M[f++], 5, "#00ff00");
                                var D = [];
                                for (f = 0; f &lt; M.length; f++)
                                    D.push(M[f++], M[f++]);
                                e.drawLines(0, 0, D, "#ff0000")
                            }
                            var k, I = M[0], A = M[1], S = this.data.offsetRotation, b = "chain" == h &amp;&amp; 0 == S;
                            for (f = 0,
                            k = 3; f &lt; c; f++,
                            k += 3) {
                                (m = this.bones[f]).resultMatrix.tx += (I - m.resultMatrix.tx) * i,
                                m.resultMatrix.ty += (A - m.resultMatrix.ty) * i;
                                var T = (v = M[k]) - I
                                  , C = (x = M[k + 1]) - A;
                                if (o &amp;&amp; 0 != (g = u[f])) {
                                    var F = (Math.sqrt(T * T + C * C) / g - 1) * a + 1;
                                    m.resultMatrix.a *= F,
                                    m.resultMatrix.c *= F
                                }
                                if (I = v,
                                A = x,
                                r) {
                                    var w, P, L, U = m.resultMatrix.a, B = m.resultMatrix.c, E = m.resultMatrix.b, R = m.resultMatrix.d;
                                    w = l ? M[k - 1] : 0 == _[f + 1] ? M[k + 2] : Math.atan2(C, T),
                                    w -= Math.atan2(E, U) - S / 180 * Math.PI,
                                    b &amp;&amp; (P = Math.cos(w),
                                    L = Math.sin(w),
                                    I += ((g = m.length) * (P * U - L * E) - T) * a,
                                    A += (g * (L * U + P * E) - C) * a),
                                    w &gt; Math.PI ? w -= 2 * Math.PI : w &lt; -Math.PI &amp;&amp; (w += 2 * Math.PI),
                                    w *= a,
                                    P = Math.cos(w),
                                    L = Math.sin(w),
                                    m.resultMatrix.a = P * U - L * E,
                                    m.resultMatrix.c = P * B - L * R,
                                    m.resultMatrix.b = L * U + P * E,
                                    m.resultMatrix.d = L * B + P * R
                                }
                            }
                        }
                    }
                }, {
                    key: "computeWorldVertices2",
                    value: function(e, i, a, r, s, n) {
                        var h, l, o, u = e.currDisplayData.bones, c = e.currDisplayData.weights, p = e.currDisplayData.triangles, _ = 0, d = 0, f = 0, y = 0, m = 0, g = 0, v = 0, x = 0, M = 0, D = 0;
                        if (null != u) {
                            for (_ = 0; _ &lt; a; _ += 2)
                                d += (y = u[d]) + 1,
                                f += y;
                            var k = i;
                            for (m = n,
                            g = 3 * f; m &lt; r; m += 2) {
                                for (v = 0,
                                x = 0,
                                y = u[d++],
                                y += d; d &lt; y; d++,
                                g += 3) {
                                    h = k[u[d]].resultMatrix,
                                    M = c[g],
                                    D = c[g + 1];
                                    var I = c[g + 2];
                                    v += (M * h.a + D * h.c + h.tx) * I,
                                    x += (M * h.b + D * h.d + h.ty) * I
                                }
                                s[m] = v,
                                s[m + 1] = x
                            }
                        } else {
                            var A, S;
                            if (p || (p = c),
                            e.deformData &amp;&amp; (p = e.deformData),
                            A = e.parent,
                            i)
                                for (o = i.length,
                                _ = 0; _ &lt; o; _++)
                                    if (i[_].name == A) {
                                        l = i[_];
                                        break
                                    }
                            l &amp;&amp; (S = l.resultMatrix),
                            S || (S = t._tempMt);
                            var b = S.tx
                              , T = S.ty
                              , C = S.a
                              , F = S.b
                              , w = S.c
                              , P = S.d;
                            for (l &amp;&amp; (P *= l.d),
                            d = a,
                            m = n; m &lt; r; d += 2,
                            m += 2)
                                M = p[d],
                                D = p[d + 1],
                                s[m] = M * C + D * F + b,
                                s[m + 1] = -(M * w + D * P + T)
                        }
                    }
                }, {
                    key: "computeWorldPositions",
                    value: function(t, e, i, a, r, s, n) {
                        t.currDisplayData.bones,
                        t.currDisplayData.weights,
                        t.currDisplayData.triangles;
                        var h, l, o, u, c, p, _, d, f = [], y = 0, m = t.currDisplayData.verLen, g = this.position, v = this._spaces, x = [], M = m / 6, D = -1;
                        if (M--,
                        m -= 4,
                        this.computeWorldVertices2(t, e, 2, m, f, 0),
                        this._debugKey)
                            for (y = 0; y &lt; f.length; )
                                i.drawCircle(f[y++], f[y++], 10, "#ff0000");
                        h = f,
                        this._curves.length = M;
                        var k = this._curves;
                        l = 0;
                        var I, A, S, b, T, C, F, w, P, L = h[0], U = h[1], B = 0, E = 0, R = 0, N = 0, O = 0, V = 0;
                        for (y = 0,
                        P = 2; y &lt; M; y++,
                        P += 6)
                            T = 2 * (I = .1875 * (L - 2 * (B = h[P]) + (R = h[P + 2]))) + (S = .09375 * (3 * (B - R) - L + (O = h[P + 4]))),
                            C = 2 * (A = .1875 * (U - 2 * (E = h[P + 1]) + (N = h[P + 3]))) + (b = .09375 * (3 * (E - N) - U + (V = h[P + 5]))),
                            F = .75 * (B - L) + I + .16666667 * S,
                            w = .75 * (E - U) + A + .16666667 * b,
                            l += Math.sqrt(F * F + w * w),
                            F += T,
                            w += C,
                            T += S,
                            C += b,
                            l += Math.sqrt(F * F + w * w),
                            F += T,
                            w += C,
                            l += Math.sqrt(F * F + w * w),
                            F += T + S,
                            w += C + b,
                            l += Math.sqrt(F * F + w * w),
                            k[y] = l,
                            L = O,
                            U = V;
                        if (s &amp;&amp; (g *= l),
                        n)
                            for (y = 0; y &lt; a; y++)
                                v[y] *= l;
                        var Y, K = this._segments, X = 0;
                        for (y = 0,
                        o = 0,
                        u = 0,
                        Y = 0; y &lt; a; y++,
                        o += 3)
                            if ((c = g += p = v[y]) &lt; 0)
                                this.addBeforePosition(c, h, 0, x, o);
                            else if (c &gt; l)
                                this.addAfterPosition(c - l, h, m - 4, x, o);
                            else {
                                for (; ; u++)
                                    if (!(c &gt; (d = k[u]))) {
                                        0 == u ? c /= d : c = (c - (_ = k[u - 1])) / (d - _);
                                        break
                                    }
                                if (u != D) {
                                    D = u;
                                    var W = 6 * u;
                                    for (T = 2 * (I = .03 * ((L = h[W]) - 2 * (B = h[W + 2]) + (R = h[W + 4]))) + (S = .006 * (3 * (B - R) - L + (O = h[W + 6]))),
                                    C = 2 * (A = .03 * ((U = h[W + 1]) - 2 * (E = h[W + 3]) + (N = h[W + 5]))) + (b = .006 * (3 * (E - N) - U + (V = h[W + 7]))),
                                    F = .3 * (B - L) + I + .16666667 * S,
                                    w = .3 * (E - U) + A + .16666667 * b,
                                    X = Math.sqrt(F * F + w * w),
                                    K[0] = X,
                                    W = 1; W &lt; 8; W++)
                                        F += T,
                                        w += C,
                                        T += S,
                                        C += b,
                                        X += Math.sqrt(F * F + w * w),
                                        K[W] = X;
                                    F += T,
                                    w += C,
                                    X += Math.sqrt(F * F + w * w),
                                    K[8] = X,
                                    F += T + S,
                                    w += C + b,
                                    X += Math.sqrt(F * F + w * w),
                                    K[9] = X,
                                    Y = 0
                                }
                                for (c *= X; ; Y++)
                                    if (!(c &gt; (d = K[Y]))) {
                                        0 == Y ? c /= d : c = Y + (c - (_ = K[Y - 1])) / (d - _);
                                        break
                                    }
                                this.addCurvePosition(.1 * c, L, U, B, E, R, N, O, V, x, o, r || y &gt; 0 &amp;&amp; 0 == p)
                            }
                        return x
                    }
                }, {
                    key: "addBeforePosition",
                    value: function(t, e, i, a, r) {
                        var s = e[i]
                          , n = e[i + 1]
                          , h = e[i + 2] - s
                          , l = e[i + 3] - n
                          , o = Math.atan2(l, h);
                        a[r] = s + t * Math.cos(o),
                        a[r + 1] = n + t * Math.sin(o),
                        a[r + 2] = o
                    }
                }, {
                    key: "addAfterPosition",
                    value: function(t, e, i, a, r) {
                        var s = e[i + 2]
                          , n = e[i + 3]
                          , h = s - e[i]
                          , l = n - e[i + 1]
                          , o = Math.atan2(l, h);
                        a[r] = s + t * Math.cos(o),
                        a[r + 1] = n + t * Math.sin(o),
                        a[r + 2] = o
                    }
                }, {
                    key: "addCurvePosition",
                    value: function(t, e, i, a, r, s, n, h, l, o, u, c) {
                        0 == t &amp;&amp; (t = 1e-4);
                        var p = t * t
                          , _ = p * t
                          , d = 1 - t
                          , f = d * d
                          , y = f * d
                          , m = d * t
                          , g = 3 * m
                          , v = d * g
                          , x = g * t
                          , M = e * y + a * v + s * x + h * _
                          , D = i * y + r * v + n * x + l * _;
                        o[u] = M,
                        o[u + 1] = D,
                        o[u + 2] = c ? Math.atan2(D - (i * f + r * m * 2 + n * p), M - (e * f + a * m * 2 + s * p)) : 0
                    }
                }]),
                t
            }();
            L.BEFORE = -2,
            L.AFTER = -3,
            L._tempMt = new n.Matrix;
            var U = function t() {
                l(this, t),
                this.bones = []
            }
              , B = function() {
                function t(e, i) {
                    var a, r;
                    for (l(this, t),
                    this._temp = [],
                    this._data = e,
                    null == this._bones &amp;&amp; (this._bones = []),
                    this.target = i[e.targetIndex],
                    a = 0,
                    r = e.boneIndexs.length; a &lt; r; a++)
                        this._bones.push(i[e.boneIndexs[a]]);
                    this.rotateMix = e.rotateMix,
                    this.translateMix = e.translateMix,
                    this.scaleMix = e.scaleMix,
                    this.shearMix = e.shearMix
                }
                return h(t, [{
                    key: "apply",
                    value: function() {
                        for (var t, e = this.target.resultMatrix.a, i = this.target.resultMatrix.b, a = this.target.resultMatrix.c, r = this.target.resultMatrix.d, s = 0, n = this._bones.length; s &lt; n; s++) {
                            if (t = this._bones[s],
                            this.rotateMix &gt; 0) {
                                var h = t.resultMatrix.a
                                  , l = t.resultMatrix.b
                                  , o = t.resultMatrix.c
                                  , u = t.resultMatrix.d
                                  , c = Math.atan2(a, e) - Math.atan2(o, h) + this._data.offsetRotation * Math.PI / 180;
                                c &gt; Math.PI ? c -= 2 * Math.PI : c &lt; -Math.PI &amp;&amp; (c += 2 * Math.PI),
                                c *= this.rotateMix;
                                var p = Math.cos(c)
                                  , _ = Math.sin(c);
                                t.resultMatrix.a = p * h - _ * o,
                                t.resultMatrix.b = p * l - _ * u,
                                t.resultMatrix.c = _ * h + p * o,
                                t.resultMatrix.d = _ * l + p * u
                            }
                            if (this.translateMix &amp;&amp; (this._temp[0] = this._data.offsetX,
                            this._temp[1] = this._data.offsetY,
                            this.target.localToWorld(this._temp),
                            t.resultMatrix.tx += (this._temp[0] - t.resultMatrix.tx) * this.translateMix,
                            t.resultMatrix.ty += (this._temp[1] - t.resultMatrix.ty) * this.translateMix,
                            t.updateChild()),
                            this.scaleMix &gt; 0) {
                                var d = Math.sqrt(t.resultMatrix.a * t.resultMatrix.a + t.resultMatrix.c * t.resultMatrix.c)
                                  , f = Math.sqrt(e * e + a * a)
                                  , y = d &gt; 1e-5 ? (d + (f - d + this._data.offsetScaleX) * this.scaleMix) / d : 0;
                                t.resultMatrix.a *= y,
                                t.resultMatrix.c *= y,
                                d = Math.sqrt(t.resultMatrix.b * t.resultMatrix.b + t.resultMatrix.d * t.resultMatrix.d),
                                f = Math.sqrt(i * i + r * r),
                                y = d &gt; 1e-5 ? (d + (f - d + this._data.offsetScaleY) * this.scaleMix) / d : 0,
                                t.resultMatrix.b *= y,
                                t.resultMatrix.d *= y
                            }
                            if (this.shearMix &gt; 0) {
                                l = t.resultMatrix.b,
                                u = t.resultMatrix.d;
                                var m = Math.atan2(u, l);
                                (c = Math.atan2(r, i) - Math.atan2(a, e) - (m - Math.atan2(t.resultMatrix.c, t.resultMatrix.a))) &gt; Math.PI ? c -= 2 * Math.PI : c &lt; -Math.PI &amp;&amp; (c += 2 * Math.PI),
                                c = m + (c + this._data.offsetShearY * Math.PI / 180) * this.shearMix,
                                y = Math.sqrt(l * l + u * u),
                                t.resultMatrix.b = Math.cos(c) * y,
                                t.resultMatrix.d = Math.sin(c) * y
                            }
                        }
                    }
                }]),
                t
            }()
              , E = function(t) {
                function a() {
                    var t, e = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : null, s = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] ? arguments[1] : 0;
                    return l(this, a),
                    (t = i(this, r(a).call(this)))._boneMatrixArray = [],
                    t._lastTime = 0,
                    t._currAniIndex = -1,
                    t._pause = !0,
                    t._aniClipIndex = -1,
                    t._clipIndex = -1,
                    t._skinIndex = 0,
                    t._skinName = "default",
                    t._aniMode = 0,
                    t._index = -1,
                    t._total = -1,
                    t._indexControl = !1,
                    t._eventIndex = 0,
                    t._drawOrderIndex = 0,
                    t._drawOrder = null,
                    t._lastAniClipIndex = -1,
                    t._lastUpdateAniClipIndex = -1,
                    t._playAudio = !0,
                    t._soundChannelArr = [],
                    e &amp;&amp; t.init(e, s),
                    t
                }
                return s(a, t),
                h(a, [{
                    key: "init",
                    value: function(t) {
                        var e, i, a, r, s = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] ? arguments[1] : 0, h = 0;
                        if (1 == s)
                            for (this._graphicsCache = [],
                            h = 0,
                            e = t.getAnimationCount(); h &lt; e; h++)
                                this._graphicsCache.push([]);
                        if (this._yReverseMatrix = t.yReverseMatrix,
                        this._aniMode = s,
                        this._templet = t,
                        this._templet._addReference(1),
                        this._player = new y,
                        this._player.cacheFrameRate = t.rate,
                        this._player.templet = t,
                        this._player.play(),
                        this._parseSrcBoneMatrix(),
                        this._boneList = t.mBoneArr,
                        this._rootBone = t.mRootBone,
                        this._aniSectionDic = t.aniSectionDic,
                        t.ikArr.length &gt; 0)
                            for (this._ikArr = [],
                            h = 0,
                            e = t.ikArr.length; h &lt; e; h++)
                                this._ikArr.push(new w(t.ikArr[h],this._boneList));
                        if (t.pathArr.length &gt; 0)
                            for (null == this._pathDic &amp;&amp; (this._pathDic = {}),
                            h = 0,
                            e = t.pathArr.length; h &lt; e; h++)
                                i = t.pathArr[h],
                                a = new L(i,this._boneList),
                                (r = this._boneSlotDic[i.name]) &amp;&amp; ((a = new L(i,this._boneList)).target = r),
                                this._pathDic[i.name] = a;
                        if (t.tfArr.length &gt; 0)
                            for (this._tfArr = [],
                            h = 0,
                            e = t.tfArr.length; h &lt; e; h++)
                                this._tfArr.push(new B(t.tfArr[h],this._boneList));
                        if (t.skinDataArray.length &gt; 0) {
                            var l = this._templet.skinDataArray[this._skinIndex];
                            this._skinName = l.name
                        }
                        this._player.on(n.Event.PLAYED, this, this._onPlay),
                        this._player.on(n.Event.STOPPED, this, this._onStop),
                        this._player.on(n.Event.PAUSED, this, this._onPause)
                    }
                }, {
                    key: "load",
                    value: function(t) {
                        var e = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] ? arguments[1] : null
                          , i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 0;
                        this._aniPath = t,
                        this._complete = e,
                        this._loadAniMode = i,
                        n.ILaya.loader.load([{
                            url: t,
                            type: n.ILaya.Loader.BUFFER
                        }], n.Handler.create(this, this._onLoaded))
                    }
                }, {
                    key: "_onLoaded",
                    value: function() {
                        var t, e = n.ILaya.Loader.getRes(this._aniPath);
                        null != e &amp;&amp; (null == o.Templet.TEMPLET_DICTIONARY &amp;&amp; (o.Templet.TEMPLET_DICTIONARY = {}),
                        (t = o.Templet.TEMPLET_DICTIONARY[this._aniPath]) ? t.isParseFail ? this._parseFail() : t.isParserComplete ? this._parseComplete() : (t.on(n.Event.COMPLETE, this, this._parseComplete),
                        t.on(n.Event.ERROR, this, this._parseFail)) : ((t = new o.Templet)._setCreateURL(this._aniPath),
                        o.Templet.TEMPLET_DICTIONARY[this._aniPath] = t,
                        t.on(n.Event.COMPLETE, this, this._parseComplete),
                        t.on(n.Event.ERROR, this, this._parseFail),
                        t.isParserComplete = !1,
                        t.parseData(null, e)))
                    }
                }, {
                    key: "_parseComplete",
                    value: function() {
                        var t = o.Templet.TEMPLET_DICTIONARY[this._aniPath];
                        t &amp;&amp; (this.init(t, this._loadAniMode),
                        this.play(0, !0)),
                        this._complete &amp;&amp; this._complete.runWith(this)
                    }
                }, {
                    key: "_parseFail",
                    value: function() {
                        console.log("[Error]:" + this._aniPath + "è§£æžå¤±è´¥")
                    }
                }, {
                    key: "_onPlay",
                    value: function() {
                        this.event(n.Event.PLAYED)
                    }
                }, {
                    key: "_onStop",
                    value: function() {
                        var t, e = this._templet.eventAniArr[this._aniClipIndex];
                        if (e &amp;&amp; this._eventIndex &lt; e.length)
                            for (; this._eventIndex &lt; e.length; this._eventIndex++)
                                (t = e[this._eventIndex]).time &gt;= this._player.playStart &amp;&amp; t.time &lt;= this._player.playEnd &amp;&amp; this.event(n.Event.LABEL, t);
                        this._drawOrder = null,
                        this.event(n.Event.STOPPED)
                    }
                }, {
                    key: "_onPause",
                    value: function() {
                        this.event(n.Event.PAUSED)
                    }
                }, {
                    key: "_parseSrcBoneMatrix",
                    value: function() {
                        var t = 0
                          , e = 0;
                        for (e = this._templet.srcBoneMatrixArr.length,
                        t = 0; t &lt; e; t++)
                            this._boneMatrixArray.push(new n.Matrix);
                        if (0 == this._aniMode)
                            this._boneSlotDic = this._templet.boneSlotDic,
                            this._bindBoneBoneSlotDic = this._templet.bindBoneBoneSlotDic,
                            this._boneSlotArray = this._templet.boneSlotArray;
                        else {
                            null == this._boneSlotDic &amp;&amp; (this._boneSlotDic = {}),
                            null == this._bindBoneBoneSlotDic &amp;&amp; (this._bindBoneBoneSlotDic = {}),
                            null == this._boneSlotArray &amp;&amp; (this._boneSlotArray = []);
                            var i, a, r = this._templet.boneSlotArray;
                            for (t = 0,
                            e = r.length; t &lt; e; t++)
                                i = r[t],
                                null == (a = this._bindBoneBoneSlotDic[i.parent]) &amp;&amp; (this._bindBoneBoneSlotDic[i.parent] = a = []),
                                this._boneSlotDic[i.name] = i = i.copy(),
                                a.push(i),
                                this._boneSlotArray.push(i)
                        }
                    }
                }, {
                    key: "_emitMissedEvents",
                    value: function(t, e) {
                        var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 0
                          , a = this._templet.eventAniArr
                          , r = a[this._player.currentAnimationClipIndex];
                        if (r) {
                            var s, h, l = 0;
                            for (s = r.length,
                            l = i; l &lt; s; l++)
                                (h = r[l]).time &gt;= this._player.playStart &amp;&amp; h.time &lt;= this._player.playEnd &amp;&amp; this.event(n.Event.LABEL, h)
                        }
                    }
                }, {
                    key: "_update",
                    value: function() {
                        var t = !(arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0]) || arguments[0];
                        if (!(this._pause || t &amp;&amp; this._indexControl)) {
                            var e = this.timer.currTimer
                              , i = this._player.currentKeyframeIndex
                              , a = e - this._lastTime;
                            if (t ? this._player._update(a) : i = -1,
                            this._lastTime = e,
                            this._player &amp;&amp; (this._index = this._clipIndex = this._player.currentKeyframeIndex,
                            !(this._index &lt; 0 || a &gt; 0 &amp;&amp; this._clipIndex == i &amp;&amp; this._lastUpdateAniClipIndex == this._aniClipIndex))) {
                                this._lastUpdateAniClipIndex = this._aniClipIndex,
                                i &gt; this._clipIndex &amp;&amp; 0 != this._eventIndex &amp;&amp; (this._emitMissedEvents(this._player.playStart, this._player.playEnd, this._eventIndex),
                                this._eventIndex = 0);
                                var r, s, h = this._templet.eventAniArr[this._aniClipIndex];
                                if (h &amp;&amp; this._eventIndex &lt; h.length) {
                                    var l = h[this._eventIndex];
                                    l.time &gt;= this._player.playStart &amp;&amp; l.time &lt;= this._player.playEnd ? this._player.currentPlayTime &gt;= l.time &amp;&amp; (this.event(n.Event.LABEL, l),
                                    this._eventIndex++,
                                    this._playAudio &amp;&amp; l.audioValue &amp;&amp; "null" !== l.audioValue &amp;&amp; "undefined" !== l.audioValue &amp;&amp; (r = n.SoundManager.playSound(this._player.templet._path + l.audioValue, 1, n.Handler.create(this, this._onAniSoundStoped)),
                                    n.SoundManager.playbackRate = this._player.playbackRate,
                                    r &amp;&amp; this._soundChannelArr.push(r))) : l.time &lt; this._player.playStart &amp;&amp; this._playAudio &amp;&amp; l.audioValue &amp;&amp; "null" !== l.audioValue &amp;&amp; "undefined" !== l.audioValue ? (this._eventIndex++,
                                    r = n.SoundManager.playSound(this._player.templet._path + l.audioValue, 1, n.Handler.create(this, this._onAniSoundStoped), null, (this._player.currentPlayTime - l.time) / 1e3),
                                    n.SoundManager.playbackRate = this._player.playbackRate,
                                    r &amp;&amp; this._soundChannelArr.push(r)) : this._eventIndex++
                                }
                                0 == this._aniMode ? (s = this._templet.getGrahicsDataWithCache(this._aniClipIndex, this._clipIndex) || this._createGraphics()) &amp;&amp; this.graphics != s &amp;&amp; (this.graphics = s) : 1 == this._aniMode ? (s = this._getGrahicsDataWithCache(this._aniClipIndex, this._clipIndex) || this._createGraphics()) &amp;&amp; this.graphics != s &amp;&amp; (this.graphics = s) : this._createGraphics()
                            }
                        }
                    }
                }, {
                    key: "_onAniSoundStoped",
                    value: function(t) {
                        for (var e, i = this._soundChannelArr.length, a = 0; a &lt; i; a++)
                            ((e = this._soundChannelArr[a]).isStopped || t) &amp;&amp; (!e.isStopped &amp;&amp; e.stop(),
                            this._soundChannelArr.splice(a, 1),
                            i--,
                            a--)
                    }
                }, {
                    key: "_createGraphics",
                    value: function() {
                        var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : -1;
                        -1 == t &amp;&amp; (t = this._clipIndex);
                        var e, i = t * this._player.cacheFrameRateInterval, a = this._templet.drawOrderAniArr, r = a[this._aniClipIndex];
                        if (r &amp;&amp; r.length &gt; 0)
                            for (this._drawOrderIndex = 0,
                            e = r[this._drawOrderIndex]; i &gt;= e.time &amp;&amp; (this._drawOrder = e.drawOrder,
                            this._drawOrderIndex++,
                            !(this._drawOrderIndex &gt;= r.length)); )
                                e = r[this._drawOrderIndex];
                        0 == this._aniMode || 1 == this._aniMode ? this.graphics = v.create() : this.graphics instanceof v ? this.graphics.clear() : this.graphics = v.create();
                        var s = this.graphics
                          , h = this._templet.getNodes(this._aniClipIndex)
                          , l = 0 == this._player.state;
                        this._templet.getOriginalData(this._aniClipIndex, this._curOriginalData, null, t, l ? i + this._player.cacheFrameRateInterval : i);
                        var o, u, c, p, _ = this._aniSectionDic[this._aniClipIndex], d = 0, f = 0, y = 0, m = 0, g = 0, x = this._templet.srcBoneMatrixArr.length, M = this._curOriginalData;
                        for (f = 0,
                        g = _[0]; f &lt; x; f++) {
                            var D = (p = this._boneList[f]).resultTransform;
                            c = this._templet.srcBoneMatrixArr[f],
                            D.scX = c.scX * M[d++],
                            D.skX = c.skX + M[d++],
                            D.skY = c.skY + M[d++],
                            D.scY = c.scY * M[d++],
                            D.x = c.x + M[d++],
                            D.y = c.y + M[d++],
                            8 === this._templet.tMatrixDataLen &amp;&amp; (D.skewX = c.skewX + M[d++],
                            D.skewY = c.skewY + M[d++])
                        }
                        var k, I = {}, A = {};
                        for (g += _[1]; f &lt; g; f++)
                            I[(k = h[f]).name] = M[d++],
                            A[k.name] = M[d++],
                            d += 4;
                        var S, b, T = {}, C = {};
                        for (g += _[2]; f &lt; g; f++)
                            T[(k = h[f]).name] = M[d++],
                            C[k.name] = M[d++],
                            d += 4;
                        if (this._pathDic)
                            for (g += _[3]; f &lt; g; f++)
                                if (k = h[f],
                                S = this._pathDic[k.name]) {
                                    var F = new n.Byte(k.extenData);
                                    switch (F.getByte()) {
                                    case 1:
                                        S.position = M[d++];
                                        break;
                                    case 2:
                                        S.spacing = M[d++];
                                        break;
                                    case 3:
                                        S.rotateMix = M[d++],
                                        S.translateMix = M[d++]
                                    }
                                }
                        if (this._rootBone.update(this._yReverseMatrix || n.Matrix.TEMP.identity()),
                        this._ikArr)
                            for (f = 0,
                            g = this._ikArr.length; f &lt; g; f++)
                                (b = this._ikArr[f]).name in T &amp;&amp; (b.bendDirection = T[b.name]),
                                b.name in C &amp;&amp; (b.mix = C[b.name]),
                                b.apply();
                        if (this._pathDic)
                            for (var w in this._pathDic)
                                (S = this._pathDic[w]).apply(this._boneList, s);
                        if (this._tfArr)
                            for (f = 0,
                            m = this._tfArr.length; f &lt; m; f++)
                                this._tfArr[f].apply();
                        for (f = 0,
                        m = this._boneList.length; f &lt; m; f++)
                            if (p = this._boneList[f],
                            u = this._bindBoneBoneSlotDic[p.name],
                            p.resultMatrix.copyTo(this._boneMatrixArray[f]),
                            u)
                                for (y = 0,
                                g = u.length; y &lt; g; y++)
                                    (o = u[y]) &amp;&amp; o.setParentMatrix(p.resultMatrix);
                        var P, L, U, B, E = {}, R = this._templet.deformAniArr;
                        if (R &amp;&amp; R.length &gt; 0) {
                            if (this._lastAniClipIndex != this._aniClipIndex)
                                for (this._lastAniClipIndex = this._aniClipIndex,
                                f = 0,
                                g = this._boneSlotArray.length; f &lt; g; f++)
                                    (o = this._boneSlotArray[f]).deformData = null;
                            var N, O = R[this._aniClipIndex];
                            for (N in P = O.default,
                            this._setDeform(P, E, this._boneSlotArray, i),
                            O)
                                "default" != N &amp;&amp; N != this._skinName &amp;&amp; (P = O[N],
                                this._setDeform(P, E, this._boneSlotArray, i));
                            P = O[this._skinName],
                            this._setDeform(P, E, this._boneSlotArray, i)
                        }
                        if (this._drawOrder)
                            for (f = 0,
                            g = this._drawOrder.length; f &lt; g; f++)
                                L = I[(o = this._boneSlotArray[this._drawOrder[f]]).name],
                                U = A[o.name],
                                isNaN(L) || -2 == L || (this._templet.attachmentNames ? o.showDisplayByName(this._templet.attachmentNames[L]) : o.showDisplayByIndex(L)),
                                E[this._drawOrder[f]] ? (B = E[this._drawOrder[f]],
                                o.currDisplayData &amp;&amp; B[o.currDisplayData.attachmentName] ? o.deformData = B[o.currDisplayData.attachmentName] : o.deformData = null) : o.deformData = null,
                                isNaN(U) ? o.draw(s, this._boneMatrixArray, 2 == this._aniMode) : o.draw(s, this._boneMatrixArray, 2 == this._aniMode, U);
                        else
                            for (f = 0,
                            g = this._boneSlotArray.length; f &lt; g; f++)
                                L = I[(o = this._boneSlotArray[f]).name],
                                U = A[o.name],
                                isNaN(L) || -2 == L || (this._templet.attachmentNames ? o.showDisplayByName(this._templet.attachmentNames[L]) : o.showDisplayByIndex(L)),
                                E[f] ? (B = E[f],
                                o.currDisplayData &amp;&amp; B[o.currDisplayData.attachmentName] ? o.deformData = B[o.currDisplayData.attachmentName] : o.deformData = null) : o.deformData = null,
                                isNaN(U) ? o.draw(s, this._boneMatrixArray, 2 == this._aniMode) : o.draw(s, this._boneMatrixArray, 2 == this._aniMode, U);
                        return 0 == this._aniMode ? (this._templet.setGrahicsDataWithCache(this._aniClipIndex, t, s),
                        this._checkIsAllParsed(this._aniClipIndex)) : 1 == this._aniMode &amp;&amp; this._setGrahicsDataWithCache(this._aniClipIndex, t, s),
                        s
                    }
                }, {
                    key: "_checkIsAllParsed",
                    value: function(t) {
                        var e, i;
                        for (i = Math.floor(.01 + this._templet.getAniDuration(t) / 1e3 * this._player.cacheFrameRate),
                        e = 0; e &lt; i; e++)
                            if (!this._templet.getGrahicsDataWithCache(t, e))
                                return;
                        this._templet.getGrahicsDataWithCache(t, i) ? this._templet.deleteAniData(t) : this._createGraphics(i)
                    }
                }, {
                    key: "_setDeform",
                    value: function(t, e, i, a) {
                        var r, s, n, h, l, o;
                        if (t &amp;&amp; t)
                            for (h = 0,
                            l = t.deformSlotDataList.length; h &lt; l; h++)
                                for (r = t.deformSlotDataList[h],
                                o = 0; o &lt; r.deformSlotDisplayList.length; o++)
                                    n = i[(s = r.deformSlotDisplayList[o]).slotIndex],
                                    s.apply(a, n),
                                    e[s.slotIndex] || (e[s.slotIndex] = {}),
                                    e[s.slotIndex][s.attachment] = s.deformData
                    }
                }, {
                    key: "getAnimNum",
                    value: function() {
                        return this._templet.getAnimationCount()
                    }
                }, {
                    key: "getAniNameByIndex",
                    value: function(t) {
                        return this._templet.getAniNameByIndex(t)
                    }
                }, {
                    key: "getSlotByName",
                    value: function(t) {
                        return this._boneSlotDic[t]
                    }
                }, {
                    key: "showSkinByName",
                    value: function(t) {
                        var e = !(arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1]) || arguments[1];
                        this.showSkinByIndex(this._templet.getSkinIndexByName(t), e)
                    }
                }, {
                    key: "showSkinByIndex",
                    value: function(t) {
                        for (var e = !(arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1]) || arguments[1], i = 0; i &lt; this._boneSlotArray.length; i++)
                            this._boneSlotArray[i].showSlotData(null, e);
                        if (this._templet.showSkinByIndex(this._boneSlotDic, t, e)) {
                            var a = this._templet.skinDataArray[t];
                            this._skinIndex = t,
                            this._skinName = a.name
                        }
                        this._clearCache()
                    }
                }, {
                    key: "showSlotSkinByIndex",
                    value: function(t, e) {
                        if (0 != this._aniMode) {
                            var i = this.getSlotByName(t);
                            i &amp;&amp; i.showDisplayByIndex(e),
                            this._clearCache()
                        }
                    }
                }, {
                    key: "showSlotSkinByName",
                    value: function(t, e) {
                        if (0 != this._aniMode) {
                            var i = this.getSlotByName(t);
                            i &amp;&amp; i.showDisplayByName(e),
                            this._clearCache()
                        }
                    }
                }, {
                    key: "replaceSlotSkinName",
                    value: function(t, e, i) {
                        if (0 != this._aniMode) {
                            var a = this.getSlotByName(t);
                            a &amp;&amp; a.replaceDisplayByName(e, i),
                            this._clearCache()
                        }
                    }
                }, {
                    key: "replaceSlotSkinByIndex",
                    value: function(t, e, i) {
                        if (0 != this._aniMode) {
                            var a = this.getSlotByName(t);
                            a &amp;&amp; a.replaceDisplayByIndex(e, i),
                            this._clearCache()
                        }
                    }
                }, {
                    key: "setSlotSkin",
                    value: function(t, e) {
                        if (0 != this._aniMode) {
                            var i = this.getSlotByName(t);
                            i &amp;&amp; i.replaceSkin(e),
                            this._clearCache()
                        }
                    }
                }, {
                    key: "_clearCache",
                    value: function() {
                        if (1 == this._aniMode)
                            for (var t = 0, e = this._graphicsCache.length; t &lt; e; t++) {
                                for (var i = 0, a = this._graphicsCache[t].length; i &lt; a; i++) {
                                    var r = this._graphicsCache[t][i];
                                    r &amp;&amp; r != this.graphics &amp;&amp; v.recycle(r)
                                }
                                this._graphicsCache[t].length = 0
                            }
                    }
                }, {
                    key: "play",
                    value: function(t, e) {
                        var i = !(arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2]) || arguments[2]
                          , a = arguments.length &gt; 3 &amp;&amp; void 0 !== arguments[3] ? arguments[3] : 0
                          , r = arguments.length &gt; 4 &amp;&amp; void 0 !== arguments[4] ? arguments[4] : 0
                          , s = !(arguments.length &gt; 5 &amp;&amp; void 0 !== arguments[5]) || arguments[5]
                          , h = !(arguments.length &gt; 6 &amp;&amp; void 0 !== arguments[6]) || arguments[6];
                        this._playAudio = h,
                        this._indexControl = !1;
                        var l, o = -1;
                        if (l = e ? 2147483647 : 0,
                        "string" == typeof t)
                            for (var u = 0, c = this._templet.getAnimationCount(); u &lt; c; u++) {
                                var p = this._templet.getAnimation(u);
                                if (p &amp;&amp; t == p.name) {
                                    o = u;
                                    break
                                }
                            }
                        else
                            o = t;
                        o &gt; -1 &amp;&amp; o &lt; this.getAnimNum() &amp;&amp; (this._aniClipIndex = o,
                        (i || this._pause || this._currAniIndex != o) &amp;&amp; (this._currAniIndex = o,
                        this._curOriginalData = new Float32Array(this._templet.getTotalkeyframesLength(o)),
                        this._drawOrder = null,
                        this._eventIndex = 0,
                        this._player.play(o, this._player.playbackRate, l, a, r),
                        s &amp;&amp; this._templet.showSkinByIndex(this._boneSlotDic, this._skinIndex),
                        this._pause &amp;&amp; (this._pause = !1,
                        this._lastTime = n.ILaya.Browser.now(),
                        this.timer.frameLoop(1, this, this._update, null, !0)),
                        this._update()))
                    }
                }, {
                    key: "stop",
                    value: function() {
                        this._pause || (this._pause = !0,
                        this._player &amp;&amp; this._player.stop(!0),
                        this._soundChannelArr.length &gt; 0 &amp;&amp; this._onAniSoundStoped(!0),
                        this.timer.clear(this, this._update))
                    }
                }, {
                    key: "playbackRate",
                    value: function(t) {
                        this._player &amp;&amp; (this._player.playbackRate = t)
                    }
                }, {
                    key: "paused",
                    value: function() {
                        if (!this._pause) {
                            if (this._pause = !0,
                            this._player &amp;&amp; (this._player.paused = !0),
                            this._soundChannelArr.length &gt; 0)
                                for (var t, e = this._soundChannelArr.length, i = 0; i &lt; e; i++)
                                    (t = this._soundChannelArr[i]).isStopped || t.pause();
                            this.timer.clear(this, this._update)
                        }
                    }
                }, {
                    key: "resume",
                    value: function() {
                        if (this._indexControl = !1,
                        this._pause) {
                            if (this._pause = !1,
                            this._player &amp;&amp; (this._player.paused = !1),
                            this._soundChannelArr.length &gt; 0)
                                for (var t, e = this._soundChannelArr.length, i = 0; i &lt; e; i++)
                                    (t = this._soundChannelArr[i]).audioBuffer &amp;&amp; t.resume();
                            this._lastTime = n.ILaya.Browser.now(),
                            this.timer.frameLoop(1, this, this._update, null, !0)
                        }
                    }
                }, {
                    key: "_getGrahicsDataWithCache",
                    value: function(t, e) {
                        return this._graphicsCache[t][e]
                    }
                }, {
                    key: "_setGrahicsDataWithCache",
                    value: function(t, e, i) {
                        this._graphicsCache[t][e] = i
                    }
                }, {
                    key: "destroy",
                    value: function() {
                        var t = !(arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0]) || arguments[0];
                        e(r(a.prototype), "destroy", this).call(this, t),
                        this._templet._removeReference(1),
                        this._templet = null,
                        this._player &amp;&amp; this._player.offAll(),
                        this._player = null,
                        this._curOriginalData = null,
                        this._boneMatrixArray.length = 0,
                        this._lastTime = 0,
                        this.timer.clear(this, this._update),
                        this._soundChannelArr.length &gt; 0 &amp;&amp; this._onAniSoundStoped(!0)
                    }
                }, {
                    key: "url",
                    get: function() {
                        return this._aniPath
                    },
                    set: function(t) {
                        this.load(t)
                    }
                }, {
                    key: "index",
                    get: function() {
                        return this._index
                    },
                    set: function(t) {
                        this.player &amp;&amp; (this._index = t,
                        this._player.currentTime = 1e3 * this._index / this._player.cacheFrameRate,
                        this._indexControl = !0,
                        this._update(!1))
                    }
                }, {
                    key: "total",
                    get: function() {
                        return this._templet &amp;&amp; this._player ? this._total = Math.floor(this._templet.getAniDuration(this._player.currentAnimationClipIndex) / 1e3 * this._player.cacheFrameRate) : this._total = -1,
                        this._total
                    }
                }, {
                    key: "player",
                    get: function() {
                        return this._player
                    }
                }, {
                    key: "templet",
                    get: function() {
                        return this._templet
                    }
                }]),
                a
            }(n.Sprite);
            E.useSimpleMeshInCanvas = !1,
            o.Skeleton = E,
            n.ILaya.regClass(E),
            n.ClassUtils.regClass("laya.ani.bone.Skeleton", E),
            n.ClassUtils.regClass("Laya.Skeleton", E);
            var R = function t() {
                l(this, t),
                this.slotArr = []
            }
              , N = function() {
                function t() {
                    l(this, t)
                }
                return h(t, [{
                    key: "createTexture",
                    value: function(t) {
                        return this.texture || (this.texture = new n.Texture(t.bitmap,this.uvs),
                        this.uvs[0] &gt; this.uvs[4] &amp;&amp; this.uvs[1] &gt; this.uvs[5] ? (this.texture.width = t.height,
                        this.texture.height = t.width,
                        this.texture.offsetX = -t.offsetX,
                        this.texture.offsetY = -t.offsetY,
                        this.texture.sourceWidth = t.sourceHeight,
                        this.texture.sourceHeight = t.sourceWidth) : (this.texture.width = t.width,
                        this.texture.height = t.height,
                        this.texture.offsetX = -t.offsetX,
                        this.texture.offsetY = -t.offsetY,
                        this.texture.sourceWidth = t.sourceWidth,
                        this.texture.sourceHeight = t.sourceHeight)),
                        this.texture
                    }
                }, {
                    key: "destory",
                    value: function() {
                        this.texture &amp;&amp; this.texture.destroy()
                    }
                }]),
                t
            }()
              , O = function() {
                function t() {
                    l(this, t),
                    this.displayArr = []
                }
                return h(t, [{
                    key: "getDisplayByName",
                    value: function(t) {
                        for (var e = 0, i = this.displayArr.length; e &lt; i; e++)
                            if (this.displayArr[e].attachmentName == t)
                                return e;
                        return -1
                    }
                }]),
                t
            }()
              , V = function t() {
                l(this, t),
                this.boneIndexs = []
            }
              , Y = function(t) {
                function a() {
                    var t;
                    return l(this, a),
                    (t = i(this, r(a).apply(this, arguments)))._graphicsCache = [],
                    t.srcBoneMatrixArr = [],
                    t.ikArr = [],
                    t.tfArr = [],
                    t.pathArr = [],
                    t.boneSlotDic = {},
                    t.bindBoneBoneSlotDic = {},
                    t.boneSlotArray = [],
                    t.skinDataArray = [],
                    t.skinDic = {},
                    t.subTextureDic = {},
                    t.isParseFail = !1,
                    t.drawOrderAniArr = [],
                    t.eventAniArr = [],
                    t.attachmentNames = null,
                    t.deformAniArr = [],
                    t.skinSlotDisplayDataArr = [],
                    t._isParseAudio = !1,
                    t._isDestroyed = !1,
                    t._rate = 30,
                    t.isParserComplete = !1,
                    t.aniSectionDic = {},
                    t._textureDic = {},
                    t.mBoneArr = [],
                    t
                }
                return s(a, t),
                h(a, [{
                    key: "loadAni",
                    value: function(t) {
                        this._skBufferUrl = t,
                        n.ILaya.loader.load(t, n.Handler.create(this, this.onComplete), null, n.ILaya.Loader.BUFFER)
                    }
                }, {
                    key: "onComplete",
                    value: function() {
                        if (this._isDestroyed)
                            this.destroy();
                        else {
                            var t = n.ILaya.Loader.getRes(this._skBufferUrl);
                            t ? (this._path = this._skBufferUrl.slice(0, this._skBufferUrl.lastIndexOf("/")) + "/",
                            this.parseData(null, t)) : this.event(n.Event.ERROR, "load failed:" + this._skBufferUrl)
                        }
                    }
                }, {
                    key: "parseData",
                    value: function(t, e) {
                        var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 30;
                        if (!this._path) {
                            var a = this._relativeUrl || this.url;
                            if (a) {
                                var r = a.lastIndexOf("/");
                                this._path = r &gt; 0 ? a.slice(0, r) + "/" : ""
                            }
                        }
                        this._mainTexture = t,
                        this._rate = i,
                        this.parse(e)
                    }
                }, {
                    key: "buildArmature",
                    value: function() {
                        var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : 0;
                        return new E(this,t)
                    }
                }, {
                    key: "parse",
                    value: function(t) {
                        e(r(a.prototype), "parse", this).call(this, t),
                        this.event(n.Event.LOADED, this),
                        this._aniVersion === a.LAYA_ANIMATION_VISION ? this._isParseAudio = !0 : this._aniVersion != a.LAYA_ANIMATION_160_VISION &amp;&amp; console.log("[Error] ç‰ˆæœ¬ä¸ä¸€è‡´ï¼Œè¯·ä½¿ç”¨IDEç‰ˆæœ¬é…å¥—çš„é‡æ–°å¯¼å‡º" + this._aniVersion + "-&gt;" + a.LAYA_ANIMATION_VISION),
                        this._mainTexture ? this._parsePublicExtData() : this._parseTexturePath()
                    }
                }, {
                    key: "_parseTexturePath",
                    value: function() {
                        if (this._isDestroyed)
                            this.destroy();
                        else {
                            var t = 0;
                            this._loadList = [];
                            var e, i = new n.Byte(this.getPublicExtData()), a = i.getInt32(), r = i.readUTFString(), s = r.split("\n");
                            for (t = 0; t &lt; a; t++)
                                e = this._path + s[2 * t],
                                r = s[2 * t + 1],
                                i.getFloat32(),
                                i.getFloat32(),
                                i.getFloat32(),
                                i.getFloat32(),
                                i.getFloat32(),
                                i.getFloat32(),
                                i.getFloat32(),
                                i.getFloat32(),
                                -1 == this._loadList.indexOf(e) &amp;&amp; this._loadList.push(e);
                            n.ILaya.loader.load(this._loadList, n.Handler.create(this, this._textureComplete))
                        }
                    }
                }, {
                    key: "_textureComplete",
                    value: function() {
                        for (var t, e = 0, i = this._loadList.length; e &lt; i; e++)
                            t = this._loadList[e],
                            this._textureDic[t] = n.ILaya.Loader.getRes(t);
                        this._parsePublicExtData()
                    }
                }, {
                    key: "_parsePublicExtData",
                    value: function() {
                        var t, e = 0, i = 0, a = 0, r = 0, s = 0;
                        for (e = 0,
                        s = this.getAnimationCount(); e &lt; s; e++)
                            this._graphicsCache.push([]);
                        t = "Dragon" != this._aniClassName;
                        var h, l, o = new n.Byte(this.getPublicExtData()), u = 0, c = 0, p = 0, _ = 0, d = 0, f = 0, y = 0, m = 0, g = 0, v = o.getInt32(), D = o.readUTFString(), k = D.split("\n");
                        for (e = 0; e &lt; v; e++) {
                            if (h = this._mainTexture,
                            l = this._path + k[2 * e],
                            D = k[2 * e + 1],
                            null == this._mainTexture &amp;&amp; (h = this._textureDic[l]),
                            !h)
                                return this.event(n.Event.ERROR, this),
                                void (this.isParseFail = !0);
                            u = o.getFloat32(),
                            c = o.getFloat32(),
                            p = o.getFloat32(),
                            _ = o.getFloat32(),
                            g = o.getFloat32(),
                            d = isNaN(g) ? 0 : g,
                            g = o.getFloat32(),
                            f = isNaN(g) ? 0 : g,
                            g = o.getFloat32(),
                            y = isNaN(g) ? p : g,
                            g = o.getFloat32(),
                            m = isNaN(g) ? _ : g,
                            this.subTextureDic[D] = n.Texture.create(h, u, c, p, _, -d, -f, y, m)
                        }
                        this._mainTexture = h;
                        var I, w, L, B, E, Y = o.getUint16();
                        for (e = 0; e &lt; Y; e++)
                            (I = []).push(o.getUint16()),
                            I.push(o.getUint16()),
                            I.push(o.getUint16()),
                            I.push(o.getUint16()),
                            this.aniSectionDic[e] = I;
                        var K, X = o.getInt16(), W = {};
                        for (e = 0; e &lt; X; e++)
                            w = new M,
                            0 == e ? K = w : w.root = K,
                            w.d = t ? -1 : 1,
                            B = o.readUTFString(),
                            E = o.readUTFString(),
                            w.length = o.getFloat32(),
                            1 == o.getByte() &amp;&amp; (w.inheritRotation = !1),
                            1 == o.getByte() &amp;&amp; (w.inheritScale = !1),
                            w.name = B,
                            E &amp;&amp; ((L = W[E]) ? L.addChild(w) : this.mRootBone = w),
                            W[B] = w,
                            this.mBoneArr.push(w);
                        this.tMatrixDataLen = o.getUint16();
                        var z, G, q = o.getUint16(), H = Math.floor(q / this.tMatrixDataLen), j = this.srcBoneMatrixArr;
                        for (e = 0; e &lt; H; e++)
                            (z = new x).scX = o.getFloat32(),
                            z.skX = o.getFloat32(),
                            z.skY = o.getFloat32(),
                            z.scY = o.getFloat32(),
                            z.x = o.getFloat32(),
                            z.y = o.getFloat32(),
                            8 === this.tMatrixDataLen &amp;&amp; (z.skewX = o.getFloat32(),
                            z.skewY = o.getFloat32()),
                            j.push(z),
                            (w = this.mBoneArr[e]).transform = z;
                        var Q, Z, J = o.getUint16();
                        for (e = 0; e &lt; J; e++) {
                            for (G = new P,
                            Q = o.getUint16(),
                            i = 0; i &lt; Q; i++)
                                G.boneNames.push(o.readUTFString()),
                                G.boneIndexs.push(o.getInt16());
                            G.name = o.readUTFString(),
                            G.targetBoneName = o.readUTFString(),
                            G.targetBoneIndex = o.getInt16(),
                            G.bendDirection = o.getFloat32(),
                            G.mix = o.getFloat32(),
                            G.isSpine = t,
                            this.ikArr.push(G)
                        }
                        var $, tt, et = o.getUint16();
                        for (e = 0; e &lt; et; e++) {
                            for (Z = new V,
                            $ = o.getUint16(),
                            i = 0; i &lt; $; i++)
                                Z.boneIndexs.push(o.getInt16());
                            Z.name = o.getUTFString(),
                            Z.targetIndex = o.getInt16(),
                            Z.rotateMix = o.getFloat32(),
                            Z.translateMix = o.getFloat32(),
                            Z.scaleMix = o.getFloat32(),
                            Z.shearMix = o.getFloat32(),
                            Z.offsetRotation = o.getFloat32(),
                            Z.offsetX = o.getFloat32(),
                            Z.offsetY = o.getFloat32(),
                            Z.offsetScaleX = o.getFloat32(),
                            Z.offsetScaleY = o.getFloat32(),
                            Z.offsetShearY = o.getFloat32(),
                            this.tfArr.push(Z)
                        }
                        var it, at, rt, st, nt, ht, lt, ot, ut, ct, pt = o.getUint16();
                        for (e = 0; e &lt; pt; e++) {
                            for ((tt = new U).name = o.readUTFString(),
                            it = o.getUint16(),
                            i = 0; i &lt; it; i++)
                                tt.bones.push(o.getInt16());
                            tt.target = o.readUTFString(),
                            tt.positionMode = o.readUTFString(),
                            tt.spacingMode = o.readUTFString(),
                            tt.rotateMode = o.readUTFString(),
                            tt.offsetRotation = o.getFloat32(),
                            tt.position = o.getFloat32(),
                            tt.spacing = o.getFloat32(),
                            tt.rotateMix = o.getFloat32(),
                            tt.translateMix = o.getFloat32(),
                            this.pathArr.push(tt)
                        }
                        var _t, dt = o.getInt16();
                        for (e = 0; e &lt; dt; e++) {
                            var ft = o.getUint8()
                              , yt = {};
                            this.deformAniArr.push(yt);
                            for (var mt = 0; mt &lt; ft; mt++)
                                for ((lt = new S).skinName = o.getUTFString(),
                                yt[lt.skinName] = lt,
                                at = o.getInt16(),
                                i = 0; i &lt; at; i++)
                                    for (ot = new b,
                                    lt.deformSlotDataList.push(ot),
                                    rt = o.getInt16(),
                                    a = 0; a &lt; rt; a++)
                                        for (ut = new T,
                                        ot.deformSlotDisplayList.push(ut),
                                        ut.slotIndex = o.getInt16(),
                                        ut.attachment = o.getUTFString(),
                                        st = o.getInt16(),
                                        r = 0; r &lt; st; r++)
                                            for (1 == o.getByte() ? ut.tweenKeyList.push(!0) : ut.tweenKeyList.push(!1),
                                            nt = o.getFloat32(),
                                            ut.timeList.push(nt),
                                            ct = [],
                                            ut.vectices.push(ct),
                                            ht = o.getInt16(),
                                            s = 0; s &lt; ht; s++)
                                                ct.push(o.getFloat32())
                        }
                        var gt, vt, xt, Mt, Dt = o.getInt16();
                        for (e = 0; e &lt; Dt; e++) {
                            for (gt = o.getInt16(),
                            _t = [],
                            i = 0; i &lt; gt; i++) {
                                for ((vt = new C).time = o.getFloat32(),
                                xt = o.getInt16(),
                                a = 0; a &lt; xt; a++)
                                    vt.drawOrder.push(o.getInt16());
                                _t.push(vt)
                            }
                            this.drawOrderAniArr.push(_t)
                        }
                        var kt, It, At = o.getInt16();
                        for (e = 0; e &lt; At; e++) {
                            for (kt = o.getInt16(),
                            Mt = [],
                            i = 0; i &lt; kt; i++)
                                (It = new F).name = o.getUTFString(),
                                this._isParseAudio &amp;&amp; (It.audioValue = o.getUTFString()),
                                It.intValue = o.getInt32(),
                                It.floatValue = o.getFloat32(),
                                It.stringValue = o.getUTFString(),
                                It.time = o.getFloat32(),
                                Mt.push(It);
                            this.eventAniArr.push(Mt)
                        }
                        var St = o.getInt16();
                        if (St &gt; 0)
                            for (this.attachmentNames = [],
                            e = 0; e &lt; St; e++)
                                this.attachmentNames.push(o.getUTFString());
                        var bt, Tt, Ct = o.getInt16();
                        for (e = 0; e &lt; Ct; e++)
                            (bt = new A).name = o.readUTFString(),
                            bt.parent = o.readUTFString(),
                            bt.attachmentName = o.readUTFString(),
                            bt.srcDisplayIndex = bt.displayIndex = o.getInt16(),
                            bt.templet = this,
                            this.boneSlotDic[bt.name] = bt,
                            null == (Tt = this.bindBoneBoneSlotDic[bt.parent]) &amp;&amp; (this.bindBoneBoneSlotDic[bt.parent] = Tt = []),
                            Tt.push(bt),
                            this.boneSlotArray.push(bt);
                        var Ft, wt, Pt, Lt, Ut, Bt, Et, Rt, Nt, Ot, Vt = o.readUTFString().split("\n"), Yt = 0, Kt = o.getUint8();
                        for (e = 0; e &lt; Kt; e++) {
                            for ((Ft = new R).name = Vt[Yt++],
                            Lt = o.getUint8(),
                            i = 0; i &lt; Lt; i++) {
                                for ((wt = new O).name = Vt[Yt++],
                                bt = this.boneSlotDic[wt.name],
                                Ut = o.getUint8(),
                                a = 0; a &lt; Ut; a++) {
                                    if (Pt = new N,
                                    this.skinSlotDisplayDataArr.push(Pt),
                                    Pt.name = Vt[Yt++],
                                    Pt.attachmentName = Vt[Yt++],
                                    Pt.transform = new x,
                                    Pt.transform.scX = o.getFloat32(),
                                    Pt.transform.skX = o.getFloat32(),
                                    Pt.transform.skY = o.getFloat32(),
                                    Pt.transform.scY = o.getFloat32(),
                                    Pt.transform.x = o.getFloat32(),
                                    Pt.transform.y = o.getFloat32(),
                                    wt.displayArr.push(Pt),
                                    Pt.width = o.getFloat32(),
                                    Pt.height = o.getFloat32(),
                                    Pt.type = o.getUint8(),
                                    Pt.verLen = o.getUint16(),
                                    (X = o.getUint16()) &gt; 0)
                                        for (Pt.bones = [],
                                        r = 0; r &lt; X; r++) {
                                            var Xt = o.getUint16();
                                            Pt.bones.push(Xt)
                                        }
                                    if ((Bt = o.getUint16()) &gt; 0)
                                        for (Pt.uvs = [],
                                        r = 0; r &lt; Bt; r++)
                                            Pt.uvs.push(o.getFloat32());
                                    if ((Et = o.getUint16()) &gt; 0)
                                        for (Pt.weights = [],
                                        r = 0; r &lt; Et; r++)
                                            Pt.weights.push(o.getFloat32());
                                    if ((Rt = o.getUint16()) &gt; 0)
                                        for (Pt.triangles = [],
                                        r = 0; r &lt; Rt; r++)
                                            Pt.triangles.push(o.getUint16());
                                    if ((Nt = o.getUint16()) &gt; 0)
                                        for (Pt.vertices = [],
                                        r = 0; r &lt; Nt; r++)
                                            Pt.vertices.push(o.getFloat32());
                                    if ((Ot = o.getUint16()) &gt; 0)
                                        for (Pt.lengths = [],
                                        r = 0; r &lt; Ot; r++)
                                            Pt.lengths.push(o.getFloat32())
                                }
                                Ft.slotArr.push(wt)
                            }
                            this.skinDic[Ft.name] = Ft,
                            this.skinDataArray.push(Ft)
                        }
                        1 == o.getUint8() ? (this.yReverseMatrix = new n.Matrix(1,0,0,-1,0,0),
                        K &amp;&amp; K.setTempMatrix(this.yReverseMatrix)) : K &amp;&amp; K.setTempMatrix(new n.Matrix),
                        this.showSkinByIndex(this.boneSlotDic, 0),
                        this.isParserComplete = !0,
                        this.event(n.Event.COMPLETE, this)
                    }
                }, {
                    key: "getTexture",
                    value: function(t) {
                        var e = this.subTextureDic[t];
                        return e || (e = this.subTextureDic[t.substr(0, t.length - 1)]),
                        null == e ? this._mainTexture : e
                    }
                }, {
                    key: "showSkinByIndex",
                    value: function(t, e) {
                        var i, a, r, s, n = !(arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2]) || arguments[2];
                        if (e &lt; 0 &amp;&amp; e &gt;= this.skinDataArray.length)
                            return !1;
                        var h = this.skinDataArray[e];
                        if (h) {
                            for (i = 0,
                            a = h.slotArr.length; i &lt; a; i++)
                                (s = h.slotArr[i]) &amp;&amp; (r = t[s.name]) &amp;&amp; (r.showSlotData(s, n),
                                n &amp;&amp; "undefined" != r.attachmentName &amp;&amp; "null" != r.attachmentName ? r.showDisplayByName(r.attachmentName) : r.showDisplayByIndex(r.displayIndex));
                            return !0
                        }
                        return !1
                    }
                }, {
                    key: "getSkinIndexByName",
                    value: function(t) {
                        for (var e = 0, i = this.skinDataArray.length; e &lt; i; e++)
                            if (this.skinDataArray[e].name == t)
                                return e;
                        return -1
                    }
                }, {
                    key: "getGrahicsDataWithCache",
                    value: function(t, e) {
                        return this._graphicsCache[t] &amp;&amp; this._graphicsCache[t][e] ? this._graphicsCache[t][e] : null
                    }
                }, {
                    key: "_setCreateURL",
                    value: function(t) {
                        this._skBufferUrl = this._relativeUrl = t,
                        e(r(a.prototype), "_setCreateURL", this).call(this, t)
                    }
                }, {
                    key: "setGrahicsDataWithCache",
                    value: function(t, e, i) {
                        this._graphicsCache[t][e] = i
                    }
                }, {
                    key: "deleteAniData",
                    value: function(t) {
                        if (this._anis[t]) {
                            var e = this._anis[t];
                            e.bone3DMap = null,
                            e.nodes = null
                        }
                    }
                }, {
                    key: "destroy",
                    value: function() {
                        var t;
                        for (t in this._isDestroyed = !0,
                        this.subTextureDic)
                            t &amp;&amp; this.subTextureDic[t].destroy();
                        for (t in this._textureDic)
                            t &amp;&amp; this._textureDic[t].destroy();
                        for (var i = 0, s = this.skinSlotDisplayDataArr.length; i &lt; s; i++)
                            this.skinSlotDisplayDataArr[i].destory();
                        this.skinSlotDisplayDataArr.length = 0,
                        this._relativeUrl &amp;&amp; delete a.TEMPLET_DICTIONARY[this._relativeUrl],
                        e(r(a.prototype), "destroy", this).call(this),
                        n.ILaya.loader.clearRes(this._skBufferUrl)
                    }
                }, {
                    key: "getAniNameByIndex",
                    value: function(t) {
                        var e = this.getAnimation(t);
                        return e ? e.name : null
                    }
                }, {
                    key: "rate",
                    get: function() {
                        return this._rate
                    },
                    set: function(t) {
                        this._rate = t
                    }
                }]),
                a
            }(g);
            Y.LAYA_ANIMATION_160_VISION = "LAYAANIMATION:1.6.0",
            Y.LAYA_ANIMATION_VISION = "LAYAANIMATION:1.7.0",
            o.Templet = Y;
            var K = function(t) {
                function o() {
                    var t, e = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : null;
                    return l(this, o),
                    (t = i(this, r(o).call(this)))._start = 0,
                    t._Pos = 0,
                    t._ended = !0,
                    t._loadedImage = {},
                    t._endFrame = -1,
                    t.interval = 30,
                    t._ids = {},
                    t._idOfSprite = [],
                    t._reset(),
                    t._playing = !1,
                    t._parentMovieClip = e,
                    e ? (t._isRoot = !1,
                    t._movieClipList = e._movieClipList,
                    t._movieClipList.push(a(t))) : (t._movieClipList = [a(t)],
                    t._isRoot = !0,
                    t._setBitUp(n.Const.DISPLAY)),
                    t
                }
                return s(o, t),
                h(o, [{
                    key: "destroy",
                    value: function() {
                        var t = !(arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0]) || arguments[0];
                        this._clear(),
                        e(r(o.prototype), "destroy", this).call(this, t)
                    }
                }, {
                    key: "_setDisplay",
                    value: function(t) {
                        e(r(o.prototype), "_setDisplay", this).call(this, t),
                        this._isRoot &amp;&amp; this._onDisplay(t)
                    }
                }, {
                    key: "_onDisplay",
                    value: function(t) {
                        t ? this.timer.loop(this.interval, this, this.updates, null, !0) : this.timer.clear(this, this.updates)
                    }
                }, {
                    key: "updates",
                    value: function() {
                        var t, e;
                        if (!this._parentMovieClip)
                            for (e = this._movieClipList.length,
                            t = 0; t &lt; e; t++)
                                this._movieClipList[t] &amp;&amp; this._movieClipList[t]._update()
                    }
                }, {
                    key: "addLabel",
                    value: function(t, e) {
                        this._labels || (this._labels = {}),
                        this._labels[e] = t
                    }
                }, {
                    key: "removeLabel",
                    value: function(t) {
                        if (t) {
                            if (!this._labels)
                                for (var e in this._labels)
                                    if (this._labels[e] === t) {
                                        delete this._labels[e];
                                        break
                                    }
                        } else
                            this._labels = null
                    }
                }, {
                    key: "_update",
                    value: function() {
                        if (this._data &amp;&amp; this._playing) {
                            if (this._playIndex++,
                            this._playIndex &gt;= this._count) {
                                if (!this.loop)
                                    return this._playIndex--,
                                    void this.stop();
                                this._playIndex = 0
                            }
                            if (this._parseFrame(this._playIndex),
                            this._labels &amp;&amp; this._labels[this._playIndex] &amp;&amp; this.event(n.Event.LABEL, this._labels[this._playIndex]),
                            -1 != this._endFrame &amp;&amp; this._endFrame == this._playIndex) {
                                if (this._endFrame = -1,
                                null != this._completeHandler) {
                                    var t = this._completeHandler;
                                    this._completeHandler = null,
                                    t.run()
                                }
                                this.stop()
                            }
                        }
                    }
                }, {
                    key: "stop",
                    value: function() {
                        this._playing = !1
                    }
                }, {
                    key: "gotoAndStop",
                    value: function(t) {
                        this.index = t,
                        this.stop()
                    }
                }, {
                    key: "_clear",
                    value: function() {
                        if (this.stop(),
                        this._idOfSprite.length = 0,
                        !this._parentMovieClip) {
                            var t, e;
                            for (this.timer.clear(this, this.updates),
                            e = this._movieClipList.length,
                            t = 0; t &lt; e; t++)
                                this._movieClipList[t] != this &amp;&amp; this._movieClipList[t]._clear();
                            this._movieClipList.length = 0
                        }
                        var i;
                        for (i in this._atlasPath &amp;&amp; n.ILaya.Loader.clearRes(this._atlasPath),
                        this._loadedImage)
                            this._loadedImage[i] &amp;&amp; (n.ILaya.Loader.clearRes(i),
                            this._loadedImage[i] = !1);
                        this.removeChildren(),
                        this.graphics = null,
                        this._parentMovieClip = null
                    }
                }, {
                    key: "play",
                    value: function() {
                        var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : 0
                          , e = !(arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1]) || arguments[1];
                        this.loop = e,
                        this._playing = !0,
                        this._data &amp;&amp; this._displayFrame(t)
                    }
                }, {
                    key: "_displayFrame",
                    value: function() {
                        var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : -1;
                        -1 != t &amp;&amp; (this._curIndex &gt; t &amp;&amp; this._reset(),
                        this._parseFrame(t))
                    }
                }, {
                    key: "_reset",
                    value: function() {
                        var t = !(arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0]) || arguments[0];
                        t &amp;&amp; 1 != this._curIndex &amp;&amp; this.removeChildren(),
                        this._preIndex = this._curIndex = -1,
                        this._Pos = this._start
                    }
                }, {
                    key: "_parseFrame",
                    value: function(t) {
                        var e, i, a, r, s, h, l = !1, u = this._idOfSprite, c = this._data;
                        for (this._ended &amp;&amp; this._reset(),
                        c.pos = this._Pos,
                        this._ended = !1,
                        this._playIndex = t,
                        this._curIndex &gt; t &amp;&amp; t &lt; this._preIndex &amp;&amp; (this._reset(!0),
                        c.pos = this._Pos); this._curIndex &lt;= t &amp;&amp; !this._ended; )
                            switch (c.getUint16()) {
                            case 12:
                                if (a = c.getUint16(),
                                r = this._ids[c.getUint16()],
                                this._Pos = c.pos,
                                c.pos = r,
                                0 == (s = c.getUint8())) {
                                    var p = c.getUint16();
                                    if (!(i = u[a])) {
                                        i = u[a] = new n.Sprite;
                                        var _ = new n.Sprite;
                                        _.loadImage(this.basePath + p + ".png"),
                                        this._loadedImage[this.basePath + p + ".png"] = !0,
                                        i.addChild(_),
                                        _.size(c.getFloat32(), c.getFloat32());
                                        var d = c._getMatrix();
                                        _.transform = d
                                    }
                                    i.alpha = 1
                                } else
                                    1 == s &amp;&amp; ((e = u[a]) || (u[a] = e = new o(this),
                                    e.interval = this.interval,
                                    e._ids = this._ids,
                                    e.basePath = this.basePath,
                                    e._setData(c, r),
                                    e._initState(),
                                    e.play(0)),
                                    e.alpha = 1);
                                c.pos = this._Pos;
                                break;
                            case 3:
                                var f = u[c.getUint16()];
                                f &amp;&amp; (this.addChild(f),
                                f.zOrder = c.getUint16(),
                                l = !0);
                                break;
                            case 4:
                                (f = u[c.getUint16()]) &amp;&amp; f.removeSelf();
                                break;
                            case 5:
                                u[c.getUint16()][o._ValueList[c.getUint16()]] = c.getFloat32();
                                break;
                            case 6:
                                u[c.getUint16()].visible = c.getUint8() &gt; 0;
                                break;
                            case 7:
                                var y = (i = u[c.getUint16()]).transform || n.Matrix.create();
                                y.setTo(c.getFloat32(), c.getFloat32(), c.getFloat32(), c.getFloat32(), c.getFloat32(), c.getFloat32()),
                                i.transform = y;
                                break;
                            case 8:
                                u[c.getUint16()].setPos(c.getFloat32(), c.getFloat32());
                                break;
                            case 9:
                                u[c.getUint16()].setSize(c.getFloat32(), c.getFloat32());
                                break;
                            case 10:
                                u[c.getUint16()].alpha = c.getFloat32();
                                break;
                            case 11:
                                u[c.getUint16()].setScale(c.getFloat32(), c.getFloat32());
                                break;
                            case 98:
                                h = c.getString(),
                                this.event(h),
                                "stop" == h &amp;&amp; this.stop();
                                break;
                            case 99:
                                this._curIndex = c.getUint16(),
                                l &amp;&amp; this.updateZOrder();
                                break;
                            case 100:
                                this._count = this._curIndex + 1,
                                this._ended = !0,
                                this._playing &amp;&amp; (this.event(n.Event.FRAME),
                                this.event(n.Event.END),
                                this.event(n.Event.COMPLETE)),
                                this._reset(!1)
                            }
                        this._playing &amp;&amp; !this._ended &amp;&amp; this.event(n.Event.FRAME),
                        this._Pos = c.pos
                    }
                }, {
                    key: "_setData",
                    value: function(t, e) {
                        this._data = t,
                        this._start = e + 3
                    }
                }, {
                    key: "load",
                    value: function(t) {
                        var e, i = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] &amp;&amp; arguments[1], a = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : null;
                        this._url = t,
                        i &amp;&amp; (this._atlasPath = a || t.split(".swf")[0] + ".json"),
                        this.stop(),
                        this._clear(),
                        this._movieClipList = [this],
                        e = [{
                            url: t,
                            type: n.ILaya.Loader.BUFFER
                        }],
                        this._atlasPath &amp;&amp; e.push({
                            url: this._atlasPath,
                            type: n.ILaya.Loader.ATLAS
                        }),
                        n.ILaya.loader.load(e, n.Handler.create(this, this._onLoaded))
                    }
                }, {
                    key: "_onLoaded",
                    value: function() {
                        var t;
                        (t = n.ILaya.Loader.getRes(this._url)) ? !this._atlasPath || n.ILaya.Loader.getAtlas(this._atlasPath) ? (this.basePath = this._atlasPath ? n.ILaya.Loader.getAtlas(this._atlasPath).dir : this._url.split(".swf")[0] + "/image/",
                        this._initData(t)) : this.event(n.Event.ERROR, "Atlas not find") : this.event(n.Event.ERROR, "file not find")
                    }
                }, {
                    key: "_initState",
                    value: function() {
                        this._reset(),
                        this._ended = !1;
                        var t = this._playing;
                        for (this._playing = !1,
                        this._curIndex = 0; !this._ended; )
                            this._parseFrame(++this._curIndex);
                        this._playing = t
                    }
                }, {
                    key: "_initData",
                    value: function(t) {
                        this._data = new n.Byte(t);
                        var e, i = this._data.getUint16();
                        for (e = 0; e &lt; i; e++)
                            this._ids[this._data.getInt16()] = this._data.getInt32();
                        this.interval = 1e3 / this._data.getUint16(),
                        this._setData(this._data, this._ids[32767]),
                        this._initState(),
                        this.play(0),
                        this.event(n.Event.LOADED),
                        this._parentMovieClip || this.timer.loop(this.interval, this, this.updates, null, !0)
                    }
                }, {
                    key: "playTo",
                    value: function(t, e) {
                        var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : null;
                        this._completeHandler = i,
                        this._endFrame = e,
                        this.play(t, !1)
                    }
                }, {
                    key: "index",
                    get: function() {
                        return this._playIndex
                    },
                    set: function(t) {
                        this._playIndex = t,
                        this._data &amp;&amp; this._displayFrame(this._playIndex),
                        this._labels &amp;&amp; this._labels[t] &amp;&amp; this.event(n.Event.LABEL, this._labels[t])
                    }
                }, {
                    key: "count",
                    get: function() {
                        return this._count
                    }
                }, {
                    key: "playing",
                    get: function() {
                        return this._playing
                    }
                }, {
                    key: "url",
                    set: function(t) {
                        this.load(t)
                    }
                }]),
                o
            }(n.Sprite);
            K._ValueList = ["x", "y", "width", "height", "scaleX", "scaleY", "rotation", "alpha"],
            t.AnimationContent = u,
            t.AnimationNodeContent = c,
            t.AnimationParser01 = _,
            t.AnimationParser02 = d,
            t.AnimationPlayer = y,
            t.AnimationState = f,
            t.AnimationTemplet = g,
            t.BezierLerp = m,
            t.Bone = M,
            t.BoneSlot = A,
            t.DeformAniData = S,
            t.DeformSlotData = b,
            t.DeformSlotDisplayData = T,
            t.DrawOrderData = C,
            t.EventData = F,
            t.GraphicsAni = v,
            t.IAniLib = o,
            t.IkConstraint = w,
            t.IkConstraintData = P,
            t.KeyFramesContent = p,
            t.MeshData = k,
            t.MovieClip = K,
            t.PathConstraint = L,
            t.PathConstraintData = U,
            t.Skeleton = E,
            t.SkinData = R,
            t.SkinMeshForGraphic = I,
            t.SkinSlotDisplayData = N,
            t.SlotData = O,
            t.Templet = Y,
            t.TfConstraint = B,
            t.TfConstraintData = V,
            t.Transform = x,
            t.UVTools = D
        }(window.Laya = window.Laya || {}, Laya)
    }();
</pre></body></html>