window.getBuildInfo = function() {
    return {
        buildTime: "2/27/2025, 9:11:36 PM",
        branch: " commitId:51bd3b27229efec4481f4755a593c6c7cd9a9370"
    }
};

function _mergeNamespaces(t, e) {
    for (var r = 0; r < e.length; r++) {
        const s = e[r];
        if (typeof s != "string" && !Array.isArray(s)) {
            for (const a in s)
                if (a !== "default" && !(a in t)) {
                    const o = Object.getOwnPropertyDescriptor(s, a);
                    o && Object.defineProperty(t, a, o.get ? o : {
                        enumerable: !0,
                        get: () => s[a]
                    })
                }
        }
    }
    return Object.freeze(Object.defineProperty(t, Symbol.toStringTag, {
        value: "Module"
    }))
}
var commonjsGlobal = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};

function getDefaultExportFromCjs(t) {
    return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t
}

function getAugmentedNamespace(t) {
    if (t.__esModule) return t;
    var e = t.default;
    if (typeof e == "function") {
        var r = function s() {
            return this instanceof s ? Reflect.construct(e, arguments, this.constructor) : e.apply(this, arguments)
        };
        r.prototype = e.prototype
    } else r = {};
    return Object.defineProperty(r, "__esModule", {
        value: !0
    }), Object.keys(t).forEach(function(s) {
        var a = Object.getOwnPropertyDescriptor(t, s);
        Object.defineProperty(r, s, a.get ? a : {
            enumerable: !0,
            get: function() {
                return t[s]
            }
        })
    }), r
}
var lottie_light$2 = {
    exports: {}
};
(function(t, e) {
    typeof navigator < "u" && function(r, s) {
        t.exports = s()
    }(commonjsGlobal, function() {
        var r = "http://www.w3.org/2000/svg",
            s = "",
            a = !1,
            o = -999999,
            f = function(n) {
                a = !!n
            },
            d = function() {
                return a
            },
            c = function(n) {
                s = n
            },
            m = function() {
                return s
            };

        function S(i) {
            return document.createElement(i)
        }

        function M(i, n) {
            var h, l = i.length,
                u;
            for (h = 0; h < l; h += 1) {
                u = i[h].prototype;
                for (var p in u) Object.prototype.hasOwnProperty.call(u, p) && (n.prototype[p] = u[p])
            }
        }

        function g(i) {
            function n() {}
            return n.prototype = i, n
        }
        var k = function() {
                function i(n) {
                    this.audios = [], this.audioFactory = n, this._volume = 1, this._isMuted = !1
                }
                return i.prototype = {
                        addAudio: function(h) {
                            this.audios.push(h)
                        },
                        pause: function() {
                            var h, l = this.audios.length;
                            for (h = 0; h < l; h += 1) this.audios[h].pause()
                        },
                        resume: function() {
                            var h, l = this.audios.length;
                            for (h = 0; h < l; h += 1) this.audios[h].resume()
                        },
                        setRate: function(h) {
                            var l, u = this.audios.length;
                            for (l = 0; l < u; l += 1) this.audios[l].setRate(h)
                        },
                        createAudio: function(h) {
                            return this.audioFactory ? this.audioFactory(h) : window.Howl ? new window.Howl({
                                src: [h]
                            }) : {
                                isPlaying: !1,
                                play: function() {
                                    this.isPlaying = !0
                                },
                                seek: function() {
                                    this.isPlaying = !1
                                },
                                playing: function() {},
                                rate: function() {},
                                setVolume: function() {}
                            }
                        },
                        setAudioFactory: function(h) {
                            this.audioFactory = h
                        },
                        setVolume: function(h) {
                            this._volume = h, this._updateVolume()
                        },
                        mute: function() {
                            this._isMuted = !0, this._updateVolume()
                        },
                        unmute: function() {
                            this._isMuted = !1, this._updateVolume()
                        },
                        getVolume: function() {
                            return this._volume
                        },
                        _updateVolume: function() {
                            var h, l = this.audios.length;
                            for (h = 0; h < l; h += 1) this.audios[h].volume(this._volume * (this._isMuted ? 0 : 1))
                        }
                    },
                    function() {
                        return new i
                    }
            }(),
            C = function() {
                function i(h, l) {
                    var u = 0,
                        p = [],
                        A;
                    switch (h) {
                        case "int16":
                        case "uint8c":
                            A = 1;
                            break;
                        default:
                            A = 1.1;
                            break
                    }
                    for (u = 0; u < l; u += 1) p.push(A);
                    return p
                }

                function n(h, l) {
                    return h === "float32" ? new Float32Array(l) : h === "int16" ? new Int16Array(l) : h === "uint8c" ? new Uint8ClampedArray(l) : i(h, l)
                }
                return typeof Uint8ClampedArray == "function" && typeof Float32Array == "function" ? n : i
            }();

        function b(i) {
            return Array.apply(null, {
                length: i
            })
        }
        var G = !0,
            y = null,
            P = "",
            v = /^((?!chrome|android).)*safari/i.test(navigator.userAgent),
            _ = Math.pow,
            V = Math.sqrt,
            N = Math.floor,
            Z = Math.min,
            J = 150,
            ht = Math.PI / 180,
            vt = .5519;

        function ct(i, n, h, l) {
            this.type = i, this.currentTime = n, this.totalTime = h, this.direction = l < 0 ? -1 : 1
        }

        function ft(i, n) {
            this.type = i, this.direction = n < 0 ? -1 : 1
        }

        function yt(i, n, h, l) {
            this.type = i, this.currentLoop = h, this.totalLoops = n, this.direction = l < 0 ? -1 : 1
        }

        function bt(i, n, h) {
            this.type = i, this.firstFrame = n, this.totalFrames = h
        }

        function lt(i, n) {
            this.type = i, this.target = n
        }

        function D(i, n) {
            this.type = "renderFrameError", this.nativeError = i, this.currentTime = n
        }

        function X(i) {
            this.type = "configError", this.nativeError = i
        }
        var E = function() {
            var i = 0;
            return function() {
                return i += 1, P + "__lottie_element_" + i
            }
        }();

        function w(i, n, h) {
            var l, u, p, A, B, T, H, W;
            switch (A = Math.floor(i * 6), B = i * 6 - A, T = h * (1 - n), H = h * (1 - B * n), W = h * (1 - (1 - B) * n), A % 6) {
                case 0:
                    l = h, u = W, p = T;
                    break;
                case 1:
                    l = H, u = h, p = T;
                    break;
                case 2:
                    l = T, u = h, p = W;
                    break;
                case 3:
                    l = T, u = H, p = h;
                    break;
                case 4:
                    l = W, u = T, p = h;
                    break;
                case 5:
                    l = h, u = T, p = H;
                    break
            }
            return [l, u, p]
        }

        function nt(i, n, h) {
            var l = Math.max(i, n, h),
                u = Math.min(i, n, h),
                p = l - u,
                A, B = l === 0 ? 0 : p / l,
                T = l / 255;
            switch (l) {
                case u:
                    A = 0;
                    break;
                case i:
                    A = n - h + p * (n < h ? 6 : 0), A /= 6 * p;
                    break;
                case n:
                    A = h - i + p * 2, A /= 6 * p;
                    break;
                case h:
                    A = i - n + p * 4, A /= 6 * p;
                    break
            }
            return [A, B, T]
        }

        function tt(i, n) {
            var h = nt(i[0] * 255, i[1] * 255, i[2] * 255);
            return h[1] += n, h[1] > 1 ? h[1] = 1 : h[1] <= 0 && (h[1] = 0), w(h[0], h[1], h[2])
        }

        function gt(i, n) {
            var h = nt(i[0] * 255, i[1] * 255, i[2] * 255);
            return h[2] += n, h[2] > 1 ? h[2] = 1 : h[2] < 0 && (h[2] = 0), w(h[0], h[1], h[2])
        }

        function Tt(i, n) {
            var h = nt(i[0] * 255, i[1] * 255, i[2] * 255);
            return h[0] += n / 360, h[0] > 1 ? h[0] -= 1 : h[0] < 0 && (h[0] += 1), w(h[0], h[1], h[2])
        }(function() {
            var i = [],
                n, h;
            for (n = 0; n < 256; n += 1) h = n.toString(16), i[n] = h.length === 1 ? "0" + h : h;
            return function(l, u, p) {
                return l < 0 && (l = 0), u < 0 && (u = 0), p < 0 && (p = 0), "#" + i[l] + i[u] + i[p]
            }
        })();
        var Mt = function(n) {
                G = !!n
            },
            Lt = function() {
                return G
            },
            Vt = function(n) {
                y = n
            },
            Nt = function() {
                return y
            },
            qt = function(n) {
                J = n
            },
            re = function() {
                return J
            },
            Kt = function(n) {
                P = n
            };

        function _t(i) {
            return document.createElementNS(r, i)
        }

        function $t(i) {
            "@babel/helpers - typeof";
            return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? $t = function(h) {
                return typeof h
            } : $t = function(h) {
                return h && typeof Symbol == "function" && h.constructor === Symbol && h !== Symbol.prototype ? "symbol" : typeof h
            }, $t(i)
        }
        var Rt = function() {
                var i = 1,
                    n = [],
                    h, l, u = {
                        onmessage: function() {},
                        postMessage: function($) {
                            h({
                                data: $
                            })
                        }
                    },
                    p = {
                        postMessage: function($) {
                            u.onmessage({
                                data: $
                            })
                        }
                    };

                function A(L) {
                    if (window.Worker && window.Blob && d()) {
                        var $ = new Blob(["var _workerSelf = self; self.onmessage = ", L.toString()], {
                                type: "text/javascript"
                            }),
                            U = URL.createObjectURL($);
                        return new Worker(U)
                    }
                    return h = L, u
                }

                function B() {
                    l || (l = A(function($) {
                        function U() {
                            function rt(pt, O) {
                                var K, x, F = pt.length,
                                    at, et, Pt, kt;
                                for (x = 0; x < F; x += 1)
                                    if (K = pt[x], "ks" in K && !K.completed) {
                                        if (K.completed = !0, K.hasMask) {
                                            var Ft = K.masksProperties;
                                            for (et = Ft.length, at = 0; at < et; at += 1)
                                                if (Ft[at].pt.k.i) j(Ft[at].pt.k);
                                                else
                                                    for (kt = Ft[at].pt.k.length, Pt = 0; Pt < kt; Pt += 1) Ft[at].pt.k[Pt].s && j(Ft[at].pt.k[Pt].s[0]), Ft[at].pt.k[Pt].e && j(Ft[at].pt.k[Pt].e[0])
                                        }
                                        K.ty === 0 ? (K.layers = I(K.refId, O), rt(K.layers, O)) : K.ty === 4 ? R(K.shapes) : K.ty === 5 && It(K)
                                    }
                            }

                            function q(pt, O) {
                                if (pt) {
                                    var K = 0,
                                        x = pt.length;
                                    for (K = 0; K < x; K += 1) pt[K].t === 1 && (pt[K].data.layers = I(pt[K].data.refId, O), rt(pt[K].data.layers, O))
                                }
                            }

                            function z(pt, O) {
                                for (var K = 0, x = O.length; K < x;) {
                                    if (O[K].id === pt) return O[K];
                                    K += 1
                                }
                                return null
                            }

                            function I(pt, O) {
                                var K = z(pt, O);
                                return K ? K.layers.__used ? JSON.parse(JSON.stringify(K.layers)) : (K.layers.__used = !0, K.layers) : null
                            }

                            function R(pt) {
                                var O, K = pt.length,
                                    x, F;
                                for (O = K - 1; O >= 0; O -= 1)
                                    if (pt[O].ty === "sh")
                                        if (pt[O].ks.k.i) j(pt[O].ks.k);
                                        else
                                            for (F = pt[O].ks.k.length, x = 0; x < F; x += 1) pt[O].ks.k[x].s && j(pt[O].ks.k[x].s[0]), pt[O].ks.k[x].e && j(pt[O].ks.k[x].e[0]);
                                else pt[O].ty === "gr" && R(pt[O].it)
                            }

                            function j(pt) {
                                var O, K = pt.i.length;
                                for (O = 0; O < K; O += 1) pt.i[O][0] += pt.v[O][0], pt.i[O][1] += pt.v[O][1], pt.o[O][0] += pt.v[O][0], pt.o[O][1] += pt.v[O][1]
                            }

                            function Q(pt, O) {
                                var K = O ? O.split(".") : [100, 100, 100];
                                return pt[0] > K[0] ? !0 : K[0] > pt[0] ? !1 : pt[1] > K[1] ? !0 : K[1] > pt[1] ? !1 : pt[2] > K[2] ? !0 : K[2] > pt[2] ? !1 : null
                            }
                            var it = function() {
                                    var pt = [4, 4, 14];

                                    function O(x) {
                                        var F = x.t.d;
                                        x.t.d = {
                                            k: [{
                                                s: F,
                                                t: 0
                                            }]
                                        }
                                    }

                                    function K(x) {
                                        var F, at = x.length;
                                        for (F = 0; F < at; F += 1) x[F].ty === 5 && O(x[F])
                                    }
                                    return function(x) {
                                        if (Q(pt, x.v) && (K(x.layers), x.assets)) {
                                            var F, at = x.assets.length;
                                            for (F = 0; F < at; F += 1) x.assets[F].layers && K(x.assets[F].layers)
                                        }
                                    }
                                }(),
                                ot = function() {
                                    var pt = [4, 7, 99];
                                    return function(O) {
                                        if (O.chars && !Q(pt, O.v)) {
                                            var K, x = O.chars.length;
                                            for (K = 0; K < x; K += 1) {
                                                var F = O.chars[K];
                                                F.data && F.data.shapes && (R(F.data.shapes), F.data.ip = 0, F.data.op = 99999, F.data.st = 0, F.data.sr = 1, F.data.ks = {
                                                    p: {
                                                        k: [0, 0],
                                                        a: 0
                                                    },
                                                    s: {
                                                        k: [100, 100],
                                                        a: 0
                                                    },
                                                    a: {
                                                        k: [0, 0],
                                                        a: 0
                                                    },
                                                    r: {
                                                        k: 0,
                                                        a: 0
                                                    },
                                                    o: {
                                                        k: 100,
                                                        a: 0
                                                    }
                                                }, O.chars[K].t || (F.data.shapes.push({
                                                    ty: "no"
                                                }), F.data.shapes[0].it.push({
                                                    p: {
                                                        k: [0, 0],
                                                        a: 0
                                                    },
                                                    s: {
                                                        k: [100, 100],
                                                        a: 0
                                                    },
                                                    a: {
                                                        k: [0, 0],
                                                        a: 0
                                                    },
                                                    r: {
                                                        k: 0,
                                                        a: 0
                                                    },
                                                    o: {
                                                        k: 100,
                                                        a: 0
                                                    },
                                                    sk: {
                                                        k: 0,
                                                        a: 0
                                                    },
                                                    sa: {
                                                        k: 0,
                                                        a: 0
                                                    },
                                                    ty: "tr"
                                                })))
                                            }
                                        }
                                    }
                                }(),
                                ut = function() {
                                    var pt = [5, 7, 15];

                                    function O(x) {
                                        var F = x.t.p;
                                        typeof F.a == "number" && (F.a = {
                                            a: 0,
                                            k: F.a
                                        }), typeof F.p == "number" && (F.p = {
                                            a: 0,
                                            k: F.p
                                        }), typeof F.r == "number" && (F.r = {
                                            a: 0,
                                            k: F.r
                                        })
                                    }

                                    function K(x) {
                                        var F, at = x.length;
                                        for (F = 0; F < at; F += 1) x[F].ty === 5 && O(x[F])
                                    }
                                    return function(x) {
                                        if (Q(pt, x.v) && (K(x.layers), x.assets)) {
                                            var F, at = x.assets.length;
                                            for (F = 0; F < at; F += 1) x.assets[F].layers && K(x.assets[F].layers)
                                        }
                                    }
                                }(),
                                wt = function() {
                                    var pt = [4, 1, 9];

                                    function O(x) {
                                        var F, at = x.length,
                                            et, Pt;
                                        for (F = 0; F < at; F += 1)
                                            if (x[F].ty === "gr") O(x[F].it);
                                            else if (x[F].ty === "fl" || x[F].ty === "st")
                                            if (x[F].c.k && x[F].c.k[0].i)
                                                for (Pt = x[F].c.k.length, et = 0; et < Pt; et += 1) x[F].c.k[et].s && (x[F].c.k[et].s[0] /= 255, x[F].c.k[et].s[1] /= 255, x[F].c.k[et].s[2] /= 255, x[F].c.k[et].s[3] /= 255), x[F].c.k[et].e && (x[F].c.k[et].e[0] /= 255, x[F].c.k[et].e[1] /= 255, x[F].c.k[et].e[2] /= 255, x[F].c.k[et].e[3] /= 255);
                                            else x[F].c.k[0] /= 255, x[F].c.k[1] /= 255, x[F].c.k[2] /= 255, x[F].c.k[3] /= 255
                                    }

                                    function K(x) {
                                        var F, at = x.length;
                                        for (F = 0; F < at; F += 1) x[F].ty === 4 && O(x[F].shapes)
                                    }
                                    return function(x) {
                                        if (Q(pt, x.v) && (K(x.layers), x.assets)) {
                                            var F, at = x.assets.length;
                                            for (F = 0; F < at; F += 1) x.assets[F].layers && K(x.assets[F].layers)
                                        }
                                    }
                                }(),
                                At = function() {
                                    var pt = [4, 4, 18];

                                    function O(x) {
                                        var F, at = x.length,
                                            et, Pt;
                                        for (F = at - 1; F >= 0; F -= 1)
                                            if (x[F].ty === "sh")
                                                if (x[F].ks.k.i) x[F].ks.k.c = x[F].closed;
                                                else
                                                    for (Pt = x[F].ks.k.length, et = 0; et < Pt; et += 1) x[F].ks.k[et].s && (x[F].ks.k[et].s[0].c = x[F].closed), x[F].ks.k[et].e && (x[F].ks.k[et].e[0].c = x[F].closed);
                                        else x[F].ty === "gr" && O(x[F].it)
                                    }

                                    function K(x) {
                                        var F, at, et = x.length,
                                            Pt, kt, Ft, Bt;
                                        for (at = 0; at < et; at += 1) {
                                            if (F = x[at], F.hasMask) {
                                                var Dt = F.masksProperties;
                                                for (kt = Dt.length, Pt = 0; Pt < kt; Pt += 1)
                                                    if (Dt[Pt].pt.k.i) Dt[Pt].pt.k.c = Dt[Pt].cl;
                                                    else
                                                        for (Bt = Dt[Pt].pt.k.length, Ft = 0; Ft < Bt; Ft += 1) Dt[Pt].pt.k[Ft].s && (Dt[Pt].pt.k[Ft].s[0].c = Dt[Pt].cl), Dt[Pt].pt.k[Ft].e && (Dt[Pt].pt.k[Ft].e[0].c = Dt[Pt].cl)
                                            }
                                            F.ty === 4 && O(F.shapes)
                                        }
                                    }
                                    return function(x) {
                                        if (Q(pt, x.v) && (K(x.layers), x.assets)) {
                                            var F, at = x.assets.length;
                                            for (F = 0; F < at; F += 1) x.assets[F].layers && K(x.assets[F].layers)
                                        }
                                    }
                                }();

                            function dt(pt) {
                                pt.__complete || (wt(pt), it(pt), ot(pt), ut(pt), At(pt), rt(pt.layers, pt.assets), q(pt.chars, pt.assets), pt.__complete = !0)
                            }

                            function It(pt) {
                                pt.t.a.length === 0 && "m" in pt.t.p
                            }
                            var Ct = {};
                            return Ct.completeData = dt, Ct.checkColors = wt, Ct.checkChars = ot, Ct.checkPathProperties = ut, Ct.checkShapes = At, Ct.completeLayers = rt, Ct
                        }
                        if (p.dataManager || (p.dataManager = U()), p.assetLoader || (p.assetLoader = function() {
                                function rt(z) {
                                    var I = z.getResponseHeader("content-type");
                                    return I && z.responseType === "json" && I.indexOf("json") !== -1 || z.response && $t(z.response) === "object" ? z.response : z.response && typeof z.response == "string" ? JSON.parse(z.response) : z.responseText ? JSON.parse(z.responseText) : null
                                }

                                function q(z, I, R, j) {
                                    var Q, it = new XMLHttpRequest;
                                    try {
                                        it.responseType = "json"
                                    } catch {}
                                    it.onreadystatechange = function() {
                                        if (it.readyState === 4)
                                            if (it.status === 200) Q = rt(it), R(Q);
                                            else try {
                                                Q = rt(it), R(Q)
                                            } catch (ot) {
                                                j && j(ot)
                                            }
                                    };
                                    try {
                                        it.open(["G", "E", "T"].join(""), z, !0)
                                    } catch {
                                        it.open(["G", "E", "T"].join(""), I + "/" + z, !0)
                                    }
                                    it.send()
                                }
                                return {
                                    load: q
                                }
                            }()), $.data.type === "loadAnimation") p.assetLoader.load($.data.path, $.data.fullPath, function(rt) {
                            p.dataManager.completeData(rt), p.postMessage({
                                id: $.data.id,
                                payload: rt,
                                status: "success"
                            })
                        }, function() {
                            p.postMessage({
                                id: $.data.id,
                                status: "error"
                            })
                        });
                        else if ($.data.type === "complete") {
                            var Y = $.data.animation;
                            p.dataManager.completeData(Y), p.postMessage({
                                id: $.data.id,
                                payload: Y,
                                status: "success"
                            })
                        } else $.data.type === "loadData" && p.assetLoader.load($.data.path, $.data.fullPath, function(rt) {
                            p.postMessage({
                                id: $.data.id,
                                payload: rt,
                                status: "success"
                            })
                        }, function() {
                            p.postMessage({
                                id: $.data.id,
                                status: "error"
                            })
                        })
                    }), l.onmessage = function(L) {
                        var $ = L.data,
                            U = $.id,
                            Y = n[U];
                        n[U] = null, $.status === "success" ? Y.onComplete($.payload) : Y.onError && Y.onError()
                    })
                }

                function T(L, $) {
                    i += 1;
                    var U = "processId_" + i;
                    return n[U] = {
                        onComplete: L,
                        onError: $
                    }, U
                }

                function H(L, $, U) {
                    B();
                    var Y = T($, U);
                    l.postMessage({
                        type: "loadAnimation",
                        path: L,
                        fullPath: window.location.origin + window.location.pathname,
                        id: Y
                    })
                }

                function W(L, $, U) {
                    B();
                    var Y = T($, U);
                    l.postMessage({
                        type: "loadData",
                        path: L,
                        fullPath: window.location.origin + window.location.pathname,
                        id: Y
                    })
                }

                function st(L, $, U) {
                    B();
                    var Y = T($, U);
                    l.postMessage({
                        type: "complete",
                        animation: L,
                        id: Y
                    })
                }
                return {
                    loadAnimation: H,
                    loadData: W,
                    completeAnimation: st
                }
            }(),
            St = function() {
                var i = function() {
                    var q = S("canvas");
                    q.width = 1, q.height = 1;
                    var z = q.getContext("2d");
                    return z.fillStyle = "rgba(0,0,0,0)", z.fillRect(0, 0, 1, 1), q
                }();

                function n() {
                    this.loadedAssets += 1, this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages && this.imagesLoadedCb && this.imagesLoadedCb(null)
                }

                function h() {
                    this.loadedFootagesCount += 1, this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages && this.imagesLoadedCb && this.imagesLoadedCb(null)
                }

                function l(q, z, I) {
                    var R = "";
                    if (q.e) R = q.p;
                    else if (z) {
                        var j = q.p;
                        j.indexOf("images/") !== -1 && (j = j.split("/")[1]), R = z + j
                    } else R = I, R += q.u ? q.u : "", R += q.p;
                    return R
                }

                function u(q) {
                    var z = 0,
                        I = setInterval((function() {
                            var R = q.getBBox();
                            (R.width || z > 500) && (this._imageLoaded(), clearInterval(I)), z += 1
                        }).bind(this), 50)
                }

                function p(q) {
                    var z = l(q, this.assetsPath, this.path),
                        I = _t("image");
                    v ? this.testImageLoaded(I) : I.addEventListener("load", this._imageLoaded, !1), I.addEventListener("error", (function() {
                        R.img = i, this._imageLoaded()
                    }).bind(this), !1), I.setAttributeNS("http://www.w3.org/1999/xlink", "href", z), this._elementHelper.append ? this._elementHelper.append(I) : this._elementHelper.appendChild(I);
                    var R = {
                        img: I,
                        assetData: q
                    };
                    return R
                }

                function A(q) {
                    var z = l(q, this.assetsPath, this.path),
                        I = S("img");
                    I.crossOrigin = "anonymous", I.addEventListener("load", this._imageLoaded, !1), I.addEventListener("error", (function() {
                        R.img = i, this._imageLoaded()
                    }).bind(this), !1), I.src = z;
                    var R = {
                        img: I,
                        assetData: q
                    };
                    return R
                }

                function B(q) {
                    var z = {
                            assetData: q
                        },
                        I = l(q, this.assetsPath, this.path);
                    return Rt.loadData(I, (function(R) {
                        z.img = R, this._footageLoaded()
                    }).bind(this), (function() {
                        z.img = {}, this._footageLoaded()
                    }).bind(this)), z
                }

                function T(q, z) {
                    this.imagesLoadedCb = z;
                    var I, R = q.length;
                    for (I = 0; I < R; I += 1) q[I].layers || (!q[I].t || q[I].t === "seq" ? (this.totalImages += 1, this.images.push(this._createImageData(q[I]))) : q[I].t === 3 && (this.totalFootages += 1, this.images.push(this.createFootageData(q[I]))))
                }

                function H(q) {
                    this.path = q || ""
                }

                function W(q) {
                    this.assetsPath = q || ""
                }

                function st(q) {
                    for (var z = 0, I = this.images.length; z < I;) {
                        if (this.images[z].assetData === q) return this.images[z].img;
                        z += 1
                    }
                    return null
                }

                function L() {
                    this.imagesLoadedCb = null, this.images.length = 0
                }

                function $() {
                    return this.totalImages === this.loadedAssets
                }

                function U() {
                    return this.totalFootages === this.loadedFootagesCount
                }

                function Y(q, z) {
                    q === "svg" ? (this._elementHelper = z, this._createImageData = this.createImageData.bind(this)) : this._createImageData = this.createImgData.bind(this)
                }

                function rt() {
                    this._imageLoaded = n.bind(this), this._footageLoaded = h.bind(this), this.testImageLoaded = u.bind(this), this.createFootageData = B.bind(this), this.assetsPath = "", this.path = "", this.totalImages = 0, this.totalFootages = 0, this.loadedAssets = 0, this.loadedFootagesCount = 0, this.imagesLoadedCb = null, this.images = []
                }
                return rt.prototype = {
                    loadAssets: T,
                    setAssetsPath: W,
                    setPath: H,
                    loadedImages: $,
                    loadedFootages: U,
                    destroy: L,
                    getAsset: st,
                    createImgData: A,
                    createImageData: p,
                    imageLoaded: n,
                    footageLoaded: h,
                    setCacheType: Y
                }, rt
            }();

        function ue() {}
        ue.prototype = {
            triggerEvent: function(n, h) {
                if (this._cbs[n])
                    for (var l = this._cbs[n], u = 0; u < l.length; u += 1) l[u](h)
            },
            addEventListener: function(n, h) {
                return this._cbs[n] || (this._cbs[n] = []), this._cbs[n].push(h), (function() {
                    this.removeEventListener(n, h)
                }).bind(this)
            },
            removeEventListener: function(n, h) {
                if (!h) this._cbs[n] = null;
                else if (this._cbs[n]) {
                    for (var l = 0, u = this._cbs[n].length; l < u;) this._cbs[n][l] === h && (this._cbs[n].splice(l, 1), l -= 1, u -= 1), l += 1;
                    this._cbs[n].length || (this._cbs[n] = null)
                }
            }
        };
        var Se = function() {
                function i(n) {
                    for (var h = n.split(`\r
`), l = {}, u, p = 0, A = 0; A < h.length; A += 1) u = h[A].split(":"), u.length === 2 && (l[u[0]] = u[1].trim(), p += 1);
                    if (p === 0) throw new Error;
                    return l
                }
                return function(n) {
                    for (var h = [], l = 0; l < n.length; l += 1) {
                        var u = n[l],
                            p = {
                                time: u.tm,
                                duration: u.dr
                            };
                        try {
                            p.payload = JSON.parse(n[l].cm)
                        } catch {
                            try {
                                p.payload = i(n[l].cm)
                            } catch {
                                p.payload = {
                                    name: n[l].cm
                                }
                            }
                        }
                        h.push(p)
                    }
                    return h
                }
            }(),
            ve = function() {
                function i(n) {
                    this.compositions.push(n)
                }
                return function() {
                    function n(h) {
                        for (var l = 0, u = this.compositions.length; l < u;) {
                            if (this.compositions[l].data && this.compositions[l].data.nm === h) return this.compositions[l].prepareFrame && this.compositions[l].data.xt && this.compositions[l].prepareFrame(this.currentFrame), this.compositions[l].compInterface;
                            l += 1
                        }
                        return null
                    }
                    return n.compositions = [], n.currentFrame = 0, n.registerComposition = i, n
                }
            }(),
            Jt = {},
            ge = function(n, h) {
                Jt[n] = h
            };

        function ye(i) {
            return Jt[i]
        }

        function Ut() {
            if (Jt.canvas) return "canvas";
            for (var i in Jt)
                if (Jt[i]) return i;
            return ""
        }

        function se(i) {
            "@babel/helpers - typeof";
            return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? se = function(h) {
                return typeof h
            } : se = function(h) {
                return h && typeof Symbol == "function" && h.constructor === Symbol && h !== Symbol.prototype ? "symbol" : typeof h
            }, se(i)
        }
        var Et = function() {
            this._cbs = [], this.name = "", this.path = "", this.isLoaded = !1, this.currentFrame = 0, this.currentRawFrame = 0, this.firstFrame = 0, this.totalFrames = 0, this.frameRate = 0, this.frameMult = 0, this.playSpeed = 1, this.playDirection = 1, this.playCount = 0, this.animationData = {}, this.assets = [], this.isPaused = !0, this.autoplay = !1, this.loop = !0, this.renderer = null, this.animationID = E(), this.assetsPath = "", this.timeCompleted = 0, this.segmentPos = 0, this.isSubframeEnabled = Lt(), this.segments = [], this._idle = !0, this._completedLoop = !1, this.projectInterface = ve(), this.imagePreloader = new St, this.audioController = k(), this.markers = [], this.configAnimation = this.configAnimation.bind(this), this.onSetupError = this.onSetupError.bind(this), this.onSegmentComplete = this.onSegmentComplete.bind(this), this.drawnFrameEvent = new ct("drawnFrame", 0, 0, 0), this.expressionsPlugin = Nt()
        };
        M([ue], Et), Et.prototype.setParams = function(i) {
            (i.wrapper || i.container) && (this.wrapper = i.wrapper || i.container);
            var n = "svg";
            i.animType ? n = i.animType : i.renderer && (n = i.renderer);
            var h = ye(n);
            this.renderer = new h(this, i.rendererSettings), this.imagePreloader.setCacheType(n, this.renderer.globalData.defs), this.renderer.setProjectInterface(this.projectInterface), this.animType = n, i.loop === "" || i.loop === null || i.loop === void 0 || i.loop === !0 ? this.loop = !0 : i.loop === !1 ? this.loop = !1 : this.loop = parseInt(i.loop, 10), this.autoplay = "autoplay" in i ? i.autoplay : !0, this.name = i.name ? i.name : "", this.autoloadSegments = Object.prototype.hasOwnProperty.call(i, "autoloadSegments") ? i.autoloadSegments : !0, this.assetsPath = i.assetsPath, this.initialSegment = i.initialSegment, i.audioFactory && this.audioController.setAudioFactory(i.audioFactory), i.animationData ? this.setupAnimation(i.animationData) : i.path && (i.path.lastIndexOf("\\") !== -1 ? this.path = i.path.substr(0, i.path.lastIndexOf("\\") + 1) : this.path = i.path.substr(0, i.path.lastIndexOf("/") + 1), this.fileName = i.path.substr(i.path.lastIndexOf("/") + 1), this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf(".json")), Rt.loadAnimation(i.path, this.configAnimation, this.onSetupError))
        }, Et.prototype.onSetupError = function() {
            this.trigger("data_failed")
        }, Et.prototype.setupAnimation = function(i) {
            Rt.completeAnimation(i, this.configAnimation)
        }, Et.prototype.setData = function(i, n) {
            n && se(n) !== "object" && (n = JSON.parse(n));
            var h = {
                    wrapper: i,
                    animationData: n
                },
                l = i.attributes;
            h.path = l.getNamedItem("data-animation-path") ? l.getNamedItem("data-animation-path").value : l.getNamedItem("data-bm-path") ? l.getNamedItem("data-bm-path").value : l.getNamedItem("bm-path") ? l.getNamedItem("bm-path").value : "", h.animType = l.getNamedItem("data-anim-type") ? l.getNamedItem("data-anim-type").value : l.getNamedItem("data-bm-type") ? l.getNamedItem("data-bm-type").value : l.getNamedItem("bm-type") ? l.getNamedItem("bm-type").value : l.getNamedItem("data-bm-renderer") ? l.getNamedItem("data-bm-renderer").value : l.getNamedItem("bm-renderer") ? l.getNamedItem("bm-renderer").value : Ut() || "canvas";
            var u = l.getNamedItem("data-anim-loop") ? l.getNamedItem("data-anim-loop").value : l.getNamedItem("data-bm-loop") ? l.getNamedItem("data-bm-loop").value : l.getNamedItem("bm-loop") ? l.getNamedItem("bm-loop").value : "";
            u === "false" ? h.loop = !1 : u === "true" ? h.loop = !0 : u !== "" && (h.loop = parseInt(u, 10));
            var p = l.getNamedItem("data-anim-autoplay") ? l.getNamedItem("data-anim-autoplay").value : l.getNamedItem("data-bm-autoplay") ? l.getNamedItem("data-bm-autoplay").value : l.getNamedItem("bm-autoplay") ? l.getNamedItem("bm-autoplay").value : !0;
            h.autoplay = p !== "false", h.name = l.getNamedItem("data-name") ? l.getNamedItem("data-name").value : l.getNamedItem("data-bm-name") ? l.getNamedItem("data-bm-name").value : l.getNamedItem("bm-name") ? l.getNamedItem("bm-name").value : "";
            var A = l.getNamedItem("data-anim-prerender") ? l.getNamedItem("data-anim-prerender").value : l.getNamedItem("data-bm-prerender") ? l.getNamedItem("data-bm-prerender").value : l.getNamedItem("bm-prerender") ? l.getNamedItem("bm-prerender").value : "";
            A === "false" && (h.prerender = !1), h.path ? this.setParams(h) : this.trigger("destroy")
        }, Et.prototype.includeLayers = function(i) {
            i.op > this.animationData.op && (this.animationData.op = i.op, this.totalFrames = Math.floor(i.op - this.animationData.ip));
            var n = this.animationData.layers,
                h, l = n.length,
                u = i.layers,
                p, A = u.length;
            for (p = 0; p < A; p += 1)
                for (h = 0; h < l;) {
                    if (n[h].id === u[p].id) {
                        n[h] = u[p];
                        break
                    }
                    h += 1
                }
            if ((i.chars || i.fonts) && (this.renderer.globalData.fontManager.addChars(i.chars), this.renderer.globalData.fontManager.addFonts(i.fonts, this.renderer.globalData.defs)), i.assets)
                for (l = i.assets.length, h = 0; h < l; h += 1) this.animationData.assets.push(i.assets[h]);
            this.animationData.__complete = !1, Rt.completeAnimation(this.animationData, this.onSegmentComplete)
        }, Et.prototype.onSegmentComplete = function(i) {
            this.animationData = i;
            var n = Nt();
            n && n.initExpressions(this), this.loadNextSegment()
        }, Et.prototype.loadNextSegment = function() {
            var i = this.animationData.segments;
            if (!i || i.length === 0 || !this.autoloadSegments) {
                this.trigger("data_ready"), this.timeCompleted = this.totalFrames;
                return
            }
            var n = i.shift();
            this.timeCompleted = n.time * this.frameRate;
            var h = this.path + this.fileName + "_" + this.segmentPos + ".json";
            this.segmentPos += 1, Rt.loadData(h, this.includeLayers.bind(this), (function() {
                this.trigger("data_failed")
            }).bind(this))
        }, Et.prototype.loadSegments = function() {
            var i = this.animationData.segments;
            i || (this.timeCompleted = this.totalFrames), this.loadNextSegment()
        }, Et.prototype.imagesLoaded = function() {
            this.trigger("loaded_images"), this.checkLoaded()
        }, Et.prototype.preloadImages = function() {
            this.imagePreloader.setAssetsPath(this.assetsPath), this.imagePreloader.setPath(this.path), this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this))
        }, Et.prototype.configAnimation = function(i) {
            if (this.renderer) try {
                this.animationData = i, this.initialSegment ? (this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]), this.firstFrame = Math.round(this.initialSegment[0])) : (this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip), this.firstFrame = Math.round(this.animationData.ip)), this.renderer.configAnimation(i), i.assets || (i.assets = []), this.assets = this.animationData.assets, this.frameRate = this.animationData.fr, this.frameMult = this.animationData.fr / 1e3, this.renderer.searchExtraCompositions(i.assets), this.markers = Se(i.markers || []), this.trigger("config_ready"), this.preloadImages(), this.loadSegments(), this.updaFrameModifier(), this.waitForFontsLoaded(), this.isPaused && this.audioController.pause()
            } catch (n) {
                this.triggerConfigError(n)
            }
        }, Et.prototype.waitForFontsLoaded = function() {
            this.renderer && (this.renderer.globalData.fontManager.isLoaded ? this.checkLoaded() : setTimeout(this.waitForFontsLoaded.bind(this), 20))
        }, Et.prototype.checkLoaded = function() {
            if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== "canvas") && this.imagePreloader.loadedFootages()) {
                this.isLoaded = !0;
                var i = Nt();
                i && i.initExpressions(this), this.renderer.initItems(), setTimeout((function() {
                    this.trigger("DOMLoaded")
                }).bind(this), 0), this.gotoFrame(), this.autoplay && this.play()
            }
        }, Et.prototype.resize = function(i, n) {
            var h = typeof i == "number" ? i : void 0,
                l = typeof n == "number" ? n : void 0;
            this.renderer.updateContainerSize(h, l)
        }, Et.prototype.setSubframe = function(i) {
            this.isSubframeEnabled = !!i
        }, Et.prototype.gotoFrame = function() {
            this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame, this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted && (this.currentFrame = this.timeCompleted), this.trigger("enterFrame"), this.renderFrame(), this.trigger("drawnFrame")
        }, Et.prototype.renderFrame = function() {
            if (!(this.isLoaded === !1 || !this.renderer)) try {
                this.expressionsPlugin && this.expressionsPlugin.resetFrame(), this.renderer.renderFrame(this.currentFrame + this.firstFrame)
            } catch (i) {
                this.triggerRenderFrameError(i)
            }
        }, Et.prototype.play = function(i) {
            i && this.name !== i || this.isPaused === !0 && (this.isPaused = !1, this.trigger("_play"), this.audioController.resume(), this._idle && (this._idle = !1, this.trigger("_active")))
        }, Et.prototype.pause = function(i) {
            i && this.name !== i || this.isPaused === !1 && (this.isPaused = !0, this.trigger("_pause"), this._idle = !0, this.trigger("_idle"), this.audioController.pause())
        }, Et.prototype.togglePause = function(i) {
            i && this.name !== i || (this.isPaused === !0 ? this.play() : this.pause())
        }, Et.prototype.stop = function(i) {
            i && this.name !== i || (this.pause(), this.playCount = 0, this._completedLoop = !1, this.setCurrentRawFrameValue(0))
        }, Et.prototype.getMarkerData = function(i) {
            for (var n, h = 0; h < this.markers.length; h += 1)
                if (n = this.markers[h], n.payload && n.payload.name === i) return n;
            return null
        }, Et.prototype.goToAndStop = function(i, n, h) {
            if (!(h && this.name !== h)) {
                var l = Number(i);
                if (isNaN(l)) {
                    var u = this.getMarkerData(i);
                    u && this.goToAndStop(u.time, !0)
                } else n ? this.setCurrentRawFrameValue(i) : this.setCurrentRawFrameValue(i * this.frameModifier);
                this.pause()
            }
        }, Et.prototype.goToAndPlay = function(i, n, h) {
            if (!(h && this.name !== h)) {
                var l = Number(i);
                if (isNaN(l)) {
                    var u = this.getMarkerData(i);
                    u && (u.duration ? this.playSegments([u.time, u.time + u.duration], !0) : this.goToAndStop(u.time, !0))
                } else this.goToAndStop(l, n, h);
                this.play()
            }
        }, Et.prototype.advanceTime = function(i) {
            if (!(this.isPaused === !0 || this.isLoaded === !1)) {
                var n = this.currentRawFrame + i * this.frameModifier,
                    h = !1;
                n >= this.totalFrames - 1 && this.frameModifier > 0 ? !this.loop || this.playCount === this.loop ? this.checkSegments(n > this.totalFrames ? n % this.totalFrames : 0) || (h = !0, n = this.totalFrames - 1) : n >= this.totalFrames ? (this.playCount += 1, this.checkSegments(n % this.totalFrames) || (this.setCurrentRawFrameValue(n % this.totalFrames), this._completedLoop = !0, this.trigger("loopComplete"))) : this.setCurrentRawFrameValue(n) : n < 0 ? this.checkSegments(n % this.totalFrames) || (this.loop && !(this.playCount-- <= 0 && this.loop !== !0) ? (this.setCurrentRawFrameValue(this.totalFrames + n % this.totalFrames), this._completedLoop ? this.trigger("loopComplete") : this._completedLoop = !0) : (h = !0, n = 0)) : this.setCurrentRawFrameValue(n), h && (this.setCurrentRawFrameValue(n), this.pause(), this.trigger("complete"))
            }
        }, Et.prototype.adjustSegment = function(i, n) {
            this.playCount = 0, i[1] < i[0] ? (this.frameModifier > 0 && (this.playSpeed < 0 ? this.setSpeed(-this.playSpeed) : this.setDirection(-1)), this.totalFrames = i[0] - i[1], this.timeCompleted = this.totalFrames, this.firstFrame = i[1], this.setCurrentRawFrameValue(this.totalFrames - .001 - n)) : i[1] > i[0] && (this.frameModifier < 0 && (this.playSpeed < 0 ? this.setSpeed(-this.playSpeed) : this.setDirection(1)), this.totalFrames = i[1] - i[0], this.timeCompleted = this.totalFrames, this.firstFrame = i[0], this.setCurrentRawFrameValue(.001 + n)), this.trigger("segmentStart")
        }, Et.prototype.setSegment = function(i, n) {
            var h = -1;
            this.isPaused && (this.currentRawFrame + this.firstFrame < i ? h = i : this.currentRawFrame + this.firstFrame > n && (h = n - i)), this.firstFrame = i, this.totalFrames = n - i, this.timeCompleted = this.totalFrames, h !== -1 && this.goToAndStop(h, !0)
        }, Et.prototype.playSegments = function(i, n) {
            if (n && (this.segments.length = 0), se(i[0]) === "object") {
                var h, l = i.length;
                for (h = 0; h < l; h += 1) this.segments.push(i[h])
            } else this.segments.push(i);
            this.segments.length && n && this.adjustSegment(this.segments.shift(), 0), this.isPaused && this.play()
        }, Et.prototype.resetSegments = function(i) {
            this.segments.length = 0, this.segments.push([this.animationData.ip, this.animationData.op]), i && this.checkSegments(0)
        }, Et.prototype.checkSegments = function(i) {
            return this.segments.length ? (this.adjustSegment(this.segments.shift(), i), !0) : !1
        }, Et.prototype.destroy = function(i) {
            i && this.name !== i || !this.renderer || (this.renderer.destroy(), this.imagePreloader.destroy(), this.trigger("destroy"), this._cbs = null, this.onEnterFrame = null, this.onLoopComplete = null, this.onComplete = null, this.onSegmentStart = null, this.onDestroy = null, this.renderer = null, this.expressionsPlugin = null, this.imagePreloader = null, this.projectInterface = null)
        }, Et.prototype.setCurrentRawFrameValue = function(i) {
            this.currentRawFrame = i, this.gotoFrame()
        }, Et.prototype.setSpeed = function(i) {
            this.playSpeed = i, this.updaFrameModifier()
        }, Et.prototype.setDirection = function(i) {
            this.playDirection = i < 0 ? -1 : 1, this.updaFrameModifier()
        }, Et.prototype.setLoop = function(i) {
            this.loop = i
        }, Et.prototype.setVolume = function(i, n) {
            n && this.name !== n || this.audioController.setVolume(i)
        }, Et.prototype.getVolume = function() {
            return this.audioController.getVolume()
        }, Et.prototype.mute = function(i) {
            i && this.name !== i || this.audioController.mute()
        }, Et.prototype.unmute = function(i) {
            i && this.name !== i || this.audioController.unmute()
        }, Et.prototype.updaFrameModifier = function() {
            this.frameModifier = this.frameMult * this.playSpeed * this.playDirection, this.audioController.setRate(this.playSpeed * this.playDirection)
        }, Et.prototype.getPath = function() {
            return this.path
        }, Et.prototype.getAssetsPath = function(i) {
            var n = "";
            if (i.e) n = i.p;
            else if (this.assetsPath) {
                var h = i.p;
                h.indexOf("images/") !== -1 && (h = h.split("/")[1]), n = this.assetsPath + h
            } else n = this.path, n += i.u ? i.u : "", n += i.p;
            return n
        }, Et.prototype.getAssetData = function(i) {
            for (var n = 0, h = this.assets.length; n < h;) {
                if (i === this.assets[n].id) return this.assets[n];
                n += 1
            }
            return null
        }, Et.prototype.hide = function() {
            this.renderer.hide()
        }, Et.prototype.show = function() {
            this.renderer.show()
        }, Et.prototype.getDuration = function(i) {
            return i ? this.totalFrames : this.totalFrames / this.frameRate
        }, Et.prototype.updateDocumentData = function(i, n, h) {
            try {
                var l = this.renderer.getElementByPath(i);
                l.updateDocumentData(n, h)
            } catch {}
        }, Et.prototype.trigger = function(i) {
            if (this._cbs && this._cbs[i]) switch (i) {
                case "enterFrame":
                    this.triggerEvent(i, new ct(i, this.currentFrame, this.totalFrames, this.frameModifier));
                    break;
                case "drawnFrame":
                    this.drawnFrameEvent.currentTime = this.currentFrame, this.drawnFrameEvent.totalTime = this.totalFrames, this.drawnFrameEvent.direction = this.frameModifier, this.triggerEvent(i, this.drawnFrameEvent);
                    break;
                case "loopComplete":
                    this.triggerEvent(i, new yt(i, this.loop, this.playCount, this.frameMult));
                    break;
                case "complete":
                    this.triggerEvent(i, new ft(i, this.frameMult));
                    break;
                case "segmentStart":
                    this.triggerEvent(i, new bt(i, this.firstFrame, this.totalFrames));
                    break;
                case "destroy":
                    this.triggerEvent(i, new lt(i, this));
                    break;
                default:
                    this.triggerEvent(i)
            }
            i === "enterFrame" && this.onEnterFrame && this.onEnterFrame.call(this, new ct(i, this.currentFrame, this.totalFrames, this.frameMult)), i === "loopComplete" && this.onLoopComplete && this.onLoopComplete.call(this, new yt(i, this.loop, this.playCount, this.frameMult)), i === "complete" && this.onComplete && this.onComplete.call(this, new ft(i, this.frameMult)), i === "segmentStart" && this.onSegmentStart && this.onSegmentStart.call(this, new bt(i, this.firstFrame, this.totalFrames)), i === "destroy" && this.onDestroy && this.onDestroy.call(this, new lt(i, this))
        }, Et.prototype.triggerRenderFrameError = function(i) {
            var n = new D(i, this.currentFrame);
            this.triggerEvent("error", n), this.onError && this.onError.call(this, n)
        }, Et.prototype.triggerConfigError = function(i) {
            var n = new X(i, this.currentFrame);
            this.triggerEvent("error", n), this.onError && this.onError.call(this, n)
        };
        var Ot = function() {
                var i = {},
                    n = [],
                    h = 0,
                    l = 0,
                    u = 0,
                    p = !0,
                    A = !1;

                function B(O) {
                    for (var K = 0, x = O.target; K < l;) n[K].animation === x && (n.splice(K, 1), K -= 1, l -= 1, x.isPaused || st()), K += 1
                }

                function T(O, K) {
                    if (!O) return null;
                    for (var x = 0; x < l;) {
                        if (n[x].elem === O && n[x].elem !== null) return n[x].animation;
                        x += 1
                    }
                    var F = new Et;
                    return L(F, O), F.setData(O, K), F
                }

                function H() {
                    var O, K = n.length,
                        x = [];
                    for (O = 0; O < K; O += 1) x.push(n[O].animation);
                    return x
                }

                function W() {
                    u += 1, wt()
                }

                function st() {
                    u -= 1
                }

                function L(O, K) {
                    O.addEventListener("destroy", B), O.addEventListener("_active", W), O.addEventListener("_idle", st), n.push({
                        elem: K,
                        animation: O
                    }), l += 1
                }

                function $(O) {
                    var K = new Et;
                    return L(K, null), K.setParams(O), K
                }

                function U(O, K) {
                    var x;
                    for (x = 0; x < l; x += 1) n[x].animation.setSpeed(O, K)
                }

                function Y(O, K) {
                    var x;
                    for (x = 0; x < l; x += 1) n[x].animation.setDirection(O, K)
                }

                function rt(O) {
                    var K;
                    for (K = 0; K < l; K += 1) n[K].animation.play(O)
                }

                function q(O) {
                    var K = O - h,
                        x;
                    for (x = 0; x < l; x += 1) n[x].animation.advanceTime(K);
                    h = O, u && !A ? window.requestAnimationFrame(q) : p = !0
                }

                function z(O) {
                    h = O, window.requestAnimationFrame(q)
                }

                function I(O) {
                    var K;
                    for (K = 0; K < l; K += 1) n[K].animation.pause(O)
                }

                function R(O, K, x) {
                    var F;
                    for (F = 0; F < l; F += 1) n[F].animation.goToAndStop(O, K, x)
                }

                function j(O) {
                    var K;
                    for (K = 0; K < l; K += 1) n[K].animation.stop(O)
                }

                function Q(O) {
                    var K;
                    for (K = 0; K < l; K += 1) n[K].animation.togglePause(O)
                }

                function it(O) {
                    var K;
                    for (K = l - 1; K >= 0; K -= 1) n[K].animation.destroy(O)
                }

                function ot(O, K, x) {
                    var F = [].concat([].slice.call(document.getElementsByClassName("lottie")), [].slice.call(document.getElementsByClassName("bodymovin"))),
                        at, et = F.length;
                    for (at = 0; at < et; at += 1) x && F[at].setAttribute("data-bm-type", x), T(F[at], O);
                    if (K && et === 0) {
                        x || (x = "svg");
                        var Pt = document.getElementsByTagName("body")[0];
                        Pt.innerText = "";
                        var kt = S("div");
                        kt.style.width = "100%", kt.style.height = "100%", kt.setAttribute("data-bm-type", x), Pt.appendChild(kt), T(kt, O)
                    }
                }

                function ut() {
                    var O;
                    for (O = 0; O < l; O += 1) n[O].animation.resize()
                }

                function wt() {
                    !A && u && p && (window.requestAnimationFrame(z), p = !1)
                }

                function At() {
                    A = !0
                }

                function dt() {
                    A = !1, wt()
                }

                function It(O, K) {
                    var x;
                    for (x = 0; x < l; x += 1) n[x].animation.setVolume(O, K)
                }

                function Ct(O) {
                    var K;
                    for (K = 0; K < l; K += 1) n[K].animation.mute(O)
                }

                function pt(O) {
                    var K;
                    for (K = 0; K < l; K += 1) n[K].animation.unmute(O)
                }
                return i.registerAnimation = T, i.loadAnimation = $, i.setSpeed = U, i.setDirection = Y, i.play = rt, i.pause = I, i.stop = j, i.togglePause = Q, i.searchAnimations = ot, i.resize = ut, i.goToAndStop = R, i.destroy = it, i.freeze = At, i.unfreeze = dt, i.setVolume = It, i.mute = Ct, i.unmute = pt, i.getRegisteredAnimations = H, i
            }(),
            ne = function() {
                var i = {};
                i.getBezierEasing = h;
                var n = {};

                function h(z, I, R, j, Q) {
                    var it = Q || ("bez_" + z + "_" + I + "_" + R + "_" + j).replace(/\./g, "p");
                    if (n[it]) return n[it];
                    var ot = new q([z, I, R, j]);
                    return n[it] = ot, ot
                }
                var l = 4,
                    u = .001,
                    p = 1e-7,
                    A = 10,
                    B = 11,
                    T = 1 / (B - 1),
                    H = typeof Float32Array == "function";

                function W(z, I) {
                    return 1 - 3 * I + 3 * z
                }

                function st(z, I) {
                    return 3 * I - 6 * z
                }

                function L(z) {
                    return 3 * z
                }

                function $(z, I, R) {
                    return ((W(I, R) * z + st(I, R)) * z + L(I)) * z
                }

                function U(z, I, R) {
                    return 3 * W(I, R) * z * z + 2 * st(I, R) * z + L(I)
                }

                function Y(z, I, R, j, Q) {
                    var it, ot, ut = 0;
                    do ot = I + (R - I) / 2, it = $(ot, j, Q) - z, it > 0 ? R = ot : I = ot; while (Math.abs(it) > p && ++ut < A);
                    return ot
                }

                function rt(z, I, R, j) {
                    for (var Q = 0; Q < l; ++Q) {
                        var it = U(I, R, j);
                        if (it === 0) return I;
                        var ot = $(I, R, j) - z;
                        I -= ot / it
                    }
                    return I
                }

                function q(z) {
                    this._p = z, this._mSampleValues = H ? new Float32Array(B) : new Array(B), this._precomputed = !1, this.get = this.get.bind(this)
                }
                return q.prototype = {
                    get: function(I) {
                        var R = this._p[0],
                            j = this._p[1],
                            Q = this._p[2],
                            it = this._p[3];
                        return this._precomputed || this._precompute(), R === j && Q === it ? I : I === 0 ? 0 : I === 1 ? 1 : $(this._getTForX(I), j, it)
                    },
                    _precompute: function() {
                        var I = this._p[0],
                            R = this._p[1],
                            j = this._p[2],
                            Q = this._p[3];
                        this._precomputed = !0, (I !== R || j !== Q) && this._calcSampleValues()
                    },
                    _calcSampleValues: function() {
                        for (var I = this._p[0], R = this._p[2], j = 0; j < B; ++j) this._mSampleValues[j] = $(j * T, I, R)
                    },
                    _getTForX: function(I) {
                        for (var R = this._p[0], j = this._p[2], Q = this._mSampleValues, it = 0, ot = 1, ut = B - 1; ot !== ut && Q[ot] <= I; ++ot) it += T;
                        --ot;
                        var wt = (I - Q[ot]) / (Q[ot + 1] - Q[ot]),
                            At = it + wt * T,
                            dt = U(At, R, j);
                        return dt >= u ? rt(I, At, R, j) : dt === 0 ? At : Y(I, it, it + T, R, j)
                    }
                }, i
            }(),
            ae = function() {
                function i(n) {
                    return n.concat(b(n.length))
                }
                return {
                    double: i
                }
            }(),
            ce = function() {
                return function(i, n, h) {
                    var l = 0,
                        u = i,
                        p = b(u),
                        A = {
                            newElement: B,
                            release: T
                        };

                    function B() {
                        var H;
                        return l ? (l -= 1, H = p[l]) : H = n(), H
                    }

                    function T(H) {
                        l === u && (p = ae.double(p), u *= 2), h && h(H), p[l] = H, l += 1
                    }
                    return A
                }
            }(),
            qe = function() {
                function i() {
                    return {
                        addedLength: 0,
                        percents: C("float32", re()),
                        lengths: C("float32", re())
                    }
                }
                return ce(8, i)
            }(),
            We = function() {
                function i() {
                    return {
                        lengths: [],
                        totalLength: 0
                    }
                }

                function n(h) {
                    var l, u = h.lengths.length;
                    for (l = 0; l < u; l += 1) qe.release(h.lengths[l]);
                    h.lengths.length = 0
                }
                return ce(8, i, n)
            }();

        function Ue() {
            var i = Math;

            function n(L, $, U, Y, rt, q) {
                var z = L * Y + $ * rt + U * q - rt * Y - q * L - U * $;
                return z > -.001 && z < .001
            }

            function h(L, $, U, Y, rt, q, z, I, R) {
                if (U === 0 && q === 0 && R === 0) return n(L, $, Y, rt, z, I);
                var j = i.sqrt(i.pow(Y - L, 2) + i.pow(rt - $, 2) + i.pow(q - U, 2)),
                    Q = i.sqrt(i.pow(z - L, 2) + i.pow(I - $, 2) + i.pow(R - U, 2)),
                    it = i.sqrt(i.pow(z - Y, 2) + i.pow(I - rt, 2) + i.pow(R - q, 2)),
                    ot;
                return j > Q ? j > it ? ot = j - Q - it : ot = it - Q - j : it > Q ? ot = it - Q - j : ot = Q - j - it, ot > -1e-4 && ot < 1e-4
            }
            var l = function() {
                return function(L, $, U, Y) {
                    var rt = re(),
                        q, z, I, R, j, Q = 0,
                        it, ot = [],
                        ut = [],
                        wt = qe.newElement();
                    for (I = U.length, q = 0; q < rt; q += 1) {
                        for (j = q / (rt - 1), it = 0, z = 0; z < I; z += 1) R = _(1 - j, 3) * L[z] + 3 * _(1 - j, 2) * j * U[z] + 3 * (1 - j) * _(j, 2) * Y[z] + _(j, 3) * $[z], ot[z] = R, ut[z] !== null && (it += _(ot[z] - ut[z], 2)), ut[z] = ot[z];
                        it && (it = V(it), Q += it), wt.percents[q] = j, wt.lengths[q] = Q
                    }
                    return wt.addedLength = Q, wt
                }
            }();

            function u(L) {
                var $ = We.newElement(),
                    U = L.c,
                    Y = L.v,
                    rt = L.o,
                    q = L.i,
                    z, I = L._length,
                    R = $.lengths,
                    j = 0;
                for (z = 0; z < I - 1; z += 1) R[z] = l(Y[z], Y[z + 1], rt[z], q[z + 1]), j += R[z].addedLength;
                return U && I && (R[z] = l(Y[z], Y[0], rt[z], q[0]), j += R[z].addedLength), $.totalLength = j, $
            }

            function p(L) {
                this.segmentLength = 0, this.points = new Array(L)
            }

            function A(L, $) {
                this.partialLength = L, this.point = $
            }
            var B = function() {
                var L = {};
                return function($, U, Y, rt) {
                    var q = ($[0] + "_" + $[1] + "_" + U[0] + "_" + U[1] + "_" + Y[0] + "_" + Y[1] + "_" + rt[0] + "_" + rt[1]).replace(/\./g, "p");
                    if (!L[q]) {
                        var z = re(),
                            I, R, j, Q, it, ot = 0,
                            ut, wt, At = null;
                        $.length === 2 && ($[0] !== U[0] || $[1] !== U[1]) && n($[0], $[1], U[0], U[1], $[0] + Y[0], $[1] + Y[1]) && n($[0], $[1], U[0], U[1], U[0] + rt[0], U[1] + rt[1]) && (z = 2);
                        var dt = new p(z);
                        for (j = Y.length, I = 0; I < z; I += 1) {
                            for (wt = b(j), it = I / (z - 1), ut = 0, R = 0; R < j; R += 1) Q = _(1 - it, 3) * $[R] + 3 * _(1 - it, 2) * it * ($[R] + Y[R]) + 3 * (1 - it) * _(it, 2) * (U[R] + rt[R]) + _(it, 3) * U[R], wt[R] = Q, At !== null && (ut += _(wt[R] - At[R], 2));
                            ut = V(ut), ot += ut, dt.points[I] = new A(ut, wt), At = wt
                        }
                        dt.segmentLength = ot, L[q] = dt
                    }
                    return L[q]
                }
            }();

            function T(L, $) {
                var U = $.percents,
                    Y = $.lengths,
                    rt = U.length,
                    q = N((rt - 1) * L),
                    z = L * $.addedLength,
                    I = 0;
                if (q === rt - 1 || q === 0 || z === Y[q]) return U[q];
                for (var R = Y[q] > z ? -1 : 1, j = !0; j;)
                    if (Y[q] <= z && Y[q + 1] > z ? (I = (z - Y[q]) / (Y[q + 1] - Y[q]), j = !1) : q += R, q < 0 || q >= rt - 1) {
                        if (q === rt - 1) return U[q];
                        j = !1
                    }
                return U[q] + (U[q + 1] - U[q]) * I
            }

            function H(L, $, U, Y, rt, q) {
                var z = T(rt, q),
                    I = 1 - z,
                    R = i.round((I * I * I * L[0] + (z * I * I + I * z * I + I * I * z) * U[0] + (z * z * I + I * z * z + z * I * z) * Y[0] + z * z * z * $[0]) * 1e3) / 1e3,
                    j = i.round((I * I * I * L[1] + (z * I * I + I * z * I + I * I * z) * U[1] + (z * z * I + I * z * z + z * I * z) * Y[1] + z * z * z * $[1]) * 1e3) / 1e3;
                return [R, j]
            }
            var W = C("float32", 8);

            function st(L, $, U, Y, rt, q, z) {
                rt < 0 ? rt = 0 : rt > 1 && (rt = 1);
                var I = T(rt, z);
                q = q > 1 ? 1 : q;
                var R = T(q, z),
                    j, Q = L.length,
                    it = 1 - I,
                    ot = 1 - R,
                    ut = it * it * it,
                    wt = I * it * it * 3,
                    At = I * I * it * 3,
                    dt = I * I * I,
                    It = it * it * ot,
                    Ct = I * it * ot + it * I * ot + it * it * R,
                    pt = I * I * ot + it * I * R + I * it * R,
                    O = I * I * R,
                    K = it * ot * ot,
                    x = I * ot * ot + it * R * ot + it * ot * R,
                    F = I * R * ot + it * R * R + I * ot * R,
                    at = I * R * R,
                    et = ot * ot * ot,
                    Pt = R * ot * ot + ot * R * ot + ot * ot * R,
                    kt = R * R * ot + ot * R * R + R * ot * R,
                    Ft = R * R * R;
                for (j = 0; j < Q; j += 1) W[j * 4] = i.round((ut * L[j] + wt * U[j] + At * Y[j] + dt * $[j]) * 1e3) / 1e3, W[j * 4 + 1] = i.round((It * L[j] + Ct * U[j] + pt * Y[j] + O * $[j]) * 1e3) / 1e3, W[j * 4 + 2] = i.round((K * L[j] + x * U[j] + F * Y[j] + at * $[j]) * 1e3) / 1e3, W[j * 4 + 3] = i.round((et * L[j] + Pt * U[j] + kt * Y[j] + Ft * $[j]) * 1e3) / 1e3;
                return W
            }
            return {
                getSegmentsLength: u,
                getNewSegment: st,
                getPointInSegment: H,
                buildBezierData: B,
                pointOnLine2D: n,
                pointOnLine3D: h
            }
        }
        var Ee = Ue(),
            $e = o,
            jr = Math.abs;

        function qr(i, n) {
            var h = this.offsetTime,
                l;
            this.propType === "multidimensional" && (l = C("float32", this.pv.length));
            for (var u = n.lastIndex, p = u, A = this.keyframes.length - 1, B = !0, T, H, W; B;) {
                if (T = this.keyframes[p], H = this.keyframes[p + 1], p === A - 1 && i >= H.t - h) {
                    T.h && (T = H), u = 0;
                    break
                }
                if (H.t - h > i) {
                    u = p;
                    break
                }
                p < A - 1 ? p += 1 : (u = 0, B = !1)
            }
            W = this.keyframesMetadata[p] || {};
            var st, L, $, U, Y, rt, q = H.t - h,
                z = T.t - h,
                I;
            if (T.to) {
                W.bezierData || (W.bezierData = Ee.buildBezierData(T.s, H.s || T.e, T.to, T.ti));
                var R = W.bezierData;
                if (i >= q || i < z) {
                    var j = i >= q ? R.points.length - 1 : 0;
                    for (L = R.points[j].point.length, st = 0; st < L; st += 1) l[st] = R.points[j].point[st]
                } else {
                    W.__fnct ? rt = W.__fnct : (rt = ne.getBezierEasing(T.o.x, T.o.y, T.i.x, T.i.y, T.n).get, W.__fnct = rt), $ = rt((i - z) / (q - z));
                    var Q = R.segmentLength * $,
                        it, ot = n.lastFrame < i && n._lastKeyframeIndex === p ? n._lastAddedLength : 0;
                    for (Y = n.lastFrame < i && n._lastKeyframeIndex === p ? n._lastPoint : 0, B = !0, U = R.points.length; B;) {
                        if (ot += R.points[Y].partialLength, Q === 0 || $ === 0 || Y === R.points.length - 1) {
                            for (L = R.points[Y].point.length, st = 0; st < L; st += 1) l[st] = R.points[Y].point[st];
                            break
                        } else if (Q >= ot && Q < ot + R.points[Y + 1].partialLength) {
                            for (it = (Q - ot) / R.points[Y + 1].partialLength, L = R.points[Y].point.length, st = 0; st < L; st += 1) l[st] = R.points[Y].point[st] + (R.points[Y + 1].point[st] - R.points[Y].point[st]) * it;
                            break
                        }
                        Y < U - 1 ? Y += 1 : B = !1
                    }
                    n._lastPoint = Y, n._lastAddedLength = ot - R.points[Y].partialLength, n._lastKeyframeIndex = p
                }
            } else {
                var ut, wt, At, dt, It;
                if (A = T.s.length, I = H.s || T.e, this.sh && T.h !== 1)
                    if (i >= q) l[0] = I[0], l[1] = I[1], l[2] = I[2];
                    else if (i <= z) l[0] = T.s[0], l[1] = T.s[1], l[2] = T.s[2];
                else {
                    var Ct = Wr(T.s),
                        pt = Wr(I),
                        O = (i - z) / (q - z);
                    Ci(l, Ei(Ct, pt, O))
                } else
                    for (p = 0; p < A; p += 1) T.h !== 1 && (i >= q ? $ = 1 : i < z ? $ = 0 : (T.o.x.constructor === Array ? (W.__fnct || (W.__fnct = []), W.__fnct[p] ? rt = W.__fnct[p] : (ut = T.o.x[p] === void 0 ? T.o.x[0] : T.o.x[p], wt = T.o.y[p] === void 0 ? T.o.y[0] : T.o.y[p], At = T.i.x[p] === void 0 ? T.i.x[0] : T.i.x[p], dt = T.i.y[p] === void 0 ? T.i.y[0] : T.i.y[p], rt = ne.getBezierEasing(ut, wt, At, dt).get, W.__fnct[p] = rt)) : W.__fnct ? rt = W.__fnct : (ut = T.o.x, wt = T.o.y, At = T.i.x, dt = T.i.y, rt = ne.getBezierEasing(ut, wt, At, dt).get, T.keyframeMetadata = rt), $ = rt((i - z) / (q - z)))), I = H.s || T.e, It = T.h === 1 ? T.s[p] : T.s[p] + (I[p] - T.s[p]) * $, this.propType === "multidimensional" ? l[p] = It : l = It
            }
            return n.lastIndex = u, l
        }

        function Ei(i, n, h) {
            var l = [],
                u = i[0],
                p = i[1],
                A = i[2],
                B = i[3],
                T = n[0],
                H = n[1],
                W = n[2],
                st = n[3],
                L, $, U, Y, rt;
            return $ = u * T + p * H + A * W + B * st, $ < 0 && ($ = -$, T = -T, H = -H, W = -W, st = -st), 1 - $ > 1e-6 ? (L = Math.acos($), U = Math.sin(L), Y = Math.sin((1 - h) * L) / U, rt = Math.sin(h * L) / U) : (Y = 1 - h, rt = h), l[0] = Y * u + rt * T, l[1] = Y * p + rt * H, l[2] = Y * A + rt * W, l[3] = Y * B + rt * st, l
        }

        function Ci(i, n) {
            var h = n[0],
                l = n[1],
                u = n[2],
                p = n[3],
                A = Math.atan2(2 * l * p - 2 * h * u, 1 - 2 * l * l - 2 * u * u),
                B = Math.asin(2 * h * l + 2 * u * p),
                T = Math.atan2(2 * h * p - 2 * l * u, 1 - 2 * h * h - 2 * u * u);
            i[0] = A / ht, i[1] = B / ht, i[2] = T / ht
        }

        function Wr(i) {
            var n = i[0] * ht,
                h = i[1] * ht,
                l = i[2] * ht,
                u = Math.cos(n / 2),
                p = Math.cos(h / 2),
                A = Math.cos(l / 2),
                B = Math.sin(n / 2),
                T = Math.sin(h / 2),
                H = Math.sin(l / 2),
                W = u * p * A - B * T * H,
                st = B * T * A + u * p * H,
                L = B * p * A + u * T * H,
                $ = u * T * A - B * p * H;
            return [st, L, $, W]
        }

        function $r() {
            var i = this.comp.renderedFrame - this.offsetTime,
                n = this.keyframes[0].t - this.offsetTime,
                h = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;
            if (!(i === this._caching.lastFrame || this._caching.lastFrame !== $e && (this._caching.lastFrame >= h && i >= h || this._caching.lastFrame < n && i < n))) {
                this._caching.lastFrame >= i && (this._caching._lastKeyframeIndex = -1, this._caching.lastIndex = 0);
                var l = this.interpolateValue(i, this._caching);
                this.pv = l
            }
            return this._caching.lastFrame = i, this.pv
        }

        function yr(i) {
            var n;
            if (this.propType === "unidimensional") n = i * this.mult, jr(this.v - n) > 1e-5 && (this.v = n, this._mdf = !0);
            else
                for (var h = 0, l = this.v.length; h < l;) n = i[h] * this.mult, jr(this.v[h] - n) > 1e-5 && (this.v[h] = n, this._mdf = !0), h += 1
        }

        function br() {
            if (!(this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length)) {
                if (this.lock) {
                    this.setVValue(this.pv);
                    return
                }
                this.lock = !0, this._mdf = this._isFirstFrame;
                var i, n = this.effectsSequence.length,
                    h = this.kf ? this.pv : this.data.k;
                for (i = 0; i < n; i += 1) h = this.effectsSequence[i](h);
                this.setVValue(h), this._isFirstFrame = !1, this.lock = !1, this.frameId = this.elem.globalData.frameId
            }
        }

        function Pr(i) {
            this.effectsSequence.push(i), this.container.addDynamicProperty(this)
        }

        function xi(i, n, h, l) {
            this.propType = "unidimensional", this.mult = h || 1, this.data = n, this.v = h ? n.k * h : n.k, this.pv = n.k, this._mdf = !1, this.elem = i, this.container = l, this.comp = i.comp, this.k = !1, this.kf = !1, this.vel = 0, this.effectsSequence = [], this._isFirstFrame = !0, this.getValue = br, this.setVValue = yr, this.addEffect = Pr
        }

        function Ai(i, n, h, l) {
            this.propType = "multidimensional", this.mult = h || 1, this.data = n, this._mdf = !1, this.elem = i, this.container = l, this.comp = i.comp, this.k = !1, this.kf = !1, this.frameId = -1;
            var u, p = n.k.length;
            for (this.v = C("float32", p), this.pv = C("float32", p), this.vel = C("float32", p), u = 0; u < p; u += 1) this.v[u] = n.k[u] * this.mult, this.pv[u] = n.k[u];
            this._isFirstFrame = !0, this.effectsSequence = [], this.getValue = br, this.setVValue = yr, this.addEffect = Pr
        }

        function Ti(i, n, h, l) {
            this.propType = "unidimensional", this.keyframes = n.k, this.keyframesMetadata = [], this.offsetTime = i.data.st, this.frameId = -1, this._caching = {
                lastFrame: $e,
                lastIndex: 0,
                value: 0,
                _lastKeyframeIndex: -1
            }, this.k = !0, this.kf = !0, this.data = n, this.mult = h || 1, this.elem = i, this.container = l, this.comp = i.comp, this.v = $e, this.pv = $e, this._isFirstFrame = !0, this.getValue = br, this.setVValue = yr, this.interpolateValue = qr, this.effectsSequence = [$r.bind(this)], this.addEffect = Pr
        }

        function ki(i, n, h, l) {
            this.propType = "multidimensional";
            var u, p = n.k.length,
                A, B, T, H;
            for (u = 0; u < p - 1; u += 1) n.k[u].to && n.k[u].s && n.k[u + 1] && n.k[u + 1].s && (A = n.k[u].s, B = n.k[u + 1].s, T = n.k[u].to, H = n.k[u].ti, (A.length === 2 && !(A[0] === B[0] && A[1] === B[1]) && Ee.pointOnLine2D(A[0], A[1], B[0], B[1], A[0] + T[0], A[1] + T[1]) && Ee.pointOnLine2D(A[0], A[1], B[0], B[1], B[0] + H[0], B[1] + H[1]) || A.length === 3 && !(A[0] === B[0] && A[1] === B[1] && A[2] === B[2]) && Ee.pointOnLine3D(A[0], A[1], A[2], B[0], B[1], B[2], A[0] + T[0], A[1] + T[1], A[2] + T[2]) && Ee.pointOnLine3D(A[0], A[1], A[2], B[0], B[1], B[2], B[0] + H[0], B[1] + H[1], B[2] + H[2])) && (n.k[u].to = null, n.k[u].ti = null), A[0] === B[0] && A[1] === B[1] && T[0] === 0 && T[1] === 0 && H[0] === 0 && H[1] === 0 && (A.length === 2 || A[2] === B[2] && T[2] === 0 && H[2] === 0) && (n.k[u].to = null, n.k[u].ti = null));
            this.effectsSequence = [$r.bind(this)], this.data = n, this.keyframes = n.k, this.keyframesMetadata = [], this.offsetTime = i.data.st, this.k = !0, this.kf = !0, this._isFirstFrame = !0, this.mult = h || 1, this.elem = i, this.container = l, this.comp = i.comp, this.getValue = br, this.setVValue = yr, this.interpolateValue = qr, this.frameId = -1;
            var W = n.k[0].s.length;
            for (this.v = C("float32", W), this.pv = C("float32", W), u = 0; u < W; u += 1) this.v[u] = $e, this.pv[u] = $e;
            this._caching = {
                lastFrame: $e,
                lastIndex: 0,
                value: C("float32", W)
            }, this.addEffect = Pr
        }
        var mt = function() {
            function i(h, l, u, p, A) {
                l.sid && (l = h.globalData.slotManager.getProp(l));
                var B;
                if (!l.k.length) B = new xi(h, l, p, A);
                else if (typeof l.k[0] == "number") B = new Ai(h, l, p, A);
                else switch (u) {
                    case 0:
                        B = new Ti(h, l, p, A);
                        break;
                    case 1:
                        B = new ki(h, l, p, A);
                        break
                }
                return B.effectsSequence.length && A.addDynamicProperty(B), B
            }
            var n = {
                getProp: i
            };
            return n
        }();

        function Yt() {}
        Yt.prototype = {
            addDynamicProperty: function(n) {
                this.dynamicProperties.indexOf(n) === -1 && (this.dynamicProperties.push(n), this.container.addDynamicProperty(this), this._isAnimated = !0)
            },
            iterateDynamicProperties: function() {
                this._mdf = !1;
                var n, h = this.dynamicProperties.length;
                for (n = 0; n < h; n += 1) this.dynamicProperties[n].getValue(), this.dynamicProperties[n]._mdf && (this._mdf = !0)
            },
            initDynamicPropertyContainer: function(n) {
                this.container = n, this.dynamicProperties = [], this._mdf = !1, this._isAnimated = !1
            }
        };
        var Xe = function() {
            function i() {
                return C("float32", 2)
            }
            return ce(8, i)
        }();

        function Te() {
            this.c = !1, this._length = 0, this._maxLength = 8, this.v = b(this._maxLength), this.o = b(this._maxLength), this.i = b(this._maxLength)
        }
        Te.prototype.setPathData = function(i, n) {
            this.c = i, this.setLength(n);
            for (var h = 0; h < n;) this.v[h] = Xe.newElement(), this.o[h] = Xe.newElement(), this.i[h] = Xe.newElement(), h += 1
        }, Te.prototype.setLength = function(i) {
            for (; this._maxLength < i;) this.doubleArrayLength();
            this._length = i
        }, Te.prototype.doubleArrayLength = function() {
            this.v = this.v.concat(b(this._maxLength)), this.i = this.i.concat(b(this._maxLength)), this.o = this.o.concat(b(this._maxLength)), this._maxLength *= 2
        }, Te.prototype.setXYAt = function(i, n, h, l, u) {
            var p;
            switch (this._length = Math.max(this._length, l + 1), this._length >= this._maxLength && this.doubleArrayLength(), h) {
                case "v":
                    p = this.v;
                    break;
                case "i":
                    p = this.i;
                    break;
                case "o":
                    p = this.o;
                    break;
                default:
                    p = [];
                    break
            }(!p[l] || p[l] && !u) && (p[l] = Xe.newElement()), p[l][0] = i, p[l][1] = n
        }, Te.prototype.setTripleAt = function(i, n, h, l, u, p, A, B) {
            this.setXYAt(i, n, "v", A, B), this.setXYAt(h, l, "o", A, B), this.setXYAt(u, p, "i", A, B)
        }, Te.prototype.reverse = function() {
            var i = new Te;
            i.setPathData(this.c, this._length);
            var n = this.v,
                h = this.o,
                l = this.i,
                u = 0;
            this.c && (i.setTripleAt(n[0][0], n[0][1], l[0][0], l[0][1], h[0][0], h[0][1], 0, !1), u = 1);
            var p = this._length - 1,
                A = this._length,
                B;
            for (B = u; B < A; B += 1) i.setTripleAt(n[p][0], n[p][1], l[p][0], l[p][1], h[p][0], h[p][1], B, !1), p -= 1;
            return i
        }, Te.prototype.length = function() {
            return this._length
        };
        var Qt = function() {
            function i() {
                return new Te
            }

            function n(u) {
                var p = u._length,
                    A;
                for (A = 0; A < p; A += 1) Xe.release(u.v[A]), Xe.release(u.i[A]), Xe.release(u.o[A]), u.v[A] = null, u.i[A] = null, u.o[A] = null;
                u._length = 0, u.c = !1
            }

            function h(u) {
                var p = l.newElement(),
                    A, B = u._length === void 0 ? u.v.length : u._length;
                for (p.setLength(B), p.c = u.c, A = 0; A < B; A += 1) p.setTripleAt(u.v[A][0], u.v[A][1], u.o[A][0], u.o[A][1], u.i[A][0], u.i[A][1], A);
                return p
            }
            var l = ce(4, i, n);
            return l.clone = h, l
        }();

        function Fr() {
            this._length = 0, this._maxLength = 4, this.shapes = b(this._maxLength)
        }
        Fr.prototype.addShape = function(i) {
            this._length === this._maxLength && (this.shapes = this.shapes.concat(b(this._maxLength)), this._maxLength *= 2), this.shapes[this._length] = i, this._length += 1
        }, Fr.prototype.releaseShapes = function() {
            var i;
            for (i = 0; i < this._length; i += 1) Qt.release(this.shapes[i]);
            this._length = 0
        };
        var Qe = function() {
                var i = {
                        newShapeCollection: u,
                        release: p
                    },
                    n = 0,
                    h = 4,
                    l = b(h);

                function u() {
                    var A;
                    return n ? (n -= 1, A = l[n]) : A = new Fr, A
                }

                function p(A) {
                    var B, T = A._length;
                    for (B = 0; B < T; B += 1) Qt.release(A.shapes[B]);
                    A._length = 0, n === h && (l = ae.double(l), h *= 2), l[n] = A, n += 1
                }
                return i
            }(),
            _r = function() {
                var i = -999999;

                function n(q, z, I) {
                    var R = I.lastIndex,
                        j, Q, it, ot, ut, wt, At, dt, It, Ct = this.keyframes;
                    if (q < Ct[0].t - this.offsetTime) j = Ct[0].s[0], it = !0, R = 0;
                    else if (q >= Ct[Ct.length - 1].t - this.offsetTime) j = Ct[Ct.length - 1].s ? Ct[Ct.length - 1].s[0] : Ct[Ct.length - 2].e[0], it = !0;
                    else {
                        for (var pt = R, O = Ct.length - 1, K = !0, x, F, at; K && (x = Ct[pt], F = Ct[pt + 1], !(F.t - this.offsetTime > q));) pt < O - 1 ? pt += 1 : K = !1;
                        if (at = this.keyframesMetadata[pt] || {}, it = x.h === 1, R = pt, !it) {
                            if (q >= F.t - this.offsetTime) dt = 1;
                            else if (q < x.t - this.offsetTime) dt = 0;
                            else {
                                var et;
                                at.__fnct ? et = at.__fnct : (et = ne.getBezierEasing(x.o.x, x.o.y, x.i.x, x.i.y).get, at.__fnct = et), dt = et((q - (x.t - this.offsetTime)) / (F.t - this.offsetTime - (x.t - this.offsetTime)))
                            }
                            Q = F.s ? F.s[0] : x.e[0]
                        }
                        j = x.s[0]
                    }
                    for (wt = z._length, At = j.i[0].length, I.lastIndex = R, ot = 0; ot < wt; ot += 1)
                        for (ut = 0; ut < At; ut += 1) It = it ? j.i[ot][ut] : j.i[ot][ut] + (Q.i[ot][ut] - j.i[ot][ut]) * dt, z.i[ot][ut] = It, It = it ? j.o[ot][ut] : j.o[ot][ut] + (Q.o[ot][ut] - j.o[ot][ut]) * dt, z.o[ot][ut] = It, It = it ? j.v[ot][ut] : j.v[ot][ut] + (Q.v[ot][ut] - j.v[ot][ut]) * dt, z.v[ot][ut] = It
                }

                function h() {
                    var q = this.comp.renderedFrame - this.offsetTime,
                        z = this.keyframes[0].t - this.offsetTime,
                        I = this.keyframes[this.keyframes.length - 1].t - this.offsetTime,
                        R = this._caching.lastFrame;
                    return R !== i && (R < z && q < z || R > I && q > I) || (this._caching.lastIndex = R < q ? this._caching.lastIndex : 0, this.interpolateShape(q, this.pv, this._caching)), this._caching.lastFrame = q, this.pv
                }

                function l() {
                    this.paths = this.localShapeCollection
                }

                function u(q, z) {
                    if (q._length !== z._length || q.c !== z.c) return !1;
                    var I, R = q._length;
                    for (I = 0; I < R; I += 1)
                        if (q.v[I][0] !== z.v[I][0] || q.v[I][1] !== z.v[I][1] || q.o[I][0] !== z.o[I][0] || q.o[I][1] !== z.o[I][1] || q.i[I][0] !== z.i[I][0] || q.i[I][1] !== z.i[I][1]) return !1;
                    return !0
                }

                function p(q) {
                    u(this.v, q) || (this.v = Qt.clone(q), this.localShapeCollection.releaseShapes(), this.localShapeCollection.addShape(this.v), this._mdf = !0, this.paths = this.localShapeCollection)
                }

                function A() {
                    if (this.elem.globalData.frameId !== this.frameId) {
                        if (!this.effectsSequence.length) {
                            this._mdf = !1;
                            return
                        }
                        if (this.lock) {
                            this.setVValue(this.pv);
                            return
                        }
                        this.lock = !0, this._mdf = !1;
                        var q;
                        this.kf ? q = this.pv : this.data.ks ? q = this.data.ks.k : q = this.data.pt.k;
                        var z, I = this.effectsSequence.length;
                        for (z = 0; z < I; z += 1) q = this.effectsSequence[z](q);
                        this.setVValue(q), this.lock = !1, this.frameId = this.elem.globalData.frameId
                    }
                }

                function B(q, z, I) {
                    this.propType = "shape", this.comp = q.comp, this.container = q, this.elem = q, this.data = z, this.k = !1, this.kf = !1, this._mdf = !1;
                    var R = I === 3 ? z.pt.k : z.ks.k;
                    this.v = Qt.clone(R), this.pv = Qt.clone(this.v), this.localShapeCollection = Qe.newShapeCollection(), this.paths = this.localShapeCollection, this.paths.addShape(this.v), this.reset = l, this.effectsSequence = []
                }

                function T(q) {
                    this.effectsSequence.push(q), this.container.addDynamicProperty(this)
                }
                B.prototype.interpolateShape = n, B.prototype.getValue = A, B.prototype.setVValue = p, B.prototype.addEffect = T;

                function H(q, z, I) {
                    this.propType = "shape", this.comp = q.comp, this.elem = q, this.container = q, this.offsetTime = q.data.st, this.keyframes = I === 3 ? z.pt.k : z.ks.k, this.keyframesMetadata = [], this.k = !0, this.kf = !0;
                    var R = this.keyframes[0].s[0].i.length;
                    this.v = Qt.newElement(), this.v.setPathData(this.keyframes[0].s[0].c, R), this.pv = Qt.clone(this.v), this.localShapeCollection = Qe.newShapeCollection(), this.paths = this.localShapeCollection, this.paths.addShape(this.v), this.lastFrame = i, this.reset = l, this._caching = {
                        lastFrame: i,
                        lastIndex: 0
                    }, this.effectsSequence = [h.bind(this)]
                }
                H.prototype.getValue = A, H.prototype.interpolateShape = n, H.prototype.setVValue = p, H.prototype.addEffect = T;
                var W = function() {
                        var q = vt;

                        function z(I, R) {
                            this.v = Qt.newElement(), this.v.setPathData(!0, 4), this.localShapeCollection = Qe.newShapeCollection(), this.paths = this.localShapeCollection, this.localShapeCollection.addShape(this.v), this.d = R.d, this.elem = I, this.comp = I.comp, this.frameId = -1, this.initDynamicPropertyContainer(I), this.p = mt.getProp(I, R.p, 1, 0, this), this.s = mt.getProp(I, R.s, 1, 0, this), this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertEllToPath())
                        }
                        return z.prototype = {
                            reset: l,
                            getValue: function() {
                                this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertEllToPath())
                            },
                            convertEllToPath: function() {
                                var R = this.p.v[0],
                                    j = this.p.v[1],
                                    Q = this.s.v[0] / 2,
                                    it = this.s.v[1] / 2,
                                    ot = this.d !== 3,
                                    ut = this.v;
                                ut.v[0][0] = R, ut.v[0][1] = j - it, ut.v[1][0] = ot ? R + Q : R - Q, ut.v[1][1] = j, ut.v[2][0] = R, ut.v[2][1] = j + it, ut.v[3][0] = ot ? R - Q : R + Q, ut.v[3][1] = j, ut.i[0][0] = ot ? R - Q * q : R + Q * q, ut.i[0][1] = j - it, ut.i[1][0] = ot ? R + Q : R - Q, ut.i[1][1] = j - it * q, ut.i[2][0] = ot ? R + Q * q : R - Q * q, ut.i[2][1] = j + it, ut.i[3][0] = ot ? R - Q : R + Q, ut.i[3][1] = j + it * q, ut.o[0][0] = ot ? R + Q * q : R - Q * q, ut.o[0][1] = j - it, ut.o[1][0] = ot ? R + Q : R - Q, ut.o[1][1] = j + it * q, ut.o[2][0] = ot ? R - Q * q : R + Q * q, ut.o[2][1] = j + it, ut.o[3][0] = ot ? R - Q : R + Q, ut.o[3][1] = j - it * q
                            }
                        }, M([Yt], z), z
                    }(),
                    st = function() {
                        function q(z, I) {
                            this.v = Qt.newElement(), this.v.setPathData(!0, 0), this.elem = z, this.comp = z.comp, this.data = I, this.frameId = -1, this.d = I.d, this.initDynamicPropertyContainer(z), I.sy === 1 ? (this.ir = mt.getProp(z, I.ir, 0, 0, this), this.is = mt.getProp(z, I.is, 0, .01, this), this.convertToPath = this.convertStarToPath) : this.convertToPath = this.convertPolygonToPath, this.pt = mt.getProp(z, I.pt, 0, 0, this), this.p = mt.getProp(z, I.p, 1, 0, this), this.r = mt.getProp(z, I.r, 0, ht, this), this.or = mt.getProp(z, I.or, 0, 0, this), this.os = mt.getProp(z, I.os, 0, .01, this), this.localShapeCollection = Qe.newShapeCollection(), this.localShapeCollection.addShape(this.v), this.paths = this.localShapeCollection, this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertToPath())
                        }
                        return q.prototype = {
                            reset: l,
                            getValue: function() {
                                this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertToPath())
                            },
                            convertStarToPath: function() {
                                var I = Math.floor(this.pt.v) * 2,
                                    R = Math.PI * 2 / I,
                                    j = !0,
                                    Q = this.or.v,
                                    it = this.ir.v,
                                    ot = this.os.v,
                                    ut = this.is.v,
                                    wt = 2 * Math.PI * Q / (I * 2),
                                    At = 2 * Math.PI * it / (I * 2),
                                    dt, It, Ct, pt, O = -Math.PI / 2;
                                O += this.r.v;
                                var K = this.data.d === 3 ? -1 : 1;
                                for (this.v._length = 0, dt = 0; dt < I; dt += 1) {
                                    It = j ? Q : it, Ct = j ? ot : ut, pt = j ? wt : At;
                                    var x = It * Math.cos(O),
                                        F = It * Math.sin(O),
                                        at = x === 0 && F === 0 ? 0 : F / Math.sqrt(x * x + F * F),
                                        et = x === 0 && F === 0 ? 0 : -x / Math.sqrt(x * x + F * F);
                                    x += +this.p.v[0], F += +this.p.v[1], this.v.setTripleAt(x, F, x - at * pt * Ct * K, F - et * pt * Ct * K, x + at * pt * Ct * K, F + et * pt * Ct * K, dt, !0), j = !j, O += R * K
                                }
                            },
                            convertPolygonToPath: function() {
                                var I = Math.floor(this.pt.v),
                                    R = Math.PI * 2 / I,
                                    j = this.or.v,
                                    Q = this.os.v,
                                    it = 2 * Math.PI * j / (I * 4),
                                    ot, ut = -Math.PI * .5,
                                    wt = this.data.d === 3 ? -1 : 1;
                                for (ut += this.r.v, this.v._length = 0, ot = 0; ot < I; ot += 1) {
                                    var At = j * Math.cos(ut),
                                        dt = j * Math.sin(ut),
                                        It = At === 0 && dt === 0 ? 0 : dt / Math.sqrt(At * At + dt * dt),
                                        Ct = At === 0 && dt === 0 ? 0 : -At / Math.sqrt(At * At + dt * dt);
                                    At += +this.p.v[0], dt += +this.p.v[1], this.v.setTripleAt(At, dt, At - It * it * Q * wt, dt - Ct * it * Q * wt, At + It * it * Q * wt, dt + Ct * it * Q * wt, ot, !0), ut += R * wt
                                }
                                this.paths.length = 0, this.paths[0] = this.v
                            }
                        }, M([Yt], q), q
                    }(),
                    L = function() {
                        function q(z, I) {
                            this.v = Qt.newElement(), this.v.c = !0, this.localShapeCollection = Qe.newShapeCollection(), this.localShapeCollection.addShape(this.v), this.paths = this.localShapeCollection, this.elem = z, this.comp = z.comp, this.frameId = -1, this.d = I.d, this.initDynamicPropertyContainer(z), this.p = mt.getProp(z, I.p, 1, 0, this), this.s = mt.getProp(z, I.s, 1, 0, this), this.r = mt.getProp(z, I.r, 0, 0, this), this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertRectToPath())
                        }
                        return q.prototype = {
                            convertRectToPath: function() {
                                var I = this.p.v[0],
                                    R = this.p.v[1],
                                    j = this.s.v[0] / 2,
                                    Q = this.s.v[1] / 2,
                                    it = Z(j, Q, this.r.v),
                                    ot = it * (1 - vt);
                                this.v._length = 0, this.d === 2 || this.d === 1 ? (this.v.setTripleAt(I + j, R - Q + it, I + j, R - Q + it, I + j, R - Q + ot, 0, !0), this.v.setTripleAt(I + j, R + Q - it, I + j, R + Q - ot, I + j, R + Q - it, 1, !0), it !== 0 ? (this.v.setTripleAt(I + j - it, R + Q, I + j - it, R + Q, I + j - ot, R + Q, 2, !0), this.v.setTripleAt(I - j + it, R + Q, I - j + ot, R + Q, I - j + it, R + Q, 3, !0), this.v.setTripleAt(I - j, R + Q - it, I - j, R + Q - it, I - j, R + Q - ot, 4, !0), this.v.setTripleAt(I - j, R - Q + it, I - j, R - Q + ot, I - j, R - Q + it, 5, !0), this.v.setTripleAt(I - j + it, R - Q, I - j + it, R - Q, I - j + ot, R - Q, 6, !0), this.v.setTripleAt(I + j - it, R - Q, I + j - ot, R - Q, I + j - it, R - Q, 7, !0)) : (this.v.setTripleAt(I - j, R + Q, I - j + ot, R + Q, I - j, R + Q, 2), this.v.setTripleAt(I - j, R - Q, I - j, R - Q + ot, I - j, R - Q, 3))) : (this.v.setTripleAt(I + j, R - Q + it, I + j, R - Q + ot, I + j, R - Q + it, 0, !0), it !== 0 ? (this.v.setTripleAt(I + j - it, R - Q, I + j - it, R - Q, I + j - ot, R - Q, 1, !0), this.v.setTripleAt(I - j + it, R - Q, I - j + ot, R - Q, I - j + it, R - Q, 2, !0), this.v.setTripleAt(I - j, R - Q + it, I - j, R - Q + it, I - j, R - Q + ot, 3, !0), this.v.setTripleAt(I - j, R + Q - it, I - j, R + Q - ot, I - j, R + Q - it, 4, !0), this.v.setTripleAt(I - j + it, R + Q, I - j + it, R + Q, I - j + ot, R + Q, 5, !0), this.v.setTripleAt(I + j - it, R + Q, I + j - ot, R + Q, I + j - it, R + Q, 6, !0), this.v.setTripleAt(I + j, R + Q - it, I + j, R + Q - it, I + j, R + Q - ot, 7, !0)) : (this.v.setTripleAt(I - j, R - Q, I - j + ot, R - Q, I - j, R - Q, 1, !0), this.v.setTripleAt(I - j, R + Q, I - j, R + Q - ot, I - j, R + Q, 2, !0), this.v.setTripleAt(I + j, R + Q, I + j - ot, R + Q, I + j, R + Q, 3, !0)))
                            },
                            getValue: function() {
                                this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertRectToPath())
                            },
                            reset: l
                        }, M([Yt], q), q
                    }();

                function $(q, z, I) {
                    var R;
                    if (I === 3 || I === 4) {
                        var j = I === 3 ? z.pt : z.ks,
                            Q = j.k;
                        Q.length ? R = new H(q, z, I) : R = new B(q, z, I)
                    } else I === 5 ? R = new L(q, z) : I === 6 ? R = new W(q, z) : I === 7 && (R = new st(q, z));
                    return R.k && q.addDynamicProperty(R), R
                }

                function U() {
                    return B
                }

                function Y() {
                    return H
                }
                var rt = {};
                return rt.getShapeProp = $, rt.getConstructorFunction = U, rt.getKeyframedConstructorFunction = Y, rt
            }();
        /*!
         Transformation Matrix v2.0
         (c) Epistemex 2014-2015
         www.epistemex.com
         By Ken Fyrstenberg
         Contributions by leeoniya.
         License: MIT, header required.
         */
        var te = function() {
            var i = Math.cos,
                n = Math.sin,
                h = Math.tan,
                l = Math.round;

            function u() {
                return this.props[0] = 1, this.props[1] = 0, this.props[2] = 0, this.props[3] = 0, this.props[4] = 0, this.props[5] = 1, this.props[6] = 0, this.props[7] = 0, this.props[8] = 0, this.props[9] = 0, this.props[10] = 1, this.props[11] = 0, this.props[12] = 0, this.props[13] = 0, this.props[14] = 0, this.props[15] = 1, this
            }

            function p(x) {
                if (x === 0) return this;
                var F = i(x),
                    at = n(x);
                return this._t(F, -at, 0, 0, at, F, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
            }

            function A(x) {
                if (x === 0) return this;
                var F = i(x),
                    at = n(x);
                return this._t(1, 0, 0, 0, 0, F, -at, 0, 0, at, F, 0, 0, 0, 0, 1)
            }

            function B(x) {
                if (x === 0) return this;
                var F = i(x),
                    at = n(x);
                return this._t(F, 0, at, 0, 0, 1, 0, 0, -at, 0, F, 0, 0, 0, 0, 1)
            }

            function T(x) {
                if (x === 0) return this;
                var F = i(x),
                    at = n(x);
                return this._t(F, -at, 0, 0, at, F, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
            }

            function H(x, F) {
                return this._t(1, F, x, 1, 0, 0)
            }

            function W(x, F) {
                return this.shear(h(x), h(F))
            }

            function st(x, F) {
                var at = i(F),
                    et = n(F);
                return this._t(at, et, 0, 0, -et, at, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, h(x), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(at, -et, 0, 0, et, at, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
            }

            function L(x, F, at) {
                return !at && at !== 0 && (at = 1), x === 1 && F === 1 && at === 1 ? this : this._t(x, 0, 0, 0, 0, F, 0, 0, 0, 0, at, 0, 0, 0, 0, 1)
            }

            function $(x, F, at, et, Pt, kt, Ft, Bt, Dt, Wt, he, xe, le, Zt, pe, Gt) {
                return this.props[0] = x, this.props[1] = F, this.props[2] = at, this.props[3] = et, this.props[4] = Pt, this.props[5] = kt, this.props[6] = Ft, this.props[7] = Bt, this.props[8] = Dt, this.props[9] = Wt, this.props[10] = he, this.props[11] = xe, this.props[12] = le, this.props[13] = Zt, this.props[14] = pe, this.props[15] = Gt, this
            }

            function U(x, F, at) {
                return at = at || 0, x !== 0 || F !== 0 || at !== 0 ? this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, F, at, 1) : this
            }

            function Y(x, F, at, et, Pt, kt, Ft, Bt, Dt, Wt, he, xe, le, Zt, pe, Gt) {
                var xt = this.props;
                if (x === 1 && F === 0 && at === 0 && et === 0 && Pt === 0 && kt === 1 && Ft === 0 && Bt === 0 && Dt === 0 && Wt === 0 && he === 1 && xe === 0) return xt[12] = xt[12] * x + xt[15] * le, xt[13] = xt[13] * kt + xt[15] * Zt, xt[14] = xt[14] * he + xt[15] * pe, xt[15] *= Gt, this._identityCalculated = !1, this;
                var we = xt[0],
                    Ge = xt[1],
                    Fe = xt[2],
                    Ae = xt[3],
                    Ie = xt[4],
                    Le = xt[5],
                    fe = xt[6],
                    Ne = xt[7],
                    He = xt[8],
                    Pe = xt[9],
                    je = xt[10],
                    _e = xt[11],
                    Je = xt[12],
                    kr = xt[13],
                    Mr = xt[14],
                    wr = xt[15];
                return xt[0] = we * x + Ge * Pt + Fe * Dt + Ae * le, xt[1] = we * F + Ge * kt + Fe * Wt + Ae * Zt, xt[2] = we * at + Ge * Ft + Fe * he + Ae * pe, xt[3] = we * et + Ge * Bt + Fe * xe + Ae * Gt, xt[4] = Ie * x + Le * Pt + fe * Dt + Ne * le, xt[5] = Ie * F + Le * kt + fe * Wt + Ne * Zt, xt[6] = Ie * at + Le * Ft + fe * he + Ne * pe, xt[7] = Ie * et + Le * Bt + fe * xe + Ne * Gt, xt[8] = He * x + Pe * Pt + je * Dt + _e * le, xt[9] = He * F + Pe * kt + je * Wt + _e * Zt, xt[10] = He * at + Pe * Ft + je * he + _e * pe, xt[11] = He * et + Pe * Bt + je * xe + _e * Gt, xt[12] = Je * x + kr * Pt + Mr * Dt + wr * le, xt[13] = Je * F + kr * kt + Mr * Wt + wr * Zt, xt[14] = Je * at + kr * Ft + Mr * he + wr * pe, xt[15] = Je * et + kr * Bt + Mr * xe + wr * Gt, this._identityCalculated = !1, this
            }

            function rt(x) {
                var F = x.props;
                return this.transform(F[0], F[1], F[2], F[3], F[4], F[5], F[6], F[7], F[8], F[9], F[10], F[11], F[12], F[13], F[14], F[15])
            }

            function q() {
                return this._identityCalculated || (this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1), this._identityCalculated = !0), this._identity
            }

            function z(x) {
                for (var F = 0; F < 16;) {
                    if (x.props[F] !== this.props[F]) return !1;
                    F += 1
                }
                return !0
            }

            function I(x) {
                var F;
                for (F = 0; F < 16; F += 1) x.props[F] = this.props[F];
                return x
            }

            function R(x) {
                var F;
                for (F = 0; F < 16; F += 1) this.props[F] = x[F]
            }

            function j(x, F, at) {
                return {
                    x: x * this.props[0] + F * this.props[4] + at * this.props[8] + this.props[12],
                    y: x * this.props[1] + F * this.props[5] + at * this.props[9] + this.props[13],
                    z: x * this.props[2] + F * this.props[6] + at * this.props[10] + this.props[14]
                }
            }

            function Q(x, F, at) {
                return x * this.props[0] + F * this.props[4] + at * this.props[8] + this.props[12]
            }

            function it(x, F, at) {
                return x * this.props[1] + F * this.props[5] + at * this.props[9] + this.props[13]
            }

            function ot(x, F, at) {
                return x * this.props[2] + F * this.props[6] + at * this.props[10] + this.props[14]
            }

            function ut() {
                var x = this.props[0] * this.props[5] - this.props[1] * this.props[4],
                    F = this.props[5] / x,
                    at = -this.props[1] / x,
                    et = -this.props[4] / x,
                    Pt = this.props[0] / x,
                    kt = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / x,
                    Ft = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / x,
                    Bt = new te;
                return Bt.props[0] = F, Bt.props[1] = at, Bt.props[4] = et, Bt.props[5] = Pt, Bt.props[12] = kt, Bt.props[13] = Ft, Bt
            }

            function wt(x) {
                var F = this.getInverseMatrix();
                return F.applyToPointArray(x[0], x[1], x[2] || 0)
            }

            function At(x) {
                var F, at = x.length,
                    et = [];
                for (F = 0; F < at; F += 1) et[F] = wt(x[F]);
                return et
            }

            function dt(x, F, at) {
                var et = C("float32", 6);
                if (this.isIdentity()) et[0] = x[0], et[1] = x[1], et[2] = F[0], et[3] = F[1], et[4] = at[0], et[5] = at[1];
                else {
                    var Pt = this.props[0],
                        kt = this.props[1],
                        Ft = this.props[4],
                        Bt = this.props[5],
                        Dt = this.props[12],
                        Wt = this.props[13];
                    et[0] = x[0] * Pt + x[1] * Ft + Dt, et[1] = x[0] * kt + x[1] * Bt + Wt, et[2] = F[0] * Pt + F[1] * Ft + Dt, et[3] = F[0] * kt + F[1] * Bt + Wt, et[4] = at[0] * Pt + at[1] * Ft + Dt, et[5] = at[0] * kt + at[1] * Bt + Wt
                }
                return et
            }

            function It(x, F, at) {
                var et;
                return this.isIdentity() ? et = [x, F, at] : et = [x * this.props[0] + F * this.props[4] + at * this.props[8] + this.props[12], x * this.props[1] + F * this.props[5] + at * this.props[9] + this.props[13], x * this.props[2] + F * this.props[6] + at * this.props[10] + this.props[14]], et
            }

            function Ct(x, F) {
                if (this.isIdentity()) return x + "," + F;
                var at = this.props;
                return Math.round((x * at[0] + F * at[4] + at[12]) * 100) / 100 + "," + Math.round((x * at[1] + F * at[5] + at[13]) * 100) / 100
            }

            function pt() {
                for (var x = 0, F = this.props, at = "matrix3d(", et = 1e4; x < 16;) at += l(F[x] * et) / et, at += x === 15 ? ")" : ",", x += 1;
                return at
            }

            function O(x) {
                var F = 1e4;
                return x < 1e-6 && x > 0 || x > -1e-6 && x < 0 ? l(x * F) / F : x
            }

            function K() {
                var x = this.props,
                    F = O(x[0]),
                    at = O(x[1]),
                    et = O(x[4]),
                    Pt = O(x[5]),
                    kt = O(x[12]),
                    Ft = O(x[13]);
                return "matrix(" + F + "," + at + "," + et + "," + Pt + "," + kt + "," + Ft + ")"
            }
            return function() {
                this.reset = u, this.rotate = p, this.rotateX = A, this.rotateY = B, this.rotateZ = T, this.skew = W, this.skewFromAxis = st, this.shear = H, this.scale = L, this.setTransform = $, this.translate = U, this.transform = Y, this.multiply = rt, this.applyToPoint = j, this.applyToX = Q, this.applyToY = it, this.applyToZ = ot, this.applyToPointArray = It, this.applyToTriplePoints = dt, this.applyToPointStringified = Ct, this.toCSS = pt, this.to2dCSS = K, this.clone = I, this.cloneFromProps = R, this.equals = z, this.inversePoints = At, this.inversePoint = wt, this.getInverseMatrix = ut, this._t = this.transform, this.isIdentity = q, this._identity = !0, this._identityCalculated = !1, this.props = C("float32", 16), this.reset()
            }
        }();

        function Sr(i) {
            "@babel/helpers - typeof";
            return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? Sr = function(h) {
                return typeof h
            } : Sr = function(h) {
                return h && typeof Symbol == "function" && h.constructor === Symbol && h !== Symbol.prototype ? "symbol" : typeof h
            }, Sr(i)
        }
        var zt = {};

        function Mi(i) {
            c(i)
        }

        function Xr() {
            Ot.searchAnimations()
        }

        function wi(i) {
            Mt(i)
        }

        function Fi(i) {
            Kt(i)
        }

        function Ii(i) {
            return Ot.loadAnimation(i)
        }

        function Li(i) {
            if (typeof i == "string") switch (i) {
                case "high":
                    qt(200);
                    break;
                default:
                case "medium":
                    qt(50);
                    break;
                case "low":
                    qt(10);
                    break
            } else !isNaN(i) && i > 1 && qt(i)
        }

        function Vi() {
            return typeof navigator < "u"
        }

        function Ri(i, n) {
            i === "expressions" && Vt(n)
        }

        function Bi(i) {
            switch (i) {
                case "propertyFactory":
                    return mt;
                case "shapePropertyFactory":
                    return _r;
                case "matrix":
                    return te;
                default:
                    return null
            }
        }
        zt.play = Ot.play, zt.pause = Ot.pause, zt.setLocationHref = Mi, zt.togglePause = Ot.togglePause, zt.setSpeed = Ot.setSpeed, zt.setDirection = Ot.setDirection, zt.stop = Ot.stop, zt.searchAnimations = Xr, zt.registerAnimation = Ot.registerAnimation, zt.loadAnimation = Ii, zt.setSubframeRendering = wi, zt.resize = Ot.resize, zt.goToAndStop = Ot.goToAndStop, zt.destroy = Ot.destroy, zt.setQuality = Li, zt.inBrowser = Vi, zt.installPlugin = Ri, zt.freeze = Ot.freeze, zt.unfreeze = Ot.unfreeze, zt.setVolume = Ot.setVolume, zt.mute = Ot.mute, zt.unmute = Ot.unmute, zt.getRegisteredAnimations = Ot.getRegisteredAnimations, zt.useWebWorker = f, zt.setIDPrefix = Fi, zt.__getFactory = Bi, zt.version = "5.12.2";

        function Di() {
            document.readyState === "complete" && (clearInterval(Gi), Xr())
        }

        function Oi(i) {
            for (var n = Yr.split("&"), h = 0; h < n.length; h += 1) {
                var l = n[h].split("=");
                if (decodeURIComponent(l[0]) == i) return decodeURIComponent(l[1])
            }
            return null
        }
        var Yr = ""; {
            var Zr = document.getElementsByTagName("script"),
                zi = Zr.length - 1,
                Kr = Zr[zi] || {
                    src: ""
                };
            Yr = Kr.src ? Kr.src.replace(/^[^\?]+\??/, "") : "", Oi("renderer")
        }
        var Gi = setInterval(Di, 100);
        try {
            Sr(e) !== "object" && (window.bodymovin = zt)
        } catch {}
        var Ve = function() {
            var i = {},
                n = {};
            i.registerModifier = h, i.getModifier = l;

            function h(u, p) {
                n[u] || (n[u] = p)
            }

            function l(u, p, A) {
                return new n[u](p, A)
            }
            return i
        }();

        function de() {}
        de.prototype.initModifierProperties = function() {}, de.prototype.addShapeToModifier = function() {}, de.prototype.addShape = function(i) {
            if (!this.closed) {
                i.sh.container.addDynamicProperty(i.sh);
                var n = {
                    shape: i.sh,
                    data: i,
                    localShapeCollection: Qe.newShapeCollection()
                };
                this.shapes.push(n), this.addShapeToModifier(n), this._isAnimated && i.setAsAnimated()
            }
        }, de.prototype.init = function(i, n) {
            this.shapes = [], this.elem = i, this.initDynamicPropertyContainer(i), this.initModifierProperties(i, n), this.frameId = o, this.closed = !1, this.k = !1, this.dynamicProperties.length ? this.k = !0 : this.getValue(!0)
        }, de.prototype.processKeys = function() {
            this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties())
        }, M([Yt], de);

        function be() {}
        M([de], be), be.prototype.initModifierProperties = function(i, n) {
            this.s = mt.getProp(i, n.s, 0, .01, this), this.e = mt.getProp(i, n.e, 0, .01, this), this.o = mt.getProp(i, n.o, 0, 0, this), this.sValue = 0, this.eValue = 0, this.getValue = this.processKeys, this.m = n.m, this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length
        }, be.prototype.addShapeToModifier = function(i) {
            i.pathsData = []
        }, be.prototype.calculateShapeEdges = function(i, n, h, l, u) {
            var p = [];
            n <= 1 ? p.push({
                s: i,
                e: n
            }) : i >= 1 ? p.push({
                s: i - 1,
                e: n - 1
            }) : (p.push({
                s: i,
                e: 1
            }), p.push({
                s: 0,
                e: n - 1
            }));
            var A = [],
                B, T = p.length,
                H;
            for (B = 0; B < T; B += 1)
                if (H = p[B], !(H.e * u < l || H.s * u > l + h)) {
                    var W, st;
                    H.s * u <= l ? W = 0 : W = (H.s * u - l) / h, H.e * u >= l + h ? st = 1 : st = (H.e * u - l) / h, A.push([W, st])
                }
            return A.length || A.push([0, 0]), A
        }, be.prototype.releasePathsData = function(i) {
            var n, h = i.length;
            for (n = 0; n < h; n += 1) We.release(i[n]);
            return i.length = 0, i
        }, be.prototype.processShapes = function(i) {
            var n, h;
            if (this._mdf || i) {
                var l = this.o.v % 360 / 360;
                if (l < 0 && (l += 1), this.s.v > 1 ? n = 1 + l : this.s.v < 0 ? n = 0 + l : n = this.s.v + l, this.e.v > 1 ? h = 1 + l : this.e.v < 0 ? h = 0 + l : h = this.e.v + l, n > h) {
                    var u = n;
                    n = h, h = u
                }
                n = Math.round(n * 1e4) * 1e-4, h = Math.round(h * 1e4) * 1e-4, this.sValue = n, this.eValue = h
            } else n = this.sValue, h = this.eValue;
            var p, A, B = this.shapes.length,
                T, H, W, st, L, $ = 0;
            if (h === n)
                for (A = 0; A < B; A += 1) this.shapes[A].localShapeCollection.releaseShapes(), this.shapes[A].shape._mdf = !0, this.shapes[A].shape.paths = this.shapes[A].localShapeCollection, this._mdf && (this.shapes[A].pathsData.length = 0);
            else if (h === 1 && n === 0 || h === 0 && n === 1) {
                if (this._mdf)
                    for (A = 0; A < B; A += 1) this.shapes[A].pathsData.length = 0, this.shapes[A].shape._mdf = !0
            } else {
                var U = [],
                    Y, rt;
                for (A = 0; A < B; A += 1)
                    if (Y = this.shapes[A], !Y.shape._mdf && !this._mdf && !i && this.m !== 2) Y.shape.paths = Y.localShapeCollection;
                    else {
                        if (p = Y.shape.paths, H = p._length, L = 0, !Y.shape._mdf && Y.pathsData.length) L = Y.totalShapeLength;
                        else {
                            for (W = this.releasePathsData(Y.pathsData), T = 0; T < H; T += 1) st = Ee.getSegmentsLength(p.shapes[T]), W.push(st), L += st.totalLength;
                            Y.totalShapeLength = L, Y.pathsData = W
                        }
                        $ += L, Y.shape._mdf = !0
                    }
                var q = n,
                    z = h,
                    I = 0,
                    R;
                for (A = B - 1; A >= 0; A -= 1)
                    if (Y = this.shapes[A], Y.shape._mdf) {
                        for (rt = Y.localShapeCollection, rt.releaseShapes(), this.m === 2 && B > 1 ? (R = this.calculateShapeEdges(n, h, Y.totalShapeLength, I, $), I += Y.totalShapeLength) : R = [
                                [q, z]
                            ], H = R.length, T = 0; T < H; T += 1) {
                            q = R[T][0], z = R[T][1], U.length = 0, z <= 1 ? U.push({
                                s: Y.totalShapeLength * q,
                                e: Y.totalShapeLength * z
                            }) : q >= 1 ? U.push({
                                s: Y.totalShapeLength * (q - 1),
                                e: Y.totalShapeLength * (z - 1)
                            }) : (U.push({
                                s: Y.totalShapeLength * q,
                                e: Y.totalShapeLength
                            }), U.push({
                                s: 0,
                                e: Y.totalShapeLength * (z - 1)
                            }));
                            var j = this.addShapes(Y, U[0]);
                            if (U[0].s !== U[0].e) {
                                if (U.length > 1) {
                                    var Q = Y.shape.paths.shapes[Y.shape.paths._length - 1];
                                    if (Q.c) {
                                        var it = j.pop();
                                        this.addPaths(j, rt), j = this.addShapes(Y, U[1], it)
                                    } else this.addPaths(j, rt), j = this.addShapes(Y, U[1])
                                }
                                this.addPaths(j, rt)
                            }
                        }
                        Y.shape.paths = rt
                    }
            }
        }, be.prototype.addPaths = function(i, n) {
            var h, l = i.length;
            for (h = 0; h < l; h += 1) n.addShape(i[h])
        }, be.prototype.addSegment = function(i, n, h, l, u, p, A) {
            u.setXYAt(n[0], n[1], "o", p), u.setXYAt(h[0], h[1], "i", p + 1), A && u.setXYAt(i[0], i[1], "v", p), u.setXYAt(l[0], l[1], "v", p + 1)
        }, be.prototype.addSegmentFromArray = function(i, n, h, l) {
            n.setXYAt(i[1], i[5], "o", h), n.setXYAt(i[2], i[6], "i", h + 1), l && n.setXYAt(i[0], i[4], "v", h), n.setXYAt(i[3], i[7], "v", h + 1)
        }, be.prototype.addShapes = function(i, n, h) {
            var l = i.pathsData,
                u = i.shape.paths.shapes,
                p, A = i.shape.paths._length,
                B, T, H = 0,
                W, st, L, $, U = [],
                Y, rt = !0;
            for (h ? (st = h._length, Y = h._length) : (h = Qt.newElement(), st = 0, Y = 0), U.push(h), p = 0; p < A; p += 1) {
                for (L = l[p].lengths, h.c = u[p].c, T = u[p].c ? L.length : L.length + 1, B = 1; B < T; B += 1)
                    if (W = L[B - 1], H + W.addedLength < n.s) H += W.addedLength, h.c = !1;
                    else if (H > n.e) {
                    h.c = !1;
                    break
                } else n.s <= H && n.e >= H + W.addedLength ? (this.addSegment(u[p].v[B - 1], u[p].o[B - 1], u[p].i[B], u[p].v[B], h, st, rt), rt = !1) : ($ = Ee.getNewSegment(u[p].v[B - 1], u[p].v[B], u[p].o[B - 1], u[p].i[B], (n.s - H) / W.addedLength, (n.e - H) / W.addedLength, L[B - 1]), this.addSegmentFromArray($, h, st, rt), rt = !1, h.c = !1), H += W.addedLength, st += 1;
                if (u[p].c && L.length) {
                    if (W = L[B - 1], H <= n.e) {
                        var q = L[B - 1].addedLength;
                        n.s <= H && n.e >= H + q ? (this.addSegment(u[p].v[B - 1], u[p].o[B - 1], u[p].i[0], u[p].v[0], h, st, rt), rt = !1) : ($ = Ee.getNewSegment(u[p].v[B - 1], u[p].v[0], u[p].o[B - 1], u[p].i[0], (n.s - H) / q, (n.e - H) / q, L[B - 1]), this.addSegmentFromArray($, h, st, rt), rt = !1, h.c = !1)
                    } else h.c = !1;
                    H += W.addedLength, st += 1
                }
                if (h._length && (h.setXYAt(h.v[Y][0], h.v[Y][1], "i", Y), h.setXYAt(h.v[h._length - 1][0], h.v[h._length - 1][1], "o", h._length - 1)), H > n.e) break;
                p < A - 1 && (h = Qt.newElement(), rt = !0, U.push(h), st = 0)
            }
            return U
        };

        function ar() {}
        M([de], ar), ar.prototype.initModifierProperties = function(i, n) {
            this.getValue = this.processKeys, this.amount = mt.getProp(i, n.a, 0, null, this), this._isAnimated = !!this.amount.effectsSequence.length
        }, ar.prototype.processPath = function(i, n) {
            var h = n / 100,
                l = [0, 0],
                u = i._length,
                p = 0;
            for (p = 0; p < u; p += 1) l[0] += i.v[p][0], l[1] += i.v[p][1];
            l[0] /= u, l[1] /= u;
            var A = Qt.newElement();
            A.c = i.c;
            var B, T, H, W, st, L;
            for (p = 0; p < u; p += 1) B = i.v[p][0] + (l[0] - i.v[p][0]) * h, T = i.v[p][1] + (l[1] - i.v[p][1]) * h, H = i.o[p][0] + (l[0] - i.o[p][0]) * -h, W = i.o[p][1] + (l[1] - i.o[p][1]) * -h, st = i.i[p][0] + (l[0] - i.i[p][0]) * -h, L = i.i[p][1] + (l[1] - i.i[p][1]) * -h, A.setTripleAt(B, T, H, W, st, L, p);
            return A
        }, ar.prototype.processShapes = function(i) {
            var n, h, l = this.shapes.length,
                u, p, A = this.amount.v;
            if (A !== 0) {
                var B, T;
                for (h = 0; h < l; h += 1) {
                    if (B = this.shapes[h], T = B.localShapeCollection, !(!B.shape._mdf && !this._mdf && !i))
                        for (T.releaseShapes(), B.shape._mdf = !0, n = B.shape.paths.shapes, p = B.shape.paths._length, u = 0; u < p; u += 1) T.addShape(this.processPath(n[u], A));
                    B.shape.paths = B.localShapeCollection
                }
            }
            this.dynamicProperties.length || (this._mdf = !1)
        };
        var Ir = function() {
            var i = [0, 0];

            function n(T) {
                var H = this._mdf;
                this.iterateDynamicProperties(), this._mdf = this._mdf || H, this.a && T.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]), this.s && T.scale(this.s.v[0], this.s.v[1], this.s.v[2]), this.sk && T.skewFromAxis(-this.sk.v, this.sa.v), this.r ? T.rotate(-this.r.v) : T.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]), this.data.p.s ? this.data.p.z ? T.translate(this.px.v, this.py.v, -this.pz.v) : T.translate(this.px.v, this.py.v, 0) : T.translate(this.p.v[0], this.p.v[1], -this.p.v[2])
            }

            function h(T) {
                if (this.elem.globalData.frameId !== this.frameId) {
                    if (this._isDirty && (this.precalculateMatrix(), this._isDirty = !1), this.iterateDynamicProperties(), this._mdf || T) {
                        var H;
                        if (this.v.cloneFromProps(this.pre.props), this.appliedTransformations < 1 && this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]), this.appliedTransformations < 2 && this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]), this.sk && this.appliedTransformations < 3 && this.v.skewFromAxis(-this.sk.v, this.sa.v), this.r && this.appliedTransformations < 4 ? this.v.rotate(-this.r.v) : !this.r && this.appliedTransformations < 4 && this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]), this.autoOriented) {
                            var W, st;
                            if (H = this.elem.globalData.frameRate, this.p && this.p.keyframes && this.p.getValueAtTime) this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t ? (W = this.p.getValueAtTime((this.p.keyframes[0].t + .01) / H, 0), st = this.p.getValueAtTime(this.p.keyframes[0].t / H, 0)) : this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t ? (W = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / H, 0), st = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - .05) / H, 0)) : (W = this.p.pv, st = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - .01) / H, this.p.offsetTime));
                            else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {
                                W = [], st = [];
                                var L = this.px,
                                    $ = this.py;
                                L._caching.lastFrame + L.offsetTime <= L.keyframes[0].t ? (W[0] = L.getValueAtTime((L.keyframes[0].t + .01) / H, 0), W[1] = $.getValueAtTime(($.keyframes[0].t + .01) / H, 0), st[0] = L.getValueAtTime(L.keyframes[0].t / H, 0), st[1] = $.getValueAtTime($.keyframes[0].t / H, 0)) : L._caching.lastFrame + L.offsetTime >= L.keyframes[L.keyframes.length - 1].t ? (W[0] = L.getValueAtTime(L.keyframes[L.keyframes.length - 1].t / H, 0), W[1] = $.getValueAtTime($.keyframes[$.keyframes.length - 1].t / H, 0), st[0] = L.getValueAtTime((L.keyframes[L.keyframes.length - 1].t - .01) / H, 0), st[1] = $.getValueAtTime(($.keyframes[$.keyframes.length - 1].t - .01) / H, 0)) : (W = [L.pv, $.pv], st[0] = L.getValueAtTime((L._caching.lastFrame + L.offsetTime - .01) / H, L.offsetTime), st[1] = $.getValueAtTime(($._caching.lastFrame + $.offsetTime - .01) / H, $.offsetTime))
                            } else st = i, W = st;
                            this.v.rotate(-Math.atan2(W[1] - st[1], W[0] - st[0]))
                        }
                        this.data.p && this.data.p.s ? this.data.p.z ? this.v.translate(this.px.v, this.py.v, -this.pz.v) : this.v.translate(this.px.v, this.py.v, 0) : this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2])
                    }
                    this.frameId = this.elem.globalData.frameId
                }
            }

            function l() {
                if (this.appliedTransformations = 0, this.pre.reset(), !this.a.effectsSequence.length) this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]), this.appliedTransformations = 1;
                else return;
                if (!this.s.effectsSequence.length) this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]), this.appliedTransformations = 2;
                else return;
                if (this.sk)
                    if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) this.pre.skewFromAxis(-this.sk.v, this.sa.v), this.appliedTransformations = 3;
                    else return;
                this.r ? this.r.effectsSequence.length || (this.pre.rotate(-this.r.v), this.appliedTransformations = 4) : !this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length && (this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]), this.appliedTransformations = 4)
            }

            function u() {}

            function p(T) {
                this._addDynamicProperty(T), this.elem.addDynamicProperty(T), this._isDirty = !0
            }

            function A(T, H, W) {
                if (this.elem = T, this.frameId = -1, this.propType = "transform", this.data = H, this.v = new te, this.pre = new te, this.appliedTransformations = 0, this.initDynamicPropertyContainer(W || T), H.p && H.p.s ? (this.px = mt.getProp(T, H.p.x, 0, 0, this), this.py = mt.getProp(T, H.p.y, 0, 0, this), H.p.z && (this.pz = mt.getProp(T, H.p.z, 0, 0, this))) : this.p = mt.getProp(T, H.p || {
                        k: [0, 0, 0]
                    }, 1, 0, this), H.rx) {
                    if (this.rx = mt.getProp(T, H.rx, 0, ht, this), this.ry = mt.getProp(T, H.ry, 0, ht, this), this.rz = mt.getProp(T, H.rz, 0, ht, this), H.or.k[0].ti) {
                        var st, L = H.or.k.length;
                        for (st = 0; st < L; st += 1) H.or.k[st].to = null, H.or.k[st].ti = null
                    }
                    this.or = mt.getProp(T, H.or, 1, ht, this), this.or.sh = !0
                } else this.r = mt.getProp(T, H.r || {
                    k: 0
                }, 0, ht, this);
                H.sk && (this.sk = mt.getProp(T, H.sk, 0, ht, this), this.sa = mt.getProp(T, H.sa, 0, ht, this)), this.a = mt.getProp(T, H.a || {
                    k: [0, 0, 0]
                }, 1, 0, this), this.s = mt.getProp(T, H.s || {
                    k: [100, 100, 100]
                }, 1, .01, this), H.o ? this.o = mt.getProp(T, H.o, 0, .01, T) : this.o = {
                    _mdf: !1,
                    v: 1
                }, this._isDirty = !0, this.dynamicProperties.length || this.getValue(!0)
            }
            A.prototype = {
                applyToMatrix: n,
                getValue: h,
                precalculateMatrix: l,
                autoOrient: u
            }, M([Yt], A), A.prototype.addDynamicProperty = p, A.prototype._addDynamicProperty = Yt.prototype.addDynamicProperty;

            function B(T, H, W) {
                return new A(T, H, W)
            }
            return {
                getTransformProperty: B
            }
        }();

        function Ce() {}
        M([de], Ce), Ce.prototype.initModifierProperties = function(i, n) {
            this.getValue = this.processKeys, this.c = mt.getProp(i, n.c, 0, null, this), this.o = mt.getProp(i, n.o, 0, null, this), this.tr = Ir.getTransformProperty(i, n.tr, this), this.so = mt.getProp(i, n.tr.so, 0, .01, this), this.eo = mt.getProp(i, n.tr.eo, 0, .01, this), this.data = n, this.dynamicProperties.length || this.getValue(!0), this._isAnimated = !!this.dynamicProperties.length, this.pMatrix = new te, this.rMatrix = new te, this.sMatrix = new te, this.tMatrix = new te, this.matrix = new te
        }, Ce.prototype.applyTransforms = function(i, n, h, l, u, p) {
            var A = p ? -1 : 1,
                B = l.s.v[0] + (1 - l.s.v[0]) * (1 - u),
                T = l.s.v[1] + (1 - l.s.v[1]) * (1 - u);
            i.translate(l.p.v[0] * A * u, l.p.v[1] * A * u, l.p.v[2]), n.translate(-l.a.v[0], -l.a.v[1], l.a.v[2]), n.rotate(-l.r.v * A * u), n.translate(l.a.v[0], l.a.v[1], l.a.v[2]), h.translate(-l.a.v[0], -l.a.v[1], l.a.v[2]), h.scale(p ? 1 / B : B, p ? 1 / T : T), h.translate(l.a.v[0], l.a.v[1], l.a.v[2])
        }, Ce.prototype.init = function(i, n, h, l) {
            for (this.elem = i, this.arr = n, this.pos = h, this.elemsData = l, this._currentCopies = 0, this._elements = [], this._groups = [], this.frameId = -1, this.initDynamicPropertyContainer(i), this.initModifierProperties(i, n[h]); h > 0;) h -= 1, this._elements.unshift(n[h]);
            this.dynamicProperties.length ? this.k = !0 : this.getValue(!0)
        }, Ce.prototype.resetElements = function(i) {
            var n, h = i.length;
            for (n = 0; n < h; n += 1) i[n]._processed = !1, i[n].ty === "gr" && this.resetElements(i[n].it)
        }, Ce.prototype.cloneElements = function(i) {
            var n = JSON.parse(JSON.stringify(i));
            return this.resetElements(n), n
        }, Ce.prototype.changeGroupRender = function(i, n) {
            var h, l = i.length;
            for (h = 0; h < l; h += 1) i[h]._render = n, i[h].ty === "gr" && this.changeGroupRender(i[h].it, n)
        }, Ce.prototype.processShapes = function(i) {
            var n, h, l, u, p, A = !1;
            if (this._mdf || i) {
                var B = Math.ceil(this.c.v);
                if (this._groups.length < B) {
                    for (; this._groups.length < B;) {
                        var T = {
                            it: this.cloneElements(this._elements),
                            ty: "gr"
                        };
                        T.it.push({
                            a: {
                                a: 0,
                                ix: 1,
                                k: [0, 0]
                            },
                            nm: "Transform",
                            o: {
                                a: 0,
                                ix: 7,
                                k: 100
                            },
                            p: {
                                a: 0,
                                ix: 2,
                                k: [0, 0]
                            },
                            r: {
                                a: 1,
                                ix: 6,
                                k: [{
                                    s: 0,
                                    e: 0,
                                    t: 0
                                }, {
                                    s: 0,
                                    e: 0,
                                    t: 1
                                }]
                            },
                            s: {
                                a: 0,
                                ix: 3,
                                k: [100, 100]
                            },
                            sa: {
                                a: 0,
                                ix: 5,
                                k: 0
                            },
                            sk: {
                                a: 0,
                                ix: 4,
                                k: 0
                            },
                            ty: "tr"
                        }), this.arr.splice(0, 0, T), this._groups.splice(0, 0, T), this._currentCopies += 1
                    }
                    this.elem.reloadShapes(), A = !0
                }
                p = 0;
                var H;
                for (l = 0; l <= this._groups.length - 1; l += 1) {
                    if (H = p < B, this._groups[l]._render = H, this.changeGroupRender(this._groups[l].it, H), !H) {
                        var W = this.elemsData[l].it,
                            st = W[W.length - 1];
                        st.transform.op.v !== 0 ? (st.transform.op._mdf = !0, st.transform.op.v = 0) : st.transform.op._mdf = !1
                    }
                    p += 1
                }
                this._currentCopies = B;
                var L = this.o.v,
                    $ = L % 1,
                    U = L > 0 ? Math.floor(L) : Math.ceil(L),
                    Y = this.pMatrix.props,
                    rt = this.rMatrix.props,
                    q = this.sMatrix.props;
                this.pMatrix.reset(), this.rMatrix.reset(), this.sMatrix.reset(), this.tMatrix.reset(), this.matrix.reset();
                var z = 0;
                if (L > 0) {
                    for (; z < U;) this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !1), z += 1;
                    $ && (this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, $, !1), z += $)
                } else if (L < 0) {
                    for (; z > U;) this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !0), z -= 1;
                    $ && (this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -$, !0), z -= $)
                }
                l = this.data.m === 1 ? 0 : this._currentCopies - 1, u = this.data.m === 1 ? 1 : -1, p = this._currentCopies;
                for (var I, R; p;) {
                    if (n = this.elemsData[l].it, h = n[n.length - 1].transform.mProps.v.props, R = h.length, n[n.length - 1].transform.mProps._mdf = !0, n[n.length - 1].transform.op._mdf = !0, n[n.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (l / (this._currentCopies - 1)), z !== 0) {
                        for ((l !== 0 && u === 1 || l !== this._currentCopies - 1 && u === -1) && this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !1), this.matrix.transform(rt[0], rt[1], rt[2], rt[3], rt[4], rt[5], rt[6], rt[7], rt[8], rt[9], rt[10], rt[11], rt[12], rt[13], rt[14], rt[15]), this.matrix.transform(q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15]), this.matrix.transform(Y[0], Y[1], Y[2], Y[3], Y[4], Y[5], Y[6], Y[7], Y[8], Y[9], Y[10], Y[11], Y[12], Y[13], Y[14], Y[15]), I = 0; I < R; I += 1) h[I] = this.matrix.props[I];
                        this.matrix.reset()
                    } else
                        for (this.matrix.reset(), I = 0; I < R; I += 1) h[I] = this.matrix.props[I];
                    z += 1, p -= 1, l += u
                }
            } else
                for (p = this._currentCopies, l = 0, u = 1; p;) n = this.elemsData[l].it, h = n[n.length - 1].transform.mProps.v.props, n[n.length - 1].transform.mProps._mdf = !1, n[n.length - 1].transform.op._mdf = !1, p -= 1, l += u;
            return A
        }, Ce.prototype.addShape = function() {};

        function or() {}
        M([de], or), or.prototype.initModifierProperties = function(i, n) {
            this.getValue = this.processKeys, this.rd = mt.getProp(i, n.r, 0, null, this), this._isAnimated = !!this.rd.effectsSequence.length
        }, or.prototype.processPath = function(i, n) {
            var h = Qt.newElement();
            h.c = i.c;
            var l, u = i._length,
                p, A, B, T, H, W, st = 0,
                L, $, U, Y, rt, q;
            for (l = 0; l < u; l += 1) p = i.v[l], B = i.o[l], A = i.i[l], p[0] === B[0] && p[1] === B[1] && p[0] === A[0] && p[1] === A[1] ? (l === 0 || l === u - 1) && !i.c ? (h.setTripleAt(p[0], p[1], B[0], B[1], A[0], A[1], st), st += 1) : (l === 0 ? T = i.v[u - 1] : T = i.v[l - 1], H = Math.sqrt(Math.pow(p[0] - T[0], 2) + Math.pow(p[1] - T[1], 2)), W = H ? Math.min(H / 2, n) / H : 0, rt = p[0] + (T[0] - p[0]) * W, L = rt, q = p[1] - (p[1] - T[1]) * W, $ = q, U = L - (L - p[0]) * vt, Y = $ - ($ - p[1]) * vt, h.setTripleAt(L, $, U, Y, rt, q, st), st += 1, l === u - 1 ? T = i.v[0] : T = i.v[l + 1], H = Math.sqrt(Math.pow(p[0] - T[0], 2) + Math.pow(p[1] - T[1], 2)), W = H ? Math.min(H / 2, n) / H : 0, U = p[0] + (T[0] - p[0]) * W, L = U, Y = p[1] + (T[1] - p[1]) * W, $ = Y, rt = L - (L - p[0]) * vt, q = $ - ($ - p[1]) * vt, h.setTripleAt(L, $, U, Y, rt, q, st), st += 1) : (h.setTripleAt(i.v[l][0], i.v[l][1], i.o[l][0], i.o[l][1], i.i[l][0], i.i[l][1], st), st += 1);
            return h
        }, or.prototype.processShapes = function(i) {
            var n, h, l = this.shapes.length,
                u, p, A = this.rd.v;
            if (A !== 0) {
                var B, T;
                for (h = 0; h < l; h += 1) {
                    if (B = this.shapes[h], T = B.localShapeCollection, !(!B.shape._mdf && !this._mdf && !i))
                        for (T.releaseShapes(), B.shape._mdf = !0, n = B.shape.paths.shapes, p = B.shape.paths._length, u = 0; u < p; u += 1) T.addShape(this.processPath(n[u], A));
                    B.shape.paths = B.localShapeCollection
                }
            }
            this.dynamicProperties.length || (this._mdf = !1)
        };

        function Er(i, n) {
            return Math.abs(i - n) * 1e5 <= Math.min(Math.abs(i), Math.abs(n))
        }

        function Lr(i) {
            return Math.abs(i) <= 1e-5
        }

        function Jr(i, n, h) {
            return i * (1 - h) + n * h
        }

        function Re(i, n, h) {
            return [Jr(i[0], n[0], h), Jr(i[1], n[1], h)]
        }

        function Ni(i, n, h) {
            if (i === 0) return [];
            var l = n * n - 4 * i * h;
            if (l < 0) return [];
            var u = -n / (2 * i);
            if (l === 0) return [u];
            var p = Math.sqrt(l) / (2 * i);
            return [u - p, u + p]
        }

        function Ur(i, n, h, l) {
            return [-i + 3 * n - 3 * h + l, 3 * i - 6 * n + 3 * h, -3 * i + 3 * n, i]
        }

        function Qr(i) {
            return new Ht(i, i, i, i, !1)
        }

        function Ht(i, n, h, l, u) {
            u && er(i, n) && (n = Re(i, l, 1 / 3)), u && er(h, l) && (h = Re(i, l, 2 / 3));
            var p = Ur(i[0], n[0], h[0], l[0]),
                A = Ur(i[1], n[1], h[1], l[1]);
            this.a = [p[0], A[0]], this.b = [p[1], A[1]], this.c = [p[2], A[2]], this.d = [p[3], A[3]], this.points = [i, n, h, l]
        }
        Ht.prototype.point = function(i) {
            return [((this.a[0] * i + this.b[0]) * i + this.c[0]) * i + this.d[0], ((this.a[1] * i + this.b[1]) * i + this.c[1]) * i + this.d[1]]
        }, Ht.prototype.derivative = function(i) {
            return [(3 * i * this.a[0] + 2 * this.b[0]) * i + this.c[0], (3 * i * this.a[1] + 2 * this.b[1]) * i + this.c[1]]
        }, Ht.prototype.tangentAngle = function(i) {
            var n = this.derivative(i);
            return Math.atan2(n[1], n[0])
        }, Ht.prototype.normalAngle = function(i) {
            var n = this.derivative(i);
            return Math.atan2(n[0], n[1])
        }, Ht.prototype.inflectionPoints = function() {
            var i = this.a[1] * this.b[0] - this.a[0] * this.b[1];
            if (Lr(i)) return [];
            var n = -.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / i,
                h = n * n - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / i;
            if (h < 0) return [];
            var l = Math.sqrt(h);
            return Lr(l) ? l > 0 && l < 1 ? [n] : [] : [n - l, n + l].filter(function(u) {
                return u > 0 && u < 1
            })
        }, Ht.prototype.split = function(i) {
            if (i <= 0) return [Qr(this.points[0]), this];
            if (i >= 1) return [this, Qr(this.points[this.points.length - 1])];
            var n = Re(this.points[0], this.points[1], i),
                h = Re(this.points[1], this.points[2], i),
                l = Re(this.points[2], this.points[3], i),
                u = Re(n, h, i),
                p = Re(h, l, i),
                A = Re(u, p, i);
            return [new Ht(this.points[0], n, u, A, !0), new Ht(A, p, l, this.points[3], !0)]
        };

        function ti(i, n) {
            var h = i.points[0][n],
                l = i.points[i.points.length - 1][n];
            if (h > l) {
                var u = l;
                l = h, h = u
            }
            for (var p = Ni(3 * i.a[n], 2 * i.b[n], i.c[n]), A = 0; A < p.length; A += 1)
                if (p[A] > 0 && p[A] < 1) {
                    var B = i.point(p[A])[n];
                    B < h ? h = B : B > l && (l = B)
                }
            return {
                min: h,
                max: l
            }
        }
        Ht.prototype.bounds = function() {
            return {
                x: ti(this, 0),
                y: ti(this, 1)
            }
        }, Ht.prototype.boundingBox = function() {
            var i = this.bounds();
            return {
                left: i.x.min,
                right: i.x.max,
                top: i.y.min,
                bottom: i.y.max,
                width: i.x.max - i.x.min,
                height: i.y.max - i.y.min,
                cx: (i.x.max + i.x.min) / 2,
                cy: (i.y.max + i.y.min) / 2
            }
        };

        function Cr(i, n, h) {
            var l = i.boundingBox();
            return {
                cx: l.cx,
                cy: l.cy,
                width: l.width,
                height: l.height,
                bez: i,
                t: (n + h) / 2,
                t1: n,
                t2: h
            }
        }

        function ei(i) {
            var n = i.bez.split(.5);
            return [Cr(n[0], i.t1, i.t), Cr(n[1], i.t, i.t2)]
        }

        function Hi(i, n) {
            return Math.abs(i.cx - n.cx) * 2 < i.width + n.width && Math.abs(i.cy - n.cy) * 2 < i.height + n.height
        }

        function hr(i, n, h, l, u, p) {
            if (Hi(i, n)) {
                if (h >= p || i.width <= l && i.height <= l && n.width <= l && n.height <= l) {
                    u.push([i.t, n.t]);
                    return
                }
                var A = ei(i),
                    B = ei(n);
                hr(A[0], B[0], h + 1, l, u, p), hr(A[0], B[1], h + 1, l, u, p), hr(A[1], B[0], h + 1, l, u, p), hr(A[1], B[1], h + 1, l, u, p)
            }
        }
        Ht.prototype.intersections = function(i, n, h) {
            n === void 0 && (n = 2), h === void 0 && (h = 7);
            var l = [];
            return hr(Cr(this, 0, 1), Cr(i, 0, 1), 0, n, l, h), l
        }, Ht.shapeSegment = function(i, n) {
            var h = (n + 1) % i.length();
            return new Ht(i.v[n], i.o[n], i.i[h], i.v[h], !0)
        }, Ht.shapeSegmentInverted = function(i, n) {
            var h = (n + 1) % i.length();
            return new Ht(i.v[h], i.i[h], i.o[n], i.v[n], !0)
        };

        function Vr(i, n) {
            return [i[1] * n[2] - i[2] * n[1], i[2] * n[0] - i[0] * n[2], i[0] * n[1] - i[1] * n[0]]
        }

        function xr(i, n, h, l) {
            var u = [i[0], i[1], 1],
                p = [n[0], n[1], 1],
                A = [h[0], h[1], 1],
                B = [l[0], l[1], 1],
                T = Vr(Vr(u, p), Vr(A, B));
            return Lr(T[2]) ? null : [T[0] / T[2], T[1] / T[2]]
        }

        function tr(i, n, h) {
            return [i[0] + Math.cos(n) * h, i[1] - Math.sin(n) * h]
        }

        function Rr(i, n) {
            return Math.hypot(i[0] - n[0], i[1] - n[1])
        }

        function er(i, n) {
            return Er(i[0], n[0]) && Er(i[1], n[1])
        }

        function lr() {}
        M([de], lr), lr.prototype.initModifierProperties = function(i, n) {
            this.getValue = this.processKeys, this.amplitude = mt.getProp(i, n.s, 0, null, this), this.frequency = mt.getProp(i, n.r, 0, null, this), this.pointsType = mt.getProp(i, n.pt, 0, null, this), this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0
        };

        function ri(i, n, h, l, u, p, A) {
            var B = h - Math.PI / 2,
                T = h + Math.PI / 2,
                H = n[0] + Math.cos(h) * l * u,
                W = n[1] - Math.sin(h) * l * u;
            i.setTripleAt(H, W, H + Math.cos(B) * p, W - Math.sin(B) * p, H + Math.cos(T) * A, W - Math.sin(T) * A, i.length())
        }

        function ji(i, n) {
            var h = [n[0] - i[0], n[1] - i[1]],
                l = -Math.PI * .5,
                u = [Math.cos(l) * h[0] - Math.sin(l) * h[1], Math.sin(l) * h[0] + Math.cos(l) * h[1]];
            return u
        }

        function qi(i, n) {
            var h = n === 0 ? i.length() - 1 : n - 1,
                l = (n + 1) % i.length(),
                u = i.v[h],
                p = i.v[l],
                A = ji(u, p);
            return Math.atan2(0, 1) - Math.atan2(A[1], A[0])
        }

        function ii(i, n, h, l, u, p, A) {
            var B = qi(n, h),
                T = n.v[h % n._length],
                H = n.v[h === 0 ? n._length - 1 : h - 1],
                W = n.v[(h + 1) % n._length],
                st = p === 2 ? Math.sqrt(Math.pow(T[0] - H[0], 2) + Math.pow(T[1] - H[1], 2)) : 0,
                L = p === 2 ? Math.sqrt(Math.pow(T[0] - W[0], 2) + Math.pow(T[1] - W[1], 2)) : 0;
            ri(i, n.v[h % n._length], B, A, l, L / ((u + 1) * 2), st / ((u + 1) * 2))
        }

        function Wi(i, n, h, l, u, p) {
            for (var A = 0; A < l; A += 1) {
                var B = (A + 1) / (l + 1),
                    T = u === 2 ? Math.sqrt(Math.pow(n.points[3][0] - n.points[0][0], 2) + Math.pow(n.points[3][1] - n.points[0][1], 2)) : 0,
                    H = n.normalAngle(B),
                    W = n.point(B);
                ri(i, W, H, p, h, T / ((l + 1) * 2), T / ((l + 1) * 2)), p = -p
            }
            return p
        }
        lr.prototype.processPath = function(i, n, h, l) {
            var u = i._length,
                p = Qt.newElement();
            if (p.c = i.c, i.c || (u -= 1), u === 0) return p;
            var A = -1,
                B = Ht.shapeSegment(i, 0);
            ii(p, i, 0, n, h, l, A);
            for (var T = 0; T < u; T += 1) A = Wi(p, B, n, h, l, -A), T === u - 1 && !i.c ? B = null : B = Ht.shapeSegment(i, (T + 1) % u), ii(p, i, T + 1, n, h, l, A);
            return p
        }, lr.prototype.processShapes = function(i) {
            var n, h, l = this.shapes.length,
                u, p, A = this.amplitude.v,
                B = Math.max(0, Math.round(this.frequency.v)),
                T = this.pointsType.v;
            if (A !== 0) {
                var H, W;
                for (h = 0; h < l; h += 1) {
                    if (H = this.shapes[h], W = H.localShapeCollection, !(!H.shape._mdf && !this._mdf && !i))
                        for (W.releaseShapes(), H.shape._mdf = !0, n = H.shape.paths.shapes, p = H.shape.paths._length, u = 0; u < p; u += 1) W.addShape(this.processPath(n[u], A, B, T));
                    H.shape.paths = H.localShapeCollection
                }
            }
            this.dynamicProperties.length || (this._mdf = !1)
        };

        function Br(i, n, h) {
            var l = Math.atan2(n[0] - i[0], n[1] - i[1]);
            return [tr(i, l, h), tr(n, l, h)]
        }

        function rr(i, n) {
            var h, l, u, p, A, B, T;
            T = Br(i.points[0], i.points[1], n), h = T[0], l = T[1], T = Br(i.points[1], i.points[2], n), u = T[0], p = T[1], T = Br(i.points[2], i.points[3], n), A = T[0], B = T[1];
            var H = xr(h, l, u, p);
            H === null && (H = l);
            var W = xr(A, B, u, p);
            return W === null && (W = A), new Ht(h, H, W, B)
        }

        function si(i, n, h, l, u) {
            var p = n.points[3],
                A = h.points[0];
            if (l === 3 || er(p, A)) return p;
            if (l === 2) {
                var B = -n.tangentAngle(1),
                    T = -h.tangentAngle(0) + Math.PI,
                    H = xr(p, tr(p, B + Math.PI / 2, 100), A, tr(A, B + Math.PI / 2, 100)),
                    W = H ? Rr(H, p) : Rr(p, A) / 2,
                    st = tr(p, B, 2 * W * vt);
                return i.setXYAt(st[0], st[1], "o", i.length() - 1), st = tr(A, T, 2 * W * vt), i.setTripleAt(A[0], A[1], A[0], A[1], st[0], st[1], i.length()), A
            }
            var L = er(p, n.points[2]) ? n.points[0] : n.points[2],
                $ = er(A, h.points[1]) ? h.points[3] : h.points[1],
                U = xr(L, p, A, $);
            return U && Rr(U, p) < u ? (i.setTripleAt(U[0], U[1], U[0], U[1], U[0], U[1], i.length()), U) : p
        }

        function ni(i, n) {
            var h = i.intersections(n);
            return h.length && Er(h[0][0], 1) && h.shift(), h.length ? h[0] : null
        }

        function ai(i, n) {
            var h = i.slice(),
                l = n.slice(),
                u = ni(i[i.length - 1], n[0]);
            return u && (h[i.length - 1] = i[i.length - 1].split(u[0])[0], l[0] = n[0].split(u[1])[1]), i.length > 1 && n.length > 1 && (u = ni(i[0], n[n.length - 1]), u) ? [
                [i[0].split(u[0])[0]],
                [n[n.length - 1].split(u[1])[1]]
            ] : [h, l]
        }

        function $i(i) {
            for (var n, h = 1; h < i.length; h += 1) n = ai(i[h - 1], i[h]), i[h - 1] = n[0], i[h] = n[1];
            return i.length > 1 && (n = ai(i[i.length - 1], i[0]), i[i.length - 1] = n[0], i[0] = n[1]), i
        }

        function oi(i, n) {
            var h = i.inflectionPoints(),
                l, u, p, A;
            if (h.length === 0) return [rr(i, n)];
            if (h.length === 1 || Er(h[1], 1)) return p = i.split(h[0]), l = p[0], u = p[1], [rr(l, n), rr(u, n)];
            p = i.split(h[0]), l = p[0];
            var B = (h[1] - h[0]) / (1 - h[0]);
            return p = p[1].split(B), A = p[0], u = p[1], [rr(l, n), rr(A, n), rr(u, n)]
        }

        function fr() {}
        M([de], fr), fr.prototype.initModifierProperties = function(i, n) {
            this.getValue = this.processKeys, this.amount = mt.getProp(i, n.a, 0, null, this), this.miterLimit = mt.getProp(i, n.ml, 0, null, this), this.lineJoin = n.lj, this._isAnimated = this.amount.effectsSequence.length !== 0
        }, fr.prototype.processPath = function(i, n, h, l) {
            var u = Qt.newElement();
            u.c = i.c;
            var p = i.length();
            i.c || (p -= 1);
            var A, B, T, H = [];
            for (A = 0; A < p; A += 1) T = Ht.shapeSegment(i, A), H.push(oi(T, n));
            if (!i.c)
                for (A = p - 1; A >= 0; A -= 1) T = Ht.shapeSegmentInverted(i, A), H.push(oi(T, n));
            H = $i(H);
            var W = null,
                st = null;
            for (A = 0; A < H.length; A += 1) {
                var L = H[A];
                for (st && (W = si(u, st, L[0], h, l)), st = L[L.length - 1], B = 0; B < L.length; B += 1) T = L[B], W && er(T.points[0], W) ? u.setXYAt(T.points[1][0], T.points[1][1], "o", u.length() - 1) : u.setTripleAt(T.points[0][0], T.points[0][1], T.points[1][0], T.points[1][1], T.points[0][0], T.points[0][1], u.length()), u.setTripleAt(T.points[3][0], T.points[3][1], T.points[3][0], T.points[3][1], T.points[2][0], T.points[2][1], u.length()), W = T.points[3]
            }
            return H.length && si(u, st, H[0][0], h, l), u
        }, fr.prototype.processShapes = function(i) {
            var n, h, l = this.shapes.length,
                u, p, A = this.amount.v,
                B = this.miterLimit.v,
                T = this.lineJoin;
            if (A !== 0) {
                var H, W;
                for (h = 0; h < l; h += 1) {
                    if (H = this.shapes[h], W = H.localShapeCollection, !(!H.shape._mdf && !this._mdf && !i))
                        for (W.releaseShapes(), H.shape._mdf = !0, n = H.shape.paths.shapes, p = H.shape.paths._length, u = 0; u < p; u += 1) W.addShape(this.processPath(n[u], A, T, B));
                    H.shape.paths = H.localShapeCollection
                }
            }
            this.dynamicProperties.length || (this._mdf = !1)
        };

        function hi(i) {
            for (var n = i.fStyle ? i.fStyle.split(" ") : [], h = "normal", l = "normal", u = n.length, p, A = 0; A < u; A += 1) switch (p = n[A].toLowerCase(), p) {
                case "italic":
                    l = "italic";
                    break;
                case "bold":
                    h = "700";
                    break;
                case "black":
                    h = "900";
                    break;
                case "medium":
                    h = "500";
                    break;
                case "regular":
                case "normal":
                    h = "400";
                    break;
                case "light":
                case "thin":
                    h = "200";
                    break
            }
            return {
                style: l,
                weight: i.fWeight || h
            }
        }
        var Ye = function() {
            var i = 5e3,
                n = {
                    w: 0,
                    size: 0,
                    shapes: [],
                    data: {
                        shapes: []
                    }
                },
                h = [];
            h = h.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);
            var l = 127988,
                u = 917631,
                p = 917601,
                A = 917626,
                B = 65039,
                T = 8205,
                H = 127462,
                W = 127487,
                st = ["d83cdffb", "d83cdffc", "d83cdffd", "d83cdffe", "d83cdfff"];

            function L(O) {
                var K = O.split(","),
                    x, F = K.length,
                    at = [];
                for (x = 0; x < F; x += 1) K[x] !== "sans-serif" && K[x] !== "monospace" && at.push(K[x]);
                return at.join(",")
            }

            function $(O, K) {
                var x = S("span");
                x.setAttribute("aria-hidden", !0), x.style.fontFamily = K;
                var F = S("span");
                F.innerText = "giItT1WQy@!-/#", x.style.position = "absolute", x.style.left = "-10000px", x.style.top = "-10000px", x.style.fontSize = "300px", x.style.fontVariant = "normal", x.style.fontStyle = "normal", x.style.fontWeight = "normal", x.style.letterSpacing = "0", x.appendChild(F), document.body.appendChild(x);
                var at = F.offsetWidth;
                return F.style.fontFamily = L(O) + ", " + K, {
                    node: F,
                    w: at,
                    parent: x
                }
            }

            function U() {
                var O, K = this.fonts.length,
                    x, F, at = K;
                for (O = 0; O < K; O += 1) this.fonts[O].loaded ? at -= 1 : this.fonts[O].fOrigin === "n" || this.fonts[O].origin === 0 ? this.fonts[O].loaded = !0 : (x = this.fonts[O].monoCase.node, F = this.fonts[O].monoCase.w, x.offsetWidth !== F ? (at -= 1, this.fonts[O].loaded = !0) : (x = this.fonts[O].sansCase.node, F = this.fonts[O].sansCase.w, x.offsetWidth !== F && (at -= 1, this.fonts[O].loaded = !0)), this.fonts[O].loaded && (this.fonts[O].sansCase.parent.parentNode.removeChild(this.fonts[O].sansCase.parent), this.fonts[O].monoCase.parent.parentNode.removeChild(this.fonts[O].monoCase.parent)));
                at !== 0 && Date.now() - this.initTime < i ? setTimeout(this.checkLoadedFontsBinded, 20) : setTimeout(this.setIsLoadedBinded, 10)
            }

            function Y(O, K) {
                var x = document.body && K ? "svg" : "canvas",
                    F, at = hi(O);
                if (x === "svg") {
                    var et = _t("text");
                    et.style.fontSize = "100px", et.setAttribute("font-family", O.fFamily), et.setAttribute("font-style", at.style), et.setAttribute("font-weight", at.weight), et.textContent = "1", O.fClass ? (et.style.fontFamily = "inherit", et.setAttribute("class", O.fClass)) : et.style.fontFamily = O.fFamily, K.appendChild(et), F = et
                } else {
                    var Pt = new OffscreenCanvas(500, 500).getContext("2d");
                    Pt.font = at.style + " " + at.weight + " 100px " + O.fFamily, F = Pt
                }

                function kt(Ft) {
                    return x === "svg" ? (F.textContent = Ft, F.getComputedTextLength()) : F.measureText(Ft).width
                }
                return {
                    measureText: kt
                }
            }

            function rt(O, K) {
                if (!O) {
                    this.isLoaded = !0;
                    return
                }
                if (this.chars) {
                    this.isLoaded = !0, this.fonts = O.list;
                    return
                }
                if (!document.body) {
                    this.isLoaded = !0, O.list.forEach(function(he) {
                        he.helper = Y(he), he.cache = {}
                    }), this.fonts = O.list;
                    return
                }
                var x = O.list,
                    F, at = x.length,
                    et = at;
                for (F = 0; F < at; F += 1) {
                    var Pt = !0,
                        kt, Ft;
                    if (x[F].loaded = !1, x[F].monoCase = $(x[F].fFamily, "monospace"), x[F].sansCase = $(x[F].fFamily, "sans-serif"), !x[F].fPath) x[F].loaded = !0, et -= 1;
                    else if (x[F].fOrigin === "p" || x[F].origin === 3) {
                        if (kt = document.querySelectorAll('style[f-forigin="p"][f-family="' + x[F].fFamily + '"], style[f-origin="3"][f-family="' + x[F].fFamily + '"]'), kt.length > 0 && (Pt = !1), Pt) {
                            var Bt = S("style");
                            Bt.setAttribute("f-forigin", x[F].fOrigin), Bt.setAttribute("f-origin", x[F].origin), Bt.setAttribute("f-family", x[F].fFamily), Bt.type = "text/css", Bt.innerText = "@font-face {font-family: " + x[F].fFamily + "; font-style: normal; src: url('" + x[F].fPath + "');}", K.appendChild(Bt)
                        }
                    } else if (x[F].fOrigin === "g" || x[F].origin === 1) {
                        for (kt = document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'), Ft = 0; Ft < kt.length; Ft += 1) kt[Ft].href.indexOf(x[F].fPath) !== -1 && (Pt = !1);
                        if (Pt) {
                            var Dt = S("link");
                            Dt.setAttribute("f-forigin", x[F].fOrigin), Dt.setAttribute("f-origin", x[F].origin), Dt.type = "text/css", Dt.rel = "stylesheet", Dt.href = x[F].fPath, document.body.appendChild(Dt)
                        }
                    } else if (x[F].fOrigin === "t" || x[F].origin === 2) {
                        for (kt = document.querySelectorAll('script[f-forigin="t"], script[f-origin="2"]'), Ft = 0; Ft < kt.length; Ft += 1) x[F].fPath === kt[Ft].src && (Pt = !1);
                        if (Pt) {
                            var Wt = S("link");
                            Wt.setAttribute("f-forigin", x[F].fOrigin), Wt.setAttribute("f-origin", x[F].origin), Wt.setAttribute("rel", "stylesheet"), Wt.setAttribute("href", x[F].fPath), K.appendChild(Wt)
                        }
                    }
                    x[F].helper = Y(x[F], K), x[F].cache = {}, this.fonts.push(x[F])
                }
                et === 0 ? this.isLoaded = !0 : setTimeout(this.checkLoadedFonts.bind(this), 100)
            }

            function q(O) {
                if (O) {
                    this.chars || (this.chars = []);
                    var K, x = O.length,
                        F, at = this.chars.length,
                        et;
                    for (K = 0; K < x; K += 1) {
                        for (F = 0, et = !1; F < at;) this.chars[F].style === O[K].style && this.chars[F].fFamily === O[K].fFamily && this.chars[F].ch === O[K].ch && (et = !0), F += 1;
                        et || (this.chars.push(O[K]), at += 1)
                    }
                }
            }

            function z(O, K, x) {
                for (var F = 0, at = this.chars.length; F < at;) {
                    if (this.chars[F].ch === O && this.chars[F].style === K && this.chars[F].fFamily === x) return this.chars[F];
                    F += 1
                }
                return (typeof O == "string" && O.charCodeAt(0) !== 13 || !O) && console && console.warn && !this._warned && (this._warned = !0, console.warn("Missing character from exported characters list: ", O, K, x)), n
            }

            function I(O, K, x) {
                var F = this.getFontByName(K),
                    at = O;
                if (!F.cache[at]) {
                    var et = F.helper;
                    if (O === " ") {
                        var Pt = et.measureText("|" + O + "|"),
                            kt = et.measureText("||");
                        F.cache[at] = (Pt - kt) / 100
                    } else F.cache[at] = et.measureText(O) / 100
                }
                return F.cache[at] * x
            }

            function R(O) {
                for (var K = 0, x = this.fonts.length; K < x;) {
                    if (this.fonts[K].fName === O) return this.fonts[K];
                    K += 1
                }
                return this.fonts[0]
            }

            function j(O) {
                var K = 0,
                    x = O.charCodeAt(0);
                if (x >= 55296 && x <= 56319) {
                    var F = O.charCodeAt(1);
                    F >= 56320 && F <= 57343 && (K = (x - 55296) * 1024 + F - 56320 + 65536)
                }
                return K
            }

            function Q(O, K) {
                var x = O.toString(16) + K.toString(16);
                return st.indexOf(x) !== -1
            }

            function it(O) {
                return O === T
            }

            function ot(O) {
                return O === B
            }

            function ut(O) {
                var K = j(O);
                return K >= H && K <= W
            }

            function wt(O) {
                return ut(O.substr(0, 2)) && ut(O.substr(2, 2))
            }

            function At(O) {
                return h.indexOf(O) !== -1
            }

            function dt(O, K) {
                var x = j(O.substr(K, 2));
                if (x !== l) return !1;
                var F = 0;
                for (K += 2; F < 5;) {
                    if (x = j(O.substr(K, 2)), x < p || x > A) return !1;
                    F += 1, K += 2
                }
                return j(O.substr(K, 2)) === u
            }

            function It() {
                this.isLoaded = !0
            }
            var Ct = function() {
                this.fonts = [], this.chars = null, this.typekitLoaded = 0, this.isLoaded = !1, this._warned = !1, this.initTime = Date.now(), this.setIsLoadedBinded = this.setIsLoaded.bind(this), this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this)
            };
            Ct.isModifier = Q, Ct.isZeroWidthJoiner = it, Ct.isFlagEmoji = wt, Ct.isRegionalCode = ut, Ct.isCombinedCharacter = At, Ct.isRegionalFlag = dt, Ct.isVariationSelector = ot, Ct.BLACK_FLAG_CODE_POINT = l;
            var pt = {
                addChars: q,
                addFonts: rt,
                getCharData: z,
                getFontByName: R,
                measureText: I,
                checkLoadedFonts: U,
                setIsLoaded: It
            };
            return Ct.prototype = pt, Ct
        }();

        function li(i) {
            this.animationData = i
        }
        li.prototype.getProp = function(i) {
            return this.animationData.slots && this.animationData.slots[i.sid] ? Object.assign(i, this.animationData.slots[i.sid].p) : i
        };

        function Xi(i) {
            return new li(i)
        }

        function Ar() {}
        Ar.prototype = {
            initRenderable: function() {
                this.isInRange = !1, this.hidden = !1, this.isTransparent = !1, this.renderableComponents = []
            },
            addRenderableComponent: function(n) {
                this.renderableComponents.indexOf(n) === -1 && this.renderableComponents.push(n)
            },
            removeRenderableComponent: function(n) {
                this.renderableComponents.indexOf(n) !== -1 && this.renderableComponents.splice(this.renderableComponents.indexOf(n), 1)
            },
            prepareRenderableFrame: function(n) {
                this.checkLayerLimits(n)
            },
            checkTransparency: function() {
                this.finalTransform.mProp.o.v <= 0 ? !this.isTransparent && this.globalData.renderConfig.hideOnTransparent && (this.isTransparent = !0, this.hide()) : this.isTransparent && (this.isTransparent = !1, this.show())
            },
            checkLayerLimits: function(n) {
                this.data.ip - this.data.st <= n && this.data.op - this.data.st > n ? this.isInRange !== !0 && (this.globalData._mdf = !0, this._mdf = !0, this.isInRange = !0, this.show()) : this.isInRange !== !1 && (this.globalData._mdf = !0, this.isInRange = !1, this.hide())
            },
            renderRenderable: function() {
                var n, h = this.renderableComponents.length;
                for (n = 0; n < h; n += 1) this.renderableComponents[n].renderFrame(this._isFirstFrame)
            },
            sourceRectAtTime: function() {
                return {
                    top: 0,
                    left: 0,
                    width: 100,
                    height: 100
                }
            },
            getLayerSize: function() {
                return this.data.ty === 5 ? {
                    w: this.data.textData.width,
                    h: this.data.textData.height
                } : {
                    w: this.data.width,
                    h: this.data.height
                }
            }
        };
        var Dr = function() {
            var i = {
                0: "source-over",
                1: "multiply",
                2: "screen",
                3: "overlay",
                4: "darken",
                5: "lighten",
                6: "color-dodge",
                7: "color-burn",
                8: "hard-light",
                9: "soft-light",
                10: "difference",
                11: "exclusion",
                12: "hue",
                13: "saturation",
                14: "color",
                15: "luminosity"
            };
            return function(n) {
                return i[n] || ""
            }
        }();

        function Yi(i, n, h) {
            this.p = mt.getProp(n, i.v, 0, 0, h)
        }

        function Zi(i, n, h) {
            this.p = mt.getProp(n, i.v, 0, 0, h)
        }

        function Ki(i, n, h) {
            this.p = mt.getProp(n, i.v, 1, 0, h)
        }

        function Ji(i, n, h) {
            this.p = mt.getProp(n, i.v, 1, 0, h)
        }

        function Ui(i, n, h) {
            this.p = mt.getProp(n, i.v, 0, 0, h)
        }

        function Qi(i, n, h) {
            this.p = mt.getProp(n, i.v, 0, 0, h)
        }

        function ts(i, n, h) {
            this.p = mt.getProp(n, i.v, 0, 0, h)
        }

        function es() {
            this.p = {}
        }

        function fi(i, n) {
            var h = i.ef || [];
            this.effectElements = [];
            var l, u = h.length,
                p;
            for (l = 0; l < u; l += 1) p = new pr(h[l], n), this.effectElements.push(p)
        }

        function pr(i, n) {
            this.init(i, n)
        }
        M([Yt], pr), pr.prototype.getValue = pr.prototype.iterateDynamicProperties, pr.prototype.init = function(i, n) {
            this.data = i, this.effectElements = [], this.initDynamicPropertyContainer(n);
            var h, l = this.data.ef.length,
                u, p = this.data.ef;
            for (h = 0; h < l; h += 1) {
                switch (u = null, p[h].ty) {
                    case 0:
                        u = new Yi(p[h], n, this);
                        break;
                    case 1:
                        u = new Zi(p[h], n, this);
                        break;
                    case 2:
                        u = new Ki(p[h], n, this);
                        break;
                    case 3:
                        u = new Ji(p[h], n, this);
                        break;
                    case 4:
                    case 7:
                        u = new ts(p[h], n, this);
                        break;
                    case 10:
                        u = new Ui(p[h], n, this);
                        break;
                    case 11:
                        u = new Qi(p[h], n, this);
                        break;
                    case 5:
                        u = new fi(p[h], n);
                        break;
                    default:
                        u = new es(p[h]);
                        break
                }
                u && this.effectElements.push(u)
            }
        };

        function Be() {}
        Be.prototype = {
            checkMasks: function() {
                if (!this.data.hasMask) return !1;
                for (var n = 0, h = this.data.masksProperties.length; n < h;) {
                    if (this.data.masksProperties[n].mode !== "n" && this.data.masksProperties[n].cl !== !1) return !0;
                    n += 1
                }
                return !1
            },
            initExpressions: function() {},
            setBlendMode: function() {
                var n = Dr(this.data.bm),
                    h = this.baseElement || this.layerElement;
                h.style["mix-blend-mode"] = n
            },
            initBaseData: function(n, h, l) {
                this.globalData = h, this.comp = l, this.data = n, this.layerId = E(), this.data.sr || (this.data.sr = 1), this.effectsManager = new fi(this.data, this, this.dynamicProperties)
            },
            getType: function() {
                return this.type
            },
            sourceRectAtTime: function() {}
        };

        function De() {}
        De.prototype = {
            initFrame: function() {
                this._isFirstFrame = !1, this.dynamicProperties = [], this._mdf = !1
            },
            prepareProperties: function(n, h) {
                var l, u = this.dynamicProperties.length;
                for (l = 0; l < u; l += 1)(h || this._isParent && this.dynamicProperties[l].propType === "transform") && (this.dynamicProperties[l].getValue(), this.dynamicProperties[l]._mdf && (this.globalData._mdf = !0, this._mdf = !0))
            },
            addDynamicProperty: function(n) {
                this.dynamicProperties.indexOf(n) === -1 && this.dynamicProperties.push(n)
            }
        };

        function Oe(i, n, h) {
            this.initFrame(), this.initRenderable(), this.assetData = n.getAssetData(i.refId), this.footageData = n.imageLoader.getAsset(this.assetData), this.initBaseData(i, n, h)
        }
        Oe.prototype.prepareFrame = function() {}, M([Ar, Be, De], Oe), Oe.prototype.getBaseElement = function() {
            return null
        }, Oe.prototype.renderFrame = function() {}, Oe.prototype.destroy = function() {}, Oe.prototype.initExpressions = function() {}, Oe.prototype.getFootageData = function() {
            return this.footageData
        };

        function oe(i, n, h) {
            this.initFrame(), this.initRenderable(), this.assetData = n.getAssetData(i.refId), this.initBaseData(i, n, h), this._isPlaying = !1, this._canPlay = !1;
            var l = this.globalData.getAssetsPath(this.assetData);
            this.audio = this.globalData.audioController.createAudio(l), this._currentTime = 0, this.globalData.audioController.addAudio(this), this._volumeMultiplier = 1, this._volume = 1, this._previousVolume = null, this.tm = i.tm ? mt.getProp(this, i.tm, 0, n.frameRate, this) : {
                _placeholder: !0
            }, this.lv = mt.getProp(this, i.au && i.au.lv ? i.au.lv : {
                k: [100]
            }, 1, .01, this)
        }
        oe.prototype.prepareFrame = function(i) {
            if (this.prepareRenderableFrame(i, !0), this.prepareProperties(i, !0), this.tm._placeholder) this._currentTime = i / this.data.sr;
            else {
                var n = this.tm.v;
                this._currentTime = n
            }
            this._volume = this.lv.v[0];
            var h = this._volume * this._volumeMultiplier;
            this._previousVolume !== h && (this._previousVolume = h, this.audio.volume(h))
        }, M([Ar, Be, De], oe), oe.prototype.renderFrame = function() {
            this.isInRange && this._canPlay && (this._isPlaying ? (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > .1) && this.audio.seek(this._currentTime / this.globalData.frameRate) : (this.audio.play(), this.audio.seek(this._currentTime / this.globalData.frameRate), this._isPlaying = !0))
        }, oe.prototype.show = function() {}, oe.prototype.hide = function() {
            this.audio.pause(), this._isPlaying = !1
        }, oe.prototype.pause = function() {
            this.audio.pause(), this._isPlaying = !1, this._canPlay = !1
        }, oe.prototype.resume = function() {
            this._canPlay = !0
        }, oe.prototype.setRate = function(i) {
            this.audio.rate(i)
        }, oe.prototype.volume = function(i) {
            this._volumeMultiplier = i, this._previousVolume = i * this._volume, this.audio.volume(this._previousVolume)
        }, oe.prototype.getBaseElement = function() {
            return null
        }, oe.prototype.destroy = function() {}, oe.prototype.sourceRectAtTime = function() {}, oe.prototype.initExpressions = function() {};

        function ee() {}
        ee.prototype.checkLayers = function(i) {
            var n, h = this.layers.length,
                l;
            for (this.completeLayers = !0, n = h - 1; n >= 0; n -= 1) this.elements[n] || (l = this.layers[n], l.ip - l.st <= i - this.layers[n].st && l.op - l.st > i - this.layers[n].st && this.buildItem(n)), this.completeLayers = this.elements[n] ? this.completeLayers : !1;
            this.checkPendingElements()
        }, ee.prototype.createItem = function(i) {
            switch (i.ty) {
                case 2:
                    return this.createImage(i);
                case 0:
                    return this.createComp(i);
                case 1:
                    return this.createSolid(i);
                case 3:
                    return this.createNull(i);
                case 4:
                    return this.createShape(i);
                case 5:
                    return this.createText(i);
                case 6:
                    return this.createAudio(i);
                case 13:
                    return this.createCamera(i);
                case 15:
                    return this.createFootage(i);
                default:
                    return this.createNull(i)
            }
        }, ee.prototype.createCamera = function() {
            throw new Error("You're using a 3d camera. Try the html renderer.")
        }, ee.prototype.createAudio = function(i) {
            return new oe(i, this.globalData, this)
        }, ee.prototype.createFootage = function(i) {
            return new Oe(i, this.globalData, this)
        }, ee.prototype.buildAllItems = function() {
            var i, n = this.layers.length;
            for (i = 0; i < n; i += 1) this.buildItem(i);
            this.checkPendingElements()
        }, ee.prototype.includeLayers = function(i) {
            this.completeLayers = !1;
            var n, h = i.length,
                l, u = this.layers.length;
            for (n = 0; n < h; n += 1)
                for (l = 0; l < u;) {
                    if (this.layers[l].id === i[n].id) {
                        this.layers[l] = i[n];
                        break
                    }
                    l += 1
                }
        }, ee.prototype.setProjectInterface = function(i) {
            this.globalData.projectInterface = i
        }, ee.prototype.initItems = function() {
            this.globalData.progressiveLoad || this.buildAllItems()
        }, ee.prototype.buildElementParenting = function(i, n, h) {
            for (var l = this.elements, u = this.layers, p = 0, A = u.length; p < A;) u[p].ind == n && (!l[p] || l[p] === !0 ? (this.buildItem(p), this.addPendingElement(i)) : (h.push(l[p]), l[p].setAsParent(), u[p].parent !== void 0 ? this.buildElementParenting(i, u[p].parent, h) : i.setHierarchy(h))), p += 1
        }, ee.prototype.addPendingElement = function(i) {
            this.pendingElements.push(i)
        }, ee.prototype.searchExtraCompositions = function(i) {
            var n, h = i.length;
            for (n = 0; n < h; n += 1)
                if (i[n].xt) {
                    var l = this.createComp(i[n]);
                    l.initExpressions(), this.globalData.projectInterface.registerComposition(l)
                }
        }, ee.prototype.getElementById = function(i) {
            var n, h = this.elements.length;
            for (n = 0; n < h; n += 1)
                if (this.elements[n].data.ind === i) return this.elements[n];
            return null
        }, ee.prototype.getElementByPath = function(i) {
            var n = i.shift(),
                h;
            if (typeof n == "number") h = this.elements[n];
            else {
                var l, u = this.elements.length;
                for (l = 0; l < u; l += 1)
                    if (this.elements[l].data.nm === n) {
                        h = this.elements[l];
                        break
                    }
            }
            return i.length === 0 ? h : h.getElementByPath(i)
        }, ee.prototype.setupGlobalData = function(i, n) {
            this.globalData.fontManager = new Ye, this.globalData.slotManager = Xi(i), this.globalData.fontManager.addChars(i.chars), this.globalData.fontManager.addFonts(i.fonts, n), this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem), this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem), this.globalData.imageLoader = this.animationItem.imagePreloader, this.globalData.audioController = this.animationItem.audioController, this.globalData.frameId = 0, this.globalData.frameRate = i.fr, this.globalData.nm = i.nm, this.globalData.compSize = {
                w: i.w,
                h: i.h
            }
        };
        var rs = {
            TRANSFORM_EFFECT: "transformEFfect"
        };

        function ir() {}
        ir.prototype = {
            initTransform: function() {
                var n = new te;
                this.finalTransform = {
                    mProp: this.data.ks ? Ir.getTransformProperty(this, this.data.ks, this) : {
                        o: 0
                    },
                    _matMdf: !1,
                    _localMatMdf: !1,
                    _opMdf: !1,
                    mat: n,
                    localMat: n,
                    localOpacity: 1
                }, this.data.ao && (this.finalTransform.mProp.autoOriented = !0), this.data.ty
            },
            renderTransform: function() {
                if (this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame, this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame, this.hierarchy) {
                    var n, h = this.finalTransform.mat,
                        l = 0,
                        u = this.hierarchy.length;
                    if (!this.finalTransform._matMdf)
                        for (; l < u;) {
                            if (this.hierarchy[l].finalTransform.mProp._mdf) {
                                this.finalTransform._matMdf = !0;
                                break
                            }
                            l += 1
                        }
                    if (this.finalTransform._matMdf)
                        for (n = this.finalTransform.mProp.v.props, h.cloneFromProps(n), l = 0; l < u; l += 1) h.multiply(this.hierarchy[l].finalTransform.mProp.v)
                }
                this.finalTransform._matMdf && (this.finalTransform._localMatMdf = this.finalTransform._matMdf), this.finalTransform._opMdf && (this.finalTransform.localOpacity = this.finalTransform.mProp.o.v)
            },
            renderLocalTransform: function() {
                if (this.localTransforms) {
                    var n = 0,
                        h = this.localTransforms.length;
                    if (this.finalTransform._localMatMdf = this.finalTransform._matMdf, !this.finalTransform._localMatMdf || !this.finalTransform._opMdf)
                        for (; n < h;) this.localTransforms[n]._mdf && (this.finalTransform._localMatMdf = !0), this.localTransforms[n]._opMdf && !this.finalTransform._opMdf && (this.finalTransform.localOpacity = this.finalTransform.mProp.o.v, this.finalTransform._opMdf = !0), n += 1;
                    if (this.finalTransform._localMatMdf) {
                        var l = this.finalTransform.localMat;
                        for (this.localTransforms[0].matrix.clone(l), n = 1; n < h; n += 1) {
                            var u = this.localTransforms[n].matrix;
                            l.multiply(u)
                        }
                        l.multiply(this.finalTransform.mat)
                    }
                    if (this.finalTransform._opMdf) {
                        var p = this.finalTransform.localOpacity;
                        for (n = 0; n < h; n += 1) p *= this.localTransforms[n].opacity * .01;
                        this.finalTransform.localOpacity = p
                    }
                }
            },
            searchEffectTransforms: function() {
                if (this.renderableEffectsManager) {
                    var n = this.renderableEffectsManager.getEffects(rs.TRANSFORM_EFFECT);
                    if (n.length) {
                        this.localTransforms = [], this.finalTransform.localMat = new te;
                        var h = 0,
                            l = n.length;
                        for (h = 0; h < l; h += 1) this.localTransforms.push(n[h])
                    }
                }
            },
            globalToLocal: function(n) {
                var h = [];
                h.push(this.finalTransform);
                for (var l = !0, u = this.comp; l;) u.finalTransform ? (u.data.hasMask && h.splice(0, 0, u.finalTransform), u = u.comp) : l = !1;
                var p, A = h.length,
                    B;
                for (p = 0; p < A; p += 1) B = h[p].mat.applyToPointArray(0, 0, 0), n = [n[0] - B[0], n[1] - B[1], 0];
                return n
            },
            mHelper: new te
        };

        function Ze(i, n, h) {
            this.data = i, this.element = n, this.globalData = h, this.storedData = [], this.masksProperties = this.data.masksProperties || [], this.maskElement = null;
            var l = this.globalData.defs,
                u, p = this.masksProperties ? this.masksProperties.length : 0;
            this.viewData = b(p), this.solidPath = "";
            var A, B = this.masksProperties,
                T = 0,
                H = [],
                W, st, L = E(),
                $, U, Y, rt, q = "clipPath",
                z = "clip-path";
            for (u = 0; u < p; u += 1)
                if ((B[u].mode !== "a" && B[u].mode !== "n" || B[u].inv || B[u].o.k !== 100 || B[u].o.x) && (q = "mask", z = "mask"), (B[u].mode === "s" || B[u].mode === "i") && T === 0 ? ($ = _t("rect"), $.setAttribute("fill", "#ffffff"), $.setAttribute("width", this.element.comp.data.w || 0), $.setAttribute("height", this.element.comp.data.h || 0), H.push($)) : $ = null, A = _t("path"), B[u].mode === "n") this.viewData[u] = {
                    op: mt.getProp(this.element, B[u].o, 0, .01, this.element),
                    prop: _r.getShapeProp(this.element, B[u], 3),
                    elem: A,
                    lastPath: ""
                }, l.appendChild(A);
                else {
                    T += 1, A.setAttribute("fill", B[u].mode === "s" ? "#000000" : "#ffffff"), A.setAttribute("clip-rule", "nonzero");
                    var I;
                    if (B[u].x.k !== 0 ? (q = "mask", z = "mask", rt = mt.getProp(this.element, B[u].x, 0, null, this.element), I = E(), U = _t("filter"), U.setAttribute("id", I), Y = _t("feMorphology"), Y.setAttribute("operator", "erode"), Y.setAttribute("in", "SourceGraphic"), Y.setAttribute("radius", "0"), U.appendChild(Y), l.appendChild(U), A.setAttribute("stroke", B[u].mode === "s" ? "#000000" : "#ffffff")) : (Y = null, rt = null), this.storedData[u] = {
                            elem: A,
                            x: rt,
                            expan: Y,
                            lastPath: "",
                            lastOperator: "",
                            filterId: I,
                            lastRadius: 0
                        }, B[u].mode === "i") {
                        st = H.length;
                        var R = _t("g");
                        for (W = 0; W < st; W += 1) R.appendChild(H[W]);
                        var j = _t("mask");
                        j.setAttribute("mask-type", "alpha"), j.setAttribute("id", L + "_" + T), j.appendChild(A), l.appendChild(j), R.setAttribute("mask", "url(" + m() + "#" + L + "_" + T + ")"), H.length = 0, H.push(R)
                    } else H.push(A);
                    B[u].inv && !this.solidPath && (this.solidPath = this.createLayerSolidPath()), this.viewData[u] = {
                        elem: A,
                        lastPath: "",
                        op: mt.getProp(this.element, B[u].o, 0, .01, this.element),
                        prop: _r.getShapeProp(this.element, B[u], 3),
                        invRect: $
                    }, this.viewData[u].prop.k || this.drawPath(B[u], this.viewData[u].prop.v, this.viewData[u])
                }
            for (this.maskElement = _t(q), p = H.length, u = 0; u < p; u += 1) this.maskElement.appendChild(H[u]);
            T > 0 && (this.maskElement.setAttribute("id", L), this.element.maskedElement.setAttribute(z, "url(" + m() + "#" + L + ")"), l.appendChild(this.maskElement)), this.viewData.length && this.element.addRenderableComponent(this)
        }
        Ze.prototype.getMaskProperty = function(i) {
            return this.viewData[i].prop
        }, Ze.prototype.renderFrame = function(i) {
            var n = this.element.finalTransform.mat,
                h, l = this.masksProperties.length;
            for (h = 0; h < l; h += 1)
                if ((this.viewData[h].prop._mdf || i) && this.drawPath(this.masksProperties[h], this.viewData[h].prop.v, this.viewData[h]), (this.viewData[h].op._mdf || i) && this.viewData[h].elem.setAttribute("fill-opacity", this.viewData[h].op.v), this.masksProperties[h].mode !== "n" && (this.viewData[h].invRect && (this.element.finalTransform.mProp._mdf || i) && this.viewData[h].invRect.setAttribute("transform", n.getInverseMatrix().to2dCSS()), this.storedData[h].x && (this.storedData[h].x._mdf || i))) {
                    var u = this.storedData[h].expan;
                    this.storedData[h].x.v < 0 ? (this.storedData[h].lastOperator !== "erode" && (this.storedData[h].lastOperator = "erode", this.storedData[h].elem.setAttribute("filter", "url(" + m() + "#" + this.storedData[h].filterId + ")")), u.setAttribute("radius", -this.storedData[h].x.v)) : (this.storedData[h].lastOperator !== "dilate" && (this.storedData[h].lastOperator = "dilate", this.storedData[h].elem.setAttribute("filter", null)), this.storedData[h].elem.setAttribute("stroke-width", this.storedData[h].x.v * 2))
                }
        }, Ze.prototype.getMaskelement = function() {
            return this.maskElement
        }, Ze.prototype.createLayerSolidPath = function() {
            var i = "M0,0 ";
            return i += " h" + this.globalData.compSize.w, i += " v" + this.globalData.compSize.h, i += " h-" + this.globalData.compSize.w, i += " v-" + this.globalData.compSize.h + " ", i
        }, Ze.prototype.drawPath = function(i, n, h) {
            var l = " M" + n.v[0][0] + "," + n.v[0][1],
                u, p;
            for (p = n._length, u = 1; u < p; u += 1) l += " C" + n.o[u - 1][0] + "," + n.o[u - 1][1] + " " + n.i[u][0] + "," + n.i[u][1] + " " + n.v[u][0] + "," + n.v[u][1];
            if (n.c && p > 1 && (l += " C" + n.o[u - 1][0] + "," + n.o[u - 1][1] + " " + n.i[0][0] + "," + n.i[0][1] + " " + n.v[0][0] + "," + n.v[0][1]), h.lastPath !== l) {
                var A = "";
                h.elem && (n.c && (A = i.inv ? this.solidPath + l : l), h.elem.setAttribute("d", A)), h.lastPath = l
            }
        }, Ze.prototype.destroy = function() {
            this.element = null, this.globalData = null, this.maskElement = null, this.data = null, this.masksProperties = null
        };
        var ur = function() {
                var i = {};
                i.createFilter = n, i.createAlphaToLuminanceFilter = h;

                function n(l, u) {
                    var p = _t("filter");
                    return p.setAttribute("id", l), u !== !0 && (p.setAttribute("filterUnits", "objectBoundingBox"), p.setAttribute("x", "0%"), p.setAttribute("y", "0%"), p.setAttribute("width", "100%"), p.setAttribute("height", "100%")), p
                }

                function h() {
                    var l = _t("feColorMatrix");
                    return l.setAttribute("type", "matrix"), l.setAttribute("color-interpolation-filters", "sRGB"), l.setAttribute("values", "0 0 0 1 0  0 0 0 1 0  0 0 0 1 0  0 0 0 1 1"), l
                }
                return i
            }(),
            pi = function() {
                var i = {
                    maskType: !0,
                    svgLumaHidden: !0,
                    offscreenCanvas: typeof OffscreenCanvas < "u"
                };
                return (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) && (i.maskType = !1), /firefox/i.test(navigator.userAgent) && (i.svgLumaHidden = !1), i
            }(),
            Or = {},
            ui = "filter_result_";

        function zr(i) {
            var n, h = "SourceGraphic",
                l = i.data.ef ? i.data.ef.length : 0,
                u = E(),
                p = ur.createFilter(u, !0),
                A = 0;
            this.filters = [];
            var B;
            for (n = 0; n < l; n += 1) {
                B = null;
                var T = i.data.ef[n].ty;
                if (Or[T]) {
                    var H = Or[T].effect;
                    B = new H(p, i.effectsManager.effectElements[n], i, ui + A, h), h = ui + A, Or[T].countsAsEffect && (A += 1)
                }
                B && this.filters.push(B)
            }
            A && (i.globalData.defs.appendChild(p), i.layerElement.setAttribute("filter", "url(" + m() + "#" + u + ")")), this.filters.length && i.addRenderableComponent(this)
        }
        zr.prototype.renderFrame = function(i) {
            var n, h = this.filters.length;
            for (n = 0; n < h; n += 1) this.filters[n].renderFrame(i)
        }, zr.prototype.getEffects = function(i) {
            var n, h = this.filters.length,
                l = [];
            for (n = 0; n < h; n += 1) this.filters[n].type === i && l.push(this.filters[n]);
            return l
        };

        function cr() {}
        cr.prototype = {
            initRendererElement: function() {
                this.layerElement = _t("g")
            },
            createContainerElements: function() {
                this.matteElement = _t("g"), this.transformedElement = this.layerElement, this.maskedElement = this.layerElement, this._sizeChanged = !1;
                var n = null;
                if (this.data.td) {
                    this.matteMasks = {};
                    var h = _t("g");
                    h.setAttribute("id", this.layerId), h.appendChild(this.layerElement), n = h, this.globalData.defs.appendChild(h)
                } else this.data.tt ? (this.matteElement.appendChild(this.layerElement), n = this.matteElement, this.baseElement = this.matteElement) : this.baseElement = this.layerElement;
                if (this.data.ln && this.layerElement.setAttribute("id", this.data.ln), this.data.cl && this.layerElement.setAttribute("class", this.data.cl), this.data.ty === 0 && !this.data.hd) {
                    var l = _t("clipPath"),
                        u = _t("path");
                    u.setAttribute("d", "M0,0 L" + this.data.w + ",0 L" + this.data.w + "," + this.data.h + " L0," + this.data.h + "z");
                    var p = E();
                    if (l.setAttribute("id", p), l.appendChild(u), this.globalData.defs.appendChild(l), this.checkMasks()) {
                        var A = _t("g");
                        A.setAttribute("clip-path", "url(" + m() + "#" + p + ")"), A.appendChild(this.layerElement), this.transformedElement = A, n ? n.appendChild(this.transformedElement) : this.baseElement = this.transformedElement
                    } else this.layerElement.setAttribute("clip-path", "url(" + m() + "#" + p + ")")
                }
                this.data.bm !== 0 && this.setBlendMode()
            },
            renderElement: function() {
                this.finalTransform._localMatMdf && this.transformedElement.setAttribute("transform", this.finalTransform.localMat.to2dCSS()), this.finalTransform._opMdf && this.transformedElement.setAttribute("opacity", this.finalTransform.localOpacity)
            },
            destroyBaseElement: function() {
                this.layerElement = null, this.matteElement = null, this.maskManager.destroy()
            },
            getBaseElement: function() {
                return this.data.hd ? null : this.baseElement
            },
            createRenderableComponents: function() {
                this.maskManager = new Ze(this.data, this, this.globalData), this.renderableEffectsManager = new zr(this), this.searchEffectTransforms()
            },
            getMatte: function(n) {
                if (this.matteMasks || (this.matteMasks = {}), !this.matteMasks[n]) {
                    var h = this.layerId + "_" + n,
                        l, u, p, A;
                    if (n === 1 || n === 3) {
                        var B = _t("mask");
                        B.setAttribute("id", h), B.setAttribute("mask-type", n === 3 ? "luminance" : "alpha"), p = _t("use"), p.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + this.layerId), B.appendChild(p), this.globalData.defs.appendChild(B), !pi.maskType && n === 1 && (B.setAttribute("mask-type", "luminance"), l = E(), u = ur.createFilter(l), this.globalData.defs.appendChild(u), u.appendChild(ur.createAlphaToLuminanceFilter()), A = _t("g"), A.appendChild(p), B.appendChild(A), A.setAttribute("filter", "url(" + m() + "#" + l + ")"))
                    } else if (n === 2) {
                        var T = _t("mask");
                        T.setAttribute("id", h), T.setAttribute("mask-type", "alpha");
                        var H = _t("g");
                        T.appendChild(H), l = E(), u = ur.createFilter(l);
                        var W = _t("feComponentTransfer");
                        W.setAttribute("in", "SourceGraphic"), u.appendChild(W);
                        var st = _t("feFuncA");
                        st.setAttribute("type", "table"), st.setAttribute("tableValues", "1.0 0.0"), W.appendChild(st), this.globalData.defs.appendChild(u);
                        var L = _t("rect");
                        L.setAttribute("width", this.comp.data.w), L.setAttribute("height", this.comp.data.h), L.setAttribute("x", "0"), L.setAttribute("y", "0"), L.setAttribute("fill", "#ffffff"), L.setAttribute("opacity", "0"), H.setAttribute("filter", "url(" + m() + "#" + l + ")"), H.appendChild(L), p = _t("use"), p.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + this.layerId), H.appendChild(p), pi.maskType || (T.setAttribute("mask-type", "luminance"), u.appendChild(ur.createAlphaToLuminanceFilter()), A = _t("g"), H.appendChild(L), A.appendChild(this.layerElement), H.appendChild(A)), this.globalData.defs.appendChild(T)
                    }
                    this.matteMasks[n] = h
                }
                return this.matteMasks[n]
            },
            setMatte: function(n) {
                this.matteElement && this.matteElement.setAttribute("mask", "url(" + m() + "#" + n + ")")
            }
        };

        function sr() {}
        sr.prototype = {
            initHierarchy: function() {
                this.hierarchy = [], this._isParent = !1, this.checkParenting()
            },
            setHierarchy: function(n) {
                this.hierarchy = n
            },
            setAsParent: function() {
                this._isParent = !0
            },
            checkParenting: function() {
                this.data.parent !== void 0 && this.comp.buildElementParenting(this, this.data.parent, [])
            }
        };

        function dr() {}(function() {
            var i = {
                initElement: function(h, l, u) {
                    this.initFrame(), this.initBaseData(h, l, u), this.initTransform(h, l, u), this.initHierarchy(), this.initRenderable(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), this.createContent(), this.hide()
                },
                hide: function() {
                    if (!this.hidden && (!this.isInRange || this.isTransparent)) {
                        var h = this.baseElement || this.layerElement;
                        h.style.display = "none", this.hidden = !0
                    }
                },
                show: function() {
                    if (this.isInRange && !this.isTransparent) {
                        if (!this.data.hd) {
                            var h = this.baseElement || this.layerElement;
                            h.style.display = "block"
                        }
                        this.hidden = !1, this._isFirstFrame = !0
                    }
                },
                renderFrame: function() {
                    this.data.hd || this.hidden || (this.renderTransform(), this.renderRenderable(), this.renderLocalTransform(), this.renderElement(), this.renderInnerContent(), this._isFirstFrame && (this._isFirstFrame = !1))
                },
                renderInnerContent: function() {},
                prepareFrame: function(h) {
                    this._mdf = !1, this.prepareRenderableFrame(h), this.prepareProperties(h, this.isInRange), this.checkTransparency()
                },
                destroy: function() {
                    this.innerElem = null, this.destroyBaseElement()
                }
            };
            M([Ar, g(i)], dr)
        })();

        function mr(i, n, h) {
            this.assetData = n.getAssetData(i.refId), this.assetData && this.assetData.sid && (this.assetData = n.slotManager.getProp(this.assetData)), this.initElement(i, n, h), this.sourceRect = {
                top: 0,
                left: 0,
                width: this.assetData.w,
                height: this.assetData.h
            }
        }
        M([Be, ir, cr, sr, De, dr], mr), mr.prototype.createContent = function() {
            var i = this.globalData.getAssetsPath(this.assetData);
            this.innerElem = _t("image"), this.innerElem.setAttribute("width", this.assetData.w + "px"), this.innerElem.setAttribute("height", this.assetData.h + "px"), this.innerElem.setAttribute("preserveAspectRatio", this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio), this.innerElem.setAttributeNS("http://www.w3.org/1999/xlink", "href", i), this.layerElement.appendChild(this.innerElem)
        }, mr.prototype.sourceRectAtTime = function() {
            return this.sourceRect
        };

        function is(i, n) {
            this.elem = i, this.pos = n
        }

        function ci() {}
        ci.prototype = {
            addShapeToModifiers: function(n) {
                var h, l = this.shapeModifiers.length;
                for (h = 0; h < l; h += 1) this.shapeModifiers[h].addShape(n)
            },
            isShapeInAnimatedModifiers: function(n) {
                for (var h = 0, l = this.shapeModifiers.length; h < l;)
                    if (this.shapeModifiers[h].isAnimatedWithShape(n)) return !0;
                return !1
            },
            renderModifiers: function() {
                if (this.shapeModifiers.length) {
                    var n, h = this.shapes.length;
                    for (n = 0; n < h; n += 1) this.shapes[n].sh.reset();
                    h = this.shapeModifiers.length;
                    var l;
                    for (n = h - 1; n >= 0 && (l = this.shapeModifiers[n].processShapes(this._isFirstFrame), !l); n -= 1);
                }
            },
            searchProcessedElement: function(n) {
                for (var h = this.processedElements, l = 0, u = h.length; l < u;) {
                    if (h[l].elem === n) return h[l].pos;
                    l += 1
                }
                return 0
            },
            addProcessedElement: function(n, h) {
                for (var l = this.processedElements, u = l.length; u;)
                    if (u -= 1, l[u].elem === n) {
                        l[u].pos = h;
                        return
                    }
                l.push(new is(n, h))
            },
            prepareFrame: function(n) {
                this.prepareRenderableFrame(n), this.prepareProperties(n, this.isInRange)
            }
        };
        var di = {
                1: "butt",
                2: "round",
                3: "square"
            },
            mi = {
                1: "miter",
                2: "round",
                3: "bevel"
            };

        function vi(i, n, h) {
            this.caches = [], this.styles = [], this.transformers = i, this.lStr = "", this.sh = h, this.lvl = n, this._isAnimated = !!h.k;
            for (var l = 0, u = i.length; l < u;) {
                if (i[l].mProps.dynamicProperties.length) {
                    this._isAnimated = !0;
                    break
                }
                l += 1
            }
        }
        vi.prototype.setAsAnimated = function() {
            this._isAnimated = !0
        };

        function gi(i, n) {
            this.data = i, this.type = i.ty, this.d = "", this.lvl = n, this._mdf = !1, this.closed = i.hd === !0, this.pElem = _t("path"), this.msElem = null
        }
        gi.prototype.reset = function() {
            this.d = "", this._mdf = !1
        };

        function Tr(i, n, h, l) {
            this.elem = i, this.frameId = -1, this.dataProps = b(n.length), this.renderer = h, this.k = !1, this.dashStr = "", this.dashArray = C("float32", n.length ? n.length - 1 : 0), this.dashoffset = C("float32", 1), this.initDynamicPropertyContainer(l);
            var u, p = n.length || 0,
                A;
            for (u = 0; u < p; u += 1) A = mt.getProp(i, n[u].v, 0, 0, this), this.k = A.k || this.k, this.dataProps[u] = {
                n: n[u].n,
                p: A
            };
            this.k || this.getValue(!0), this._isAnimated = this.k
        }
        Tr.prototype.getValue = function(i) {
            if (!(this.elem.globalData.frameId === this.frameId && !i) && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf = this._mdf || i, this._mdf)) {
                var n = 0,
                    h = this.dataProps.length;
                for (this.renderer === "svg" && (this.dashStr = ""), n = 0; n < h; n += 1) this.dataProps[n].n !== "o" ? this.renderer === "svg" ? this.dashStr += " " + this.dataProps[n].p.v : this.dashArray[n] = this.dataProps[n].p.v : this.dashoffset[0] = this.dataProps[n].p.v
            }
        }, M([Yt], Tr);

        function yi(i, n, h) {
            this.initDynamicPropertyContainer(i), this.getValue = this.iterateDynamicProperties, this.o = mt.getProp(i, n.o, 0, .01, this), this.w = mt.getProp(i, n.w, 0, null, this), this.d = new Tr(i, n.d || {}, "svg", this), this.c = mt.getProp(i, n.c, 1, 255, this), this.style = h, this._isAnimated = !!this._isAnimated
        }
        M([Yt], yi);

        function bi(i, n, h) {
            this.initDynamicPropertyContainer(i), this.getValue = this.iterateDynamicProperties, this.o = mt.getProp(i, n.o, 0, .01, this), this.c = mt.getProp(i, n.c, 1, 255, this), this.style = h
        }
        M([Yt], bi);

        function Pi(i, n, h) {
            this.initDynamicPropertyContainer(i), this.getValue = this.iterateDynamicProperties, this.style = h
        }
        M([Yt], Pi);

        function vr(i, n, h) {
            this.data = n, this.c = C("uint8c", n.p * 4);
            var l = n.k.k[0].s ? n.k.k[0].s.length - n.p * 4 : n.k.k.length - n.p * 4;
            this.o = C("float32", l), this._cmdf = !1, this._omdf = !1, this._collapsable = this.checkCollapsable(), this._hasOpacity = l, this.initDynamicPropertyContainer(h), this.prop = mt.getProp(i, n.k, 1, null, this), this.k = this.prop.k, this.getValue(!0)
        }
        vr.prototype.comparePoints = function(i, n) {
            for (var h = 0, l = this.o.length / 2, u; h < l;) {
                if (u = Math.abs(i[h * 4] - i[n * 4 + h * 2]), u > .01) return !1;
                h += 1
            }
            return !0
        }, vr.prototype.checkCollapsable = function() {
            if (this.o.length / 2 !== this.c.length / 4) return !1;
            if (this.data.k.k[0].s)
                for (var i = 0, n = this.data.k.k.length; i < n;) {
                    if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) return !1;
                    i += 1
                } else if (!this.comparePoints(this.data.k.k, this.data.p)) return !1;
            return !0
        }, vr.prototype.getValue = function(i) {
            if (this.prop.getValue(), this._mdf = !1, this._cmdf = !1, this._omdf = !1, this.prop._mdf || i) {
                var n, h = this.data.p * 4,
                    l, u;
                for (n = 0; n < h; n += 1) l = n % 4 === 0 ? 100 : 255, u = Math.round(this.prop.v[n] * l), this.c[n] !== u && (this.c[n] = u, this._cmdf = !i);
                if (this.o.length)
                    for (h = this.prop.v.length, n = this.data.p * 4; n < h; n += 1) l = n % 2 === 0 ? 100 : 1, u = n % 2 === 0 ? Math.round(this.prop.v[n] * 100) : this.prop.v[n], this.o[n - this.data.p * 4] !== u && (this.o[n - this.data.p * 4] = u, this._omdf = !i);
                this._mdf = !i
            }
        }, M([Yt], vr);

        function nr(i, n, h) {
            this.initDynamicPropertyContainer(i), this.getValue = this.iterateDynamicProperties, this.initGradientData(i, n, h)
        }
        nr.prototype.initGradientData = function(i, n, h) {
            this.o = mt.getProp(i, n.o, 0, .01, this), this.s = mt.getProp(i, n.s, 1, null, this), this.e = mt.getProp(i, n.e, 1, null, this), this.h = mt.getProp(i, n.h || {
                k: 0
            }, 0, .01, this), this.a = mt.getProp(i, n.a || {
                k: 0
            }, 0, ht, this), this.g = new vr(i, n.g, this), this.style = h, this.stops = [], this.setGradientData(h.pElem, n), this.setGradientOpacity(n, h), this._isAnimated = !!this._isAnimated
        }, nr.prototype.setGradientData = function(i, n) {
            var h = E(),
                l = _t(n.t === 1 ? "linearGradient" : "radialGradient");
            l.setAttribute("id", h), l.setAttribute("spreadMethod", "pad"), l.setAttribute("gradientUnits", "userSpaceOnUse");
            var u = [],
                p, A, B;
            for (B = n.g.p * 4, A = 0; A < B; A += 4) p = _t("stop"), l.appendChild(p), u.push(p);
            i.setAttribute(n.ty === "gf" ? "fill" : "stroke", "url(" + m() + "#" + h + ")"), this.gf = l, this.cst = u
        }, nr.prototype.setGradientOpacity = function(i, n) {
            if (this.g._hasOpacity && !this.g._collapsable) {
                var h, l, u, p = _t("mask"),
                    A = _t("path");
                p.appendChild(A);
                var B = E(),
                    T = E();
                p.setAttribute("id", T);
                var H = _t(i.t === 1 ? "linearGradient" : "radialGradient");
                H.setAttribute("id", B), H.setAttribute("spreadMethod", "pad"), H.setAttribute("gradientUnits", "userSpaceOnUse"), u = i.g.k.k[0].s ? i.g.k.k[0].s.length : i.g.k.k.length;
                var W = this.stops;
                for (l = i.g.p * 4; l < u; l += 2) h = _t("stop"), h.setAttribute("stop-color", "rgb(255,255,255)"), H.appendChild(h), W.push(h);
                A.setAttribute(i.ty === "gf" ? "fill" : "stroke", "url(" + m() + "#" + B + ")"), i.ty === "gs" && (A.setAttribute("stroke-linecap", di[i.lc || 2]), A.setAttribute("stroke-linejoin", mi[i.lj || 2]), i.lj === 1 && A.setAttribute("stroke-miterlimit", i.ml)), this.of = H, this.ms = p, this.ost = W, this.maskId = T, n.msElem = A
            }
        }, M([Yt], nr);

        function _i(i, n, h) {
            this.initDynamicPropertyContainer(i), this.getValue = this.iterateDynamicProperties, this.w = mt.getProp(i, n.w, 0, null, this), this.d = new Tr(i, n.d || {}, "svg", this), this.initGradientData(i, n, h), this._isAnimated = !!this._isAnimated
        }
        M([nr, Yt], _i);

        function ss() {
            this.it = [], this.prevViewData = [], this.gr = _t("g")
        }

        function ns(i, n, h) {
            this.transform = {
                mProps: i,
                op: n,
                container: h
            }, this.elements = [], this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length
        }
        var Si = function(n, h, l, u) {
                if (h === 0) return "";
                var p = n.o,
                    A = n.i,
                    B = n.v,
                    T, H = " M" + u.applyToPointStringified(B[0][0], B[0][1]);
                for (T = 1; T < h; T += 1) H += " C" + u.applyToPointStringified(p[T - 1][0], p[T - 1][1]) + " " + u.applyToPointStringified(A[T][0], A[T][1]) + " " + u.applyToPointStringified(B[T][0], B[T][1]);
                return l && h && (H += " C" + u.applyToPointStringified(p[T - 1][0], p[T - 1][1]) + " " + u.applyToPointStringified(A[0][0], A[0][1]) + " " + u.applyToPointStringified(B[0][0], B[0][1]), H += "z"), H
            },
            as = function() {
                var i = new te,
                    n = new te,
                    h = {
                        createRenderFunction: l
                    };

                function l(st) {
                    switch (st.ty) {
                        case "fl":
                            return B;
                        case "gf":
                            return H;
                        case "gs":
                            return T;
                        case "st":
                            return W;
                        case "sh":
                        case "el":
                        case "rc":
                        case "sr":
                            return A;
                        case "tr":
                            return u;
                        case "no":
                            return p;
                        default:
                            return null
                    }
                }

                function u(st, L, $) {
                    ($ || L.transform.op._mdf) && L.transform.container.setAttribute("opacity", L.transform.op.v), ($ || L.transform.mProps._mdf) && L.transform.container.setAttribute("transform", L.transform.mProps.v.to2dCSS())
                }

                function p() {}

                function A(st, L, $) {
                    var U, Y, rt, q, z, I, R = L.styles.length,
                        j = L.lvl,
                        Q, it, ot, ut;
                    for (I = 0; I < R; I += 1) {
                        if (q = L.sh._mdf || $, L.styles[I].lvl < j) {
                            for (it = n.reset(), ot = j - L.styles[I].lvl, ut = L.transformers.length - 1; !q && ot > 0;) q = L.transformers[ut].mProps._mdf || q, ot -= 1, ut -= 1;
                            if (q)
                                for (ot = j - L.styles[I].lvl, ut = L.transformers.length - 1; ot > 0;) it.multiply(L.transformers[ut].mProps.v), ot -= 1, ut -= 1
                        } else it = i;
                        if (Q = L.sh.paths, Y = Q._length, q) {
                            for (rt = "", U = 0; U < Y; U += 1) z = Q.shapes[U], z && z._length && (rt += Si(z, z._length, z.c, it));
                            L.caches[I] = rt
                        } else rt = L.caches[I];
                        L.styles[I].d += st.hd === !0 ? "" : rt, L.styles[I]._mdf = q || L.styles[I]._mdf
                    }
                }

                function B(st, L, $) {
                    var U = L.style;
                    (L.c._mdf || $) && U.pElem.setAttribute("fill", "rgb(" + N(L.c.v[0]) + "," + N(L.c.v[1]) + "," + N(L.c.v[2]) + ")"), (L.o._mdf || $) && U.pElem.setAttribute("fill-opacity", L.o.v)
                }

                function T(st, L, $) {
                    H(st, L, $), W(st, L, $)
                }

                function H(st, L, $) {
                    var U = L.gf,
                        Y = L.g._hasOpacity,
                        rt = L.s.v,
                        q = L.e.v;
                    if (L.o._mdf || $) {
                        var z = st.ty === "gf" ? "fill-opacity" : "stroke-opacity";
                        L.style.pElem.setAttribute(z, L.o.v)
                    }
                    if (L.s._mdf || $) {
                        var I = st.t === 1 ? "x1" : "cx",
                            R = I === "x1" ? "y1" : "cy";
                        U.setAttribute(I, rt[0]), U.setAttribute(R, rt[1]), Y && !L.g._collapsable && (L.of.setAttribute(I, rt[0]), L.of.setAttribute(R, rt[1]))
                    }
                    var j, Q, it, ot;
                    if (L.g._cmdf || $) {
                        j = L.cst;
                        var ut = L.g.c;
                        for (it = j.length, Q = 0; Q < it; Q += 1) ot = j[Q], ot.setAttribute("offset", ut[Q * 4] + "%"), ot.setAttribute("stop-color", "rgb(" + ut[Q * 4 + 1] + "," + ut[Q * 4 + 2] + "," + ut[Q * 4 + 3] + ")")
                    }
                    if (Y && (L.g._omdf || $)) {
                        var wt = L.g.o;
                        for (L.g._collapsable ? j = L.cst : j = L.ost, it = j.length, Q = 0; Q < it; Q += 1) ot = j[Q], L.g._collapsable || ot.setAttribute("offset", wt[Q * 2] + "%"), ot.setAttribute("stop-opacity", wt[Q * 2 + 1])
                    }
                    if (st.t === 1)(L.e._mdf || $) && (U.setAttribute("x2", q[0]), U.setAttribute("y2", q[1]), Y && !L.g._collapsable && (L.of.setAttribute("x2", q[0]), L.of.setAttribute("y2", q[1])));
                    else {
                        var At;
                        if ((L.s._mdf || L.e._mdf || $) && (At = Math.sqrt(Math.pow(rt[0] - q[0], 2) + Math.pow(rt[1] - q[1], 2)), U.setAttribute("r", At), Y && !L.g._collapsable && L.of.setAttribute("r", At)), L.e._mdf || L.h._mdf || L.a._mdf || $) {
                            At || (At = Math.sqrt(Math.pow(rt[0] - q[0], 2) + Math.pow(rt[1] - q[1], 2)));
                            var dt = Math.atan2(q[1] - rt[1], q[0] - rt[0]),
                                It = L.h.v;
                            It >= 1 ? It = .99 : It <= -1 && (It = -.99);
                            var Ct = At * It,
                                pt = Math.cos(dt + L.a.v) * Ct + rt[0],
                                O = Math.sin(dt + L.a.v) * Ct + rt[1];
                            U.setAttribute("fx", pt), U.setAttribute("fy", O), Y && !L.g._collapsable && (L.of.setAttribute("fx", pt), L.of.setAttribute("fy", O))
                        }
                    }
                }

                function W(st, L, $) {
                    var U = L.style,
                        Y = L.d;
                    Y && (Y._mdf || $) && Y.dashStr && (U.pElem.setAttribute("stroke-dasharray", Y.dashStr), U.pElem.setAttribute("stroke-dashoffset", Y.dashoffset[0])), L.c && (L.c._mdf || $) && U.pElem.setAttribute("stroke", "rgb(" + N(L.c.v[0]) + "," + N(L.c.v[1]) + "," + N(L.c.v[2]) + ")"), (L.o._mdf || $) && U.pElem.setAttribute("stroke-opacity", L.o.v), (L.w._mdf || $) && (U.pElem.setAttribute("stroke-width", L.w.v), U.msElem && U.msElem.setAttribute("stroke-width", L.w.v))
                }
                return h
            }();

        function jt(i, n, h) {
            this.shapes = [], this.shapesData = i.shapes, this.stylesList = [], this.shapeModifiers = [], this.itemsData = [], this.processedElements = [], this.animatedContents = [], this.initElement(i, n, h), this.prevViewData = []
        }
        M([Be, ir, cr, ci, sr, De, dr], jt), jt.prototype.initSecondaryElement = function() {}, jt.prototype.identityMatrix = new te, jt.prototype.buildExpressionInterface = function() {}, jt.prototype.createContent = function() {
            this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], !0), this.filterUniqueShapes()
        }, jt.prototype.filterUniqueShapes = function() {
            var i, n = this.shapes.length,
                h, l, u = this.stylesList.length,
                p, A = [],
                B = !1;
            for (l = 0; l < u; l += 1) {
                for (p = this.stylesList[l], B = !1, A.length = 0, i = 0; i < n; i += 1) h = this.shapes[i], h.styles.indexOf(p) !== -1 && (A.push(h), B = h._isAnimated || B);
                A.length > 1 && B && this.setShapesAsAnimated(A)
            }
        }, jt.prototype.setShapesAsAnimated = function(i) {
            var n, h = i.length;
            for (n = 0; n < h; n += 1) i[n].setAsAnimated()
        }, jt.prototype.createStyleElement = function(i, n) {
            var h, l = new gi(i, n),
                u = l.pElem;
            if (i.ty === "st") h = new yi(this, i, l);
            else if (i.ty === "fl") h = new bi(this, i, l);
            else if (i.ty === "gf" || i.ty === "gs") {
                var p = i.ty === "gf" ? nr : _i;
                h = new p(this, i, l), this.globalData.defs.appendChild(h.gf), h.maskId && (this.globalData.defs.appendChild(h.ms), this.globalData.defs.appendChild(h.of), u.setAttribute("mask", "url(" + m() + "#" + h.maskId + ")"))
            } else i.ty === "no" && (h = new Pi(this, i, l));
            return (i.ty === "st" || i.ty === "gs") && (u.setAttribute("stroke-linecap", di[i.lc || 2]), u.setAttribute("stroke-linejoin", mi[i.lj || 2]), u.setAttribute("fill-opacity", "0"), i.lj === 1 && u.setAttribute("stroke-miterlimit", i.ml)), i.r === 2 && u.setAttribute("fill-rule", "evenodd"), i.ln && u.setAttribute("id", i.ln), i.cl && u.setAttribute("class", i.cl), i.bm && (u.style["mix-blend-mode"] = Dr(i.bm)), this.stylesList.push(l), this.addToAnimatedContents(i, h), h
        }, jt.prototype.createGroupElement = function(i) {
            var n = new ss;
            return i.ln && n.gr.setAttribute("id", i.ln), i.cl && n.gr.setAttribute("class", i.cl), i.bm && (n.gr.style["mix-blend-mode"] = Dr(i.bm)), n
        }, jt.prototype.createTransformElement = function(i, n) {
            var h = Ir.getTransformProperty(this, i, this),
                l = new ns(h, h.o, n);
            return this.addToAnimatedContents(i, l), l
        }, jt.prototype.createShapeElement = function(i, n, h) {
            var l = 4;
            i.ty === "rc" ? l = 5 : i.ty === "el" ? l = 6 : i.ty === "sr" && (l = 7);
            var u = _r.getShapeProp(this, i, l, this),
                p = new vi(n, h, u);
            return this.shapes.push(p), this.addShapeToModifiers(p), this.addToAnimatedContents(i, p), p
        }, jt.prototype.addToAnimatedContents = function(i, n) {
            for (var h = 0, l = this.animatedContents.length; h < l;) {
                if (this.animatedContents[h].element === n) return;
                h += 1
            }
            this.animatedContents.push({
                fn: as.createRenderFunction(i),
                element: n,
                data: i
            })
        }, jt.prototype.setElementStyles = function(i) {
            var n = i.styles,
                h, l = this.stylesList.length;
            for (h = 0; h < l; h += 1) this.stylesList[h].closed || n.push(this.stylesList[h])
        }, jt.prototype.reloadShapes = function() {
            this._isFirstFrame = !0;
            var i, n = this.itemsData.length;
            for (i = 0; i < n; i += 1) this.prevViewData[i] = this.itemsData[i];
            for (this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], !0), this.filterUniqueShapes(), n = this.dynamicProperties.length, i = 0; i < n; i += 1) this.dynamicProperties[i].getValue();
            this.renderModifiers()
        }, jt.prototype.searchShapes = function(i, n, h, l, u, p, A) {
            var B = [].concat(p),
                T, H = i.length - 1,
                W, st, L = [],
                $ = [],
                U, Y, rt;
            for (T = H; T >= 0; T -= 1) {
                if (rt = this.searchProcessedElement(i[T]), rt ? n[T] = h[rt - 1] : i[T]._render = A, i[T].ty === "fl" || i[T].ty === "st" || i[T].ty === "gf" || i[T].ty === "gs" || i[T].ty === "no") rt ? n[T].style.closed = !1 : n[T] = this.createStyleElement(i[T], u), i[T]._render && n[T].style.pElem.parentNode !== l && l.appendChild(n[T].style.pElem), L.push(n[T].style);
                else if (i[T].ty === "gr") {
                    if (!rt) n[T] = this.createGroupElement(i[T]);
                    else
                        for (st = n[T].it.length, W = 0; W < st; W += 1) n[T].prevViewData[W] = n[T].it[W];
                    this.searchShapes(i[T].it, n[T].it, n[T].prevViewData, n[T].gr, u + 1, B, A), i[T]._render && n[T].gr.parentNode !== l && l.appendChild(n[T].gr)
                } else i[T].ty === "tr" ? (rt || (n[T] = this.createTransformElement(i[T], l)), U = n[T].transform, B.push(U)) : i[T].ty === "sh" || i[T].ty === "rc" || i[T].ty === "el" || i[T].ty === "sr" ? (rt || (n[T] = this.createShapeElement(i[T], B, u)), this.setElementStyles(n[T])) : i[T].ty === "tm" || i[T].ty === "rd" || i[T].ty === "ms" || i[T].ty === "pb" || i[T].ty === "zz" || i[T].ty === "op" ? (rt ? (Y = n[T], Y.closed = !1) : (Y = Ve.getModifier(i[T].ty), Y.init(this, i[T]), n[T] = Y, this.shapeModifiers.push(Y)), $.push(Y)) : i[T].ty === "rp" && (rt ? (Y = n[T], Y.closed = !0) : (Y = Ve.getModifier(i[T].ty), n[T] = Y, Y.init(this, i, T, n), this.shapeModifiers.push(Y), A = !1), $.push(Y));
                this.addProcessedElement(i[T], T + 1)
            }
            for (H = L.length, T = 0; T < H; T += 1) L[T].closed = !0;
            for (H = $.length, T = 0; T < H; T += 1) $[T].closed = !0
        }, jt.prototype.renderInnerContent = function() {
            this.renderModifiers();
            var i, n = this.stylesList.length;
            for (i = 0; i < n; i += 1) this.stylesList[i].reset();
            for (this.renderShape(), i = 0; i < n; i += 1)(this.stylesList[i]._mdf || this._isFirstFrame) && (this.stylesList[i].msElem && (this.stylesList[i].msElem.setAttribute("d", this.stylesList[i].d), this.stylesList[i].d = "M0 0" + this.stylesList[i].d), this.stylesList[i].pElem.setAttribute("d", this.stylesList[i].d || "M0 0"))
        }, jt.prototype.renderShape = function() {
            var i, n = this.animatedContents.length,
                h;
            for (i = 0; i < n; i += 1) h = this.animatedContents[i], (this._isFirstFrame || h.element._isAnimated) && h.data !== !0 && h.fn(h.data, h.element, this._isFirstFrame)
        }, jt.prototype.destroy = function() {
            this.destroyBaseElement(), this.shapesData = null, this.itemsData = null
        };

        function Gr(i, n, h, l, u, p) {
            this.o = i, this.sw = n, this.sc = h, this.fc = l, this.m = u, this.p = p, this._mdf = {
                o: !0,
                sw: !!n,
                sc: !!h,
                fc: !!l,
                m: !0,
                p: !0
            }
        }
        Gr.prototype.update = function(i, n, h, l, u, p) {
            this._mdf.o = !1, this._mdf.sw = !1, this._mdf.sc = !1, this._mdf.fc = !1, this._mdf.m = !1, this._mdf.p = !1;
            var A = !1;
            return this.o !== i && (this.o = i, this._mdf.o = !0, A = !0), this.sw !== n && (this.sw = n, this._mdf.sw = !0, A = !0), this.sc !== h && (this.sc = h, this._mdf.sc = !0, A = !0), this.fc !== l && (this.fc = l, this._mdf.fc = !0, A = !0), this.m !== u && (this.m = u, this._mdf.m = !0, A = !0), p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13]) && (this.p = p, this._mdf.p = !0, A = !0), A
        };

        function ie(i, n) {
            this._frameId = o, this.pv = "", this.v = "", this.kf = !1, this._isFirstFrame = !0, this._mdf = !1, n.d && n.d.sid && (n.d = i.globalData.slotManager.getProp(n.d)), this.data = n, this.elem = i, this.comp = this.elem.comp, this.keysIndex = 0, this.canResize = !1, this.minimumFontSize = 1, this.effectsSequence = [], this.currentData = {
                ascent: 0,
                boxWidth: this.defaultBoxWidth,
                f: "",
                fStyle: "",
                fWeight: "",
                fc: "",
                j: "",
                justifyOffset: "",
                l: [],
                lh: 0,
                lineWidths: [],
                ls: "",
                of: "",
                s: "",
                sc: "",
                sw: 0,
                t: 0,
                tr: 0,
                sz: 0,
                ps: null,
                fillColorAnim: !1,
                strokeColorAnim: !1,
                strokeWidthAnim: !1,
                yOffset: 0,
                finalSize: 0,
                finalText: [],
                finalLineHeight: 0,
                __complete: !1
            }, this.copyData(this.currentData, this.data.d.k[0].s), this.searchProperty() || this.completeTextData(this.currentData)
        }
        ie.prototype.defaultBoxWidth = [0, 0], ie.prototype.copyData = function(i, n) {
            for (var h in n) Object.prototype.hasOwnProperty.call(n, h) && (i[h] = n[h]);
            return i
        }, ie.prototype.setCurrentData = function(i) {
            i.__complete || this.completeTextData(i), this.currentData = i, this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth, this._mdf = !0
        }, ie.prototype.searchProperty = function() {
            return this.searchKeyframes()
        }, ie.prototype.searchKeyframes = function() {
            return this.kf = this.data.d.k.length > 1, this.kf && this.addEffect(this.getKeyframeValue.bind(this)), this.kf
        }, ie.prototype.addEffect = function(i) {
            this.effectsSequence.push(i), this.elem.addDynamicProperty(this)
        }, ie.prototype.getValue = function(i) {
            if (!((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !i)) {
                this.currentData.t = this.data.d.k[this.keysIndex].s.t;
                var n = this.currentData,
                    h = this.keysIndex;
                if (this.lock) {
                    this.setCurrentData(this.currentData);
                    return
                }
                this.lock = !0, this._mdf = !1;
                var l, u = this.effectsSequence.length,
                    p = i || this.data.d.k[this.keysIndex].s;
                for (l = 0; l < u; l += 1) h !== this.keysIndex ? p = this.effectsSequence[l](p, p.t) : p = this.effectsSequence[l](this.currentData, p.t);
                n !== p && this.setCurrentData(p), this.v = this.currentData, this.pv = this.v, this.lock = !1, this.frameId = this.elem.globalData.frameId
            }
        }, ie.prototype.getKeyframeValue = function() {
            for (var i = this.data.d.k, n = this.elem.comp.renderedFrame, h = 0, l = i.length; h <= l - 1 && !(h === l - 1 || i[h + 1].t > n);) h += 1;
            return this.keysIndex !== h && (this.keysIndex = h), this.data.d.k[this.keysIndex].s
        }, ie.prototype.buildFinalText = function(i) {
            for (var n = [], h = 0, l = i.length, u, p, A = !1, B = !1, T = ""; h < l;) A = B, B = !1, u = i.charCodeAt(h), T = i.charAt(h), Ye.isCombinedCharacter(u) ? A = !0 : u >= 55296 && u <= 56319 ? Ye.isRegionalFlag(i, h) ? T = i.substr(h, 14) : (p = i.charCodeAt(h + 1), p >= 56320 && p <= 57343 && (Ye.isModifier(u, p) ? (T = i.substr(h, 2), A = !0) : Ye.isFlagEmoji(i.substr(h, 4)) ? T = i.substr(h, 4) : T = i.substr(h, 2))) : u > 56319 ? (p = i.charCodeAt(h + 1), Ye.isVariationSelector(u) && (A = !0)) : Ye.isZeroWidthJoiner(u) && (A = !0, B = !0), A ? (n[n.length - 1] += T, A = !1) : n.push(T), h += T.length;
            return n
        }, ie.prototype.completeTextData = function(i) {
            i.__complete = !0;
            var n = this.elem.globalData.fontManager,
                h = this.data,
                l = [],
                u, p, A, B = 0,
                T, H = h.m.g,
                W = 0,
                st = 0,
                L = 0,
                $ = [],
                U = 0,
                Y = 0,
                rt, q, z = n.getFontByName(i.f),
                I, R = 0,
                j = hi(z);
            i.fWeight = j.weight, i.fStyle = j.style, i.finalSize = i.s, i.finalText = this.buildFinalText(i.t), p = i.finalText.length, i.finalLineHeight = i.lh;
            var Q = i.tr / 1e3 * i.finalSize,
                it;
            if (i.sz)
                for (var ot = !0, ut = i.sz[0], wt = i.sz[1], At, dt; ot;) {
                    dt = this.buildFinalText(i.t), At = 0, U = 0, p = dt.length, Q = i.tr / 1e3 * i.finalSize;
                    var It = -1;
                    for (u = 0; u < p; u += 1) it = dt[u].charCodeAt(0), A = !1, dt[u] === " " ? It = u : (it === 13 || it === 3) && (U = 0, A = !0, At += i.finalLineHeight || i.finalSize * 1.2), n.chars ? (I = n.getCharData(dt[u], z.fStyle, z.fFamily), R = A ? 0 : I.w * i.finalSize / 100) : R = n.measureText(dt[u], i.f, i.finalSize), U + R > ut && dt[u] !== " " ? (It === -1 ? p += 1 : u = It, At += i.finalLineHeight || i.finalSize * 1.2, dt.splice(u, It === u ? 1 : 0, "\r"), It = -1, U = 0) : (U += R, U += Q);
                    At += z.ascent * i.finalSize / 100, this.canResize && i.finalSize > this.minimumFontSize && wt < At ? (i.finalSize -= 1, i.finalLineHeight = i.finalSize * i.lh / i.s) : (i.finalText = dt, p = i.finalText.length, ot = !1)
                }
            U = -Q, R = 0;
            var Ct = 0,
                pt;
            for (u = 0; u < p; u += 1)
                if (A = !1, pt = i.finalText[u], it = pt.charCodeAt(0), it === 13 || it === 3 ? (Ct = 0, $.push(U), Y = U > Y ? U : Y, U = -2 * Q, T = "", A = !0, L += 1) : T = pt, n.chars ? (I = n.getCharData(pt, z.fStyle, n.getFontByName(i.f).fFamily), R = A ? 0 : I.w * i.finalSize / 100) : R = n.measureText(T, i.f, i.finalSize), pt === " " ? Ct += R + Q : (U += R + Q + Ct, Ct = 0), l.push({
                        l: R,
                        an: R,
                        add: W,
                        n: A,
                        anIndexes: [],
                        val: T,
                        line: L,
                        animatorJustifyOffset: 0
                    }), H == 2) {
                    if (W += R, T === "" || T === " " || u === p - 1) {
                        for ((T === "" || T === " ") && (W -= R); st <= u;) l[st].an = W, l[st].ind = B, l[st].extra = R, st += 1;
                        B += 1, W = 0
                    }
                } else if (H == 3) {
                if (W += R, T === "" || u === p - 1) {
                    for (T === "" && (W -= R); st <= u;) l[st].an = W, l[st].ind = B, l[st].extra = R, st += 1;
                    W = 0, B += 1
                }
            } else l[B].ind = B, l[B].extra = 0, B += 1;
            if (i.l = l, Y = U > Y ? U : Y, $.push(U), i.sz) i.boxWidth = i.sz[0], i.justifyOffset = 0;
            else switch (i.boxWidth = Y, i.j) {
                case 1:
                    i.justifyOffset = -i.boxWidth;
                    break;
                case 2:
                    i.justifyOffset = -i.boxWidth / 2;
                    break;
                default:
                    i.justifyOffset = 0
            }
            i.lineWidths = $;
            var O = h.a,
                K, x;
            q = O.length;
            var F, at, et = [];
            for (rt = 0; rt < q; rt += 1) {
                for (K = O[rt], K.a.sc && (i.strokeColorAnim = !0), K.a.sw && (i.strokeWidthAnim = !0), (K.a.fc || K.a.fh || K.a.fs || K.a.fb) && (i.fillColorAnim = !0), at = 0, F = K.s.b, u = 0; u < p; u += 1) x = l[u], x.anIndexes[rt] = at, (F == 1 && x.val !== "" || F == 2 && x.val !== "" && x.val !== " " || F == 3 && (x.n || x.val == " " || u == p - 1) || F == 4 && (x.n || u == p - 1)) && (K.s.rn === 1 && et.push(at), at += 1);
                h.a[rt].s.totalChars = at;
                var Pt = -1,
                    kt;
                if (K.s.rn === 1)
                    for (u = 0; u < p; u += 1) x = l[u], Pt != x.anIndexes[rt] && (Pt = x.anIndexes[rt], kt = et.splice(Math.floor(Math.random() * et.length), 1)[0]), x.anIndexes[rt] = kt
            }
            i.yOffset = i.finalLineHeight || i.finalSize * 1.2, i.ls = i.ls || 0, i.ascent = z.ascent * i.finalSize / 100
        }, ie.prototype.updateDocumentData = function(i, n) {
            n = n === void 0 ? this.keysIndex : n;
            var h = this.copyData({}, this.data.d.k[n].s);
            h = this.copyData(h, i), this.data.d.k[n].s = h, this.recalculate(n), this.setCurrentData(h), this.elem.addDynamicProperty(this)
        }, ie.prototype.recalculate = function(i) {
            var n = this.data.d.k[i].s;
            n.__complete = !1, this.keysIndex = 0, this._isFirstFrame = !0, this.getValue(n)
        }, ie.prototype.canResizeFont = function(i) {
            this.canResize = i, this.recalculate(this.keysIndex), this.elem.addDynamicProperty(this)
        }, ie.prototype.setMinimumFontSize = function(i) {
            this.minimumFontSize = Math.floor(i) || 1, this.recalculate(this.keysIndex), this.elem.addDynamicProperty(this)
        };
        var os = function() {
            var i = Math.max,
                n = Math.min,
                h = Math.floor;

            function l(p, A) {
                this._currentTextLength = -1, this.k = !1, this.data = A, this.elem = p, this.comp = p.comp, this.finalS = 0, this.finalE = 0, this.initDynamicPropertyContainer(p), this.s = mt.getProp(p, A.s || {
                    k: 0
                }, 0, 0, this), "e" in A ? this.e = mt.getProp(p, A.e, 0, 0, this) : this.e = {
                    v: 100
                }, this.o = mt.getProp(p, A.o || {
                    k: 0
                }, 0, 0, this), this.xe = mt.getProp(p, A.xe || {
                    k: 0
                }, 0, 0, this), this.ne = mt.getProp(p, A.ne || {
                    k: 0
                }, 0, 0, this), this.sm = mt.getProp(p, A.sm || {
                    k: 100
                }, 0, 0, this), this.a = mt.getProp(p, A.a, 0, .01, this), this.dynamicProperties.length || this.getValue()
            }
            l.prototype = {
                getMult: function(A) {
                    this._currentTextLength !== this.elem.textProperty.currentData.l.length && this.getValue();
                    var B = 0,
                        T = 0,
                        H = 1,
                        W = 1;
                    this.ne.v > 0 ? B = this.ne.v / 100 : T = -this.ne.v / 100, this.xe.v > 0 ? H = 1 - this.xe.v / 100 : W = 1 + this.xe.v / 100;
                    var st = ne.getBezierEasing(B, T, H, W).get,
                        L = 0,
                        $ = this.finalS,
                        U = this.finalE,
                        Y = this.data.sh;
                    if (Y === 2) U === $ ? L = A >= U ? 1 : 0 : L = i(0, n(.5 / (U - $) + (A - $) / (U - $), 1)), L = st(L);
                    else if (Y === 3) U === $ ? L = A >= U ? 0 : 1 : L = 1 - i(0, n(.5 / (U - $) + (A - $) / (U - $), 1)), L = st(L);
                    else if (Y === 4) U === $ ? L = 0 : (L = i(0, n(.5 / (U - $) + (A - $) / (U - $), 1)), L < .5 ? L *= 2 : L = 1 - 2 * (L - .5)), L = st(L);
                    else if (Y === 5) {
                        if (U === $) L = 0;
                        else {
                            var rt = U - $;
                            A = n(i(0, A + .5 - $), U - $);
                            var q = -rt / 2 + A,
                                z = rt / 2;
                            L = Math.sqrt(1 - q * q / (z * z))
                        }
                        L = st(L)
                    } else Y === 6 ? (U === $ ? L = 0 : (A = n(i(0, A + .5 - $), U - $), L = (1 + Math.cos(Math.PI + Math.PI * 2 * A / (U - $))) / 2), L = st(L)) : (A >= h($) && (A - $ < 0 ? L = i(0, n(n(U, 1) - ($ - A), 1)) : L = i(0, n(U - A, 1))), L = st(L));
                    if (this.sm.v !== 100) {
                        var I = this.sm.v * .01;
                        I === 0 && (I = 1e-8);
                        var R = .5 - I * .5;
                        L < R ? L = 0 : (L = (L - R) / I, L > 1 && (L = 1))
                    }
                    return L * this.a.v
                },
                getValue: function(A) {
                    this.iterateDynamicProperties(), this._mdf = A || this._mdf, this._currentTextLength = this.elem.textProperty.currentData.l.length || 0, A && this.data.r === 2 && (this.e.v = this._currentTextLength);
                    var B = this.data.r === 2 ? 1 : 100 / this.data.totalChars,
                        T = this.o.v / B,
                        H = this.s.v / B + T,
                        W = this.e.v / B + T;
                    if (H > W) {
                        var st = H;
                        H = W, W = st
                    }
                    this.finalS = H, this.finalE = W
                }
            }, M([Yt], l);

            function u(p, A, B) {
                return new l(p, A)
            }
            return {
                getTextSelectorProp: u
            }
        }();

        function hs(i, n, h) {
            var l = {
                    propType: !1
                },
                u = mt.getProp,
                p = n.a;
            this.a = {
                r: p.r ? u(i, p.r, 0, ht, h) : l,
                rx: p.rx ? u(i, p.rx, 0, ht, h) : l,
                ry: p.ry ? u(i, p.ry, 0, ht, h) : l,
                sk: p.sk ? u(i, p.sk, 0, ht, h) : l,
                sa: p.sa ? u(i, p.sa, 0, ht, h) : l,
                s: p.s ? u(i, p.s, 1, .01, h) : l,
                a: p.a ? u(i, p.a, 1, 0, h) : l,
                o: p.o ? u(i, p.o, 0, .01, h) : l,
                p: p.p ? u(i, p.p, 1, 0, h) : l,
                sw: p.sw ? u(i, p.sw, 0, 0, h) : l,
                sc: p.sc ? u(i, p.sc, 1, 0, h) : l,
                fc: p.fc ? u(i, p.fc, 1, 0, h) : l,
                fh: p.fh ? u(i, p.fh, 0, 0, h) : l,
                fs: p.fs ? u(i, p.fs, 0, .01, h) : l,
                fb: p.fb ? u(i, p.fb, 0, .01, h) : l,
                t: p.t ? u(i, p.t, 0, 0, h) : l
            }, this.s = os.getTextSelectorProp(i, n.s, h), this.s.t = n.s.t
        }

        function Ke(i, n, h) {
            this._isFirstFrame = !0, this._hasMaskedPath = !1, this._frameId = -1, this._textData = i, this._renderType = n, this._elem = h, this._animatorsData = b(this._textData.a.length), this._pathData = {}, this._moreOptions = {
                alignment: {}
            }, this.renderedLetters = [], this.lettersChangedFlag = !1, this.initDynamicPropertyContainer(h)
        }
        Ke.prototype.searchProperties = function() {
            var i, n = this._textData.a.length,
                h, l = mt.getProp;
            for (i = 0; i < n; i += 1) h = this._textData.a[i], this._animatorsData[i] = new hs(this._elem, h, this);
            this._textData.p && "m" in this._textData.p ? (this._pathData = {
                a: l(this._elem, this._textData.p.a, 0, 0, this),
                f: l(this._elem, this._textData.p.f, 0, 0, this),
                l: l(this._elem, this._textData.p.l, 0, 0, this),
                r: l(this._elem, this._textData.p.r, 0, 0, this),
                p: l(this._elem, this._textData.p.p, 0, 0, this),
                m: this._elem.maskManager.getMaskProperty(this._textData.p.m)
            }, this._hasMaskedPath = !0) : this._hasMaskedPath = !1, this._moreOptions.alignment = l(this._elem, this._textData.m.a, 1, 0, this)
        }, Ke.prototype.getMeasures = function(i, n) {
            if (this.lettersChangedFlag = n, !(!this._mdf && !this._isFirstFrame && !n && (!this._hasMaskedPath || !this._pathData.m._mdf))) {
                this._isFirstFrame = !1;
                var h = this._moreOptions.alignment.v,
                    l = this._animatorsData,
                    u = this._textData,
                    p = this.mHelper,
                    A = this._renderType,
                    B = this.renderedLetters.length,
                    T, H, W, st, L = i.l,
                    $, U, Y, rt, q, z, I, R, j, Q, it, ot, ut, wt, At;
                if (this._hasMaskedPath) {
                    if (At = this._pathData.m, !this._pathData.n || this._pathData._mdf) {
                        var dt = At.v;
                        this._pathData.r.v && (dt = dt.reverse()), $ = {
                            tLength: 0,
                            segments: []
                        }, st = dt._length - 1;
                        var It;
                        for (ot = 0, W = 0; W < st; W += 1) It = Ee.buildBezierData(dt.v[W], dt.v[W + 1], [dt.o[W][0] - dt.v[W][0], dt.o[W][1] - dt.v[W][1]], [dt.i[W + 1][0] - dt.v[W + 1][0], dt.i[W + 1][1] - dt.v[W + 1][1]]), $.tLength += It.segmentLength, $.segments.push(It), ot += It.segmentLength;
                        W = st, At.v.c && (It = Ee.buildBezierData(dt.v[W], dt.v[0], [dt.o[W][0] - dt.v[W][0], dt.o[W][1] - dt.v[W][1]], [dt.i[0][0] - dt.v[0][0], dt.i[0][1] - dt.v[0][1]]), $.tLength += It.segmentLength, $.segments.push(It), ot += It.segmentLength), this._pathData.pi = $
                    }
                    if ($ = this._pathData.pi, U = this._pathData.f.v, I = 0, z = 1, rt = 0, q = !0, Q = $.segments, U < 0 && At.v.c)
                        for ($.tLength < Math.abs(U) && (U = -Math.abs(U) % $.tLength), I = Q.length - 1, j = Q[I].points, z = j.length - 1; U < 0;) U += j[z].partialLength, z -= 1, z < 0 && (I -= 1, j = Q[I].points, z = j.length - 1);
                    j = Q[I].points, R = j[z - 1], Y = j[z], it = Y.partialLength
                }
                st = L.length, T = 0, H = 0;
                var Ct = i.finalSize * 1.2 * .714,
                    pt = !0,
                    O, K, x, F, at;
                F = l.length;
                var et, Pt = -1,
                    kt, Ft, Bt, Dt = U,
                    Wt = I,
                    he = z,
                    xe = -1,
                    le, Zt, pe, Gt, xt, we, Ge, Fe, Ae = "",
                    Ie = this.defaultPropsArray,
                    Le;
                if (i.j === 2 || i.j === 1) {
                    var fe = 0,
                        Ne = 0,
                        He = i.j === 2 ? -.5 : -1,
                        Pe = 0,
                        je = !0;
                    for (W = 0; W < st; W += 1)
                        if (L[W].n) {
                            for (fe && (fe += Ne); Pe < W;) L[Pe].animatorJustifyOffset = fe, Pe += 1;
                            fe = 0, je = !0
                        } else {
                            for (x = 0; x < F; x += 1) O = l[x].a, O.t.propType && (je && i.j === 2 && (Ne += O.t.v * He), K = l[x].s, et = K.getMult(L[W].anIndexes[x], u.a[x].s.totalChars), et.length ? fe += O.t.v * et[0] * He : fe += O.t.v * et * He);
                            je = !1
                        }
                    for (fe && (fe += Ne); Pe < W;) L[Pe].animatorJustifyOffset = fe, Pe += 1
                }
                for (W = 0; W < st; W += 1) {
                    if (p.reset(), le = 1, L[W].n) T = 0, H += i.yOffset, H += pt ? 1 : 0, U = Dt, pt = !1, this._hasMaskedPath && (I = Wt, z = he, j = Q[I].points, R = j[z - 1], Y = j[z], it = Y.partialLength, rt = 0), Ae = "", Fe = "", we = "", Le = "", Ie = this.defaultPropsArray;
                    else {
                        if (this._hasMaskedPath) {
                            if (xe !== L[W].line) {
                                switch (i.j) {
                                    case 1:
                                        U += ot - i.lineWidths[L[W].line];
                                        break;
                                    case 2:
                                        U += (ot - i.lineWidths[L[W].line]) / 2;
                                        break
                                }
                                xe = L[W].line
                            }
                            Pt !== L[W].ind && (L[Pt] && (U += L[Pt].extra), U += L[W].an / 2, Pt = L[W].ind), U += h[0] * L[W].an * .005;
                            var _e = 0;
                            for (x = 0; x < F; x += 1) O = l[x].a, O.p.propType && (K = l[x].s, et = K.getMult(L[W].anIndexes[x], u.a[x].s.totalChars), et.length ? _e += O.p.v[0] * et[0] : _e += O.p.v[0] * et), O.a.propType && (K = l[x].s, et = K.getMult(L[W].anIndexes[x], u.a[x].s.totalChars), et.length ? _e += O.a.v[0] * et[0] : _e += O.a.v[0] * et);
                            for (q = !0, this._pathData.a.v && (U = L[0].an * .5 + (ot - this._pathData.f.v - L[0].an * .5 - L[L.length - 1].an * .5) * Pt / (st - 1), U += this._pathData.f.v); q;) rt + it >= U + _e || !j ? (ut = (U + _e - rt) / Y.partialLength, Ft = R.point[0] + (Y.point[0] - R.point[0]) * ut, Bt = R.point[1] + (Y.point[1] - R.point[1]) * ut, p.translate(-h[0] * L[W].an * .005, -(h[1] * Ct) * .01), q = !1) : j && (rt += Y.partialLength, z += 1, z >= j.length && (z = 0, I += 1, Q[I] ? j = Q[I].points : At.v.c ? (z = 0, I = 0, j = Q[I].points) : (rt -= Y.partialLength, j = null)), j && (R = Y, Y = j[z], it = Y.partialLength));
                            kt = L[W].an / 2 - L[W].add, p.translate(-kt, 0, 0)
                        } else kt = L[W].an / 2 - L[W].add, p.translate(-kt, 0, 0), p.translate(-h[0] * L[W].an * .005, -h[1] * Ct * .01, 0);
                        for (x = 0; x < F; x += 1) O = l[x].a, O.t.propType && (K = l[x].s, et = K.getMult(L[W].anIndexes[x], u.a[x].s.totalChars), (T !== 0 || i.j !== 0) && (this._hasMaskedPath ? et.length ? U += O.t.v * et[0] : U += O.t.v * et : et.length ? T += O.t.v * et[0] : T += O.t.v * et));
                        for (i.strokeWidthAnim && (pe = i.sw || 0), i.strokeColorAnim && (i.sc ? Zt = [i.sc[0], i.sc[1], i.sc[2]] : Zt = [0, 0, 0]), i.fillColorAnim && i.fc && (Gt = [i.fc[0], i.fc[1], i.fc[2]]), x = 0; x < F; x += 1) O = l[x].a, O.a.propType && (K = l[x].s, et = K.getMult(L[W].anIndexes[x], u.a[x].s.totalChars), et.length ? p.translate(-O.a.v[0] * et[0], -O.a.v[1] * et[1], O.a.v[2] * et[2]) : p.translate(-O.a.v[0] * et, -O.a.v[1] * et, O.a.v[2] * et));
                        for (x = 0; x < F; x += 1) O = l[x].a, O.s.propType && (K = l[x].s, et = K.getMult(L[W].anIndexes[x], u.a[x].s.totalChars), et.length ? p.scale(1 + (O.s.v[0] - 1) * et[0], 1 + (O.s.v[1] - 1) * et[1], 1) : p.scale(1 + (O.s.v[0] - 1) * et, 1 + (O.s.v[1] - 1) * et, 1));
                        for (x = 0; x < F; x += 1) {
                            if (O = l[x].a, K = l[x].s, et = K.getMult(L[W].anIndexes[x], u.a[x].s.totalChars), O.sk.propType && (et.length ? p.skewFromAxis(-O.sk.v * et[0], O.sa.v * et[1]) : p.skewFromAxis(-O.sk.v * et, O.sa.v * et)), O.r.propType && (et.length ? p.rotateZ(-O.r.v * et[2]) : p.rotateZ(-O.r.v * et)), O.ry.propType && (et.length ? p.rotateY(O.ry.v * et[1]) : p.rotateY(O.ry.v * et)), O.rx.propType && (et.length ? p.rotateX(O.rx.v * et[0]) : p.rotateX(O.rx.v * et)), O.o.propType && (et.length ? le += (O.o.v * et[0] - le) * et[0] : le += (O.o.v * et - le) * et), i.strokeWidthAnim && O.sw.propType && (et.length ? pe += O.sw.v * et[0] : pe += O.sw.v * et), i.strokeColorAnim && O.sc.propType)
                                for (xt = 0; xt < 3; xt += 1) et.length ? Zt[xt] += (O.sc.v[xt] - Zt[xt]) * et[0] : Zt[xt] += (O.sc.v[xt] - Zt[xt]) * et;
                            if (i.fillColorAnim && i.fc) {
                                if (O.fc.propType)
                                    for (xt = 0; xt < 3; xt += 1) et.length ? Gt[xt] += (O.fc.v[xt] - Gt[xt]) * et[0] : Gt[xt] += (O.fc.v[xt] - Gt[xt]) * et;
                                O.fh.propType && (et.length ? Gt = Tt(Gt, O.fh.v * et[0]) : Gt = Tt(Gt, O.fh.v * et)), O.fs.propType && (et.length ? Gt = tt(Gt, O.fs.v * et[0]) : Gt = tt(Gt, O.fs.v * et)), O.fb.propType && (et.length ? Gt = gt(Gt, O.fb.v * et[0]) : Gt = gt(Gt, O.fb.v * et))
                            }
                        }
                        for (x = 0; x < F; x += 1) O = l[x].a, O.p.propType && (K = l[x].s, et = K.getMult(L[W].anIndexes[x], u.a[x].s.totalChars), this._hasMaskedPath ? et.length ? p.translate(0, O.p.v[1] * et[0], -O.p.v[2] * et[1]) : p.translate(0, O.p.v[1] * et, -O.p.v[2] * et) : et.length ? p.translate(O.p.v[0] * et[0], O.p.v[1] * et[1], -O.p.v[2] * et[2]) : p.translate(O.p.v[0] * et, O.p.v[1] * et, -O.p.v[2] * et));
                        if (i.strokeWidthAnim && (we = pe < 0 ? 0 : pe), i.strokeColorAnim && (Ge = "rgb(" + Math.round(Zt[0] * 255) + "," + Math.round(Zt[1] * 255) + "," + Math.round(Zt[2] * 255) + ")"), i.fillColorAnim && i.fc && (Fe = "rgb(" + Math.round(Gt[0] * 255) + "," + Math.round(Gt[1] * 255) + "," + Math.round(Gt[2] * 255) + ")"), this._hasMaskedPath) {
                            if (p.translate(0, -i.ls), p.translate(0, h[1] * Ct * .01 + H, 0), this._pathData.p.v) {
                                wt = (Y.point[1] - R.point[1]) / (Y.point[0] - R.point[0]);
                                var Je = Math.atan(wt) * 180 / Math.PI;
                                Y.point[0] < R.point[0] && (Je += 180), p.rotate(-Je * Math.PI / 180)
                            }
                            p.translate(Ft, Bt, 0), U -= h[0] * L[W].an * .005, L[W + 1] && Pt !== L[W + 1].ind && (U += L[W].an / 2, U += i.tr * .001 * i.finalSize)
                        } else {
                            switch (p.translate(T, H, 0), i.ps && p.translate(i.ps[0], i.ps[1] + i.ascent, 0), i.j) {
                                case 1:
                                    p.translate(L[W].animatorJustifyOffset + i.justifyOffset + (i.boxWidth - i.lineWidths[L[W].line]), 0, 0);
                                    break;
                                case 2:
                                    p.translate(L[W].animatorJustifyOffset + i.justifyOffset + (i.boxWidth - i.lineWidths[L[W].line]) / 2, 0, 0);
                                    break
                            }
                            p.translate(0, -i.ls), p.translate(kt, 0, 0), p.translate(h[0] * L[W].an * .005, h[1] * Ct * .01, 0), T += L[W].l + i.tr * .001 * i.finalSize
                        }
                        A === "html" ? Ae = p.toCSS() : A === "svg" ? Ae = p.to2dCSS() : Ie = [p.props[0], p.props[1], p.props[2], p.props[3], p.props[4], p.props[5], p.props[6], p.props[7], p.props[8], p.props[9], p.props[10], p.props[11], p.props[12], p.props[13], p.props[14], p.props[15]], Le = le
                    }
                    B <= W ? (at = new Gr(Le, we, Ge, Fe, Ae, Ie), this.renderedLetters.push(at), B += 1, this.lettersChangedFlag = !0) : (at = this.renderedLetters[W], this.lettersChangedFlag = at.update(Le, we, Ge, Fe, Ae, Ie) || this.lettersChangedFlag)
                }
            }
        }, Ke.prototype.getValue = function() {
            this._elem.globalData.frameId !== this._frameId && (this._frameId = this._elem.globalData.frameId, this.iterateDynamicProperties())
        }, Ke.prototype.mHelper = new te, Ke.prototype.defaultPropsArray = [], M([Yt], Ke);

        function me() {}
        me.prototype.initElement = function(i, n, h) {
            this.lettersChangedFlag = !0, this.initFrame(), this.initBaseData(i, n, h), this.textProperty = new ie(this, i.t, this.dynamicProperties), this.textAnimator = new Ke(i.t, this.renderType, this), this.initTransform(i, n, h), this.initHierarchy(), this.initRenderable(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), this.createContent(), this.hide(), this.textAnimator.searchProperties(this.dynamicProperties)
        }, me.prototype.prepareFrame = function(i) {
            this._mdf = !1, this.prepareRenderableFrame(i), this.prepareProperties(i, this.isInRange)
        }, me.prototype.createPathShape = function(i, n) {
            var h, l = n.length,
                u, p = "";
            for (h = 0; h < l; h += 1) n[h].ty === "sh" && (u = n[h].ks.k, p += Si(u, u.i.length, !0, i));
            return p
        }, me.prototype.updateDocumentData = function(i, n) {
            this.textProperty.updateDocumentData(i, n)
        }, me.prototype.canResizeFont = function(i) {
            this.textProperty.canResizeFont(i)
        }, me.prototype.setMinimumFontSize = function(i) {
            this.textProperty.setMinimumFontSize(i)
        }, me.prototype.applyTextPropertiesToMatrix = function(i, n, h, l, u) {
            switch (i.ps && n.translate(i.ps[0], i.ps[1] + i.ascent, 0), n.translate(0, -i.ls, 0), i.j) {
                case 1:
                    n.translate(i.justifyOffset + (i.boxWidth - i.lineWidths[h]), 0, 0);
                    break;
                case 2:
                    n.translate(i.justifyOffset + (i.boxWidth - i.lineWidths[h]) / 2, 0, 0);
                    break
            }
            n.translate(l, u, 0)
        }, me.prototype.buildColor = function(i) {
            return "rgb(" + Math.round(i[0] * 255) + "," + Math.round(i[1] * 255) + "," + Math.round(i[2] * 255) + ")"
        }, me.prototype.emptyProp = new Gr, me.prototype.destroy = function() {}, me.prototype.validateText = function() {
            (this.textProperty._mdf || this.textProperty._isFirstFrame) && (this.buildNewText(), this.textProperty._isFirstFrame = !1, this.textProperty._mdf = !1)
        };
        var ls = {
            shapes: []
        };

        function ke(i, n, h) {
            this.textSpans = [], this.renderType = "svg", this.initElement(i, n, h)
        }
        M([Be, ir, cr, sr, De, dr, me], ke), ke.prototype.createContent = function() {
            this.data.singleShape && !this.globalData.fontManager.chars && (this.textContainer = _t("text"))
        }, ke.prototype.buildTextContents = function(i) {
            for (var n = 0, h = i.length, l = [], u = ""; n < h;) i[n] === String.fromCharCode(13) || i[n] === String.fromCharCode(3) ? (l.push(u), u = "") : u += i[n], n += 1;
            return l.push(u), l
        }, ke.prototype.buildShapeData = function(i, n) {
            if (i.shapes && i.shapes.length) {
                var h = i.shapes[0];
                if (h.it) {
                    var l = h.it[h.it.length - 1];
                    l.s && (l.s.k[0] = n, l.s.k[1] = n)
                }
            }
            return i
        }, ke.prototype.buildNewText = function() {
            this.addDynamicProperty(this);
            var i, n, h = this.textProperty.currentData;
            this.renderedLetters = b(h ? h.l.length : 0), h.fc ? this.layerElement.setAttribute("fill", this.buildColor(h.fc)) : this.layerElement.setAttribute("fill", "rgba(0,0,0,0)"), h.sc && (this.layerElement.setAttribute("stroke", this.buildColor(h.sc)), this.layerElement.setAttribute("stroke-width", h.sw)), this.layerElement.setAttribute("font-size", h.finalSize);
            var l = this.globalData.fontManager.getFontByName(h.f);
            if (l.fClass) this.layerElement.setAttribute("class", l.fClass);
            else {
                this.layerElement.setAttribute("font-family", l.fFamily);
                var u = h.fWeight,
                    p = h.fStyle;
                this.layerElement.setAttribute("font-style", p), this.layerElement.setAttribute("font-weight", u)
            }
            this.layerElement.setAttribute("aria-label", h.t);
            var A = h.l || [],
                B = !!this.globalData.fontManager.chars;
            n = A.length;
            var T, H = this.mHelper,
                W = "",
                st = this.data.singleShape,
                L = 0,
                $ = 0,
                U = !0,
                Y = h.tr * .001 * h.finalSize;
            if (st && !B && !h.sz) {
                var rt = this.textContainer,
                    q = "start";
                switch (h.j) {
                    case 1:
                        q = "end";
                        break;
                    case 2:
                        q = "middle";
                        break;
                    default:
                        q = "start";
                        break
                }
                rt.setAttribute("text-anchor", q), rt.setAttribute("letter-spacing", Y);
                var z = this.buildTextContents(h.finalText);
                for (n = z.length, $ = h.ps ? h.ps[1] + h.ascent : 0, i = 0; i < n; i += 1) T = this.textSpans[i].span || _t("tspan"), T.textContent = z[i], T.setAttribute("x", 0), T.setAttribute("y", $), T.style.display = "inherit", rt.appendChild(T), this.textSpans[i] || (this.textSpans[i] = {
                    span: null,
                    glyph: null
                }), this.textSpans[i].span = T, $ += h.finalLineHeight;
                this.layerElement.appendChild(rt)
            } else {
                var I = this.textSpans.length,
                    R;
                for (i = 0; i < n; i += 1) {
                    if (this.textSpans[i] || (this.textSpans[i] = {
                            span: null,
                            childSpan: null,
                            glyph: null
                        }), !B || !st || i === 0) {
                        if (T = I > i ? this.textSpans[i].span : _t(B ? "g" : "text"), I <= i) {
                            if (T.setAttribute("stroke-linecap", "butt"), T.setAttribute("stroke-linejoin", "round"), T.setAttribute("stroke-miterlimit", "4"), this.textSpans[i].span = T, B) {
                                var j = _t("g");
                                T.appendChild(j), this.textSpans[i].childSpan = j
                            }
                            this.textSpans[i].span = T, this.layerElement.appendChild(T)
                        }
                        T.style.display = "inherit"
                    }
                    if (H.reset(), st && (A[i].n && (L = -Y, $ += h.yOffset, $ += U ? 1 : 0, U = !1), this.applyTextPropertiesToMatrix(h, H, A[i].line, L, $), L += A[i].l || 0, L += Y), B) {
                        R = this.globalData.fontManager.getCharData(h.finalText[i], l.fStyle, this.globalData.fontManager.getFontByName(h.f).fFamily);
                        var Q;
                        if (R.t === 1) Q = new gr(R.data, this.globalData, this);
                        else {
                            var it = ls;
                            R.data && R.data.shapes && (it = this.buildShapeData(R.data, h.finalSize)), Q = new jt(it, this.globalData, this)
                        }
                        if (this.textSpans[i].glyph) {
                            var ot = this.textSpans[i].glyph;
                            this.textSpans[i].childSpan.removeChild(ot.layerElement), ot.destroy()
                        }
                        this.textSpans[i].glyph = Q, Q._debug = !0, Q.prepareFrame(0), Q.renderFrame(), this.textSpans[i].childSpan.appendChild(Q.layerElement), R.t === 1 && this.textSpans[i].childSpan.setAttribute("transform", "scale(" + h.finalSize / 100 + "," + h.finalSize / 100 + ")")
                    } else st && T.setAttribute("transform", "translate(" + H.props[12] + "," + H.props[13] + ")"), T.textContent = A[i].val, T.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve")
                }
                st && T && T.setAttribute("d", W)
            }
            for (; i < this.textSpans.length;) this.textSpans[i].span.style.display = "none", i += 1;
            this._sizeChanged = !0
        }, ke.prototype.sourceRectAtTime = function() {
            if (this.prepareFrame(this.comp.renderedFrame - this.data.st), this.renderInnerContent(), this._sizeChanged) {
                this._sizeChanged = !1;
                var i = this.layerElement.getBBox();
                this.bbox = {
                    top: i.y,
                    left: i.x,
                    width: i.width,
                    height: i.height
                }
            }
            return this.bbox
        }, ke.prototype.getValue = function() {
            var i, n = this.textSpans.length,
                h;
            for (this.renderedFrame = this.comp.renderedFrame, i = 0; i < n; i += 1) h = this.textSpans[i].glyph, h && (h.prepareFrame(this.comp.renderedFrame - this.data.st), h._mdf && (this._mdf = !0))
        }, ke.prototype.renderInnerContent = function() {
            if (this.validateText(), (!this.data.singleShape || this._mdf) && (this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag), this.lettersChangedFlag || this.textAnimator.lettersChangedFlag)) {
                this._sizeChanged = !0;
                var i, n, h = this.textAnimator.renderedLetters,
                    l = this.textProperty.currentData.l;
                n = l.length;
                var u, p, A;
                for (i = 0; i < n; i += 1) l[i].n || (u = h[i], p = this.textSpans[i].span, A = this.textSpans[i].glyph, A && A.renderFrame(), u._mdf.m && p.setAttribute("transform", u.m), u._mdf.o && p.setAttribute("opacity", u.o), u._mdf.sw && p.setAttribute("stroke-width", u.sw), u._mdf.sc && p.setAttribute("stroke", u.sc), u._mdf.fc && p.setAttribute("fill", u.fc))
            }
        };

        function Nr(i, n, h) {
            this.initElement(i, n, h)
        }
        M([mr], Nr), Nr.prototype.createContent = function() {
            var i = _t("rect");
            i.setAttribute("width", this.data.sw), i.setAttribute("height", this.data.sh), i.setAttribute("fill", this.data.sc), this.layerElement.appendChild(i)
        };

        function ze(i, n, h) {
            this.initFrame(), this.initBaseData(i, n, h), this.initFrame(), this.initTransform(i, n, h), this.initHierarchy()
        }
        ze.prototype.prepareFrame = function(i) {
            this.prepareProperties(i, !0)
        }, ze.prototype.renderFrame = function() {}, ze.prototype.getBaseElement = function() {
            return null
        }, ze.prototype.destroy = function() {}, ze.prototype.sourceRectAtTime = function() {}, ze.prototype.hide = function() {}, M([Be, ir, sr, De], ze);

        function Xt() {}
        M([ee], Xt), Xt.prototype.createNull = function(i) {
            return new ze(i, this.globalData, this)
        }, Xt.prototype.createShape = function(i) {
            return new jt(i, this.globalData, this)
        }, Xt.prototype.createText = function(i) {
            return new ke(i, this.globalData, this)
        }, Xt.prototype.createImage = function(i) {
            return new mr(i, this.globalData, this)
        }, Xt.prototype.createSolid = function(i) {
            return new Nr(i, this.globalData, this)
        }, Xt.prototype.configAnimation = function(i) {
            this.svgElement.setAttribute("xmlns", "http://www.w3.org/2000/svg"), this.svgElement.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"), this.renderConfig.viewBoxSize ? this.svgElement.setAttribute("viewBox", this.renderConfig.viewBoxSize) : this.svgElement.setAttribute("viewBox", "0 0 " + i.w + " " + i.h), this.renderConfig.viewBoxOnly || (this.svgElement.setAttribute("width", i.w), this.svgElement.setAttribute("height", i.h), this.svgElement.style.width = "100%", this.svgElement.style.height = "100%", this.svgElement.style.transform = "translate3d(0,0,0)", this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility), this.renderConfig.width && this.svgElement.setAttribute("width", this.renderConfig.width), this.renderConfig.height && this.svgElement.setAttribute("height", this.renderConfig.height), this.renderConfig.className && this.svgElement.setAttribute("class", this.renderConfig.className), this.renderConfig.id && this.svgElement.setAttribute("id", this.renderConfig.id), this.renderConfig.focusable !== void 0 && this.svgElement.setAttribute("focusable", this.renderConfig.focusable), this.svgElement.setAttribute("preserveAspectRatio", this.renderConfig.preserveAspectRatio), this.animationItem.wrapper.appendChild(this.svgElement);
            var n = this.globalData.defs;
            this.setupGlobalData(i, n), this.globalData.progressiveLoad = this.renderConfig.progressiveLoad, this.data = i;
            var h = _t("clipPath"),
                l = _t("rect");
            l.setAttribute("width", i.w), l.setAttribute("height", i.h), l.setAttribute("x", 0), l.setAttribute("y", 0);
            var u = E();
            h.setAttribute("id", u), h.appendChild(l), this.layerElement.setAttribute("clip-path", "url(" + m() + "#" + u + ")"), n.appendChild(h), this.layers = i.layers, this.elements = b(i.layers.length)
        }, Xt.prototype.destroy = function() {
            this.animationItem.wrapper && (this.animationItem.wrapper.innerText = ""), this.layerElement = null, this.globalData.defs = null;
            var i, n = this.layers ? this.layers.length : 0;
            for (i = 0; i < n; i += 1) this.elements[i] && this.elements[i].destroy && this.elements[i].destroy();
            this.elements.length = 0, this.destroyed = !0, this.animationItem = null
        }, Xt.prototype.updateContainerSize = function() {}, Xt.prototype.findIndexByInd = function(i) {
            var n = 0,
                h = this.layers.length;
            for (n = 0; n < h; n += 1)
                if (this.layers[n].ind === i) return n;
            return -1
        }, Xt.prototype.buildItem = function(i) {
            var n = this.elements;
            if (!(n[i] || this.layers[i].ty === 99)) {
                n[i] = !0;
                var h = this.createItem(this.layers[i]);
                if (n[i] = h, Nt() && (this.layers[i].ty === 0 && this.globalData.projectInterface.registerComposition(h), h.initExpressions()), this.appendElementInPos(h, i), this.layers[i].tt) {
                    var l = "tp" in this.layers[i] ? this.findIndexByInd(this.layers[i].tp) : i - 1;
                    if (l === -1) return;
                    if (!this.elements[l] || this.elements[l] === !0) this.buildItem(l), this.addPendingElement(h);
                    else {
                        var u = n[l],
                            p = u.getMatte(this.layers[i].tt);
                        h.setMatte(p)
                    }
                }
            }
        }, Xt.prototype.checkPendingElements = function() {
            for (; this.pendingElements.length;) {
                var i = this.pendingElements.pop();
                if (i.checkParenting(), i.data.tt)
                    for (var n = 0, h = this.elements.length; n < h;) {
                        if (this.elements[n] === i) {
                            var l = "tp" in i.data ? this.findIndexByInd(i.data.tp) : n - 1,
                                u = this.elements[l],
                                p = u.getMatte(this.layers[n].tt);
                            i.setMatte(p);
                            break
                        }
                        n += 1
                    }
            }
        }, Xt.prototype.renderFrame = function(i) {
            if (!(this.renderedFrame === i || this.destroyed)) {
                i === null ? i = this.renderedFrame : this.renderedFrame = i, this.globalData.frameNum = i, this.globalData.frameId += 1, this.globalData.projectInterface.currentFrame = i, this.globalData._mdf = !1;
                var n, h = this.layers.length;
                for (this.completeLayers || this.checkLayers(i), n = h - 1; n >= 0; n -= 1)(this.completeLayers || this.elements[n]) && this.elements[n].prepareFrame(i - this.layers[n].st);
                if (this.globalData._mdf)
                    for (n = 0; n < h; n += 1)(this.completeLayers || this.elements[n]) && this.elements[n].renderFrame()
            }
        }, Xt.prototype.appendElementInPos = function(i, n) {
            var h = i.getBaseElement();
            if (h) {
                for (var l = 0, u; l < n;) this.elements[l] && this.elements[l] !== !0 && this.elements[l].getBaseElement() && (u = this.elements[l].getBaseElement()), l += 1;
                u ? this.layerElement.insertBefore(h, u) : this.layerElement.appendChild(h)
            }
        }, Xt.prototype.hide = function() {
            this.layerElement.style.display = "none"
        }, Xt.prototype.show = function() {
            this.layerElement.style.display = "block"
        };

        function Me() {}
        M([Be, ir, sr, De, dr], Me), Me.prototype.initElement = function(i, n, h) {
            this.initFrame(), this.initBaseData(i, n, h), this.initTransform(i, n, h), this.initRenderable(), this.initHierarchy(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), (this.data.xt || !n.progressiveLoad) && this.buildAllItems(), this.hide()
        }, Me.prototype.prepareFrame = function(i) {
            if (this._mdf = !1, this.prepareRenderableFrame(i), this.prepareProperties(i, this.isInRange), !(!this.isInRange && !this.data.xt)) {
                if (this.tm._placeholder) this.renderedFrame = i / this.data.sr;
                else {
                    var n = this.tm.v;
                    n === this.data.op && (n = this.data.op - 1), this.renderedFrame = n
                }
                var h, l = this.elements.length;
                for (this.completeLayers || this.checkLayers(this.renderedFrame), h = l - 1; h >= 0; h -= 1)(this.completeLayers || this.elements[h]) && (this.elements[h].prepareFrame(this.renderedFrame - this.layers[h].st), this.elements[h]._mdf && (this._mdf = !0))
            }
        }, Me.prototype.renderInnerContent = function() {
            var i, n = this.layers.length;
            for (i = 0; i < n; i += 1)(this.completeLayers || this.elements[i]) && this.elements[i].renderFrame()
        }, Me.prototype.setElements = function(i) {
            this.elements = i
        }, Me.prototype.getElements = function() {
            return this.elements
        }, Me.prototype.destroyElements = function() {
            var i, n = this.layers.length;
            for (i = 0; i < n; i += 1) this.elements[i] && this.elements[i].destroy()
        }, Me.prototype.destroy = function() {
            this.destroyElements(), this.destroyBaseElement()
        };

        function gr(i, n, h) {
            this.layers = i.layers, this.supports3d = !0, this.completeLayers = !1, this.pendingElements = [], this.elements = this.layers ? b(this.layers.length) : [], this.initElement(i, n, h), this.tm = i.tm ? mt.getProp(this, i.tm, 0, n.frameRate, this) : {
                _placeholder: !0
            }
        }
        M([Xt, Me, cr], gr), gr.prototype.createComp = function(i) {
            return new gr(i, this.globalData, this)
        };

        function Hr(i, n) {
            this.animationItem = i, this.layers = null, this.renderedFrame = -1, this.svgElement = _t("svg");
            var h = "";
            if (n && n.title) {
                var l = _t("title"),
                    u = E();
                l.setAttribute("id", u), l.textContent = n.title, this.svgElement.appendChild(l), h += u
            }
            if (n && n.description) {
                var p = _t("desc"),
                    A = E();
                p.setAttribute("id", A), p.textContent = n.description, this.svgElement.appendChild(p), h += " " + A
            }
            h && this.svgElement.setAttribute("aria-labelledby", h);
            var B = _t("defs");
            this.svgElement.appendChild(B);
            var T = _t("g");
            this.svgElement.appendChild(T), this.layerElement = T, this.renderConfig = {
                preserveAspectRatio: n && n.preserveAspectRatio || "xMidYMid meet",
                imagePreserveAspectRatio: n && n.imagePreserveAspectRatio || "xMidYMid slice",
                contentVisibility: n && n.contentVisibility || "visible",
                progressiveLoad: n && n.progressiveLoad || !1,
                hideOnTransparent: !(n && n.hideOnTransparent === !1),
                viewBoxOnly: n && n.viewBoxOnly || !1,
                viewBoxSize: n && n.viewBoxSize || !1,
                className: n && n.className || "",
                id: n && n.id || "",
                focusable: n && n.focusable,
                filterSize: {
                    width: n && n.filterSize && n.filterSize.width || "100%",
                    height: n && n.filterSize && n.filterSize.height || "100%",
                    x: n && n.filterSize && n.filterSize.x || "0%",
                    y: n && n.filterSize && n.filterSize.y || "0%"
                },
                width: n && n.width,
                height: n && n.height,
                runExpressions: !n || n.runExpressions === void 0 || n.runExpressions
            }, this.globalData = {
                _mdf: !1,
                frameNum: -1,
                defs: B,
                renderConfig: this.renderConfig
            }, this.elements = [], this.pendingElements = [], this.destroyed = !1, this.rendererType = "svg"
        }
        return M([Xt], Hr), Hr.prototype.createComp = function(i) {
            return new gr(i, this.globalData, this)
        }, ge("svg", Hr), Ve.registerModifier("tm", be), Ve.registerModifier("pb", ar), Ve.registerModifier("rp", Ce), Ve.registerModifier("rd", or), Ve.registerModifier("zz", lr), Ve.registerModifier("op", fr), zt
    })
})(lottie_light$2, lottie_light$2.exports);
var lottie_lightExports = lottie_light$2.exports;
const lottie_light = getDefaultExportFromCjs(lottie_lightExports),
    lottie_light$1 = _mergeNamespaces({
        __proto__: null,
        default: lottie_light
    }, [lottie_lightExports]);
var lottie$2 = {
    exports: {}
};
(function(module, exports) {
    typeof navigator < "u" && function(t, e) {
        module.exports = e()
    }(commonjsGlobal, function() {
        var svgNS = "http://www.w3.org/2000/svg",
            locationHref = "",
            _useWebWorker = !1,
            initialDefaultFrame = -999999,
            setWebWorker = function(e) {
                _useWebWorker = !!e
            },
            getWebWorker = function() {
                return _useWebWorker
            },
            setLocationHref = function(e) {
                locationHref = e
            },
            getLocationHref = function() {
                return locationHref
            };

        function createTag(t) {
            return document.createElement(t)
        }

        function extendPrototype(t, e) {
            var r, s = t.length,
                a;
            for (r = 0; r < s; r += 1) {
                a = t[r].prototype;
                for (var o in a) Object.prototype.hasOwnProperty.call(a, o) && (e.prototype[o] = a[o])
            }
        }

        function getDescriptor(t, e) {
            return Object.getOwnPropertyDescriptor(t, e)
        }

        function createProxyFunction(t) {
            function e() {}
            return e.prototype = t, e
        }
        var audioControllerFactory = function() {
                function t(e) {
                    this.audios = [], this.audioFactory = e, this._volume = 1, this._isMuted = !1
                }
                return t.prototype = {
                        addAudio: function(r) {
                            this.audios.push(r)
                        },
                        pause: function() {
                            var r, s = this.audios.length;
                            for (r = 0; r < s; r += 1) this.audios[r].pause()
                        },
                        resume: function() {
                            var r, s = this.audios.length;
                            for (r = 0; r < s; r += 1) this.audios[r].resume()
                        },
                        setRate: function(r) {
                            var s, a = this.audios.length;
                            for (s = 0; s < a; s += 1) this.audios[s].setRate(r)
                        },
                        createAudio: function(r) {
                            return this.audioFactory ? this.audioFactory(r) : window.Howl ? new window.Howl({
                                src: [r]
                            }) : {
                                isPlaying: !1,
                                play: function() {
                                    this.isPlaying = !0
                                },
                                seek: function() {
                                    this.isPlaying = !1
                                },
                                playing: function() {},
                                rate: function() {},
                                setVolume: function() {}
                            }
                        },
                        setAudioFactory: function(r) {
                            this.audioFactory = r
                        },
                        setVolume: function(r) {
                            this._volume = r, this._updateVolume()
                        },
                        mute: function() {
                            this._isMuted = !0, this._updateVolume()
                        },
                        unmute: function() {
                            this._isMuted = !1, this._updateVolume()
                        },
                        getVolume: function() {
                            return this._volume
                        },
                        _updateVolume: function() {
                            var r, s = this.audios.length;
                            for (r = 0; r < s; r += 1) this.audios[r].volume(this._volume * (this._isMuted ? 0 : 1))
                        }
                    },
                    function() {
                        return new t
                    }
            }(),
            createTypedArray = function() {
                function t(r, s) {
                    var a = 0,
                        o = [],
                        f;
                    switch (r) {
                        case "int16":
                        case "uint8c":
                            f = 1;
                            break;
                        default:
                            f = 1.1;
                            break
                    }
                    for (a = 0; a < s; a += 1) o.push(f);
                    return o
                }

                function e(r, s) {
                    return r === "float32" ? new Float32Array(s) : r === "int16" ? new Int16Array(s) : r === "uint8c" ? new Uint8ClampedArray(s) : t(r, s)
                }
                return typeof Uint8ClampedArray == "function" && typeof Float32Array == "function" ? e : t
            }();

        function createSizedArray(t) {
            return Array.apply(null, {
                length: t
            })
        }

        function _typeof$6(t) {
            "@babel/helpers - typeof";
            return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? _typeof$6 = function(r) {
                return typeof r
            } : _typeof$6 = function(r) {
                return r && typeof Symbol == "function" && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r
            }, _typeof$6(t)
        }
        var subframeEnabled = !0,
            expressionsPlugin = null,
            expressionsInterfaces = null,
            idPrefix$1 = "",
            isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent),
            bmPow = Math.pow,
            bmSqrt = Math.sqrt,
            bmFloor = Math.floor,
            bmMax = Math.max,
            bmMin = Math.min,
            BMMath = {};
        (function() {
            var t = ["abs", "acos", "acosh", "asin", "asinh", "atan", "atanh", "atan2", "ceil", "cbrt", "expm1", "clz32", "cos", "cosh", "exp", "floor", "fround", "hypot", "imul", "log", "log1p", "log2", "log10", "max", "min", "pow", "random", "round", "sign", "sin", "sinh", "sqrt", "tan", "tanh", "trunc", "E", "LN10", "LN2", "LOG10E", "LOG2E", "PI", "SQRT1_2", "SQRT2"],
                e, r = t.length;
            for (e = 0; e < r; e += 1) BMMath[t[e]] = Math[t[e]]
        })(), BMMath.random = Math.random, BMMath.abs = function(t) {
            var e = _typeof$6(t);
            if (e === "object" && t.length) {
                var r = createSizedArray(t.length),
                    s, a = t.length;
                for (s = 0; s < a; s += 1) r[s] = Math.abs(t[s]);
                return r
            }
            return Math.abs(t)
        };
        var defaultCurveSegments = 150,
            degToRads = Math.PI / 180,
            roundCorner = .5519;

        function styleDiv(t) {
            t.style.position = "absolute", t.style.top = 0, t.style.left = 0, t.style.display = "block", t.style.transformOrigin = "0 0", t.style.webkitTransformOrigin = "0 0", t.style.backfaceVisibility = "visible", t.style.webkitBackfaceVisibility = "visible", t.style.transformStyle = "preserve-3d", t.style.webkitTransformStyle = "preserve-3d", t.style.mozTransformStyle = "preserve-3d"
        }

        function BMEnterFrameEvent(t, e, r, s) {
            this.type = t, this.currentTime = e, this.totalTime = r, this.direction = s < 0 ? -1 : 1
        }

        function BMCompleteEvent(t, e) {
            this.type = t, this.direction = e < 0 ? -1 : 1
        }

        function BMCompleteLoopEvent(t, e, r, s) {
            this.type = t, this.currentLoop = r, this.totalLoops = e, this.direction = s < 0 ? -1 : 1
        }

        function BMSegmentStartEvent(t, e, r) {
            this.type = t, this.firstFrame = e, this.totalFrames = r
        }

        function BMDestroyEvent(t, e) {
            this.type = t, this.target = e
        }

        function BMRenderFrameErrorEvent(t, e) {
            this.type = "renderFrameError", this.nativeError = t, this.currentTime = e
        }

        function BMConfigErrorEvent(t) {
            this.type = "configError", this.nativeError = t
        }
        var createElementID = function() {
            var t = 0;
            return function() {
                return t += 1, idPrefix$1 + "__lottie_element_" + t
            }
        }();

        function HSVtoRGB(t, e, r) {
            var s, a, o, f, d, c, m, S;
            switch (f = Math.floor(t * 6), d = t * 6 - f, c = r * (1 - e), m = r * (1 - d * e), S = r * (1 - (1 - d) * e), f % 6) {
                case 0:
                    s = r, a = S, o = c;
                    break;
                case 1:
                    s = m, a = r, o = c;
                    break;
                case 2:
                    s = c, a = r, o = S;
                    break;
                case 3:
                    s = c, a = m, o = r;
                    break;
                case 4:
                    s = S, a = c, o = r;
                    break;
                case 5:
                    s = r, a = c, o = m;
                    break
            }
            return [s, a, o]
        }

        function RGBtoHSV(t, e, r) {
            var s = Math.max(t, e, r),
                a = Math.min(t, e, r),
                o = s - a,
                f, d = s === 0 ? 0 : o / s,
                c = s / 255;
            switch (s) {
                case a:
                    f = 0;
                    break;
                case t:
                    f = e - r + o * (e < r ? 6 : 0), f /= 6 * o;
                    break;
                case e:
                    f = r - t + o * 2, f /= 6 * o;
                    break;
                case r:
                    f = t - e + o * 4, f /= 6 * o;
                    break
            }
            return [f, d, c]
        }

        function addSaturationToRGB(t, e) {
            var r = RGBtoHSV(t[0] * 255, t[1] * 255, t[2] * 255);
            return r[1] += e, r[1] > 1 ? r[1] = 1 : r[1] <= 0 && (r[1] = 0), HSVtoRGB(r[0], r[1], r[2])
        }

        function addBrightnessToRGB(t, e) {
            var r = RGBtoHSV(t[0] * 255, t[1] * 255, t[2] * 255);
            return r[2] += e, r[2] > 1 ? r[2] = 1 : r[2] < 0 && (r[2] = 0), HSVtoRGB(r[0], r[1], r[2])
        }

        function addHueToRGB(t, e) {
            var r = RGBtoHSV(t[0] * 255, t[1] * 255, t[2] * 255);
            return r[0] += e / 360, r[0] > 1 ? r[0] -= 1 : r[0] < 0 && (r[0] += 1), HSVtoRGB(r[0], r[1], r[2])
        }
        var rgbToHex = function() {
                var t = [],
                    e, r;
                for (e = 0; e < 256; e += 1) r = e.toString(16), t[e] = r.length === 1 ? "0" + r : r;
                return function(s, a, o) {
                    return s < 0 && (s = 0), a < 0 && (a = 0), o < 0 && (o = 0), "#" + t[s] + t[a] + t[o]
                }
            }(),
            setSubframeEnabled = function(e) {
                subframeEnabled = !!e
            },
            getSubframeEnabled = function() {
                return subframeEnabled
            },
            setExpressionsPlugin = function(e) {
                expressionsPlugin = e
            },
            getExpressionsPlugin = function() {
                return expressionsPlugin
            },
            setExpressionInterfaces = function(e) {
                expressionsInterfaces = e
            },
            getExpressionInterfaces = function() {
                return expressionsInterfaces
            },
            setDefaultCurveSegments = function(e) {
                defaultCurveSegments = e
            },
            getDefaultCurveSegments = function() {
                return defaultCurveSegments
            },
            setIdPrefix = function(e) {
                idPrefix$1 = e
            };

        function createNS(t) {
            return document.createElementNS(svgNS, t)
        }

        function _typeof$5(t) {
            "@babel/helpers - typeof";
            return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? _typeof$5 = function(r) {
                return typeof r
            } : _typeof$5 = function(r) {
                return r && typeof Symbol == "function" && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r
            }, _typeof$5(t)
        }
        var dataManager = function() {
                var t = 1,
                    e = [],
                    r, s, a = {
                        onmessage: function() {},
                        postMessage: function(k) {
                            r({
                                data: k
                            })
                        }
                    },
                    o = {
                        postMessage: function(k) {
                            a.onmessage({
                                data: k
                            })
                        }
                    };

                function f(g) {
                    if (window.Worker && window.Blob && getWebWorker()) {
                        var k = new Blob(["var _workerSelf = self; self.onmessage = ", g.toString()], {
                                type: "text/javascript"
                            }),
                            C = URL.createObjectURL(k);
                        return new Worker(C)
                    }
                    return r = g, a
                }

                function d() {
                    s || (s = f(function(k) {
                        function C() {
                            function G(lt, D) {
                                var X, E, w = lt.length,
                                    nt, tt, gt, Tt;
                                for (E = 0; E < w; E += 1)
                                    if (X = lt[E], "ks" in X && !X.completed) {
                                        if (X.completed = !0, X.hasMask) {
                                            var Mt = X.masksProperties;
                                            for (tt = Mt.length, nt = 0; nt < tt; nt += 1)
                                                if (Mt[nt].pt.k.i) V(Mt[nt].pt.k);
                                                else
                                                    for (Tt = Mt[nt].pt.k.length, gt = 0; gt < Tt; gt += 1) Mt[nt].pt.k[gt].s && V(Mt[nt].pt.k[gt].s[0]), Mt[nt].pt.k[gt].e && V(Mt[nt].pt.k[gt].e[0])
                                        }
                                        X.ty === 0 ? (X.layers = v(X.refId, D), G(X.layers, D)) : X.ty === 4 ? _(X.shapes) : X.ty === 5 && yt(X)
                                    }
                            }

                            function y(lt, D) {
                                if (lt) {
                                    var X = 0,
                                        E = lt.length;
                                    for (X = 0; X < E; X += 1) lt[X].t === 1 && (lt[X].data.layers = v(lt[X].data.refId, D), G(lt[X].data.layers, D))
                                }
                            }

                            function P(lt, D) {
                                for (var X = 0, E = D.length; X < E;) {
                                    if (D[X].id === lt) return D[X];
                                    X += 1
                                }
                                return null
                            }

                            function v(lt, D) {
                                var X = P(lt, D);
                                return X ? X.layers.__used ? JSON.parse(JSON.stringify(X.layers)) : (X.layers.__used = !0, X.layers) : null
                            }

                            function _(lt) {
                                var D, X = lt.length,
                                    E, w;
                                for (D = X - 1; D >= 0; D -= 1)
                                    if (lt[D].ty === "sh")
                                        if (lt[D].ks.k.i) V(lt[D].ks.k);
                                        else
                                            for (w = lt[D].ks.k.length, E = 0; E < w; E += 1) lt[D].ks.k[E].s && V(lt[D].ks.k[E].s[0]), lt[D].ks.k[E].e && V(lt[D].ks.k[E].e[0]);
                                else lt[D].ty === "gr" && _(lt[D].it)
                            }

                            function V(lt) {
                                var D, X = lt.i.length;
                                for (D = 0; D < X; D += 1) lt.i[D][0] += lt.v[D][0], lt.i[D][1] += lt.v[D][1], lt.o[D][0] += lt.v[D][0], lt.o[D][1] += lt.v[D][1]
                            }

                            function N(lt, D) {
                                var X = D ? D.split(".") : [100, 100, 100];
                                return lt[0] > X[0] ? !0 : X[0] > lt[0] ? !1 : lt[1] > X[1] ? !0 : X[1] > lt[1] ? !1 : lt[2] > X[2] ? !0 : X[2] > lt[2] ? !1 : null
                            }
                            var Z = function() {
                                    var lt = [4, 4, 14];

                                    function D(E) {
                                        var w = E.t.d;
                                        E.t.d = {
                                            k: [{
                                                s: w,
                                                t: 0
                                            }]
                                        }
                                    }

                                    function X(E) {
                                        var w, nt = E.length;
                                        for (w = 0; w < nt; w += 1) E[w].ty === 5 && D(E[w])
                                    }
                                    return function(E) {
                                        if (N(lt, E.v) && (X(E.layers), E.assets)) {
                                            var w, nt = E.assets.length;
                                            for (w = 0; w < nt; w += 1) E.assets[w].layers && X(E.assets[w].layers)
                                        }
                                    }
                                }(),
                                J = function() {
                                    var lt = [4, 7, 99];
                                    return function(D) {
                                        if (D.chars && !N(lt, D.v)) {
                                            var X, E = D.chars.length;
                                            for (X = 0; X < E; X += 1) {
                                                var w = D.chars[X];
                                                w.data && w.data.shapes && (_(w.data.shapes), w.data.ip = 0, w.data.op = 99999, w.data.st = 0, w.data.sr = 1, w.data.ks = {
                                                    p: {
                                                        k: [0, 0],
                                                        a: 0
                                                    },
                                                    s: {
                                                        k: [100, 100],
                                                        a: 0
                                                    },
                                                    a: {
                                                        k: [0, 0],
                                                        a: 0
                                                    },
                                                    r: {
                                                        k: 0,
                                                        a: 0
                                                    },
                                                    o: {
                                                        k: 100,
                                                        a: 0
                                                    }
                                                }, D.chars[X].t || (w.data.shapes.push({
                                                    ty: "no"
                                                }), w.data.shapes[0].it.push({
                                                    p: {
                                                        k: [0, 0],
                                                        a: 0
                                                    },
                                                    s: {
                                                        k: [100, 100],
                                                        a: 0
                                                    },
                                                    a: {
                                                        k: [0, 0],
                                                        a: 0
                                                    },
                                                    r: {
                                                        k: 0,
                                                        a: 0
                                                    },
                                                    o: {
                                                        k: 100,
                                                        a: 0
                                                    },
                                                    sk: {
                                                        k: 0,
                                                        a: 0
                                                    },
                                                    sa: {
                                                        k: 0,
                                                        a: 0
                                                    },
                                                    ty: "tr"
                                                })))
                                            }
                                        }
                                    }
                                }(),
                                ht = function() {
                                    var lt = [5, 7, 15];

                                    function D(E) {
                                        var w = E.t.p;
                                        typeof w.a == "number" && (w.a = {
                                            a: 0,
                                            k: w.a
                                        }), typeof w.p == "number" && (w.p = {
                                            a: 0,
                                            k: w.p
                                        }), typeof w.r == "number" && (w.r = {
                                            a: 0,
                                            k: w.r
                                        })
                                    }

                                    function X(E) {
                                        var w, nt = E.length;
                                        for (w = 0; w < nt; w += 1) E[w].ty === 5 && D(E[w])
                                    }
                                    return function(E) {
                                        if (N(lt, E.v) && (X(E.layers), E.assets)) {
                                            var w, nt = E.assets.length;
                                            for (w = 0; w < nt; w += 1) E.assets[w].layers && X(E.assets[w].layers)
                                        }
                                    }
                                }(),
                                vt = function() {
                                    var lt = [4, 1, 9];

                                    function D(E) {
                                        var w, nt = E.length,
                                            tt, gt;
                                        for (w = 0; w < nt; w += 1)
                                            if (E[w].ty === "gr") D(E[w].it);
                                            else if (E[w].ty === "fl" || E[w].ty === "st")
                                            if (E[w].c.k && E[w].c.k[0].i)
                                                for (gt = E[w].c.k.length, tt = 0; tt < gt; tt += 1) E[w].c.k[tt].s && (E[w].c.k[tt].s[0] /= 255, E[w].c.k[tt].s[1] /= 255, E[w].c.k[tt].s[2] /= 255, E[w].c.k[tt].s[3] /= 255), E[w].c.k[tt].e && (E[w].c.k[tt].e[0] /= 255, E[w].c.k[tt].e[1] /= 255, E[w].c.k[tt].e[2] /= 255, E[w].c.k[tt].e[3] /= 255);
                                            else E[w].c.k[0] /= 255, E[w].c.k[1] /= 255, E[w].c.k[2] /= 255, E[w].c.k[3] /= 255
                                    }

                                    function X(E) {
                                        var w, nt = E.length;
                                        for (w = 0; w < nt; w += 1) E[w].ty === 4 && D(E[w].shapes)
                                    }
                                    return function(E) {
                                        if (N(lt, E.v) && (X(E.layers), E.assets)) {
                                            var w, nt = E.assets.length;
                                            for (w = 0; w < nt; w += 1) E.assets[w].layers && X(E.assets[w].layers)
                                        }
                                    }
                                }(),
                                ct = function() {
                                    var lt = [4, 4, 18];

                                    function D(E) {
                                        var w, nt = E.length,
                                            tt, gt;
                                        for (w = nt - 1; w >= 0; w -= 1)
                                            if (E[w].ty === "sh")
                                                if (E[w].ks.k.i) E[w].ks.k.c = E[w].closed;
                                                else
                                                    for (gt = E[w].ks.k.length, tt = 0; tt < gt; tt += 1) E[w].ks.k[tt].s && (E[w].ks.k[tt].s[0].c = E[w].closed), E[w].ks.k[tt].e && (E[w].ks.k[tt].e[0].c = E[w].closed);
                                        else E[w].ty === "gr" && D(E[w].it)
                                    }

                                    function X(E) {
                                        var w, nt, tt = E.length,
                                            gt, Tt, Mt, Lt;
                                        for (nt = 0; nt < tt; nt += 1) {
                                            if (w = E[nt], w.hasMask) {
                                                var Vt = w.masksProperties;
                                                for (Tt = Vt.length, gt = 0; gt < Tt; gt += 1)
                                                    if (Vt[gt].pt.k.i) Vt[gt].pt.k.c = Vt[gt].cl;
                                                    else
                                                        for (Lt = Vt[gt].pt.k.length, Mt = 0; Mt < Lt; Mt += 1) Vt[gt].pt.k[Mt].s && (Vt[gt].pt.k[Mt].s[0].c = Vt[gt].cl), Vt[gt].pt.k[Mt].e && (Vt[gt].pt.k[Mt].e[0].c = Vt[gt].cl)
                                            }
                                            w.ty === 4 && D(w.shapes)
                                        }
                                    }
                                    return function(E) {
                                        if (N(lt, E.v) && (X(E.layers), E.assets)) {
                                            var w, nt = E.assets.length;
                                            for (w = 0; w < nt; w += 1) E.assets[w].layers && X(E.assets[w].layers)
                                        }
                                    }
                                }();

                            function ft(lt) {
                                lt.__complete || (vt(lt), Z(lt), J(lt), ht(lt), ct(lt), G(lt.layers, lt.assets), y(lt.chars, lt.assets), lt.__complete = !0)
                            }

                            function yt(lt) {
                                lt.t.a.length === 0 && "m" in lt.t.p
                            }
                            var bt = {};
                            return bt.completeData = ft, bt.checkColors = vt, bt.checkChars = J, bt.checkPathProperties = ht, bt.checkShapes = ct, bt.completeLayers = G, bt
                        }
                        if (o.dataManager || (o.dataManager = C()), o.assetLoader || (o.assetLoader = function() {
                                function G(P) {
                                    var v = P.getResponseHeader("content-type");
                                    return v && P.responseType === "json" && v.indexOf("json") !== -1 || P.response && _typeof$5(P.response) === "object" ? P.response : P.response && typeof P.response == "string" ? JSON.parse(P.response) : P.responseText ? JSON.parse(P.responseText) : null
                                }

                                function y(P, v, _, V) {
                                    var N, Z = new XMLHttpRequest;
                                    try {
                                        Z.responseType = "json"
                                    } catch {}
                                    Z.onreadystatechange = function() {
                                        if (Z.readyState === 4)
                                            if (Z.status === 200) N = G(Z), _(N);
                                            else try {
                                                N = G(Z), _(N)
                                            } catch (J) {
                                                V && V(J)
                                            }
                                    };
                                    try {
                                        Z.open(["G", "E", "T"].join(""), P, !0)
                                    } catch {
                                        Z.open(["G", "E", "T"].join(""), v + "/" + P, !0)
                                    }
                                    Z.send()
                                }
                                return {
                                    load: y
                                }
                            }()), k.data.type === "loadAnimation") o.assetLoader.load(k.data.path, k.data.fullPath, function(G) {
                            o.dataManager.completeData(G), o.postMessage({
                                id: k.data.id,
                                payload: G,
                                status: "success"
                            })
                        }, function() {
                            o.postMessage({
                                id: k.data.id,
                                status: "error"
                            })
                        });
                        else if (k.data.type === "complete") {
                            var b = k.data.animation;
                            o.dataManager.completeData(b), o.postMessage({
                                id: k.data.id,
                                payload: b,
                                status: "success"
                            })
                        } else k.data.type === "loadData" && o.assetLoader.load(k.data.path, k.data.fullPath, function(G) {
                            o.postMessage({
                                id: k.data.id,
                                payload: G,
                                status: "success"
                            })
                        }, function() {
                            o.postMessage({
                                id: k.data.id,
                                status: "error"
                            })
                        })
                    }), s.onmessage = function(g) {
                        var k = g.data,
                            C = k.id,
                            b = e[C];
                        e[C] = null, k.status === "success" ? b.onComplete(k.payload) : b.onError && b.onError()
                    })
                }

                function c(g, k) {
                    t += 1;
                    var C = "processId_" + t;
                    return e[C] = {
                        onComplete: g,
                        onError: k
                    }, C
                }

                function m(g, k, C) {
                    d();
                    var b = c(k, C);
                    s.postMessage({
                        type: "loadAnimation",
                        path: g,
                        fullPath: window.location.origin + window.location.pathname,
                        id: b
                    })
                }

                function S(g, k, C) {
                    d();
                    var b = c(k, C);
                    s.postMessage({
                        type: "loadData",
                        path: g,
                        fullPath: window.location.origin + window.location.pathname,
                        id: b
                    })
                }

                function M(g, k, C) {
                    d();
                    var b = c(k, C);
                    s.postMessage({
                        type: "complete",
                        animation: g,
                        id: b
                    })
                }
                return {
                    loadAnimation: m,
                    loadData: S,
                    completeAnimation: M
                }
            }(),
            ImagePreloader = function() {
                var t = function() {
                    var y = createTag("canvas");
                    y.width = 1, y.height = 1;
                    var P = y.getContext("2d");
                    return P.fillStyle = "rgba(0,0,0,0)", P.fillRect(0, 0, 1, 1), y
                }();

                function e() {
                    this.loadedAssets += 1, this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages && this.imagesLoadedCb && this.imagesLoadedCb(null)
                }

                function r() {
                    this.loadedFootagesCount += 1, this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages && this.imagesLoadedCb && this.imagesLoadedCb(null)
                }

                function s(y, P, v) {
                    var _ = "";
                    if (y.e) _ = y.p;
                    else if (P) {
                        var V = y.p;
                        V.indexOf("images/") !== -1 && (V = V.split("/")[1]), _ = P + V
                    } else _ = v, _ += y.u ? y.u : "", _ += y.p;
                    return _
                }

                function a(y) {
                    var P = 0,
                        v = setInterval((function() {
                            var _ = y.getBBox();
                            (_.width || P > 500) && (this._imageLoaded(), clearInterval(v)), P += 1
                        }).bind(this), 50)
                }

                function o(y) {
                    var P = s(y, this.assetsPath, this.path),
                        v = createNS("image");
                    isSafari ? this.testImageLoaded(v) : v.addEventListener("load", this._imageLoaded, !1), v.addEventListener("error", (function() {
                        _.img = t, this._imageLoaded()
                    }).bind(this), !1), v.setAttributeNS("http://www.w3.org/1999/xlink", "href", P), this._elementHelper.append ? this._elementHelper.append(v) : this._elementHelper.appendChild(v);
                    var _ = {
                        img: v,
                        assetData: y
                    };
                    return _
                }

                function f(y) {
                    var P = s(y, this.assetsPath, this.path),
                        v = createTag("img");
                    v.crossOrigin = "anonymous", v.addEventListener("load", this._imageLoaded, !1), v.addEventListener("error", (function() {
                        _.img = t, this._imageLoaded()
                    }).bind(this), !1), v.src = P;
                    var _ = {
                        img: v,
                        assetData: y
                    };
                    return _
                }

                function d(y) {
                    var P = {
                            assetData: y
                        },
                        v = s(y, this.assetsPath, this.path);
                    return dataManager.loadData(v, (function(_) {
                        P.img = _, this._footageLoaded()
                    }).bind(this), (function() {
                        P.img = {}, this._footageLoaded()
                    }).bind(this)), P
                }

                function c(y, P) {
                    this.imagesLoadedCb = P;
                    var v, _ = y.length;
                    for (v = 0; v < _; v += 1) y[v].layers || (!y[v].t || y[v].t === "seq" ? (this.totalImages += 1, this.images.push(this._createImageData(y[v]))) : y[v].t === 3 && (this.totalFootages += 1, this.images.push(this.createFootageData(y[v]))))
                }

                function m(y) {
                    this.path = y || ""
                }

                function S(y) {
                    this.assetsPath = y || ""
                }

                function M(y) {
                    for (var P = 0, v = this.images.length; P < v;) {
                        if (this.images[P].assetData === y) return this.images[P].img;
                        P += 1
                    }
                    return null
                }

                function g() {
                    this.imagesLoadedCb = null, this.images.length = 0
                }

                function k() {
                    return this.totalImages === this.loadedAssets
                }

                function C() {
                    return this.totalFootages === this.loadedFootagesCount
                }

                function b(y, P) {
                    y === "svg" ? (this._elementHelper = P, this._createImageData = this.createImageData.bind(this)) : this._createImageData = this.createImgData.bind(this)
                }

                function G() {
                    this._imageLoaded = e.bind(this), this._footageLoaded = r.bind(this), this.testImageLoaded = a.bind(this), this.createFootageData = d.bind(this), this.assetsPath = "", this.path = "", this.totalImages = 0, this.totalFootages = 0, this.loadedAssets = 0, this.loadedFootagesCount = 0, this.imagesLoadedCb = null, this.images = []
                }
                return G.prototype = {
                    loadAssets: c,
                    setAssetsPath: S,
                    setPath: m,
                    loadedImages: k,
                    loadedFootages: C,
                    destroy: g,
                    getAsset: M,
                    createImgData: f,
                    createImageData: o,
                    imageLoaded: e,
                    footageLoaded: r,
                    setCacheType: b
                }, G
            }();

        function BaseEvent() {}
        BaseEvent.prototype = {
            triggerEvent: function(e, r) {
                if (this._cbs[e])
                    for (var s = this._cbs[e], a = 0; a < s.length; a += 1) s[a](r)
            },
            addEventListener: function(e, r) {
                return this._cbs[e] || (this._cbs[e] = []), this._cbs[e].push(r), (function() {
                    this.removeEventListener(e, r)
                }).bind(this)
            },
            removeEventListener: function(e, r) {
                if (!r) this._cbs[e] = null;
                else if (this._cbs[e]) {
                    for (var s = 0, a = this._cbs[e].length; s < a;) this._cbs[e][s] === r && (this._cbs[e].splice(s, 1), s -= 1, a -= 1), s += 1;
                    this._cbs[e].length || (this._cbs[e] = null)
                }
            }
        };
        var markerParser = function() {
                function t(e) {
                    for (var r = e.split(`\r
`), s = {}, a, o = 0, f = 0; f < r.length; f += 1) a = r[f].split(":"), a.length === 2 && (s[a[0]] = a[1].trim(), o += 1);
                    if (o === 0) throw new Error;
                    return s
                }
                return function(e) {
                    for (var r = [], s = 0; s < e.length; s += 1) {
                        var a = e[s],
                            o = {
                                time: a.tm,
                                duration: a.dr
                            };
                        try {
                            o.payload = JSON.parse(e[s].cm)
                        } catch {
                            try {
                                o.payload = t(e[s].cm)
                            } catch {
                                o.payload = {
                                    name: e[s].cm
                                }
                            }
                        }
                        r.push(o)
                    }
                    return r
                }
            }(),
            ProjectInterface = function() {
                function t(e) {
                    this.compositions.push(e)
                }
                return function() {
                    function e(r) {
                        for (var s = 0, a = this.compositions.length; s < a;) {
                            if (this.compositions[s].data && this.compositions[s].data.nm === r) return this.compositions[s].prepareFrame && this.compositions[s].data.xt && this.compositions[s].prepareFrame(this.currentFrame), this.compositions[s].compInterface;
                            s += 1
                        }
                        return null
                    }
                    return e.compositions = [], e.currentFrame = 0, e.registerComposition = t, e
                }
            }(),
            renderers = {},
            registerRenderer = function(e, r) {
                renderers[e] = r
            };

        function getRenderer(t) {
            return renderers[t]
        }

        function getRegisteredRenderer() {
            if (renderers.canvas) return "canvas";
            for (var t in renderers)
                if (renderers[t]) return t;
            return ""
        }

        function _typeof$4(t) {
            "@babel/helpers - typeof";
            return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? _typeof$4 = function(r) {
                return typeof r
            } : _typeof$4 = function(r) {
                return r && typeof Symbol == "function" && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r
            }, _typeof$4(t)
        }
        var AnimationItem = function() {
            this._cbs = [], this.name = "", this.path = "", this.isLoaded = !1, this.currentFrame = 0, this.currentRawFrame = 0, this.firstFrame = 0, this.totalFrames = 0, this.frameRate = 0, this.frameMult = 0, this.playSpeed = 1, this.playDirection = 1, this.playCount = 0, this.animationData = {}, this.assets = [], this.isPaused = !0, this.autoplay = !1, this.loop = !0, this.renderer = null, this.animationID = createElementID(), this.assetsPath = "", this.timeCompleted = 0, this.segmentPos = 0, this.isSubframeEnabled = getSubframeEnabled(), this.segments = [], this._idle = !0, this._completedLoop = !1, this.projectInterface = ProjectInterface(), this.imagePreloader = new ImagePreloader, this.audioController = audioControllerFactory(), this.markers = [], this.configAnimation = this.configAnimation.bind(this), this.onSetupError = this.onSetupError.bind(this), this.onSegmentComplete = this.onSegmentComplete.bind(this), this.drawnFrameEvent = new BMEnterFrameEvent("drawnFrame", 0, 0, 0), this.expressionsPlugin = getExpressionsPlugin()
        };
        extendPrototype([BaseEvent], AnimationItem), AnimationItem.prototype.setParams = function(t) {
            (t.wrapper || t.container) && (this.wrapper = t.wrapper || t.container);
            var e = "svg";
            t.animType ? e = t.animType : t.renderer && (e = t.renderer);
            var r = getRenderer(e);
            this.renderer = new r(this, t.rendererSettings), this.imagePreloader.setCacheType(e, this.renderer.globalData.defs), this.renderer.setProjectInterface(this.projectInterface), this.animType = e, t.loop === "" || t.loop === null || t.loop === void 0 || t.loop === !0 ? this.loop = !0 : t.loop === !1 ? this.loop = !1 : this.loop = parseInt(t.loop, 10), this.autoplay = "autoplay" in t ? t.autoplay : !0, this.name = t.name ? t.name : "", this.autoloadSegments = Object.prototype.hasOwnProperty.call(t, "autoloadSegments") ? t.autoloadSegments : !0, this.assetsPath = t.assetsPath, this.initialSegment = t.initialSegment, t.audioFactory && this.audioController.setAudioFactory(t.audioFactory), t.animationData ? this.setupAnimation(t.animationData) : t.path && (t.path.lastIndexOf("\\") !== -1 ? this.path = t.path.substr(0, t.path.lastIndexOf("\\") + 1) : this.path = t.path.substr(0, t.path.lastIndexOf("/") + 1), this.fileName = t.path.substr(t.path.lastIndexOf("/") + 1), this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf(".json")), dataManager.loadAnimation(t.path, this.configAnimation, this.onSetupError))
        }, AnimationItem.prototype.onSetupError = function() {
            this.trigger("data_failed")
        }, AnimationItem.prototype.setupAnimation = function(t) {
            dataManager.completeAnimation(t, this.configAnimation)
        }, AnimationItem.prototype.setData = function(t, e) {
            e && _typeof$4(e) !== "object" && (e = JSON.parse(e));
            var r = {
                    wrapper: t,
                    animationData: e
                },
                s = t.attributes;
            r.path = s.getNamedItem("data-animation-path") ? s.getNamedItem("data-animation-path").value : s.getNamedItem("data-bm-path") ? s.getNamedItem("data-bm-path").value : s.getNamedItem("bm-path") ? s.getNamedItem("bm-path").value : "", r.animType = s.getNamedItem("data-anim-type") ? s.getNamedItem("data-anim-type").value : s.getNamedItem("data-bm-type") ? s.getNamedItem("data-bm-type").value : s.getNamedItem("bm-type") ? s.getNamedItem("bm-type").value : s.getNamedItem("data-bm-renderer") ? s.getNamedItem("data-bm-renderer").value : s.getNamedItem("bm-renderer") ? s.getNamedItem("bm-renderer").value : getRegisteredRenderer() || "canvas";
            var a = s.getNamedItem("data-anim-loop") ? s.getNamedItem("data-anim-loop").value : s.getNamedItem("data-bm-loop") ? s.getNamedItem("data-bm-loop").value : s.getNamedItem("bm-loop") ? s.getNamedItem("bm-loop").value : "";
            a === "false" ? r.loop = !1 : a === "true" ? r.loop = !0 : a !== "" && (r.loop = parseInt(a, 10));
            var o = s.getNamedItem("data-anim-autoplay") ? s.getNamedItem("data-anim-autoplay").value : s.getNamedItem("data-bm-autoplay") ? s.getNamedItem("data-bm-autoplay").value : s.getNamedItem("bm-autoplay") ? s.getNamedItem("bm-autoplay").value : !0;
            r.autoplay = o !== "false", r.name = s.getNamedItem("data-name") ? s.getNamedItem("data-name").value : s.getNamedItem("data-bm-name") ? s.getNamedItem("data-bm-name").value : s.getNamedItem("bm-name") ? s.getNamedItem("bm-name").value : "";
            var f = s.getNamedItem("data-anim-prerender") ? s.getNamedItem("data-anim-prerender").value : s.getNamedItem("data-bm-prerender") ? s.getNamedItem("data-bm-prerender").value : s.getNamedItem("bm-prerender") ? s.getNamedItem("bm-prerender").value : "";
            f === "false" && (r.prerender = !1), r.path ? this.setParams(r) : this.trigger("destroy")
        }, AnimationItem.prototype.includeLayers = function(t) {
            t.op > this.animationData.op && (this.animationData.op = t.op, this.totalFrames = Math.floor(t.op - this.animationData.ip));
            var e = this.animationData.layers,
                r, s = e.length,
                a = t.layers,
                o, f = a.length;
            for (o = 0; o < f; o += 1)
                for (r = 0; r < s;) {
                    if (e[r].id === a[o].id) {
                        e[r] = a[o];
                        break
                    }
                    r += 1
                }
            if ((t.chars || t.fonts) && (this.renderer.globalData.fontManager.addChars(t.chars), this.renderer.globalData.fontManager.addFonts(t.fonts, this.renderer.globalData.defs)), t.assets)
                for (s = t.assets.length, r = 0; r < s; r += 1) this.animationData.assets.push(t.assets[r]);
            this.animationData.__complete = !1, dataManager.completeAnimation(this.animationData, this.onSegmentComplete)
        }, AnimationItem.prototype.onSegmentComplete = function(t) {
            this.animationData = t;
            var e = getExpressionsPlugin();
            e && e.initExpressions(this), this.loadNextSegment()
        }, AnimationItem.prototype.loadNextSegment = function() {
            var t = this.animationData.segments;
            if (!t || t.length === 0 || !this.autoloadSegments) {
                this.trigger("data_ready"), this.timeCompleted = this.totalFrames;
                return
            }
            var e = t.shift();
            this.timeCompleted = e.time * this.frameRate;
            var r = this.path + this.fileName + "_" + this.segmentPos + ".json";
            this.segmentPos += 1, dataManager.loadData(r, this.includeLayers.bind(this), (function() {
                this.trigger("data_failed")
            }).bind(this))
        }, AnimationItem.prototype.loadSegments = function() {
            var t = this.animationData.segments;
            t || (this.timeCompleted = this.totalFrames), this.loadNextSegment()
        }, AnimationItem.prototype.imagesLoaded = function() {
            this.trigger("loaded_images"), this.checkLoaded()
        }, AnimationItem.prototype.preloadImages = function() {
            this.imagePreloader.setAssetsPath(this.assetsPath), this.imagePreloader.setPath(this.path), this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this))
        }, AnimationItem.prototype.configAnimation = function(t) {
            if (this.renderer) try {
                this.animationData = t, this.initialSegment ? (this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]), this.firstFrame = Math.round(this.initialSegment[0])) : (this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip), this.firstFrame = Math.round(this.animationData.ip)), this.renderer.configAnimation(t), t.assets || (t.assets = []), this.assets = this.animationData.assets, this.frameRate = this.animationData.fr, this.frameMult = this.animationData.fr / 1e3, this.renderer.searchExtraCompositions(t.assets), this.markers = markerParser(t.markers || []), this.trigger("config_ready"), this.preloadImages(), this.loadSegments(), this.updaFrameModifier(), this.waitForFontsLoaded(), this.isPaused && this.audioController.pause()
            } catch (e) {
                this.triggerConfigError(e)
            }
        }, AnimationItem.prototype.waitForFontsLoaded = function() {
            this.renderer && (this.renderer.globalData.fontManager.isLoaded ? this.checkLoaded() : setTimeout(this.waitForFontsLoaded.bind(this), 20))
        }, AnimationItem.prototype.checkLoaded = function() {
            if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== "canvas") && this.imagePreloader.loadedFootages()) {
                this.isLoaded = !0;
                var t = getExpressionsPlugin();
                t && t.initExpressions(this), this.renderer.initItems(), setTimeout((function() {
                    this.trigger("DOMLoaded")
                }).bind(this), 0), this.gotoFrame(), this.autoplay && this.play()
            }
        }, AnimationItem.prototype.resize = function(t, e) {
            var r = typeof t == "number" ? t : void 0,
                s = typeof e == "number" ? e : void 0;
            this.renderer.updateContainerSize(r, s)
        }, AnimationItem.prototype.setSubframe = function(t) {
            this.isSubframeEnabled = !!t
        }, AnimationItem.prototype.gotoFrame = function() {
            this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame, this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted && (this.currentFrame = this.timeCompleted), this.trigger("enterFrame"), this.renderFrame(), this.trigger("drawnFrame")
        }, AnimationItem.prototype.renderFrame = function() {
            if (!(this.isLoaded === !1 || !this.renderer)) try {
                this.expressionsPlugin && this.expressionsPlugin.resetFrame(), this.renderer.renderFrame(this.currentFrame + this.firstFrame)
            } catch (t) {
                this.triggerRenderFrameError(t)
            }
        }, AnimationItem.prototype.play = function(t) {
            t && this.name !== t || this.isPaused === !0 && (this.isPaused = !1, this.trigger("_play"), this.audioController.resume(), this._idle && (this._idle = !1, this.trigger("_active")))
        }, AnimationItem.prototype.pause = function(t) {
            t && this.name !== t || this.isPaused === !1 && (this.isPaused = !0, this.trigger("_pause"), this._idle = !0, this.trigger("_idle"), this.audioController.pause())
        }, AnimationItem.prototype.togglePause = function(t) {
            t && this.name !== t || (this.isPaused === !0 ? this.play() : this.pause())
        }, AnimationItem.prototype.stop = function(t) {
            t && this.name !== t || (this.pause(), this.playCount = 0, this._completedLoop = !1, this.setCurrentRawFrameValue(0))
        }, AnimationItem.prototype.getMarkerData = function(t) {
            for (var e, r = 0; r < this.markers.length; r += 1)
                if (e = this.markers[r], e.payload && e.payload.name === t) return e;
            return null
        }, AnimationItem.prototype.goToAndStop = function(t, e, r) {
            if (!(r && this.name !== r)) {
                var s = Number(t);
                if (isNaN(s)) {
                    var a = this.getMarkerData(t);
                    a && this.goToAndStop(a.time, !0)
                } else e ? this.setCurrentRawFrameValue(t) : this.setCurrentRawFrameValue(t * this.frameModifier);
                this.pause()
            }
        }, AnimationItem.prototype.goToAndPlay = function(t, e, r) {
            if (!(r && this.name !== r)) {
                var s = Number(t);
                if (isNaN(s)) {
                    var a = this.getMarkerData(t);
                    a && (a.duration ? this.playSegments([a.time, a.time + a.duration], !0) : this.goToAndStop(a.time, !0))
                } else this.goToAndStop(s, e, r);
                this.play()
            }
        }, AnimationItem.prototype.advanceTime = function(t) {
            if (!(this.isPaused === !0 || this.isLoaded === !1)) {
                var e = this.currentRawFrame + t * this.frameModifier,
                    r = !1;
                e >= this.totalFrames - 1 && this.frameModifier > 0 ? !this.loop || this.playCount === this.loop ? this.checkSegments(e > this.totalFrames ? e % this.totalFrames : 0) || (r = !0, e = this.totalFrames - 1) : e >= this.totalFrames ? (this.playCount += 1, this.checkSegments(e % this.totalFrames) || (this.setCurrentRawFrameValue(e % this.totalFrames), this._completedLoop = !0, this.trigger("loopComplete"))) : this.setCurrentRawFrameValue(e) : e < 0 ? this.checkSegments(e % this.totalFrames) || (this.loop && !(this.playCount-- <= 0 && this.loop !== !0) ? (this.setCurrentRawFrameValue(this.totalFrames + e % this.totalFrames), this._completedLoop ? this.trigger("loopComplete") : this._completedLoop = !0) : (r = !0, e = 0)) : this.setCurrentRawFrameValue(e), r && (this.setCurrentRawFrameValue(e), this.pause(), this.trigger("complete"))
            }
        }, AnimationItem.prototype.adjustSegment = function(t, e) {
            this.playCount = 0, t[1] < t[0] ? (this.frameModifier > 0 && (this.playSpeed < 0 ? this.setSpeed(-this.playSpeed) : this.setDirection(-1)), this.totalFrames = t[0] - t[1], this.timeCompleted = this.totalFrames, this.firstFrame = t[1], this.setCurrentRawFrameValue(this.totalFrames - .001 - e)) : t[1] > t[0] && (this.frameModifier < 0 && (this.playSpeed < 0 ? this.setSpeed(-this.playSpeed) : this.setDirection(1)), this.totalFrames = t[1] - t[0], this.timeCompleted = this.totalFrames, this.firstFrame = t[0], this.setCurrentRawFrameValue(.001 + e)), this.trigger("segmentStart")
        }, AnimationItem.prototype.setSegment = function(t, e) {
            var r = -1;
            this.isPaused && (this.currentRawFrame + this.firstFrame < t ? r = t : this.currentRawFrame + this.firstFrame > e && (r = e - t)), this.firstFrame = t, this.totalFrames = e - t, this.timeCompleted = this.totalFrames, r !== -1 && this.goToAndStop(r, !0)
        }, AnimationItem.prototype.playSegments = function(t, e) {
            if (e && (this.segments.length = 0), _typeof$4(t[0]) === "object") {
                var r, s = t.length;
                for (r = 0; r < s; r += 1) this.segments.push(t[r])
            } else this.segments.push(t);
            this.segments.length && e && this.adjustSegment(this.segments.shift(), 0), this.isPaused && this.play()
        }, AnimationItem.prototype.resetSegments = function(t) {
            this.segments.length = 0, this.segments.push([this.animationData.ip, this.animationData.op]), t && this.checkSegments(0)
        }, AnimationItem.prototype.checkSegments = function(t) {
            return this.segments.length ? (this.adjustSegment(this.segments.shift(), t), !0) : !1
        }, AnimationItem.prototype.destroy = function(t) {
            t && this.name !== t || !this.renderer || (this.renderer.destroy(), this.imagePreloader.destroy(), this.trigger("destroy"), this._cbs = null, this.onEnterFrame = null, this.onLoopComplete = null, this.onComplete = null, this.onSegmentStart = null, this.onDestroy = null, this.renderer = null, this.expressionsPlugin = null, this.imagePreloader = null, this.projectInterface = null)
        }, AnimationItem.prototype.setCurrentRawFrameValue = function(t) {
            this.currentRawFrame = t, this.gotoFrame()
        }, AnimationItem.prototype.setSpeed = function(t) {
            this.playSpeed = t, this.updaFrameModifier()
        }, AnimationItem.prototype.setDirection = function(t) {
            this.playDirection = t < 0 ? -1 : 1, this.updaFrameModifier()
        }, AnimationItem.prototype.setLoop = function(t) {
            this.loop = t
        }, AnimationItem.prototype.setVolume = function(t, e) {
            e && this.name !== e || this.audioController.setVolume(t)
        }, AnimationItem.prototype.getVolume = function() {
            return this.audioController.getVolume()
        }, AnimationItem.prototype.mute = function(t) {
            t && this.name !== t || this.audioController.mute()
        }, AnimationItem.prototype.unmute = function(t) {
            t && this.name !== t || this.audioController.unmute()
        }, AnimationItem.prototype.updaFrameModifier = function() {
            this.frameModifier = this.frameMult * this.playSpeed * this.playDirection, this.audioController.setRate(this.playSpeed * this.playDirection)
        }, AnimationItem.prototype.getPath = function() {
            return this.path
        }, AnimationItem.prototype.getAssetsPath = function(t) {
            var e = "";
            if (t.e) e = t.p;
            else if (this.assetsPath) {
                var r = t.p;
                r.indexOf("images/") !== -1 && (r = r.split("/")[1]), e = this.assetsPath + r
            } else e = this.path, e += t.u ? t.u : "", e += t.p;
            return e
        }, AnimationItem.prototype.getAssetData = function(t) {
            for (var e = 0, r = this.assets.length; e < r;) {
                if (t === this.assets[e].id) return this.assets[e];
                e += 1
            }
            return null
        }, AnimationItem.prototype.hide = function() {
            this.renderer.hide()
        }, AnimationItem.prototype.show = function() {
            this.renderer.show()
        }, AnimationItem.prototype.getDuration = function(t) {
            return t ? this.totalFrames : this.totalFrames / this.frameRate
        }, AnimationItem.prototype.updateDocumentData = function(t, e, r) {
            try {
                var s = this.renderer.getElementByPath(t);
                s.updateDocumentData(e, r)
            } catch {}
        }, AnimationItem.prototype.trigger = function(t) {
            if (this._cbs && this._cbs[t]) switch (t) {
                case "enterFrame":
                    this.triggerEvent(t, new BMEnterFrameEvent(t, this.currentFrame, this.totalFrames, this.frameModifier));
                    break;
                case "drawnFrame":
                    this.drawnFrameEvent.currentTime = this.currentFrame, this.drawnFrameEvent.totalTime = this.totalFrames, this.drawnFrameEvent.direction = this.frameModifier, this.triggerEvent(t, this.drawnFrameEvent);
                    break;
                case "loopComplete":
                    this.triggerEvent(t, new BMCompleteLoopEvent(t, this.loop, this.playCount, this.frameMult));
                    break;
                case "complete":
                    this.triggerEvent(t, new BMCompleteEvent(t, this.frameMult));
                    break;
                case "segmentStart":
                    this.triggerEvent(t, new BMSegmentStartEvent(t, this.firstFrame, this.totalFrames));
                    break;
                case "destroy":
                    this.triggerEvent(t, new BMDestroyEvent(t, this));
                    break;
                default:
                    this.triggerEvent(t)
            }
            t === "enterFrame" && this.onEnterFrame && this.onEnterFrame.call(this, new BMEnterFrameEvent(t, this.currentFrame, this.totalFrames, this.frameMult)), t === "loopComplete" && this.onLoopComplete && this.onLoopComplete.call(this, new BMCompleteLoopEvent(t, this.loop, this.playCount, this.frameMult)), t === "complete" && this.onComplete && this.onComplete.call(this, new BMCompleteEvent(t, this.frameMult)), t === "segmentStart" && this.onSegmentStart && this.onSegmentStart.call(this, new BMSegmentStartEvent(t, this.firstFrame, this.totalFrames)), t === "destroy" && this.onDestroy && this.onDestroy.call(this, new BMDestroyEvent(t, this))
        }, AnimationItem.prototype.triggerRenderFrameError = function(t) {
            var e = new BMRenderFrameErrorEvent(t, this.currentFrame);
            this.triggerEvent("error", e), this.onError && this.onError.call(this, e)
        }, AnimationItem.prototype.triggerConfigError = function(t) {
            var e = new BMConfigErrorEvent(t, this.currentFrame);
            this.triggerEvent("error", e), this.onError && this.onError.call(this, e)
        };
        var animationManager = function() {
                var t = {},
                    e = [],
                    r = 0,
                    s = 0,
                    a = 0,
                    o = !0,
                    f = !1;

                function d(D) {
                    for (var X = 0, E = D.target; X < s;) e[X].animation === E && (e.splice(X, 1), X -= 1, s -= 1, E.isPaused || M()), X += 1
                }

                function c(D, X) {
                    if (!D) return null;
                    for (var E = 0; E < s;) {
                        if (e[E].elem === D && e[E].elem !== null) return e[E].animation;
                        E += 1
                    }
                    var w = new AnimationItem;
                    return g(w, D), w.setData(D, X), w
                }

                function m() {
                    var D, X = e.length,
                        E = [];
                    for (D = 0; D < X; D += 1) E.push(e[D].animation);
                    return E
                }

                function S() {
                    a += 1, vt()
                }

                function M() {
                    a -= 1
                }

                function g(D, X) {
                    D.addEventListener("destroy", d), D.addEventListener("_active", S), D.addEventListener("_idle", M), e.push({
                        elem: X,
                        animation: D
                    }), s += 1
                }

                function k(D) {
                    var X = new AnimationItem;
                    return g(X, null), X.setParams(D), X
                }

                function C(D, X) {
                    var E;
                    for (E = 0; E < s; E += 1) e[E].animation.setSpeed(D, X)
                }

                function b(D, X) {
                    var E;
                    for (E = 0; E < s; E += 1) e[E].animation.setDirection(D, X)
                }

                function G(D) {
                    var X;
                    for (X = 0; X < s; X += 1) e[X].animation.play(D)
                }

                function y(D) {
                    var X = D - r,
                        E;
                    for (E = 0; E < s; E += 1) e[E].animation.advanceTime(X);
                    r = D, a && !f ? window.requestAnimationFrame(y) : o = !0
                }

                function P(D) {
                    r = D, window.requestAnimationFrame(y)
                }

                function v(D) {
                    var X;
                    for (X = 0; X < s; X += 1) e[X].animation.pause(D)
                }

                function _(D, X, E) {
                    var w;
                    for (w = 0; w < s; w += 1) e[w].animation.goToAndStop(D, X, E)
                }

                function V(D) {
                    var X;
                    for (X = 0; X < s; X += 1) e[X].animation.stop(D)
                }

                function N(D) {
                    var X;
                    for (X = 0; X < s; X += 1) e[X].animation.togglePause(D)
                }

                function Z(D) {
                    var X;
                    for (X = s - 1; X >= 0; X -= 1) e[X].animation.destroy(D)
                }

                function J(D, X, E) {
                    var w = [].concat([].slice.call(document.getElementsByClassName("lottie")), [].slice.call(document.getElementsByClassName("bodymovin"))),
                        nt, tt = w.length;
                    for (nt = 0; nt < tt; nt += 1) E && w[nt].setAttribute("data-bm-type", E), c(w[nt], D);
                    if (X && tt === 0) {
                        E || (E = "svg");
                        var gt = document.getElementsByTagName("body")[0];
                        gt.innerText = "";
                        var Tt = createTag("div");
                        Tt.style.width = "100%", Tt.style.height = "100%", Tt.setAttribute("data-bm-type", E), gt.appendChild(Tt), c(Tt, D)
                    }
                }

                function ht() {
                    var D;
                    for (D = 0; D < s; D += 1) e[D].animation.resize()
                }

                function vt() {
                    !f && a && o && (window.requestAnimationFrame(P), o = !1)
                }

                function ct() {
                    f = !0
                }

                function ft() {
                    f = !1, vt()
                }

                function yt(D, X) {
                    var E;
                    for (E = 0; E < s; E += 1) e[E].animation.setVolume(D, X)
                }

                function bt(D) {
                    var X;
                    for (X = 0; X < s; X += 1) e[X].animation.mute(D)
                }

                function lt(D) {
                    var X;
                    for (X = 0; X < s; X += 1) e[X].animation.unmute(D)
                }
                return t.registerAnimation = c, t.loadAnimation = k, t.setSpeed = C, t.setDirection = b, t.play = G, t.pause = v, t.stop = V, t.togglePause = N, t.searchAnimations = J, t.resize = ht, t.goToAndStop = _, t.destroy = Z, t.freeze = ct, t.unfreeze = ft, t.setVolume = yt, t.mute = bt, t.unmute = lt, t.getRegisteredAnimations = m, t
            }(),
            BezierFactory = function() {
                var t = {};
                t.getBezierEasing = r;
                var e = {};

                function r(P, v, _, V, N) {
                    var Z = N || ("bez_" + P + "_" + v + "_" + _ + "_" + V).replace(/\./g, "p");
                    if (e[Z]) return e[Z];
                    var J = new y([P, v, _, V]);
                    return e[Z] = J, J
                }
                var s = 4,
                    a = .001,
                    o = 1e-7,
                    f = 10,
                    d = 11,
                    c = 1 / (d - 1),
                    m = typeof Float32Array == "function";

                function S(P, v) {
                    return 1 - 3 * v + 3 * P
                }

                function M(P, v) {
                    return 3 * v - 6 * P
                }

                function g(P) {
                    return 3 * P
                }

                function k(P, v, _) {
                    return ((S(v, _) * P + M(v, _)) * P + g(v)) * P
                }

                function C(P, v, _) {
                    return 3 * S(v, _) * P * P + 2 * M(v, _) * P + g(v)
                }

                function b(P, v, _, V, N) {
                    var Z, J, ht = 0;
                    do J = v + (_ - v) / 2, Z = k(J, V, N) - P, Z > 0 ? _ = J : v = J; while (Math.abs(Z) > o && ++ht < f);
                    return J
                }

                function G(P, v, _, V) {
                    for (var N = 0; N < s; ++N) {
                        var Z = C(v, _, V);
                        if (Z === 0) return v;
                        var J = k(v, _, V) - P;
                        v -= J / Z
                    }
                    return v
                }

                function y(P) {
                    this._p = P, this._mSampleValues = m ? new Float32Array(d) : new Array(d), this._precomputed = !1, this.get = this.get.bind(this)
                }
                return y.prototype = {
                    get: function(v) {
                        var _ = this._p[0],
                            V = this._p[1],
                            N = this._p[2],
                            Z = this._p[3];
                        return this._precomputed || this._precompute(), _ === V && N === Z ? v : v === 0 ? 0 : v === 1 ? 1 : k(this._getTForX(v), V, Z)
                    },
                    _precompute: function() {
                        var v = this._p[0],
                            _ = this._p[1],
                            V = this._p[2],
                            N = this._p[3];
                        this._precomputed = !0, (v !== _ || V !== N) && this._calcSampleValues()
                    },
                    _calcSampleValues: function() {
                        for (var v = this._p[0], _ = this._p[2], V = 0; V < d; ++V) this._mSampleValues[V] = k(V * c, v, _)
                    },
                    _getTForX: function(v) {
                        for (var _ = this._p[0], V = this._p[2], N = this._mSampleValues, Z = 0, J = 1, ht = d - 1; J !== ht && N[J] <= v; ++J) Z += c;
                        --J;
                        var vt = (v - N[J]) / (N[J + 1] - N[J]),
                            ct = Z + vt * c,
                            ft = C(ct, _, V);
                        return ft >= a ? G(v, ct, _, V) : ft === 0 ? ct : b(v, Z, Z + c, _, V)
                    }
                }, t
            }(),
            pooling = function() {
                function t(e) {
                    return e.concat(createSizedArray(e.length))
                }
                return {
                    double: t
                }
            }(),
            poolFactory = function() {
                return function(t, e, r) {
                    var s = 0,
                        a = t,
                        o = createSizedArray(a),
                        f = {
                            newElement: d,
                            release: c
                        };

                    function d() {
                        var m;
                        return s ? (s -= 1, m = o[s]) : m = e(), m
                    }

                    function c(m) {
                        s === a && (o = pooling.double(o), a *= 2), r && r(m), o[s] = m, s += 1
                    }
                    return f
                }
            }(),
            bezierLengthPool = function() {
                function t() {
                    return {
                        addedLength: 0,
                        percents: createTypedArray("float32", getDefaultCurveSegments()),
                        lengths: createTypedArray("float32", getDefaultCurveSegments())
                    }
                }
                return poolFactory(8, t)
            }(),
            segmentsLengthPool = function() {
                function t() {
                    return {
                        lengths: [],
                        totalLength: 0
                    }
                }

                function e(r) {
                    var s, a = r.lengths.length;
                    for (s = 0; s < a; s += 1) bezierLengthPool.release(r.lengths[s]);
                    r.lengths.length = 0
                }
                return poolFactory(8, t, e)
            }();

        function bezFunction() {
            var t = Math;

            function e(g, k, C, b, G, y) {
                var P = g * b + k * G + C * y - G * b - y * g - C * k;
                return P > -.001 && P < .001
            }

            function r(g, k, C, b, G, y, P, v, _) {
                if (C === 0 && y === 0 && _ === 0) return e(g, k, b, G, P, v);
                var V = t.sqrt(t.pow(b - g, 2) + t.pow(G - k, 2) + t.pow(y - C, 2)),
                    N = t.sqrt(t.pow(P - g, 2) + t.pow(v - k, 2) + t.pow(_ - C, 2)),
                    Z = t.sqrt(t.pow(P - b, 2) + t.pow(v - G, 2) + t.pow(_ - y, 2)),
                    J;
                return V > N ? V > Z ? J = V - N - Z : J = Z - N - V : Z > N ? J = Z - N - V : J = N - V - Z, J > -1e-4 && J < 1e-4
            }
            var s = function() {
                return function(g, k, C, b) {
                    var G = getDefaultCurveSegments(),
                        y, P, v, _, V, N = 0,
                        Z, J = [],
                        ht = [],
                        vt = bezierLengthPool.newElement();
                    for (v = C.length, y = 0; y < G; y += 1) {
                        for (V = y / (G - 1), Z = 0, P = 0; P < v; P += 1) _ = bmPow(1 - V, 3) * g[P] + 3 * bmPow(1 - V, 2) * V * C[P] + 3 * (1 - V) * bmPow(V, 2) * b[P] + bmPow(V, 3) * k[P], J[P] = _, ht[P] !== null && (Z += bmPow(J[P] - ht[P], 2)), ht[P] = J[P];
                        Z && (Z = bmSqrt(Z), N += Z), vt.percents[y] = V, vt.lengths[y] = N
                    }
                    return vt.addedLength = N, vt
                }
            }();

            function a(g) {
                var k = segmentsLengthPool.newElement(),
                    C = g.c,
                    b = g.v,
                    G = g.o,
                    y = g.i,
                    P, v = g._length,
                    _ = k.lengths,
                    V = 0;
                for (P = 0; P < v - 1; P += 1) _[P] = s(b[P], b[P + 1], G[P], y[P + 1]), V += _[P].addedLength;
                return C && v && (_[P] = s(b[P], b[0], G[P], y[0]), V += _[P].addedLength), k.totalLength = V, k
            }

            function o(g) {
                this.segmentLength = 0, this.points = new Array(g)
            }

            function f(g, k) {
                this.partialLength = g, this.point = k
            }
            var d = function() {
                var g = {};
                return function(k, C, b, G) {
                    var y = (k[0] + "_" + k[1] + "_" + C[0] + "_" + C[1] + "_" + b[0] + "_" + b[1] + "_" + G[0] + "_" + G[1]).replace(/\./g, "p");
                    if (!g[y]) {
                        var P = getDefaultCurveSegments(),
                            v, _, V, N, Z, J = 0,
                            ht, vt, ct = null;
                        k.length === 2 && (k[0] !== C[0] || k[1] !== C[1]) && e(k[0], k[1], C[0], C[1], k[0] + b[0], k[1] + b[1]) && e(k[0], k[1], C[0], C[1], C[0] + G[0], C[1] + G[1]) && (P = 2);
                        var ft = new o(P);
                        for (V = b.length, v = 0; v < P; v += 1) {
                            for (vt = createSizedArray(V), Z = v / (P - 1), ht = 0, _ = 0; _ < V; _ += 1) N = bmPow(1 - Z, 3) * k[_] + 3 * bmPow(1 - Z, 2) * Z * (k[_] + b[_]) + 3 * (1 - Z) * bmPow(Z, 2) * (C[_] + G[_]) + bmPow(Z, 3) * C[_], vt[_] = N, ct !== null && (ht += bmPow(vt[_] - ct[_], 2));
                            ht = bmSqrt(ht), J += ht, ft.points[v] = new f(ht, vt), ct = vt
                        }
                        ft.segmentLength = J, g[y] = ft
                    }
                    return g[y]
                }
            }();

            function c(g, k) {
                var C = k.percents,
                    b = k.lengths,
                    G = C.length,
                    y = bmFloor((G - 1) * g),
                    P = g * k.addedLength,
                    v = 0;
                if (y === G - 1 || y === 0 || P === b[y]) return C[y];
                for (var _ = b[y] > P ? -1 : 1, V = !0; V;)
                    if (b[y] <= P && b[y + 1] > P ? (v = (P - b[y]) / (b[y + 1] - b[y]), V = !1) : y += _, y < 0 || y >= G - 1) {
                        if (y === G - 1) return C[y];
                        V = !1
                    }
                return C[y] + (C[y + 1] - C[y]) * v
            }

            function m(g, k, C, b, G, y) {
                var P = c(G, y),
                    v = 1 - P,
                    _ = t.round((v * v * v * g[0] + (P * v * v + v * P * v + v * v * P) * C[0] + (P * P * v + v * P * P + P * v * P) * b[0] + P * P * P * k[0]) * 1e3) / 1e3,
                    V = t.round((v * v * v * g[1] + (P * v * v + v * P * v + v * v * P) * C[1] + (P * P * v + v * P * P + P * v * P) * b[1] + P * P * P * k[1]) * 1e3) / 1e3;
                return [_, V]
            }
            var S = createTypedArray("float32", 8);

            function M(g, k, C, b, G, y, P) {
                G < 0 ? G = 0 : G > 1 && (G = 1);
                var v = c(G, P);
                y = y > 1 ? 1 : y;
                var _ = c(y, P),
                    V, N = g.length,
                    Z = 1 - v,
                    J = 1 - _,
                    ht = Z * Z * Z,
                    vt = v * Z * Z * 3,
                    ct = v * v * Z * 3,
                    ft = v * v * v,
                    yt = Z * Z * J,
                    bt = v * Z * J + Z * v * J + Z * Z * _,
                    lt = v * v * J + Z * v * _ + v * Z * _,
                    D = v * v * _,
                    X = Z * J * J,
                    E = v * J * J + Z * _ * J + Z * J * _,
                    w = v * _ * J + Z * _ * _ + v * J * _,
                    nt = v * _ * _,
                    tt = J * J * J,
                    gt = _ * J * J + J * _ * J + J * J * _,
                    Tt = _ * _ * J + J * _ * _ + _ * J * _,
                    Mt = _ * _ * _;
                for (V = 0; V < N; V += 1) S[V * 4] = t.round((ht * g[V] + vt * C[V] + ct * b[V] + ft * k[V]) * 1e3) / 1e3, S[V * 4 + 1] = t.round((yt * g[V] + bt * C[V] + lt * b[V] + D * k[V]) * 1e3) / 1e3, S[V * 4 + 2] = t.round((X * g[V] + E * C[V] + w * b[V] + nt * k[V]) * 1e3) / 1e3, S[V * 4 + 3] = t.round((tt * g[V] + gt * C[V] + Tt * b[V] + Mt * k[V]) * 1e3) / 1e3;
                return S
            }
            return {
                getSegmentsLength: a,
                getNewSegment: M,
                getPointInSegment: m,
                buildBezierData: d,
                pointOnLine2D: e,
                pointOnLine3D: r
            }
        }
        var bez = bezFunction(),
            initFrame = initialDefaultFrame,
            mathAbs = Math.abs;

        function interpolateValue(t, e) {
            var r = this.offsetTime,
                s;
            this.propType === "multidimensional" && (s = createTypedArray("float32", this.pv.length));
            for (var a = e.lastIndex, o = a, f = this.keyframes.length - 1, d = !0, c, m, S; d;) {
                if (c = this.keyframes[o], m = this.keyframes[o + 1], o === f - 1 && t >= m.t - r) {
                    c.h && (c = m), a = 0;
                    break
                }
                if (m.t - r > t) {
                    a = o;
                    break
                }
                o < f - 1 ? o += 1 : (a = 0, d = !1)
            }
            S = this.keyframesMetadata[o] || {};
            var M, g, k, C, b, G, y = m.t - r,
                P = c.t - r,
                v;
            if (c.to) {
                S.bezierData || (S.bezierData = bez.buildBezierData(c.s, m.s || c.e, c.to, c.ti));
                var _ = S.bezierData;
                if (t >= y || t < P) {
                    var V = t >= y ? _.points.length - 1 : 0;
                    for (g = _.points[V].point.length, M = 0; M < g; M += 1) s[M] = _.points[V].point[M]
                } else {
                    S.__fnct ? G = S.__fnct : (G = BezierFactory.getBezierEasing(c.o.x, c.o.y, c.i.x, c.i.y, c.n).get, S.__fnct = G), k = G((t - P) / (y - P));
                    var N = _.segmentLength * k,
                        Z, J = e.lastFrame < t && e._lastKeyframeIndex === o ? e._lastAddedLength : 0;
                    for (b = e.lastFrame < t && e._lastKeyframeIndex === o ? e._lastPoint : 0, d = !0, C = _.points.length; d;) {
                        if (J += _.points[b].partialLength, N === 0 || k === 0 || b === _.points.length - 1) {
                            for (g = _.points[b].point.length, M = 0; M < g; M += 1) s[M] = _.points[b].point[M];
                            break
                        } else if (N >= J && N < J + _.points[b + 1].partialLength) {
                            for (Z = (N - J) / _.points[b + 1].partialLength, g = _.points[b].point.length, M = 0; M < g; M += 1) s[M] = _.points[b].point[M] + (_.points[b + 1].point[M] - _.points[b].point[M]) * Z;
                            break
                        }
                        b < C - 1 ? b += 1 : d = !1
                    }
                    e._lastPoint = b, e._lastAddedLength = J - _.points[b].partialLength, e._lastKeyframeIndex = o
                }
            } else {
                var ht, vt, ct, ft, yt;
                if (f = c.s.length, v = m.s || c.e, this.sh && c.h !== 1)
                    if (t >= y) s[0] = v[0], s[1] = v[1], s[2] = v[2];
                    else if (t <= P) s[0] = c.s[0], s[1] = c.s[1], s[2] = c.s[2];
                else {
                    var bt = createQuaternion(c.s),
                        lt = createQuaternion(v),
                        D = (t - P) / (y - P);
                    quaternionToEuler(s, slerp(bt, lt, D))
                } else
                    for (o = 0; o < f; o += 1) c.h !== 1 && (t >= y ? k = 1 : t < P ? k = 0 : (c.o.x.constructor === Array ? (S.__fnct || (S.__fnct = []), S.__fnct[o] ? G = S.__fnct[o] : (ht = c.o.x[o] === void 0 ? c.o.x[0] : c.o.x[o], vt = c.o.y[o] === void 0 ? c.o.y[0] : c.o.y[o], ct = c.i.x[o] === void 0 ? c.i.x[0] : c.i.x[o], ft = c.i.y[o] === void 0 ? c.i.y[0] : c.i.y[o], G = BezierFactory.getBezierEasing(ht, vt, ct, ft).get, S.__fnct[o] = G)) : S.__fnct ? G = S.__fnct : (ht = c.o.x, vt = c.o.y, ct = c.i.x, ft = c.i.y, G = BezierFactory.getBezierEasing(ht, vt, ct, ft).get, c.keyframeMetadata = G), k = G((t - P) / (y - P)))), v = m.s || c.e, yt = c.h === 1 ? c.s[o] : c.s[o] + (v[o] - c.s[o]) * k, this.propType === "multidimensional" ? s[o] = yt : s = yt
            }
            return e.lastIndex = a, s
        }

        function slerp(t, e, r) {
            var s = [],
                a = t[0],
                o = t[1],
                f = t[2],
                d = t[3],
                c = e[0],
                m = e[1],
                S = e[2],
                M = e[3],
                g, k, C, b, G;
            return k = a * c + o * m + f * S + d * M, k < 0 && (k = -k, c = -c, m = -m, S = -S, M = -M), 1 - k > 1e-6 ? (g = Math.acos(k), C = Math.sin(g), b = Math.sin((1 - r) * g) / C, G = Math.sin(r * g) / C) : (b = 1 - r, G = r), s[0] = b * a + G * c, s[1] = b * o + G * m, s[2] = b * f + G * S, s[3] = b * d + G * M, s
        }

        function quaternionToEuler(t, e) {
            var r = e[0],
                s = e[1],
                a = e[2],
                o = e[3],
                f = Math.atan2(2 * s * o - 2 * r * a, 1 - 2 * s * s - 2 * a * a),
                d = Math.asin(2 * r * s + 2 * a * o),
                c = Math.atan2(2 * r * o - 2 * s * a, 1 - 2 * r * r - 2 * a * a);
            t[0] = f / degToRads, t[1] = d / degToRads, t[2] = c / degToRads
        }

        function createQuaternion(t) {
            var e = t[0] * degToRads,
                r = t[1] * degToRads,
                s = t[2] * degToRads,
                a = Math.cos(e / 2),
                o = Math.cos(r / 2),
                f = Math.cos(s / 2),
                d = Math.sin(e / 2),
                c = Math.sin(r / 2),
                m = Math.sin(s / 2),
                S = a * o * f - d * c * m,
                M = d * c * f + a * o * m,
                g = d * o * f + a * c * m,
                k = a * c * f - d * o * m;
            return [M, g, k, S]
        }

        function getValueAtCurrentTime() {
            var t = this.comp.renderedFrame - this.offsetTime,
                e = this.keyframes[0].t - this.offsetTime,
                r = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;
            if (!(t === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= r && t >= r || this._caching.lastFrame < e && t < e))) {
                this._caching.lastFrame >= t && (this._caching._lastKeyframeIndex = -1, this._caching.lastIndex = 0);
                var s = this.interpolateValue(t, this._caching);
                this.pv = s
            }
            return this._caching.lastFrame = t, this.pv
        }

        function setVValue(t) {
            var e;
            if (this.propType === "unidimensional") e = t * this.mult, mathAbs(this.v - e) > 1e-5 && (this.v = e, this._mdf = !0);
            else
                for (var r = 0, s = this.v.length; r < s;) e = t[r] * this.mult, mathAbs(this.v[r] - e) > 1e-5 && (this.v[r] = e, this._mdf = !0), r += 1
        }

        function processEffectsSequence() {
            if (!(this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length)) {
                if (this.lock) {
                    this.setVValue(this.pv);
                    return
                }
                this.lock = !0, this._mdf = this._isFirstFrame;
                var t, e = this.effectsSequence.length,
                    r = this.kf ? this.pv : this.data.k;
                for (t = 0; t < e; t += 1) r = this.effectsSequence[t](r);
                this.setVValue(r), this._isFirstFrame = !1, this.lock = !1, this.frameId = this.elem.globalData.frameId
            }
        }

        function addEffect(t) {
            this.effectsSequence.push(t), this.container.addDynamicProperty(this)
        }

        function ValueProperty(t, e, r, s) {
            this.propType = "unidimensional", this.mult = r || 1, this.data = e, this.v = r ? e.k * r : e.k, this.pv = e.k, this._mdf = !1, this.elem = t, this.container = s, this.comp = t.comp, this.k = !1, this.kf = !1, this.vel = 0, this.effectsSequence = [], this._isFirstFrame = !0, this.getValue = processEffectsSequence, this.setVValue = setVValue, this.addEffect = addEffect
        }

        function MultiDimensionalProperty(t, e, r, s) {
            this.propType = "multidimensional", this.mult = r || 1, this.data = e, this._mdf = !1, this.elem = t, this.container = s, this.comp = t.comp, this.k = !1, this.kf = !1, this.frameId = -1;
            var a, o = e.k.length;
            for (this.v = createTypedArray("float32", o), this.pv = createTypedArray("float32", o), this.vel = createTypedArray("float32", o), a = 0; a < o; a += 1) this.v[a] = e.k[a] * this.mult, this.pv[a] = e.k[a];
            this._isFirstFrame = !0, this.effectsSequence = [], this.getValue = processEffectsSequence, this.setVValue = setVValue, this.addEffect = addEffect
        }

        function KeyframedValueProperty(t, e, r, s) {
            this.propType = "unidimensional", this.keyframes = e.k, this.keyframesMetadata = [], this.offsetTime = t.data.st, this.frameId = -1, this._caching = {
                lastFrame: initFrame,
                lastIndex: 0,
                value: 0,
                _lastKeyframeIndex: -1
            }, this.k = !0, this.kf = !0, this.data = e, this.mult = r || 1, this.elem = t, this.container = s, this.comp = t.comp, this.v = initFrame, this.pv = initFrame, this._isFirstFrame = !0, this.getValue = processEffectsSequence, this.setVValue = setVValue, this.interpolateValue = interpolateValue, this.effectsSequence = [getValueAtCurrentTime.bind(this)], this.addEffect = addEffect
        }

        function KeyframedMultidimensionalProperty(t, e, r, s) {
            this.propType = "multidimensional";
            var a, o = e.k.length,
                f, d, c, m;
            for (a = 0; a < o - 1; a += 1) e.k[a].to && e.k[a].s && e.k[a + 1] && e.k[a + 1].s && (f = e.k[a].s, d = e.k[a + 1].s, c = e.k[a].to, m = e.k[a].ti, (f.length === 2 && !(f[0] === d[0] && f[1] === d[1]) && bez.pointOnLine2D(f[0], f[1], d[0], d[1], f[0] + c[0], f[1] + c[1]) && bez.pointOnLine2D(f[0], f[1], d[0], d[1], d[0] + m[0], d[1] + m[1]) || f.length === 3 && !(f[0] === d[0] && f[1] === d[1] && f[2] === d[2]) && bez.pointOnLine3D(f[0], f[1], f[2], d[0], d[1], d[2], f[0] + c[0], f[1] + c[1], f[2] + c[2]) && bez.pointOnLine3D(f[0], f[1], f[2], d[0], d[1], d[2], d[0] + m[0], d[1] + m[1], d[2] + m[2])) && (e.k[a].to = null, e.k[a].ti = null), f[0] === d[0] && f[1] === d[1] && c[0] === 0 && c[1] === 0 && m[0] === 0 && m[1] === 0 && (f.length === 2 || f[2] === d[2] && c[2] === 0 && m[2] === 0) && (e.k[a].to = null, e.k[a].ti = null));
            this.effectsSequence = [getValueAtCurrentTime.bind(this)], this.data = e, this.keyframes = e.k, this.keyframesMetadata = [], this.offsetTime = t.data.st, this.k = !0, this.kf = !0, this._isFirstFrame = !0, this.mult = r || 1, this.elem = t, this.container = s, this.comp = t.comp, this.getValue = processEffectsSequence, this.setVValue = setVValue, this.interpolateValue = interpolateValue, this.frameId = -1;
            var S = e.k[0].s.length;
            for (this.v = createTypedArray("float32", S), this.pv = createTypedArray("float32", S), a = 0; a < S; a += 1) this.v[a] = initFrame, this.pv[a] = initFrame;
            this._caching = {
                lastFrame: initFrame,
                lastIndex: 0,
                value: createTypedArray("float32", S)
            }, this.addEffect = addEffect
        }
        var PropertyFactory = function() {
            function t(r, s, a, o, f) {
                s.sid && (s = r.globalData.slotManager.getProp(s));
                var d;
                if (!s.k.length) d = new ValueProperty(r, s, o, f);
                else if (typeof s.k[0] == "number") d = new MultiDimensionalProperty(r, s, o, f);
                else switch (a) {
                    case 0:
                        d = new KeyframedValueProperty(r, s, o, f);
                        break;
                    case 1:
                        d = new KeyframedMultidimensionalProperty(r, s, o, f);
                        break
                }
                return d.effectsSequence.length && f.addDynamicProperty(d), d
            }
            var e = {
                getProp: t
            };
            return e
        }();

        function DynamicPropertyContainer() {}
        DynamicPropertyContainer.prototype = {
            addDynamicProperty: function(e) {
                this.dynamicProperties.indexOf(e) === -1 && (this.dynamicProperties.push(e), this.container.addDynamicProperty(this), this._isAnimated = !0)
            },
            iterateDynamicProperties: function() {
                this._mdf = !1;
                var e, r = this.dynamicProperties.length;
                for (e = 0; e < r; e += 1) this.dynamicProperties[e].getValue(), this.dynamicProperties[e]._mdf && (this._mdf = !0)
            },
            initDynamicPropertyContainer: function(e) {
                this.container = e, this.dynamicProperties = [], this._mdf = !1, this._isAnimated = !1
            }
        };
        var pointPool = function() {
            function t() {
                return createTypedArray("float32", 2)
            }
            return poolFactory(8, t)
        }();

        function ShapePath() {
            this.c = !1, this._length = 0, this._maxLength = 8, this.v = createSizedArray(this._maxLength), this.o = createSizedArray(this._maxLength), this.i = createSizedArray(this._maxLength)
        }
        ShapePath.prototype.setPathData = function(t, e) {
            this.c = t, this.setLength(e);
            for (var r = 0; r < e;) this.v[r] = pointPool.newElement(), this.o[r] = pointPool.newElement(), this.i[r] = pointPool.newElement(), r += 1
        }, ShapePath.prototype.setLength = function(t) {
            for (; this._maxLength < t;) this.doubleArrayLength();
            this._length = t
        }, ShapePath.prototype.doubleArrayLength = function() {
            this.v = this.v.concat(createSizedArray(this._maxLength)), this.i = this.i.concat(createSizedArray(this._maxLength)), this.o = this.o.concat(createSizedArray(this._maxLength)), this._maxLength *= 2
        }, ShapePath.prototype.setXYAt = function(t, e, r, s, a) {
            var o;
            switch (this._length = Math.max(this._length, s + 1), this._length >= this._maxLength && this.doubleArrayLength(), r) {
                case "v":
                    o = this.v;
                    break;
                case "i":
                    o = this.i;
                    break;
                case "o":
                    o = this.o;
                    break;
                default:
                    o = [];
                    break
            }(!o[s] || o[s] && !a) && (o[s] = pointPool.newElement()), o[s][0] = t, o[s][1] = e
        }, ShapePath.prototype.setTripleAt = function(t, e, r, s, a, o, f, d) {
            this.setXYAt(t, e, "v", f, d), this.setXYAt(r, s, "o", f, d), this.setXYAt(a, o, "i", f, d)
        }, ShapePath.prototype.reverse = function() {
            var t = new ShapePath;
            t.setPathData(this.c, this._length);
            var e = this.v,
                r = this.o,
                s = this.i,
                a = 0;
            this.c && (t.setTripleAt(e[0][0], e[0][1], s[0][0], s[0][1], r[0][0], r[0][1], 0, !1), a = 1);
            var o = this._length - 1,
                f = this._length,
                d;
            for (d = a; d < f; d += 1) t.setTripleAt(e[o][0], e[o][1], s[o][0], s[o][1], r[o][0], r[o][1], d, !1), o -= 1;
            return t
        }, ShapePath.prototype.length = function() {
            return this._length
        };
        var shapePool = function() {
            function t() {
                return new ShapePath
            }

            function e(a) {
                var o = a._length,
                    f;
                for (f = 0; f < o; f += 1) pointPool.release(a.v[f]), pointPool.release(a.i[f]), pointPool.release(a.o[f]), a.v[f] = null, a.i[f] = null, a.o[f] = null;
                a._length = 0, a.c = !1
            }

            function r(a) {
                var o = s.newElement(),
                    f, d = a._length === void 0 ? a.v.length : a._length;
                for (o.setLength(d), o.c = a.c, f = 0; f < d; f += 1) o.setTripleAt(a.v[f][0], a.v[f][1], a.o[f][0], a.o[f][1], a.i[f][0], a.i[f][1], f);
                return o
            }
            var s = poolFactory(4, t, e);
            return s.clone = r, s
        }();

        function ShapeCollection() {
            this._length = 0, this._maxLength = 4, this.shapes = createSizedArray(this._maxLength)
        }
        ShapeCollection.prototype.addShape = function(t) {
            this._length === this._maxLength && (this.shapes = this.shapes.concat(createSizedArray(this._maxLength)), this._maxLength *= 2), this.shapes[this._length] = t, this._length += 1
        }, ShapeCollection.prototype.releaseShapes = function() {
            var t;
            for (t = 0; t < this._length; t += 1) shapePool.release(this.shapes[t]);
            this._length = 0
        };
        var shapeCollectionPool = function() {
                var t = {
                        newShapeCollection: a,
                        release: o
                    },
                    e = 0,
                    r = 4,
                    s = createSizedArray(r);

                function a() {
                    var f;
                    return e ? (e -= 1, f = s[e]) : f = new ShapeCollection, f
                }

                function o(f) {
                    var d, c = f._length;
                    for (d = 0; d < c; d += 1) shapePool.release(f.shapes[d]);
                    f._length = 0, e === r && (s = pooling.double(s), r *= 2), s[e] = f, e += 1
                }
                return t
            }(),
            ShapePropertyFactory = function() {
                var t = -999999;

                function e(y, P, v) {
                    var _ = v.lastIndex,
                        V, N, Z, J, ht, vt, ct, ft, yt, bt = this.keyframes;
                    if (y < bt[0].t - this.offsetTime) V = bt[0].s[0], Z = !0, _ = 0;
                    else if (y >= bt[bt.length - 1].t - this.offsetTime) V = bt[bt.length - 1].s ? bt[bt.length - 1].s[0] : bt[bt.length - 2].e[0], Z = !0;
                    else {
                        for (var lt = _, D = bt.length - 1, X = !0, E, w, nt; X && (E = bt[lt], w = bt[lt + 1], !(w.t - this.offsetTime > y));) lt < D - 1 ? lt += 1 : X = !1;
                        if (nt = this.keyframesMetadata[lt] || {}, Z = E.h === 1, _ = lt, !Z) {
                            if (y >= w.t - this.offsetTime) ft = 1;
                            else if (y < E.t - this.offsetTime) ft = 0;
                            else {
                                var tt;
                                nt.__fnct ? tt = nt.__fnct : (tt = BezierFactory.getBezierEasing(E.o.x, E.o.y, E.i.x, E.i.y).get, nt.__fnct = tt), ft = tt((y - (E.t - this.offsetTime)) / (w.t - this.offsetTime - (E.t - this.offsetTime)))
                            }
                            N = w.s ? w.s[0] : E.e[0]
                        }
                        V = E.s[0]
                    }
                    for (vt = P._length, ct = V.i[0].length, v.lastIndex = _, J = 0; J < vt; J += 1)
                        for (ht = 0; ht < ct; ht += 1) yt = Z ? V.i[J][ht] : V.i[J][ht] + (N.i[J][ht] - V.i[J][ht]) * ft, P.i[J][ht] = yt, yt = Z ? V.o[J][ht] : V.o[J][ht] + (N.o[J][ht] - V.o[J][ht]) * ft, P.o[J][ht] = yt, yt = Z ? V.v[J][ht] : V.v[J][ht] + (N.v[J][ht] - V.v[J][ht]) * ft, P.v[J][ht] = yt
                }

                function r() {
                    var y = this.comp.renderedFrame - this.offsetTime,
                        P = this.keyframes[0].t - this.offsetTime,
                        v = this.keyframes[this.keyframes.length - 1].t - this.offsetTime,
                        _ = this._caching.lastFrame;
                    return _ !== t && (_ < P && y < P || _ > v && y > v) || (this._caching.lastIndex = _ < y ? this._caching.lastIndex : 0, this.interpolateShape(y, this.pv, this._caching)), this._caching.lastFrame = y, this.pv
                }

                function s() {
                    this.paths = this.localShapeCollection
                }

                function a(y, P) {
                    if (y._length !== P._length || y.c !== P.c) return !1;
                    var v, _ = y._length;
                    for (v = 0; v < _; v += 1)
                        if (y.v[v][0] !== P.v[v][0] || y.v[v][1] !== P.v[v][1] || y.o[v][0] !== P.o[v][0] || y.o[v][1] !== P.o[v][1] || y.i[v][0] !== P.i[v][0] || y.i[v][1] !== P.i[v][1]) return !1;
                    return !0
                }

                function o(y) {
                    a(this.v, y) || (this.v = shapePool.clone(y), this.localShapeCollection.releaseShapes(), this.localShapeCollection.addShape(this.v), this._mdf = !0, this.paths = this.localShapeCollection)
                }

                function f() {
                    if (this.elem.globalData.frameId !== this.frameId) {
                        if (!this.effectsSequence.length) {
                            this._mdf = !1;
                            return
                        }
                        if (this.lock) {
                            this.setVValue(this.pv);
                            return
                        }
                        this.lock = !0, this._mdf = !1;
                        var y;
                        this.kf ? y = this.pv : this.data.ks ? y = this.data.ks.k : y = this.data.pt.k;
                        var P, v = this.effectsSequence.length;
                        for (P = 0; P < v; P += 1) y = this.effectsSequence[P](y);
                        this.setVValue(y), this.lock = !1, this.frameId = this.elem.globalData.frameId
                    }
                }

                function d(y, P, v) {
                    this.propType = "shape", this.comp = y.comp, this.container = y, this.elem = y, this.data = P, this.k = !1, this.kf = !1, this._mdf = !1;
                    var _ = v === 3 ? P.pt.k : P.ks.k;
                    this.v = shapePool.clone(_), this.pv = shapePool.clone(this.v), this.localShapeCollection = shapeCollectionPool.newShapeCollection(), this.paths = this.localShapeCollection, this.paths.addShape(this.v), this.reset = s, this.effectsSequence = []
                }

                function c(y) {
                    this.effectsSequence.push(y), this.container.addDynamicProperty(this)
                }
                d.prototype.interpolateShape = e, d.prototype.getValue = f, d.prototype.setVValue = o, d.prototype.addEffect = c;

                function m(y, P, v) {
                    this.propType = "shape", this.comp = y.comp, this.elem = y, this.container = y, this.offsetTime = y.data.st, this.keyframes = v === 3 ? P.pt.k : P.ks.k, this.keyframesMetadata = [], this.k = !0, this.kf = !0;
                    var _ = this.keyframes[0].s[0].i.length;
                    this.v = shapePool.newElement(), this.v.setPathData(this.keyframes[0].s[0].c, _), this.pv = shapePool.clone(this.v), this.localShapeCollection = shapeCollectionPool.newShapeCollection(), this.paths = this.localShapeCollection, this.paths.addShape(this.v), this.lastFrame = t, this.reset = s, this._caching = {
                        lastFrame: t,
                        lastIndex: 0
                    }, this.effectsSequence = [r.bind(this)]
                }
                m.prototype.getValue = f, m.prototype.interpolateShape = e, m.prototype.setVValue = o, m.prototype.addEffect = c;
                var S = function() {
                        var y = roundCorner;

                        function P(v, _) {
                            this.v = shapePool.newElement(), this.v.setPathData(!0, 4), this.localShapeCollection = shapeCollectionPool.newShapeCollection(), this.paths = this.localShapeCollection, this.localShapeCollection.addShape(this.v), this.d = _.d, this.elem = v, this.comp = v.comp, this.frameId = -1, this.initDynamicPropertyContainer(v), this.p = PropertyFactory.getProp(v, _.p, 1, 0, this), this.s = PropertyFactory.getProp(v, _.s, 1, 0, this), this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertEllToPath())
                        }
                        return P.prototype = {
                            reset: s,
                            getValue: function() {
                                this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertEllToPath())
                            },
                            convertEllToPath: function() {
                                var _ = this.p.v[0],
                                    V = this.p.v[1],
                                    N = this.s.v[0] / 2,
                                    Z = this.s.v[1] / 2,
                                    J = this.d !== 3,
                                    ht = this.v;
                                ht.v[0][0] = _, ht.v[0][1] = V - Z, ht.v[1][0] = J ? _ + N : _ - N, ht.v[1][1] = V, ht.v[2][0] = _, ht.v[2][1] = V + Z, ht.v[3][0] = J ? _ - N : _ + N, ht.v[3][1] = V, ht.i[0][0] = J ? _ - N * y : _ + N * y, ht.i[0][1] = V - Z, ht.i[1][0] = J ? _ + N : _ - N, ht.i[1][1] = V - Z * y, ht.i[2][0] = J ? _ + N * y : _ - N * y, ht.i[2][1] = V + Z, ht.i[3][0] = J ? _ - N : _ + N, ht.i[3][1] = V + Z * y, ht.o[0][0] = J ? _ + N * y : _ - N * y, ht.o[0][1] = V - Z, ht.o[1][0] = J ? _ + N : _ - N, ht.o[1][1] = V + Z * y, ht.o[2][0] = J ? _ - N * y : _ + N * y, ht.o[2][1] = V + Z, ht.o[3][0] = J ? _ - N : _ + N, ht.o[3][1] = V - Z * y
                            }
                        }, extendPrototype([DynamicPropertyContainer], P), P
                    }(),
                    M = function() {
                        function y(P, v) {
                            this.v = shapePool.newElement(), this.v.setPathData(!0, 0), this.elem = P, this.comp = P.comp, this.data = v, this.frameId = -1, this.d = v.d, this.initDynamicPropertyContainer(P), v.sy === 1 ? (this.ir = PropertyFactory.getProp(P, v.ir, 0, 0, this), this.is = PropertyFactory.getProp(P, v.is, 0, .01, this), this.convertToPath = this.convertStarToPath) : this.convertToPath = this.convertPolygonToPath, this.pt = PropertyFactory.getProp(P, v.pt, 0, 0, this), this.p = PropertyFactory.getProp(P, v.p, 1, 0, this), this.r = PropertyFactory.getProp(P, v.r, 0, degToRads, this), this.or = PropertyFactory.getProp(P, v.or, 0, 0, this), this.os = PropertyFactory.getProp(P, v.os, 0, .01, this), this.localShapeCollection = shapeCollectionPool.newShapeCollection(), this.localShapeCollection.addShape(this.v), this.paths = this.localShapeCollection, this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertToPath())
                        }
                        return y.prototype = {
                            reset: s,
                            getValue: function() {
                                this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertToPath())
                            },
                            convertStarToPath: function() {
                                var v = Math.floor(this.pt.v) * 2,
                                    _ = Math.PI * 2 / v,
                                    V = !0,
                                    N = this.or.v,
                                    Z = this.ir.v,
                                    J = this.os.v,
                                    ht = this.is.v,
                                    vt = 2 * Math.PI * N / (v * 2),
                                    ct = 2 * Math.PI * Z / (v * 2),
                                    ft, yt, bt, lt, D = -Math.PI / 2;
                                D += this.r.v;
                                var X = this.data.d === 3 ? -1 : 1;
                                for (this.v._length = 0, ft = 0; ft < v; ft += 1) {
                                    yt = V ? N : Z, bt = V ? J : ht, lt = V ? vt : ct;
                                    var E = yt * Math.cos(D),
                                        w = yt * Math.sin(D),
                                        nt = E === 0 && w === 0 ? 0 : w / Math.sqrt(E * E + w * w),
                                        tt = E === 0 && w === 0 ? 0 : -E / Math.sqrt(E * E + w * w);
                                    E += +this.p.v[0], w += +this.p.v[1], this.v.setTripleAt(E, w, E - nt * lt * bt * X, w - tt * lt * bt * X, E + nt * lt * bt * X, w + tt * lt * bt * X, ft, !0), V = !V, D += _ * X
                                }
                            },
                            convertPolygonToPath: function() {
                                var v = Math.floor(this.pt.v),
                                    _ = Math.PI * 2 / v,
                                    V = this.or.v,
                                    N = this.os.v,
                                    Z = 2 * Math.PI * V / (v * 4),
                                    J, ht = -Math.PI * .5,
                                    vt = this.data.d === 3 ? -1 : 1;
                                for (ht += this.r.v, this.v._length = 0, J = 0; J < v; J += 1) {
                                    var ct = V * Math.cos(ht),
                                        ft = V * Math.sin(ht),
                                        yt = ct === 0 && ft === 0 ? 0 : ft / Math.sqrt(ct * ct + ft * ft),
                                        bt = ct === 0 && ft === 0 ? 0 : -ct / Math.sqrt(ct * ct + ft * ft);
                                    ct += +this.p.v[0], ft += +this.p.v[1], this.v.setTripleAt(ct, ft, ct - yt * Z * N * vt, ft - bt * Z * N * vt, ct + yt * Z * N * vt, ft + bt * Z * N * vt, J, !0), ht += _ * vt
                                }
                                this.paths.length = 0, this.paths[0] = this.v
                            }
                        }, extendPrototype([DynamicPropertyContainer], y), y
                    }(),
                    g = function() {
                        function y(P, v) {
                            this.v = shapePool.newElement(), this.v.c = !0, this.localShapeCollection = shapeCollectionPool.newShapeCollection(), this.localShapeCollection.addShape(this.v), this.paths = this.localShapeCollection, this.elem = P, this.comp = P.comp, this.frameId = -1, this.d = v.d, this.initDynamicPropertyContainer(P), this.p = PropertyFactory.getProp(P, v.p, 1, 0, this), this.s = PropertyFactory.getProp(P, v.s, 1, 0, this), this.r = PropertyFactory.getProp(P, v.r, 0, 0, this), this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertRectToPath())
                        }
                        return y.prototype = {
                            convertRectToPath: function() {
                                var v = this.p.v[0],
                                    _ = this.p.v[1],
                                    V = this.s.v[0] / 2,
                                    N = this.s.v[1] / 2,
                                    Z = bmMin(V, N, this.r.v),
                                    J = Z * (1 - roundCorner);
                                this.v._length = 0, this.d === 2 || this.d === 1 ? (this.v.setTripleAt(v + V, _ - N + Z, v + V, _ - N + Z, v + V, _ - N + J, 0, !0), this.v.setTripleAt(v + V, _ + N - Z, v + V, _ + N - J, v + V, _ + N - Z, 1, !0), Z !== 0 ? (this.v.setTripleAt(v + V - Z, _ + N, v + V - Z, _ + N, v + V - J, _ + N, 2, !0), this.v.setTripleAt(v - V + Z, _ + N, v - V + J, _ + N, v - V + Z, _ + N, 3, !0), this.v.setTripleAt(v - V, _ + N - Z, v - V, _ + N - Z, v - V, _ + N - J, 4, !0), this.v.setTripleAt(v - V, _ - N + Z, v - V, _ - N + J, v - V, _ - N + Z, 5, !0), this.v.setTripleAt(v - V + Z, _ - N, v - V + Z, _ - N, v - V + J, _ - N, 6, !0), this.v.setTripleAt(v + V - Z, _ - N, v + V - J, _ - N, v + V - Z, _ - N, 7, !0)) : (this.v.setTripleAt(v - V, _ + N, v - V + J, _ + N, v - V, _ + N, 2), this.v.setTripleAt(v - V, _ - N, v - V, _ - N + J, v - V, _ - N, 3))) : (this.v.setTripleAt(v + V, _ - N + Z, v + V, _ - N + J, v + V, _ - N + Z, 0, !0), Z !== 0 ? (this.v.setTripleAt(v + V - Z, _ - N, v + V - Z, _ - N, v + V - J, _ - N, 1, !0), this.v.setTripleAt(v - V + Z, _ - N, v - V + J, _ - N, v - V + Z, _ - N, 2, !0), this.v.setTripleAt(v - V, _ - N + Z, v - V, _ - N + Z, v - V, _ - N + J, 3, !0), this.v.setTripleAt(v - V, _ + N - Z, v - V, _ + N - J, v - V, _ + N - Z, 4, !0), this.v.setTripleAt(v - V + Z, _ + N, v - V + Z, _ + N, v - V + J, _ + N, 5, !0), this.v.setTripleAt(v + V - Z, _ + N, v + V - J, _ + N, v + V - Z, _ + N, 6, !0), this.v.setTripleAt(v + V, _ + N - Z, v + V, _ + N - Z, v + V, _ + N - J, 7, !0)) : (this.v.setTripleAt(v - V, _ - N, v - V + J, _ - N, v - V, _ - N, 1, !0), this.v.setTripleAt(v - V, _ + N, v - V, _ + N - J, v - V, _ + N, 2, !0), this.v.setTripleAt(v + V, _ + N, v + V - J, _ + N, v + V, _ + N, 3, !0)))
                            },
                            getValue: function() {
                                this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertRectToPath())
                            },
                            reset: s
                        }, extendPrototype([DynamicPropertyContainer], y), y
                    }();

                function k(y, P, v) {
                    var _;
                    if (v === 3 || v === 4) {
                        var V = v === 3 ? P.pt : P.ks,
                            N = V.k;
                        N.length ? _ = new m(y, P, v) : _ = new d(y, P, v)
                    } else v === 5 ? _ = new g(y, P) : v === 6 ? _ = new S(y, P) : v === 7 && (_ = new M(y, P));
                    return _.k && y.addDynamicProperty(_), _
                }

                function C() {
                    return d
                }

                function b() {
                    return m
                }
                var G = {};
                return G.getShapeProp = k, G.getConstructorFunction = C, G.getKeyframedConstructorFunction = b, G
            }();
        /*!
         Transformation Matrix v2.0
         (c) Epistemex 2014-2015
         www.epistemex.com
         By Ken Fyrstenberg
         Contributions by leeoniya.
         License: MIT, header required.
         */
        var Matrix = function() {
            var t = Math.cos,
                e = Math.sin,
                r = Math.tan,
                s = Math.round;

            function a() {
                return this.props[0] = 1, this.props[1] = 0, this.props[2] = 0, this.props[3] = 0, this.props[4] = 0, this.props[5] = 1, this.props[6] = 0, this.props[7] = 0, this.props[8] = 0, this.props[9] = 0, this.props[10] = 1, this.props[11] = 0, this.props[12] = 0, this.props[13] = 0, this.props[14] = 0, this.props[15] = 1, this
            }

            function o(E) {
                if (E === 0) return this;
                var w = t(E),
                    nt = e(E);
                return this._t(w, -nt, 0, 0, nt, w, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
            }

            function f(E) {
                if (E === 0) return this;
                var w = t(E),
                    nt = e(E);
                return this._t(1, 0, 0, 0, 0, w, -nt, 0, 0, nt, w, 0, 0, 0, 0, 1)
            }

            function d(E) {
                if (E === 0) return this;
                var w = t(E),
                    nt = e(E);
                return this._t(w, 0, nt, 0, 0, 1, 0, 0, -nt, 0, w, 0, 0, 0, 0, 1)
            }

            function c(E) {
                if (E === 0) return this;
                var w = t(E),
                    nt = e(E);
                return this._t(w, -nt, 0, 0, nt, w, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
            }

            function m(E, w) {
                return this._t(1, w, E, 1, 0, 0)
            }

            function S(E, w) {
                return this.shear(r(E), r(w))
            }

            function M(E, w) {
                var nt = t(w),
                    tt = e(w);
                return this._t(nt, tt, 0, 0, -tt, nt, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, r(E), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(nt, -tt, 0, 0, tt, nt, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
            }

            function g(E, w, nt) {
                return !nt && nt !== 0 && (nt = 1), E === 1 && w === 1 && nt === 1 ? this : this._t(E, 0, 0, 0, 0, w, 0, 0, 0, 0, nt, 0, 0, 0, 0, 1)
            }

            function k(E, w, nt, tt, gt, Tt, Mt, Lt, Vt, Nt, qt, re, Kt, _t, $t, Rt) {
                return this.props[0] = E, this.props[1] = w, this.props[2] = nt, this.props[3] = tt, this.props[4] = gt, this.props[5] = Tt, this.props[6] = Mt, this.props[7] = Lt, this.props[8] = Vt, this.props[9] = Nt, this.props[10] = qt, this.props[11] = re, this.props[12] = Kt, this.props[13] = _t, this.props[14] = $t, this.props[15] = Rt, this
            }

            function C(E, w, nt) {
                return nt = nt || 0, E !== 0 || w !== 0 || nt !== 0 ? this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, E, w, nt, 1) : this
            }

            function b(E, w, nt, tt, gt, Tt, Mt, Lt, Vt, Nt, qt, re, Kt, _t, $t, Rt) {
                var St = this.props;
                if (E === 1 && w === 0 && nt === 0 && tt === 0 && gt === 0 && Tt === 1 && Mt === 0 && Lt === 0 && Vt === 0 && Nt === 0 && qt === 1 && re === 0) return St[12] = St[12] * E + St[15] * Kt, St[13] = St[13] * Tt + St[15] * _t, St[14] = St[14] * qt + St[15] * $t, St[15] *= Rt, this._identityCalculated = !1, this;
                var ue = St[0],
                    Se = St[1],
                    ve = St[2],
                    Jt = St[3],
                    ge = St[4],
                    ye = St[5],
                    Ut = St[6],
                    se = St[7],
                    Et = St[8],
                    Ot = St[9],
                    ne = St[10],
                    ae = St[11],
                    ce = St[12],
                    qe = St[13],
                    We = St[14],
                    Ue = St[15];
                return St[0] = ue * E + Se * gt + ve * Vt + Jt * Kt, St[1] = ue * w + Se * Tt + ve * Nt + Jt * _t, St[2] = ue * nt + Se * Mt + ve * qt + Jt * $t, St[3] = ue * tt + Se * Lt + ve * re + Jt * Rt, St[4] = ge * E + ye * gt + Ut * Vt + se * Kt, St[5] = ge * w + ye * Tt + Ut * Nt + se * _t, St[6] = ge * nt + ye * Mt + Ut * qt + se * $t, St[7] = ge * tt + ye * Lt + Ut * re + se * Rt, St[8] = Et * E + Ot * gt + ne * Vt + ae * Kt, St[9] = Et * w + Ot * Tt + ne * Nt + ae * _t, St[10] = Et * nt + Ot * Mt + ne * qt + ae * $t, St[11] = Et * tt + Ot * Lt + ne * re + ae * Rt, St[12] = ce * E + qe * gt + We * Vt + Ue * Kt, St[13] = ce * w + qe * Tt + We * Nt + Ue * _t, St[14] = ce * nt + qe * Mt + We * qt + Ue * $t, St[15] = ce * tt + qe * Lt + We * re + Ue * Rt, this._identityCalculated = !1, this
            }

            function G(E) {
                var w = E.props;
                return this.transform(w[0], w[1], w[2], w[3], w[4], w[5], w[6], w[7], w[8], w[9], w[10], w[11], w[12], w[13], w[14], w[15])
            }

            function y() {
                return this._identityCalculated || (this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1), this._identityCalculated = !0), this._identity
            }

            function P(E) {
                for (var w = 0; w < 16;) {
                    if (E.props[w] !== this.props[w]) return !1;
                    w += 1
                }
                return !0
            }

            function v(E) {
                var w;
                for (w = 0; w < 16; w += 1) E.props[w] = this.props[w];
                return E
            }

            function _(E) {
                var w;
                for (w = 0; w < 16; w += 1) this.props[w] = E[w]
            }

            function V(E, w, nt) {
                return {
                    x: E * this.props[0] + w * this.props[4] + nt * this.props[8] + this.props[12],
                    y: E * this.props[1] + w * this.props[5] + nt * this.props[9] + this.props[13],
                    z: E * this.props[2] + w * this.props[6] + nt * this.props[10] + this.props[14]
                }
            }

            function N(E, w, nt) {
                return E * this.props[0] + w * this.props[4] + nt * this.props[8] + this.props[12]
            }

            function Z(E, w, nt) {
                return E * this.props[1] + w * this.props[5] + nt * this.props[9] + this.props[13]
            }

            function J(E, w, nt) {
                return E * this.props[2] + w * this.props[6] + nt * this.props[10] + this.props[14]
            }

            function ht() {
                var E = this.props[0] * this.props[5] - this.props[1] * this.props[4],
                    w = this.props[5] / E,
                    nt = -this.props[1] / E,
                    tt = -this.props[4] / E,
                    gt = this.props[0] / E,
                    Tt = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / E,
                    Mt = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / E,
                    Lt = new Matrix;
                return Lt.props[0] = w, Lt.props[1] = nt, Lt.props[4] = tt, Lt.props[5] = gt, Lt.props[12] = Tt, Lt.props[13] = Mt, Lt
            }

            function vt(E) {
                var w = this.getInverseMatrix();
                return w.applyToPointArray(E[0], E[1], E[2] || 0)
            }

            function ct(E) {
                var w, nt = E.length,
                    tt = [];
                for (w = 0; w < nt; w += 1) tt[w] = vt(E[w]);
                return tt
            }

            function ft(E, w, nt) {
                var tt = createTypedArray("float32", 6);
                if (this.isIdentity()) tt[0] = E[0], tt[1] = E[1], tt[2] = w[0], tt[3] = w[1], tt[4] = nt[0], tt[5] = nt[1];
                else {
                    var gt = this.props[0],
                        Tt = this.props[1],
                        Mt = this.props[4],
                        Lt = this.props[5],
                        Vt = this.props[12],
                        Nt = this.props[13];
                    tt[0] = E[0] * gt + E[1] * Mt + Vt, tt[1] = E[0] * Tt + E[1] * Lt + Nt, tt[2] = w[0] * gt + w[1] * Mt + Vt, tt[3] = w[0] * Tt + w[1] * Lt + Nt, tt[4] = nt[0] * gt + nt[1] * Mt + Vt, tt[5] = nt[0] * Tt + nt[1] * Lt + Nt
                }
                return tt
            }

            function yt(E, w, nt) {
                var tt;
                return this.isIdentity() ? tt = [E, w, nt] : tt = [E * this.props[0] + w * this.props[4] + nt * this.props[8] + this.props[12], E * this.props[1] + w * this.props[5] + nt * this.props[9] + this.props[13], E * this.props[2] + w * this.props[6] + nt * this.props[10] + this.props[14]], tt
            }

            function bt(E, w) {
                if (this.isIdentity()) return E + "," + w;
                var nt = this.props;
                return Math.round((E * nt[0] + w * nt[4] + nt[12]) * 100) / 100 + "," + Math.round((E * nt[1] + w * nt[5] + nt[13]) * 100) / 100
            }

            function lt() {
                for (var E = 0, w = this.props, nt = "matrix3d(", tt = 1e4; E < 16;) nt += s(w[E] * tt) / tt, nt += E === 15 ? ")" : ",", E += 1;
                return nt
            }

            function D(E) {
                var w = 1e4;
                return E < 1e-6 && E > 0 || E > -1e-6 && E < 0 ? s(E * w) / w : E
            }

            function X() {
                var E = this.props,
                    w = D(E[0]),
                    nt = D(E[1]),
                    tt = D(E[4]),
                    gt = D(E[5]),
                    Tt = D(E[12]),
                    Mt = D(E[13]);
                return "matrix(" + w + "," + nt + "," + tt + "," + gt + "," + Tt + "," + Mt + ")"
            }
            return function() {
                this.reset = a, this.rotate = o, this.rotateX = f, this.rotateY = d, this.rotateZ = c, this.skew = S, this.skewFromAxis = M, this.shear = m, this.scale = g, this.setTransform = k, this.translate = C, this.transform = b, this.multiply = G, this.applyToPoint = V, this.applyToX = N, this.applyToY = Z, this.applyToZ = J, this.applyToPointArray = yt, this.applyToTriplePoints = ft, this.applyToPointStringified = bt, this.toCSS = lt, this.to2dCSS = X, this.clone = v, this.cloneFromProps = _, this.equals = P, this.inversePoints = ct, this.inversePoint = vt, this.getInverseMatrix = ht, this._t = this.transform, this.isIdentity = y, this._identity = !0, this._identityCalculated = !1, this.props = createTypedArray("float32", 16), this.reset()
            }
        }();

        function _typeof$3(t) {
            "@babel/helpers - typeof";
            return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? _typeof$3 = function(r) {
                return typeof r
            } : _typeof$3 = function(r) {
                return r && typeof Symbol == "function" && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r
            }, _typeof$3(t)
        }
        var lottie = {};

        function setLocation(t) {
            setLocationHref(t)
        }

        function searchAnimations() {
            animationManager.searchAnimations()
        }

        function setSubframeRendering(t) {
            setSubframeEnabled(t)
        }

        function setPrefix(t) {
            setIdPrefix(t)
        }

        function loadAnimation(t) {
            return animationManager.loadAnimation(t)
        }

        function setQuality(t) {
            if (typeof t == "string") switch (t) {
                case "high":
                    setDefaultCurveSegments(200);
                    break;
                default:
                case "medium":
                    setDefaultCurveSegments(50);
                    break;
                case "low":
                    setDefaultCurveSegments(10);
                    break
            } else !isNaN(t) && t > 1 && setDefaultCurveSegments(t)
        }

        function inBrowser() {
            return typeof navigator < "u"
        }

        function installPlugin(t, e) {
            t === "expressions" && setExpressionsPlugin(e)
        }

        function getFactory(t) {
            switch (t) {
                case "propertyFactory":
                    return PropertyFactory;
                case "shapePropertyFactory":
                    return ShapePropertyFactory;
                case "matrix":
                    return Matrix;
                default:
                    return null
            }
        }
        lottie.play = animationManager.play, lottie.pause = animationManager.pause, lottie.setLocationHref = setLocation, lottie.togglePause = animationManager.togglePause, lottie.setSpeed = animationManager.setSpeed, lottie.setDirection = animationManager.setDirection, lottie.stop = animationManager.stop, lottie.searchAnimations = searchAnimations, lottie.registerAnimation = animationManager.registerAnimation, lottie.loadAnimation = loadAnimation, lottie.setSubframeRendering = setSubframeRendering, lottie.resize = animationManager.resize, lottie.goToAndStop = animationManager.goToAndStop, lottie.destroy = animationManager.destroy, lottie.setQuality = setQuality, lottie.inBrowser = inBrowser, lottie.installPlugin = installPlugin, lottie.freeze = animationManager.freeze, lottie.unfreeze = animationManager.unfreeze, lottie.setVolume = animationManager.setVolume, lottie.mute = animationManager.mute, lottie.unmute = animationManager.unmute, lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations, lottie.useWebWorker = setWebWorker, lottie.setIDPrefix = setPrefix, lottie.__getFactory = getFactory, lottie.version = "5.12.2";

        function checkReady() {
            document.readyState === "complete" && (clearInterval(readyStateCheckInterval), searchAnimations())
        }

        function getQueryVariable(t) {
            for (var e = queryString.split("&"), r = 0; r < e.length; r += 1) {
                var s = e[r].split("=");
                if (decodeURIComponent(s[0]) == t) return decodeURIComponent(s[1])
            }
            return null
        }
        var queryString = ""; {
            var scripts = document.getElementsByTagName("script"),
                index = scripts.length - 1,
                myScript = scripts[index] || {
                    src: ""
                };
            queryString = myScript.src ? myScript.src.replace(/^[^\?]+\??/, "") : "", getQueryVariable("renderer")
        }
        var readyStateCheckInterval = setInterval(checkReady, 100);
        try {
            _typeof$3(exports) !== "object" && (window.bodymovin = lottie)
        } catch (t) {}
        var ShapeModifiers = function() {
            var t = {},
                e = {};
            t.registerModifier = r, t.getModifier = s;

            function r(a, o) {
                e[a] || (e[a] = o)
            }

            function s(a, o, f) {
                return new e[a](o, f)
            }
            return t
        }();

        function ShapeModifier() {}
        ShapeModifier.prototype.initModifierProperties = function() {}, ShapeModifier.prototype.addShapeToModifier = function() {}, ShapeModifier.prototype.addShape = function(t) {
            if (!this.closed) {
                t.sh.container.addDynamicProperty(t.sh);
                var e = {
                    shape: t.sh,
                    data: t,
                    localShapeCollection: shapeCollectionPool.newShapeCollection()
                };
                this.shapes.push(e), this.addShapeToModifier(e), this._isAnimated && t.setAsAnimated()
            }
        }, ShapeModifier.prototype.init = function(t, e) {
            this.shapes = [], this.elem = t, this.initDynamicPropertyContainer(t), this.initModifierProperties(t, e), this.frameId = initialDefaultFrame, this.closed = !1, this.k = !1, this.dynamicProperties.length ? this.k = !0 : this.getValue(!0)
        }, ShapeModifier.prototype.processKeys = function() {
            this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties())
        }, extendPrototype([DynamicPropertyContainer], ShapeModifier);

        function TrimModifier() {}
        extendPrototype([ShapeModifier], TrimModifier), TrimModifier.prototype.initModifierProperties = function(t, e) {
            this.s = PropertyFactory.getProp(t, e.s, 0, .01, this), this.e = PropertyFactory.getProp(t, e.e, 0, .01, this), this.o = PropertyFactory.getProp(t, e.o, 0, 0, this), this.sValue = 0, this.eValue = 0, this.getValue = this.processKeys, this.m = e.m, this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length
        }, TrimModifier.prototype.addShapeToModifier = function(t) {
            t.pathsData = []
        }, TrimModifier.prototype.calculateShapeEdges = function(t, e, r, s, a) {
            var o = [];
            e <= 1 ? o.push({
                s: t,
                e
            }) : t >= 1 ? o.push({
                s: t - 1,
                e: e - 1
            }) : (o.push({
                s: t,
                e: 1
            }), o.push({
                s: 0,
                e: e - 1
            }));
            var f = [],
                d, c = o.length,
                m;
            for (d = 0; d < c; d += 1)
                if (m = o[d], !(m.e * a < s || m.s * a > s + r)) {
                    var S, M;
                    m.s * a <= s ? S = 0 : S = (m.s * a - s) / r, m.e * a >= s + r ? M = 1 : M = (m.e * a - s) / r, f.push([S, M])
                }
            return f.length || f.push([0, 0]), f
        }, TrimModifier.prototype.releasePathsData = function(t) {
            var e, r = t.length;
            for (e = 0; e < r; e += 1) segmentsLengthPool.release(t[e]);
            return t.length = 0, t
        }, TrimModifier.prototype.processShapes = function(t) {
            var e, r;
            if (this._mdf || t) {
                var s = this.o.v % 360 / 360;
                if (s < 0 && (s += 1), this.s.v > 1 ? e = 1 + s : this.s.v < 0 ? e = 0 + s : e = this.s.v + s, this.e.v > 1 ? r = 1 + s : this.e.v < 0 ? r = 0 + s : r = this.e.v + s, e > r) {
                    var a = e;
                    e = r, r = a
                }
                e = Math.round(e * 1e4) * 1e-4, r = Math.round(r * 1e4) * 1e-4, this.sValue = e, this.eValue = r
            } else e = this.sValue, r = this.eValue;
            var o, f, d = this.shapes.length,
                c, m, S, M, g, k = 0;
            if (r === e)
                for (f = 0; f < d; f += 1) this.shapes[f].localShapeCollection.releaseShapes(), this.shapes[f].shape._mdf = !0, this.shapes[f].shape.paths = this.shapes[f].localShapeCollection, this._mdf && (this.shapes[f].pathsData.length = 0);
            else if (r === 1 && e === 0 || r === 0 && e === 1) {
                if (this._mdf)
                    for (f = 0; f < d; f += 1) this.shapes[f].pathsData.length = 0, this.shapes[f].shape._mdf = !0
            } else {
                var C = [],
                    b, G;
                for (f = 0; f < d; f += 1)
                    if (b = this.shapes[f], !b.shape._mdf && !this._mdf && !t && this.m !== 2) b.shape.paths = b.localShapeCollection;
                    else {
                        if (o = b.shape.paths, m = o._length, g = 0, !b.shape._mdf && b.pathsData.length) g = b.totalShapeLength;
                        else {
                            for (S = this.releasePathsData(b.pathsData), c = 0; c < m; c += 1) M = bez.getSegmentsLength(o.shapes[c]), S.push(M), g += M.totalLength;
                            b.totalShapeLength = g, b.pathsData = S
                        }
                        k += g, b.shape._mdf = !0
                    }
                var y = e,
                    P = r,
                    v = 0,
                    _;
                for (f = d - 1; f >= 0; f -= 1)
                    if (b = this.shapes[f], b.shape._mdf) {
                        for (G = b.localShapeCollection, G.releaseShapes(), this.m === 2 && d > 1 ? (_ = this.calculateShapeEdges(e, r, b.totalShapeLength, v, k), v += b.totalShapeLength) : _ = [
                                [y, P]
                            ], m = _.length, c = 0; c < m; c += 1) {
                            y = _[c][0], P = _[c][1], C.length = 0, P <= 1 ? C.push({
                                s: b.totalShapeLength * y,
                                e: b.totalShapeLength * P
                            }) : y >= 1 ? C.push({
                                s: b.totalShapeLength * (y - 1),
                                e: b.totalShapeLength * (P - 1)
                            }) : (C.push({
                                s: b.totalShapeLength * y,
                                e: b.totalShapeLength
                            }), C.push({
                                s: 0,
                                e: b.totalShapeLength * (P - 1)
                            }));
                            var V = this.addShapes(b, C[0]);
                            if (C[0].s !== C[0].e) {
                                if (C.length > 1) {
                                    var N = b.shape.paths.shapes[b.shape.paths._length - 1];
                                    if (N.c) {
                                        var Z = V.pop();
                                        this.addPaths(V, G), V = this.addShapes(b, C[1], Z)
                                    } else this.addPaths(V, G), V = this.addShapes(b, C[1])
                                }
                                this.addPaths(V, G)
                            }
                        }
                        b.shape.paths = G
                    }
            }
        }, TrimModifier.prototype.addPaths = function(t, e) {
            var r, s = t.length;
            for (r = 0; r < s; r += 1) e.addShape(t[r])
        }, TrimModifier.prototype.addSegment = function(t, e, r, s, a, o, f) {
            a.setXYAt(e[0], e[1], "o", o), a.setXYAt(r[0], r[1], "i", o + 1), f && a.setXYAt(t[0], t[1], "v", o), a.setXYAt(s[0], s[1], "v", o + 1)
        }, TrimModifier.prototype.addSegmentFromArray = function(t, e, r, s) {
            e.setXYAt(t[1], t[5], "o", r), e.setXYAt(t[2], t[6], "i", r + 1), s && e.setXYAt(t[0], t[4], "v", r), e.setXYAt(t[3], t[7], "v", r + 1)
        }, TrimModifier.prototype.addShapes = function(t, e, r) {
            var s = t.pathsData,
                a = t.shape.paths.shapes,
                o, f = t.shape.paths._length,
                d, c, m = 0,
                S, M, g, k, C = [],
                b, G = !0;
            for (r ? (M = r._length, b = r._length) : (r = shapePool.newElement(), M = 0, b = 0), C.push(r), o = 0; o < f; o += 1) {
                for (g = s[o].lengths, r.c = a[o].c, c = a[o].c ? g.length : g.length + 1, d = 1; d < c; d += 1)
                    if (S = g[d - 1], m + S.addedLength < e.s) m += S.addedLength, r.c = !1;
                    else if (m > e.e) {
                    r.c = !1;
                    break
                } else e.s <= m && e.e >= m + S.addedLength ? (this.addSegment(a[o].v[d - 1], a[o].o[d - 1], a[o].i[d], a[o].v[d], r, M, G), G = !1) : (k = bez.getNewSegment(a[o].v[d - 1], a[o].v[d], a[o].o[d - 1], a[o].i[d], (e.s - m) / S.addedLength, (e.e - m) / S.addedLength, g[d - 1]), this.addSegmentFromArray(k, r, M, G), G = !1, r.c = !1), m += S.addedLength, M += 1;
                if (a[o].c && g.length) {
                    if (S = g[d - 1], m <= e.e) {
                        var y = g[d - 1].addedLength;
                        e.s <= m && e.e >= m + y ? (this.addSegment(a[o].v[d - 1], a[o].o[d - 1], a[o].i[0], a[o].v[0], r, M, G), G = !1) : (k = bez.getNewSegment(a[o].v[d - 1], a[o].v[0], a[o].o[d - 1], a[o].i[0], (e.s - m) / y, (e.e - m) / y, g[d - 1]), this.addSegmentFromArray(k, r, M, G), G = !1, r.c = !1)
                    } else r.c = !1;
                    m += S.addedLength, M += 1
                }
                if (r._length && (r.setXYAt(r.v[b][0], r.v[b][1], "i", b), r.setXYAt(r.v[r._length - 1][0], r.v[r._length - 1][1], "o", r._length - 1)), m > e.e) break;
                o < f - 1 && (r = shapePool.newElement(), G = !0, C.push(r), M = 0)
            }
            return C
        };

        function PuckerAndBloatModifier() {}
        extendPrototype([ShapeModifier], PuckerAndBloatModifier), PuckerAndBloatModifier.prototype.initModifierProperties = function(t, e) {
            this.getValue = this.processKeys, this.amount = PropertyFactory.getProp(t, e.a, 0, null, this), this._isAnimated = !!this.amount.effectsSequence.length
        }, PuckerAndBloatModifier.prototype.processPath = function(t, e) {
            var r = e / 100,
                s = [0, 0],
                a = t._length,
                o = 0;
            for (o = 0; o < a; o += 1) s[0] += t.v[o][0], s[1] += t.v[o][1];
            s[0] /= a, s[1] /= a;
            var f = shapePool.newElement();
            f.c = t.c;
            var d, c, m, S, M, g;
            for (o = 0; o < a; o += 1) d = t.v[o][0] + (s[0] - t.v[o][0]) * r, c = t.v[o][1] + (s[1] - t.v[o][1]) * r, m = t.o[o][0] + (s[0] - t.o[o][0]) * -r, S = t.o[o][1] + (s[1] - t.o[o][1]) * -r, M = t.i[o][0] + (s[0] - t.i[o][0]) * -r, g = t.i[o][1] + (s[1] - t.i[o][1]) * -r, f.setTripleAt(d, c, m, S, M, g, o);
            return f
        }, PuckerAndBloatModifier.prototype.processShapes = function(t) {
            var e, r, s = this.shapes.length,
                a, o, f = this.amount.v;
            if (f !== 0) {
                var d, c;
                for (r = 0; r < s; r += 1) {
                    if (d = this.shapes[r], c = d.localShapeCollection, !(!d.shape._mdf && !this._mdf && !t))
                        for (c.releaseShapes(), d.shape._mdf = !0, e = d.shape.paths.shapes, o = d.shape.paths._length, a = 0; a < o; a += 1) c.addShape(this.processPath(e[a], f));
                    d.shape.paths = d.localShapeCollection
                }
            }
            this.dynamicProperties.length || (this._mdf = !1)
        };
        var TransformPropertyFactory = function() {
            var t = [0, 0];

            function e(c) {
                var m = this._mdf;
                this.iterateDynamicProperties(), this._mdf = this._mdf || m, this.a && c.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]), this.s && c.scale(this.s.v[0], this.s.v[1], this.s.v[2]), this.sk && c.skewFromAxis(-this.sk.v, this.sa.v), this.r ? c.rotate(-this.r.v) : c.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]), this.data.p.s ? this.data.p.z ? c.translate(this.px.v, this.py.v, -this.pz.v) : c.translate(this.px.v, this.py.v, 0) : c.translate(this.p.v[0], this.p.v[1], -this.p.v[2])
            }

            function r(c) {
                if (this.elem.globalData.frameId !== this.frameId) {
                    if (this._isDirty && (this.precalculateMatrix(), this._isDirty = !1), this.iterateDynamicProperties(), this._mdf || c) {
                        var m;
                        if (this.v.cloneFromProps(this.pre.props), this.appliedTransformations < 1 && this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]), this.appliedTransformations < 2 && this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]), this.sk && this.appliedTransformations < 3 && this.v.skewFromAxis(-this.sk.v, this.sa.v), this.r && this.appliedTransformations < 4 ? this.v.rotate(-this.r.v) : !this.r && this.appliedTransformations < 4 && this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]), this.autoOriented) {
                            var S, M;
                            if (m = this.elem.globalData.frameRate, this.p && this.p.keyframes && this.p.getValueAtTime) this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t ? (S = this.p.getValueAtTime((this.p.keyframes[0].t + .01) / m, 0), M = this.p.getValueAtTime(this.p.keyframes[0].t / m, 0)) : this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t ? (S = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / m, 0), M = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - .05) / m, 0)) : (S = this.p.pv, M = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - .01) / m, this.p.offsetTime));
                            else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {
                                S = [], M = [];
                                var g = this.px,
                                    k = this.py;
                                g._caching.lastFrame + g.offsetTime <= g.keyframes[0].t ? (S[0] = g.getValueAtTime((g.keyframes[0].t + .01) / m, 0), S[1] = k.getValueAtTime((k.keyframes[0].t + .01) / m, 0), M[0] = g.getValueAtTime(g.keyframes[0].t / m, 0), M[1] = k.getValueAtTime(k.keyframes[0].t / m, 0)) : g._caching.lastFrame + g.offsetTime >= g.keyframes[g.keyframes.length - 1].t ? (S[0] = g.getValueAtTime(g.keyframes[g.keyframes.length - 1].t / m, 0), S[1] = k.getValueAtTime(k.keyframes[k.keyframes.length - 1].t / m, 0), M[0] = g.getValueAtTime((g.keyframes[g.keyframes.length - 1].t - .01) / m, 0), M[1] = k.getValueAtTime((k.keyframes[k.keyframes.length - 1].t - .01) / m, 0)) : (S = [g.pv, k.pv], M[0] = g.getValueAtTime((g._caching.lastFrame + g.offsetTime - .01) / m, g.offsetTime), M[1] = k.getValueAtTime((k._caching.lastFrame + k.offsetTime - .01) / m, k.offsetTime))
                            } else M = t, S = M;
                            this.v.rotate(-Math.atan2(S[1] - M[1], S[0] - M[0]))
                        }
                        this.data.p && this.data.p.s ? this.data.p.z ? this.v.translate(this.px.v, this.py.v, -this.pz.v) : this.v.translate(this.px.v, this.py.v, 0) : this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2])
                    }
                    this.frameId = this.elem.globalData.frameId
                }
            }

            function s() {
                if (this.appliedTransformations = 0, this.pre.reset(), !this.a.effectsSequence.length) this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]), this.appliedTransformations = 1;
                else return;
                if (!this.s.effectsSequence.length) this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]), this.appliedTransformations = 2;
                else return;
                if (this.sk)
                    if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) this.pre.skewFromAxis(-this.sk.v, this.sa.v), this.appliedTransformations = 3;
                    else return;
                this.r ? this.r.effectsSequence.length || (this.pre.rotate(-this.r.v), this.appliedTransformations = 4) : !this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length && (this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]), this.appliedTransformations = 4)
            }

            function a() {}

            function o(c) {
                this._addDynamicProperty(c), this.elem.addDynamicProperty(c), this._isDirty = !0
            }

            function f(c, m, S) {
                if (this.elem = c, this.frameId = -1, this.propType = "transform", this.data = m, this.v = new Matrix, this.pre = new Matrix, this.appliedTransformations = 0, this.initDynamicPropertyContainer(S || c), m.p && m.p.s ? (this.px = PropertyFactory.getProp(c, m.p.x, 0, 0, this), this.py = PropertyFactory.getProp(c, m.p.y, 0, 0, this), m.p.z && (this.pz = PropertyFactory.getProp(c, m.p.z, 0, 0, this))) : this.p = PropertyFactory.getProp(c, m.p || {
                        k: [0, 0, 0]
                    }, 1, 0, this), m.rx) {
                    if (this.rx = PropertyFactory.getProp(c, m.rx, 0, degToRads, this), this.ry = PropertyFactory.getProp(c, m.ry, 0, degToRads, this), this.rz = PropertyFactory.getProp(c, m.rz, 0, degToRads, this), m.or.k[0].ti) {
                        var M, g = m.or.k.length;
                        for (M = 0; M < g; M += 1) m.or.k[M].to = null, m.or.k[M].ti = null
                    }
                    this.or = PropertyFactory.getProp(c, m.or, 1, degToRads, this), this.or.sh = !0
                } else this.r = PropertyFactory.getProp(c, m.r || {
                    k: 0
                }, 0, degToRads, this);
                m.sk && (this.sk = PropertyFactory.getProp(c, m.sk, 0, degToRads, this), this.sa = PropertyFactory.getProp(c, m.sa, 0, degToRads, this)), this.a = PropertyFactory.getProp(c, m.a || {
                    k: [0, 0, 0]
                }, 1, 0, this), this.s = PropertyFactory.getProp(c, m.s || {
                    k: [100, 100, 100]
                }, 1, .01, this), m.o ? this.o = PropertyFactory.getProp(c, m.o, 0, .01, c) : this.o = {
                    _mdf: !1,
                    v: 1
                }, this._isDirty = !0, this.dynamicProperties.length || this.getValue(!0)
            }
            f.prototype = {
                applyToMatrix: e,
                getValue: r,
                precalculateMatrix: s,
                autoOrient: a
            }, extendPrototype([DynamicPropertyContainer], f), f.prototype.addDynamicProperty = o, f.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;

            function d(c, m, S) {
                return new f(c, m, S)
            }
            return {
                getTransformProperty: d
            }
        }();

        function RepeaterModifier() {}
        extendPrototype([ShapeModifier], RepeaterModifier), RepeaterModifier.prototype.initModifierProperties = function(t, e) {
            this.getValue = this.processKeys, this.c = PropertyFactory.getProp(t, e.c, 0, null, this), this.o = PropertyFactory.getProp(t, e.o, 0, null, this), this.tr = TransformPropertyFactory.getTransformProperty(t, e.tr, this), this.so = PropertyFactory.getProp(t, e.tr.so, 0, .01, this), this.eo = PropertyFactory.getProp(t, e.tr.eo, 0, .01, this), this.data = e, this.dynamicProperties.length || this.getValue(!0), this._isAnimated = !!this.dynamicProperties.length, this.pMatrix = new Matrix, this.rMatrix = new Matrix, this.sMatrix = new Matrix, this.tMatrix = new Matrix, this.matrix = new Matrix
        }, RepeaterModifier.prototype.applyTransforms = function(t, e, r, s, a, o) {
            var f = o ? -1 : 1,
                d = s.s.v[0] + (1 - s.s.v[0]) * (1 - a),
                c = s.s.v[1] + (1 - s.s.v[1]) * (1 - a);
            t.translate(s.p.v[0] * f * a, s.p.v[1] * f * a, s.p.v[2]), e.translate(-s.a.v[0], -s.a.v[1], s.a.v[2]), e.rotate(-s.r.v * f * a), e.translate(s.a.v[0], s.a.v[1], s.a.v[2]), r.translate(-s.a.v[0], -s.a.v[1], s.a.v[2]), r.scale(o ? 1 / d : d, o ? 1 / c : c), r.translate(s.a.v[0], s.a.v[1], s.a.v[2])
        }, RepeaterModifier.prototype.init = function(t, e, r, s) {
            for (this.elem = t, this.arr = e, this.pos = r, this.elemsData = s, this._currentCopies = 0, this._elements = [], this._groups = [], this.frameId = -1, this.initDynamicPropertyContainer(t), this.initModifierProperties(t, e[r]); r > 0;) r -= 1, this._elements.unshift(e[r]);
            this.dynamicProperties.length ? this.k = !0 : this.getValue(!0)
        }, RepeaterModifier.prototype.resetElements = function(t) {
            var e, r = t.length;
            for (e = 0; e < r; e += 1) t[e]._processed = !1, t[e].ty === "gr" && this.resetElements(t[e].it)
        }, RepeaterModifier.prototype.cloneElements = function(t) {
            var e = JSON.parse(JSON.stringify(t));
            return this.resetElements(e), e
        }, RepeaterModifier.prototype.changeGroupRender = function(t, e) {
            var r, s = t.length;
            for (r = 0; r < s; r += 1) t[r]._render = e, t[r].ty === "gr" && this.changeGroupRender(t[r].it, e)
        }, RepeaterModifier.prototype.processShapes = function(t) {
            var e, r, s, a, o, f = !1;
            if (this._mdf || t) {
                var d = Math.ceil(this.c.v);
                if (this._groups.length < d) {
                    for (; this._groups.length < d;) {
                        var c = {
                            it: this.cloneElements(this._elements),
                            ty: "gr"
                        };
                        c.it.push({
                            a: {
                                a: 0,
                                ix: 1,
                                k: [0, 0]
                            },
                            nm: "Transform",
                            o: {
                                a: 0,
                                ix: 7,
                                k: 100
                            },
                            p: {
                                a: 0,
                                ix: 2,
                                k: [0, 0]
                            },
                            r: {
                                a: 1,
                                ix: 6,
                                k: [{
                                    s: 0,
                                    e: 0,
                                    t: 0
                                }, {
                                    s: 0,
                                    e: 0,
                                    t: 1
                                }]
                            },
                            s: {
                                a: 0,
                                ix: 3,
                                k: [100, 100]
                            },
                            sa: {
                                a: 0,
                                ix: 5,
                                k: 0
                            },
                            sk: {
                                a: 0,
                                ix: 4,
                                k: 0
                            },
                            ty: "tr"
                        }), this.arr.splice(0, 0, c), this._groups.splice(0, 0, c), this._currentCopies += 1
                    }
                    this.elem.reloadShapes(), f = !0
                }
                o = 0;
                var m;
                for (s = 0; s <= this._groups.length - 1; s += 1) {
                    if (m = o < d, this._groups[s]._render = m, this.changeGroupRender(this._groups[s].it, m), !m) {
                        var S = this.elemsData[s].it,
                            M = S[S.length - 1];
                        M.transform.op.v !== 0 ? (M.transform.op._mdf = !0, M.transform.op.v = 0) : M.transform.op._mdf = !1
                    }
                    o += 1
                }
                this._currentCopies = d;
                var g = this.o.v,
                    k = g % 1,
                    C = g > 0 ? Math.floor(g) : Math.ceil(g),
                    b = this.pMatrix.props,
                    G = this.rMatrix.props,
                    y = this.sMatrix.props;
                this.pMatrix.reset(), this.rMatrix.reset(), this.sMatrix.reset(), this.tMatrix.reset(), this.matrix.reset();
                var P = 0;
                if (g > 0) {
                    for (; P < C;) this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !1), P += 1;
                    k && (this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, k, !1), P += k)
                } else if (g < 0) {
                    for (; P > C;) this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !0), P -= 1;
                    k && (this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -k, !0), P -= k)
                }
                s = this.data.m === 1 ? 0 : this._currentCopies - 1, a = this.data.m === 1 ? 1 : -1, o = this._currentCopies;
                for (var v, _; o;) {
                    if (e = this.elemsData[s].it, r = e[e.length - 1].transform.mProps.v.props, _ = r.length, e[e.length - 1].transform.mProps._mdf = !0, e[e.length - 1].transform.op._mdf = !0, e[e.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (s / (this._currentCopies - 1)), P !== 0) {
                        for ((s !== 0 && a === 1 || s !== this._currentCopies - 1 && a === -1) && this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !1), this.matrix.transform(G[0], G[1], G[2], G[3], G[4], G[5], G[6], G[7], G[8], G[9], G[10], G[11], G[12], G[13], G[14], G[15]), this.matrix.transform(y[0], y[1], y[2], y[3], y[4], y[5], y[6], y[7], y[8], y[9], y[10], y[11], y[12], y[13], y[14], y[15]), this.matrix.transform(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12], b[13], b[14], b[15]), v = 0; v < _; v += 1) r[v] = this.matrix.props[v];
                        this.matrix.reset()
                    } else
                        for (this.matrix.reset(), v = 0; v < _; v += 1) r[v] = this.matrix.props[v];
                    P += 1, o -= 1, s += a
                }
            } else
                for (o = this._currentCopies, s = 0, a = 1; o;) e = this.elemsData[s].it, r = e[e.length - 1].transform.mProps.v.props, e[e.length - 1].transform.mProps._mdf = !1, e[e.length - 1].transform.op._mdf = !1, o -= 1, s += a;
            return f
        }, RepeaterModifier.prototype.addShape = function() {};

        function RoundCornersModifier() {}
        extendPrototype([ShapeModifier], RoundCornersModifier), RoundCornersModifier.prototype.initModifierProperties = function(t, e) {
            this.getValue = this.processKeys, this.rd = PropertyFactory.getProp(t, e.r, 0, null, this), this._isAnimated = !!this.rd.effectsSequence.length
        }, RoundCornersModifier.prototype.processPath = function(t, e) {
            var r = shapePool.newElement();
            r.c = t.c;
            var s, a = t._length,
                o, f, d, c, m, S, M = 0,
                g, k, C, b, G, y;
            for (s = 0; s < a; s += 1) o = t.v[s], d = t.o[s], f = t.i[s], o[0] === d[0] && o[1] === d[1] && o[0] === f[0] && o[1] === f[1] ? (s === 0 || s === a - 1) && !t.c ? (r.setTripleAt(o[0], o[1], d[0], d[1], f[0], f[1], M), M += 1) : (s === 0 ? c = t.v[a - 1] : c = t.v[s - 1], m = Math.sqrt(Math.pow(o[0] - c[0], 2) + Math.pow(o[1] - c[1], 2)), S = m ? Math.min(m / 2, e) / m : 0, G = o[0] + (c[0] - o[0]) * S, g = G, y = o[1] - (o[1] - c[1]) * S, k = y, C = g - (g - o[0]) * roundCorner, b = k - (k - o[1]) * roundCorner, r.setTripleAt(g, k, C, b, G, y, M), M += 1, s === a - 1 ? c = t.v[0] : c = t.v[s + 1], m = Math.sqrt(Math.pow(o[0] - c[0], 2) + Math.pow(o[1] - c[1], 2)), S = m ? Math.min(m / 2, e) / m : 0, C = o[0] + (c[0] - o[0]) * S, g = C, b = o[1] + (c[1] - o[1]) * S, k = b, G = g - (g - o[0]) * roundCorner, y = k - (k - o[1]) * roundCorner, r.setTripleAt(g, k, C, b, G, y, M), M += 1) : (r.setTripleAt(t.v[s][0], t.v[s][1], t.o[s][0], t.o[s][1], t.i[s][0], t.i[s][1], M), M += 1);
            return r
        }, RoundCornersModifier.prototype.processShapes = function(t) {
            var e, r, s = this.shapes.length,
                a, o, f = this.rd.v;
            if (f !== 0) {
                var d, c;
                for (r = 0; r < s; r += 1) {
                    if (d = this.shapes[r], c = d.localShapeCollection, !(!d.shape._mdf && !this._mdf && !t))
                        for (c.releaseShapes(), d.shape._mdf = !0, e = d.shape.paths.shapes, o = d.shape.paths._length, a = 0; a < o; a += 1) c.addShape(this.processPath(e[a], f));
                    d.shape.paths = d.localShapeCollection
                }
            }
            this.dynamicProperties.length || (this._mdf = !1)
        };

        function floatEqual(t, e) {
            return Math.abs(t - e) * 1e5 <= Math.min(Math.abs(t), Math.abs(e))
        }

        function floatZero(t) {
            return Math.abs(t) <= 1e-5
        }

        function lerp(t, e, r) {
            return t * (1 - r) + e * r
        }

        function lerpPoint(t, e, r) {
            return [lerp(t[0], e[0], r), lerp(t[1], e[1], r)]
        }

        function quadRoots(t, e, r) {
            if (t === 0) return [];
            var s = e * e - 4 * t * r;
            if (s < 0) return [];
            var a = -e / (2 * t);
            if (s === 0) return [a];
            var o = Math.sqrt(s) / (2 * t);
            return [a - o, a + o]
        }

        function polynomialCoefficients(t, e, r, s) {
            return [-t + 3 * e - 3 * r + s, 3 * t - 6 * e + 3 * r, -3 * t + 3 * e, t]
        }

        function singlePoint(t) {
            return new PolynomialBezier(t, t, t, t, !1)
        }

        function PolynomialBezier(t, e, r, s, a) {
            a && pointEqual(t, e) && (e = lerpPoint(t, s, 1 / 3)), a && pointEqual(r, s) && (r = lerpPoint(t, s, 2 / 3));
            var o = polynomialCoefficients(t[0], e[0], r[0], s[0]),
                f = polynomialCoefficients(t[1], e[1], r[1], s[1]);
            this.a = [o[0], f[0]], this.b = [o[1], f[1]], this.c = [o[2], f[2]], this.d = [o[3], f[3]], this.points = [t, e, r, s]
        }
        PolynomialBezier.prototype.point = function(t) {
            return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]]
        }, PolynomialBezier.prototype.derivative = function(t) {
            return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]]
        }, PolynomialBezier.prototype.tangentAngle = function(t) {
            var e = this.derivative(t);
            return Math.atan2(e[1], e[0])
        }, PolynomialBezier.prototype.normalAngle = function(t) {
            var e = this.derivative(t);
            return Math.atan2(e[0], e[1])
        }, PolynomialBezier.prototype.inflectionPoints = function() {
            var t = this.a[1] * this.b[0] - this.a[0] * this.b[1];
            if (floatZero(t)) return [];
            var e = -.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / t,
                r = e * e - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / t;
            if (r < 0) return [];
            var s = Math.sqrt(r);
            return floatZero(s) ? s > 0 && s < 1 ? [e] : [] : [e - s, e + s].filter(function(a) {
                return a > 0 && a < 1
            })
        }, PolynomialBezier.prototype.split = function(t) {
            if (t <= 0) return [singlePoint(this.points[0]), this];
            if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];
            var e = lerpPoint(this.points[0], this.points[1], t),
                r = lerpPoint(this.points[1], this.points[2], t),
                s = lerpPoint(this.points[2], this.points[3], t),
                a = lerpPoint(e, r, t),
                o = lerpPoint(r, s, t),
                f = lerpPoint(a, o, t);
            return [new PolynomialBezier(this.points[0], e, a, f, !0), new PolynomialBezier(f, o, s, this.points[3], !0)]
        };

        function extrema(t, e) {
            var r = t.points[0][e],
                s = t.points[t.points.length - 1][e];
            if (r > s) {
                var a = s;
                s = r, r = a
            }
            for (var o = quadRoots(3 * t.a[e], 2 * t.b[e], t.c[e]), f = 0; f < o.length; f += 1)
                if (o[f] > 0 && o[f] < 1) {
                    var d = t.point(o[f])[e];
                    d < r ? r = d : d > s && (s = d)
                }
            return {
                min: r,
                max: s
            }
        }
        PolynomialBezier.prototype.bounds = function() {
            return {
                x: extrema(this, 0),
                y: extrema(this, 1)
            }
        }, PolynomialBezier.prototype.boundingBox = function() {
            var t = this.bounds();
            return {
                left: t.x.min,
                right: t.x.max,
                top: t.y.min,
                bottom: t.y.max,
                width: t.x.max - t.x.min,
                height: t.y.max - t.y.min,
                cx: (t.x.max + t.x.min) / 2,
                cy: (t.y.max + t.y.min) / 2
            }
        };

        function intersectData(t, e, r) {
            var s = t.boundingBox();
            return {
                cx: s.cx,
                cy: s.cy,
                width: s.width,
                height: s.height,
                bez: t,
                t: (e + r) / 2,
                t1: e,
                t2: r
            }
        }

        function splitData(t) {
            var e = t.bez.split(.5);
            return [intersectData(e[0], t.t1, t.t), intersectData(e[1], t.t, t.t2)]
        }

        function boxIntersect(t, e) {
            return Math.abs(t.cx - e.cx) * 2 < t.width + e.width && Math.abs(t.cy - e.cy) * 2 < t.height + e.height
        }

        function intersectsImpl(t, e, r, s, a, o) {
            if (boxIntersect(t, e)) {
                if (r >= o || t.width <= s && t.height <= s && e.width <= s && e.height <= s) {
                    a.push([t.t, e.t]);
                    return
                }
                var f = splitData(t),
                    d = splitData(e);
                intersectsImpl(f[0], d[0], r + 1, s, a, o), intersectsImpl(f[0], d[1], r + 1, s, a, o), intersectsImpl(f[1], d[0], r + 1, s, a, o), intersectsImpl(f[1], d[1], r + 1, s, a, o)
            }
        }
        PolynomialBezier.prototype.intersections = function(t, e, r) {
            e === void 0 && (e = 2), r === void 0 && (r = 7);
            var s = [];
            return intersectsImpl(intersectData(this, 0, 1), intersectData(t, 0, 1), 0, e, s, r), s
        }, PolynomialBezier.shapeSegment = function(t, e) {
            var r = (e + 1) % t.length();
            return new PolynomialBezier(t.v[e], t.o[e], t.i[r], t.v[r], !0)
        }, PolynomialBezier.shapeSegmentInverted = function(t, e) {
            var r = (e + 1) % t.length();
            return new PolynomialBezier(t.v[r], t.i[r], t.o[e], t.v[e], !0)
        };

        function crossProduct(t, e) {
            return [t[1] * e[2] - t[2] * e[1], t[2] * e[0] - t[0] * e[2], t[0] * e[1] - t[1] * e[0]]
        }

        function lineIntersection(t, e, r, s) {
            var a = [t[0], t[1], 1],
                o = [e[0], e[1], 1],
                f = [r[0], r[1], 1],
                d = [s[0], s[1], 1],
                c = crossProduct(crossProduct(a, o), crossProduct(f, d));
            return floatZero(c[2]) ? null : [c[0] / c[2], c[1] / c[2]]
        }

        function polarOffset(t, e, r) {
            return [t[0] + Math.cos(e) * r, t[1] - Math.sin(e) * r]
        }

        function pointDistance(t, e) {
            return Math.hypot(t[0] - e[0], t[1] - e[1])
        }

        function pointEqual(t, e) {
            return floatEqual(t[0], e[0]) && floatEqual(t[1], e[1])
        }

        function ZigZagModifier() {}
        extendPrototype([ShapeModifier], ZigZagModifier), ZigZagModifier.prototype.initModifierProperties = function(t, e) {
            this.getValue = this.processKeys, this.amplitude = PropertyFactory.getProp(t, e.s, 0, null, this), this.frequency = PropertyFactory.getProp(t, e.r, 0, null, this), this.pointsType = PropertyFactory.getProp(t, e.pt, 0, null, this), this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0
        };

        function setPoint(t, e, r, s, a, o, f) {
            var d = r - Math.PI / 2,
                c = r + Math.PI / 2,
                m = e[0] + Math.cos(r) * s * a,
                S = e[1] - Math.sin(r) * s * a;
            t.setTripleAt(m, S, m + Math.cos(d) * o, S - Math.sin(d) * o, m + Math.cos(c) * f, S - Math.sin(c) * f, t.length())
        }

        function getPerpendicularVector(t, e) {
            var r = [e[0] - t[0], e[1] - t[1]],
                s = -Math.PI * .5,
                a = [Math.cos(s) * r[0] - Math.sin(s) * r[1], Math.sin(s) * r[0] + Math.cos(s) * r[1]];
            return a
        }

        function getProjectingAngle(t, e) {
            var r = e === 0 ? t.length() - 1 : e - 1,
                s = (e + 1) % t.length(),
                a = t.v[r],
                o = t.v[s],
                f = getPerpendicularVector(a, o);
            return Math.atan2(0, 1) - Math.atan2(f[1], f[0])
        }

        function zigZagCorner(t, e, r, s, a, o, f) {
            var d = getProjectingAngle(e, r),
                c = e.v[r % e._length],
                m = e.v[r === 0 ? e._length - 1 : r - 1],
                S = e.v[(r + 1) % e._length],
                M = o === 2 ? Math.sqrt(Math.pow(c[0] - m[0], 2) + Math.pow(c[1] - m[1], 2)) : 0,
                g = o === 2 ? Math.sqrt(Math.pow(c[0] - S[0], 2) + Math.pow(c[1] - S[1], 2)) : 0;
            setPoint(t, e.v[r % e._length], d, f, s, g / ((a + 1) * 2), M / ((a + 1) * 2))
        }

        function zigZagSegment(t, e, r, s, a, o) {
            for (var f = 0; f < s; f += 1) {
                var d = (f + 1) / (s + 1),
                    c = a === 2 ? Math.sqrt(Math.pow(e.points[3][0] - e.points[0][0], 2) + Math.pow(e.points[3][1] - e.points[0][1], 2)) : 0,
                    m = e.normalAngle(d),
                    S = e.point(d);
                setPoint(t, S, m, o, r, c / ((s + 1) * 2), c / ((s + 1) * 2)), o = -o
            }
            return o
        }
        ZigZagModifier.prototype.processPath = function(t, e, r, s) {
            var a = t._length,
                o = shapePool.newElement();
            if (o.c = t.c, t.c || (a -= 1), a === 0) return o;
            var f = -1,
                d = PolynomialBezier.shapeSegment(t, 0);
            zigZagCorner(o, t, 0, e, r, s, f);
            for (var c = 0; c < a; c += 1) f = zigZagSegment(o, d, e, r, s, -f), c === a - 1 && !t.c ? d = null : d = PolynomialBezier.shapeSegment(t, (c + 1) % a), zigZagCorner(o, t, c + 1, e, r, s, f);
            return o
        }, ZigZagModifier.prototype.processShapes = function(t) {
            var e, r, s = this.shapes.length,
                a, o, f = this.amplitude.v,
                d = Math.max(0, Math.round(this.frequency.v)),
                c = this.pointsType.v;
            if (f !== 0) {
                var m, S;
                for (r = 0; r < s; r += 1) {
                    if (m = this.shapes[r], S = m.localShapeCollection, !(!m.shape._mdf && !this._mdf && !t))
                        for (S.releaseShapes(), m.shape._mdf = !0, e = m.shape.paths.shapes, o = m.shape.paths._length, a = 0; a < o; a += 1) S.addShape(this.processPath(e[a], f, d, c));
                    m.shape.paths = m.localShapeCollection
                }
            }
            this.dynamicProperties.length || (this._mdf = !1)
        };

        function linearOffset(t, e, r) {
            var s = Math.atan2(e[0] - t[0], e[1] - t[1]);
            return [polarOffset(t, s, r), polarOffset(e, s, r)]
        }

        function offsetSegment(t, e) {
            var r, s, a, o, f, d, c;
            c = linearOffset(t.points[0], t.points[1], e), r = c[0], s = c[1], c = linearOffset(t.points[1], t.points[2], e), a = c[0], o = c[1], c = linearOffset(t.points[2], t.points[3], e), f = c[0], d = c[1];
            var m = lineIntersection(r, s, a, o);
            m === null && (m = s);
            var S = lineIntersection(f, d, a, o);
            return S === null && (S = f), new PolynomialBezier(r, m, S, d)
        }

        function joinLines(t, e, r, s, a) {
            var o = e.points[3],
                f = r.points[0];
            if (s === 3 || pointEqual(o, f)) return o;
            if (s === 2) {
                var d = -e.tangentAngle(1),
                    c = -r.tangentAngle(0) + Math.PI,
                    m = lineIntersection(o, polarOffset(o, d + Math.PI / 2, 100), f, polarOffset(f, d + Math.PI / 2, 100)),
                    S = m ? pointDistance(m, o) : pointDistance(o, f) / 2,
                    M = polarOffset(o, d, 2 * S * roundCorner);
                return t.setXYAt(M[0], M[1], "o", t.length() - 1), M = polarOffset(f, c, 2 * S * roundCorner), t.setTripleAt(f[0], f[1], f[0], f[1], M[0], M[1], t.length()), f
            }
            var g = pointEqual(o, e.points[2]) ? e.points[0] : e.points[2],
                k = pointEqual(f, r.points[1]) ? r.points[3] : r.points[1],
                C = lineIntersection(g, o, f, k);
            return C && pointDistance(C, o) < a ? (t.setTripleAt(C[0], C[1], C[0], C[1], C[0], C[1], t.length()), C) : o
        }

        function getIntersection(t, e) {
            var r = t.intersections(e);
            return r.length && floatEqual(r[0][0], 1) && r.shift(), r.length ? r[0] : null
        }

        function pruneSegmentIntersection(t, e) {
            var r = t.slice(),
                s = e.slice(),
                a = getIntersection(t[t.length - 1], e[0]);
            return a && (r[t.length - 1] = t[t.length - 1].split(a[0])[0], s[0] = e[0].split(a[1])[1]), t.length > 1 && e.length > 1 && (a = getIntersection(t[0], e[e.length - 1]), a) ? [
                [t[0].split(a[0])[0]],
                [e[e.length - 1].split(a[1])[1]]
            ] : [r, s]
        }

        function pruneIntersections(t) {
            for (var e, r = 1; r < t.length; r += 1) e = pruneSegmentIntersection(t[r - 1], t[r]), t[r - 1] = e[0], t[r] = e[1];
            return t.length > 1 && (e = pruneSegmentIntersection(t[t.length - 1], t[0]), t[t.length - 1] = e[0], t[0] = e[1]), t
        }

        function offsetSegmentSplit(t, e) {
            var r = t.inflectionPoints(),
                s, a, o, f;
            if (r.length === 0) return [offsetSegment(t, e)];
            if (r.length === 1 || floatEqual(r[1], 1)) return o = t.split(r[0]), s = o[0], a = o[1], [offsetSegment(s, e), offsetSegment(a, e)];
            o = t.split(r[0]), s = o[0];
            var d = (r[1] - r[0]) / (1 - r[0]);
            return o = o[1].split(d), f = o[0], a = o[1], [offsetSegment(s, e), offsetSegment(f, e), offsetSegment(a, e)]
        }

        function OffsetPathModifier() {}
        extendPrototype([ShapeModifier], OffsetPathModifier), OffsetPathModifier.prototype.initModifierProperties = function(t, e) {
            this.getValue = this.processKeys, this.amount = PropertyFactory.getProp(t, e.a, 0, null, this), this.miterLimit = PropertyFactory.getProp(t, e.ml, 0, null, this), this.lineJoin = e.lj, this._isAnimated = this.amount.effectsSequence.length !== 0
        }, OffsetPathModifier.prototype.processPath = function(t, e, r, s) {
            var a = shapePool.newElement();
            a.c = t.c;
            var o = t.length();
            t.c || (o -= 1);
            var f, d, c, m = [];
            for (f = 0; f < o; f += 1) c = PolynomialBezier.shapeSegment(t, f), m.push(offsetSegmentSplit(c, e));
            if (!t.c)
                for (f = o - 1; f >= 0; f -= 1) c = PolynomialBezier.shapeSegmentInverted(t, f), m.push(offsetSegmentSplit(c, e));
            m = pruneIntersections(m);
            var S = null,
                M = null;
            for (f = 0; f < m.length; f += 1) {
                var g = m[f];
                for (M && (S = joinLines(a, M, g[0], r, s)), M = g[g.length - 1], d = 0; d < g.length; d += 1) c = g[d], S && pointEqual(c.points[0], S) ? a.setXYAt(c.points[1][0], c.points[1][1], "o", a.length() - 1) : a.setTripleAt(c.points[0][0], c.points[0][1], c.points[1][0], c.points[1][1], c.points[0][0], c.points[0][1], a.length()), a.setTripleAt(c.points[3][0], c.points[3][1], c.points[3][0], c.points[3][1], c.points[2][0], c.points[2][1], a.length()), S = c.points[3]
            }
            return m.length && joinLines(a, M, m[0][0], r, s), a
        }, OffsetPathModifier.prototype.processShapes = function(t) {
            var e, r, s = this.shapes.length,
                a, o, f = this.amount.v,
                d = this.miterLimit.v,
                c = this.lineJoin;
            if (f !== 0) {
                var m, S;
                for (r = 0; r < s; r += 1) {
                    if (m = this.shapes[r], S = m.localShapeCollection, !(!m.shape._mdf && !this._mdf && !t))
                        for (S.releaseShapes(), m.shape._mdf = !0, e = m.shape.paths.shapes, o = m.shape.paths._length, a = 0; a < o; a += 1) S.addShape(this.processPath(e[a], f, c, d));
                    m.shape.paths = m.localShapeCollection
                }
            }
            this.dynamicProperties.length || (this._mdf = !1)
        };

        function getFontProperties(t) {
            for (var e = t.fStyle ? t.fStyle.split(" ") : [], r = "normal", s = "normal", a = e.length, o, f = 0; f < a; f += 1) switch (o = e[f].toLowerCase(), o) {
                case "italic":
                    s = "italic";
                    break;
                case "bold":
                    r = "700";
                    break;
                case "black":
                    r = "900";
                    break;
                case "medium":
                    r = "500";
                    break;
                case "regular":
                case "normal":
                    r = "400";
                    break;
                case "light":
                case "thin":
                    r = "200";
                    break
            }
            return {
                style: s,
                weight: t.fWeight || r
            }
        }
        var FontManager = function() {
            var t = 5e3,
                e = {
                    w: 0,
                    size: 0,
                    shapes: [],
                    data: {
                        shapes: []
                    }
                },
                r = [];
            r = r.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);
            var s = 127988,
                a = 917631,
                o = 917601,
                f = 917626,
                d = 65039,
                c = 8205,
                m = 127462,
                S = 127487,
                M = ["d83cdffb", "d83cdffc", "d83cdffd", "d83cdffe", "d83cdfff"];

            function g(D) {
                var X = D.split(","),
                    E, w = X.length,
                    nt = [];
                for (E = 0; E < w; E += 1) X[E] !== "sans-serif" && X[E] !== "monospace" && nt.push(X[E]);
                return nt.join(",")
            }

            function k(D, X) {
                var E = createTag("span");
                E.setAttribute("aria-hidden", !0), E.style.fontFamily = X;
                var w = createTag("span");
                w.innerText = "giItT1WQy@!-/#", E.style.position = "absolute", E.style.left = "-10000px", E.style.top = "-10000px", E.style.fontSize = "300px", E.style.fontVariant = "normal", E.style.fontStyle = "normal", E.style.fontWeight = "normal", E.style.letterSpacing = "0", E.appendChild(w), document.body.appendChild(E);
                var nt = w.offsetWidth;
                return w.style.fontFamily = g(D) + ", " + X, {
                    node: w,
                    w: nt,
                    parent: E
                }
            }

            function C() {
                var D, X = this.fonts.length,
                    E, w, nt = X;
                for (D = 0; D < X; D += 1) this.fonts[D].loaded ? nt -= 1 : this.fonts[D].fOrigin === "n" || this.fonts[D].origin === 0 ? this.fonts[D].loaded = !0 : (E = this.fonts[D].monoCase.node, w = this.fonts[D].monoCase.w, E.offsetWidth !== w ? (nt -= 1, this.fonts[D].loaded = !0) : (E = this.fonts[D].sansCase.node, w = this.fonts[D].sansCase.w, E.offsetWidth !== w && (nt -= 1, this.fonts[D].loaded = !0)), this.fonts[D].loaded && (this.fonts[D].sansCase.parent.parentNode.removeChild(this.fonts[D].sansCase.parent), this.fonts[D].monoCase.parent.parentNode.removeChild(this.fonts[D].monoCase.parent)));
                nt !== 0 && Date.now() - this.initTime < t ? setTimeout(this.checkLoadedFontsBinded, 20) : setTimeout(this.setIsLoadedBinded, 10)
            }

            function b(D, X) {
                var E = document.body && X ? "svg" : "canvas",
                    w, nt = getFontProperties(D);
                if (E === "svg") {
                    var tt = createNS("text");
                    tt.style.fontSize = "100px", tt.setAttribute("font-family", D.fFamily), tt.setAttribute("font-style", nt.style), tt.setAttribute("font-weight", nt.weight), tt.textContent = "1", D.fClass ? (tt.style.fontFamily = "inherit", tt.setAttribute("class", D.fClass)) : tt.style.fontFamily = D.fFamily, X.appendChild(tt), w = tt
                } else {
                    var gt = new OffscreenCanvas(500, 500).getContext("2d");
                    gt.font = nt.style + " " + nt.weight + " 100px " + D.fFamily, w = gt
                }

                function Tt(Mt) {
                    return E === "svg" ? (w.textContent = Mt, w.getComputedTextLength()) : w.measureText(Mt).width
                }
                return {
                    measureText: Tt
                }
            }

            function G(D, X) {
                if (!D) {
                    this.isLoaded = !0;
                    return
                }
                if (this.chars) {
                    this.isLoaded = !0, this.fonts = D.list;
                    return
                }
                if (!document.body) {
                    this.isLoaded = !0, D.list.forEach(function(qt) {
                        qt.helper = b(qt), qt.cache = {}
                    }), this.fonts = D.list;
                    return
                }
                var E = D.list,
                    w, nt = E.length,
                    tt = nt;
                for (w = 0; w < nt; w += 1) {
                    var gt = !0,
                        Tt, Mt;
                    if (E[w].loaded = !1, E[w].monoCase = k(E[w].fFamily, "monospace"), E[w].sansCase = k(E[w].fFamily, "sans-serif"), !E[w].fPath) E[w].loaded = !0, tt -= 1;
                    else if (E[w].fOrigin === "p" || E[w].origin === 3) {
                        if (Tt = document.querySelectorAll('style[f-forigin="p"][f-family="' + E[w].fFamily + '"], style[f-origin="3"][f-family="' + E[w].fFamily + '"]'), Tt.length > 0 && (gt = !1), gt) {
                            var Lt = createTag("style");
                            Lt.setAttribute("f-forigin", E[w].fOrigin), Lt.setAttribute("f-origin", E[w].origin), Lt.setAttribute("f-family", E[w].fFamily), Lt.type = "text/css", Lt.innerText = "@font-face {font-family: " + E[w].fFamily + "; font-style: normal; src: url('" + E[w].fPath + "');}", X.appendChild(Lt)
                        }
                    } else if (E[w].fOrigin === "g" || E[w].origin === 1) {
                        for (Tt = document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'), Mt = 0; Mt < Tt.length; Mt += 1) Tt[Mt].href.indexOf(E[w].fPath) !== -1 && (gt = !1);
                        if (gt) {
                            var Vt = createTag("link");
                            Vt.setAttribute("f-forigin", E[w].fOrigin), Vt.setAttribute("f-origin", E[w].origin), Vt.type = "text/css", Vt.rel = "stylesheet", Vt.href = E[w].fPath, document.body.appendChild(Vt)
                        }
                    } else if (E[w].fOrigin === "t" || E[w].origin === 2) {
                        for (Tt = document.querySelectorAll('script[f-forigin="t"], script[f-origin="2"]'), Mt = 0; Mt < Tt.length; Mt += 1) E[w].fPath === Tt[Mt].src && (gt = !1);
                        if (gt) {
                            var Nt = createTag("link");
                            Nt.setAttribute("f-forigin", E[w].fOrigin), Nt.setAttribute("f-origin", E[w].origin), Nt.setAttribute("rel", "stylesheet"), Nt.setAttribute("href", E[w].fPath), X.appendChild(Nt)
                        }
                    }
                    E[w].helper = b(E[w], X), E[w].cache = {}, this.fonts.push(E[w])
                }
                tt === 0 ? this.isLoaded = !0 : setTimeout(this.checkLoadedFonts.bind(this), 100)
            }

            function y(D) {
                if (D) {
                    this.chars || (this.chars = []);
                    var X, E = D.length,
                        w, nt = this.chars.length,
                        tt;
                    for (X = 0; X < E; X += 1) {
                        for (w = 0, tt = !1; w < nt;) this.chars[w].style === D[X].style && this.chars[w].fFamily === D[X].fFamily && this.chars[w].ch === D[X].ch && (tt = !0), w += 1;
                        tt || (this.chars.push(D[X]), nt += 1)
                    }
                }
            }

            function P(D, X, E) {
                for (var w = 0, nt = this.chars.length; w < nt;) {
                    if (this.chars[w].ch === D && this.chars[w].style === X && this.chars[w].fFamily === E) return this.chars[w];
                    w += 1
                }
                return (typeof D == "string" && D.charCodeAt(0) !== 13 || !D) && console && console.warn && !this._warned && (this._warned = !0, console.warn("Missing character from exported characters list: ", D, X, E)), e
            }

            function v(D, X, E) {
                var w = this.getFontByName(X),
                    nt = D;
                if (!w.cache[nt]) {
                    var tt = w.helper;
                    if (D === " ") {
                        var gt = tt.measureText("|" + D + "|"),
                            Tt = tt.measureText("||");
                        w.cache[nt] = (gt - Tt) / 100
                    } else w.cache[nt] = tt.measureText(D) / 100
                }
                return w.cache[nt] * E
            }

            function _(D) {
                for (var X = 0, E = this.fonts.length; X < E;) {
                    if (this.fonts[X].fName === D) return this.fonts[X];
                    X += 1
                }
                return this.fonts[0]
            }

            function V(D) {
                var X = 0,
                    E = D.charCodeAt(0);
                if (E >= 55296 && E <= 56319) {
                    var w = D.charCodeAt(1);
                    w >= 56320 && w <= 57343 && (X = (E - 55296) * 1024 + w - 56320 + 65536)
                }
                return X
            }

            function N(D, X) {
                var E = D.toString(16) + X.toString(16);
                return M.indexOf(E) !== -1
            }

            function Z(D) {
                return D === c
            }

            function J(D) {
                return D === d
            }

            function ht(D) {
                var X = V(D);
                return X >= m && X <= S
            }

            function vt(D) {
                return ht(D.substr(0, 2)) && ht(D.substr(2, 2))
            }

            function ct(D) {
                return r.indexOf(D) !== -1
            }

            function ft(D, X) {
                var E = V(D.substr(X, 2));
                if (E !== s) return !1;
                var w = 0;
                for (X += 2; w < 5;) {
                    if (E = V(D.substr(X, 2)), E < o || E > f) return !1;
                    w += 1, X += 2
                }
                return V(D.substr(X, 2)) === a
            }

            function yt() {
                this.isLoaded = !0
            }
            var bt = function() {
                this.fonts = [], this.chars = null, this.typekitLoaded = 0, this.isLoaded = !1, this._warned = !1, this.initTime = Date.now(), this.setIsLoadedBinded = this.setIsLoaded.bind(this), this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this)
            };
            bt.isModifier = N, bt.isZeroWidthJoiner = Z, bt.isFlagEmoji = vt, bt.isRegionalCode = ht, bt.isCombinedCharacter = ct, bt.isRegionalFlag = ft, bt.isVariationSelector = J, bt.BLACK_FLAG_CODE_POINT = s;
            var lt = {
                addChars: y,
                addFonts: G,
                getCharData: P,
                getFontByName: _,
                measureText: v,
                checkLoadedFonts: C,
                setIsLoaded: yt
            };
            return bt.prototype = lt, bt
        }();

        function SlotManager(t) {
            this.animationData = t
        }
        SlotManager.prototype.getProp = function(t) {
            return this.animationData.slots && this.animationData.slots[t.sid] ? Object.assign(t, this.animationData.slots[t.sid].p) : t
        };

        function slotFactory(t) {
            return new SlotManager(t)
        }

        function RenderableElement() {}
        RenderableElement.prototype = {
            initRenderable: function() {
                this.isInRange = !1, this.hidden = !1, this.isTransparent = !1, this.renderableComponents = []
            },
            addRenderableComponent: function(e) {
                this.renderableComponents.indexOf(e) === -1 && this.renderableComponents.push(e)
            },
            removeRenderableComponent: function(e) {
                this.renderableComponents.indexOf(e) !== -1 && this.renderableComponents.splice(this.renderableComponents.indexOf(e), 1)
            },
            prepareRenderableFrame: function(e) {
                this.checkLayerLimits(e)
            },
            checkTransparency: function() {
                this.finalTransform.mProp.o.v <= 0 ? !this.isTransparent && this.globalData.renderConfig.hideOnTransparent && (this.isTransparent = !0, this.hide()) : this.isTransparent && (this.isTransparent = !1, this.show())
            },
            checkLayerLimits: function(e) {
                this.data.ip - this.data.st <= e && this.data.op - this.data.st > e ? this.isInRange !== !0 && (this.globalData._mdf = !0, this._mdf = !0, this.isInRange = !0, this.show()) : this.isInRange !== !1 && (this.globalData._mdf = !0, this.isInRange = !1, this.hide())
            },
            renderRenderable: function() {
                var e, r = this.renderableComponents.length;
                for (e = 0; e < r; e += 1) this.renderableComponents[e].renderFrame(this._isFirstFrame)
            },
            sourceRectAtTime: function() {
                return {
                    top: 0,
                    left: 0,
                    width: 100,
                    height: 100
                }
            },
            getLayerSize: function() {
                return this.data.ty === 5 ? {
                    w: this.data.textData.width,
                    h: this.data.textData.height
                } : {
                    w: this.data.width,
                    h: this.data.height
                }
            }
        };
        var getBlendMode = function() {
            var t = {
                0: "source-over",
                1: "multiply",
                2: "screen",
                3: "overlay",
                4: "darken",
                5: "lighten",
                6: "color-dodge",
                7: "color-burn",
                8: "hard-light",
                9: "soft-light",
                10: "difference",
                11: "exclusion",
                12: "hue",
                13: "saturation",
                14: "color",
                15: "luminosity"
            };
            return function(e) {
                return t[e] || ""
            }
        }();

        function SliderEffect(t, e, r) {
            this.p = PropertyFactory.getProp(e, t.v, 0, 0, r)
        }

        function AngleEffect(t, e, r) {
            this.p = PropertyFactory.getProp(e, t.v, 0, 0, r)
        }

        function ColorEffect(t, e, r) {
            this.p = PropertyFactory.getProp(e, t.v, 1, 0, r)
        }

        function PointEffect(t, e, r) {
            this.p = PropertyFactory.getProp(e, t.v, 1, 0, r)
        }

        function LayerIndexEffect(t, e, r) {
            this.p = PropertyFactory.getProp(e, t.v, 0, 0, r)
        }

        function MaskIndexEffect(t, e, r) {
            this.p = PropertyFactory.getProp(e, t.v, 0, 0, r)
        }

        function CheckboxEffect(t, e, r) {
            this.p = PropertyFactory.getProp(e, t.v, 0, 0, r)
        }

        function NoValueEffect() {
            this.p = {}
        }

        function EffectsManager(t, e) {
            var r = t.ef || [];
            this.effectElements = [];
            var s, a = r.length,
                o;
            for (s = 0; s < a; s += 1) o = new GroupEffect(r[s], e), this.effectElements.push(o)
        }

        function GroupEffect(t, e) {
            this.init(t, e)
        }
        extendPrototype([DynamicPropertyContainer], GroupEffect), GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties, GroupEffect.prototype.init = function(t, e) {
            this.data = t, this.effectElements = [], this.initDynamicPropertyContainer(e);
            var r, s = this.data.ef.length,
                a, o = this.data.ef;
            for (r = 0; r < s; r += 1) {
                switch (a = null, o[r].ty) {
                    case 0:
                        a = new SliderEffect(o[r], e, this);
                        break;
                    case 1:
                        a = new AngleEffect(o[r], e, this);
                        break;
                    case 2:
                        a = new ColorEffect(o[r], e, this);
                        break;
                    case 3:
                        a = new PointEffect(o[r], e, this);
                        break;
                    case 4:
                    case 7:
                        a = new CheckboxEffect(o[r], e, this);
                        break;
                    case 10:
                        a = new LayerIndexEffect(o[r], e, this);
                        break;
                    case 11:
                        a = new MaskIndexEffect(o[r], e, this);
                        break;
                    case 5:
                        a = new EffectsManager(o[r], e);
                        break;
                    default:
                        a = new NoValueEffect(o[r]);
                        break
                }
                a && this.effectElements.push(a)
            }
        };

        function BaseElement() {}
        BaseElement.prototype = {
            checkMasks: function() {
                if (!this.data.hasMask) return !1;
                for (var e = 0, r = this.data.masksProperties.length; e < r;) {
                    if (this.data.masksProperties[e].mode !== "n" && this.data.masksProperties[e].cl !== !1) return !0;
                    e += 1
                }
                return !1
            },
            initExpressions: function() {
                var e = getExpressionInterfaces();
                if (e) {
                    var r = e("layer"),
                        s = e("effects"),
                        a = e("shape"),
                        o = e("text"),
                        f = e("comp");
                    this.layerInterface = r(this), this.data.hasMask && this.maskManager && this.layerInterface.registerMaskInterface(this.maskManager);
                    var d = s.createEffectsInterface(this, this.layerInterface);
                    this.layerInterface.registerEffectsInterface(d), this.data.ty === 0 || this.data.xt ? this.compInterface = f(this) : this.data.ty === 4 ? (this.layerInterface.shapeInterface = a(this.shapesData, this.itemsData, this.layerInterface), this.layerInterface.content = this.layerInterface.shapeInterface) : this.data.ty === 5 && (this.layerInterface.textInterface = o(this), this.layerInterface.text = this.layerInterface.textInterface)
                }
            },
            setBlendMode: function() {
                var e = getBlendMode(this.data.bm),
                    r = this.baseElement || this.layerElement;
                r.style["mix-blend-mode"] = e
            },
            initBaseData: function(e, r, s) {
                this.globalData = r, this.comp = s, this.data = e, this.layerId = createElementID(), this.data.sr || (this.data.sr = 1), this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties)
            },
            getType: function() {
                return this.type
            },
            sourceRectAtTime: function() {}
        };

        function FrameElement() {}
        FrameElement.prototype = {
            initFrame: function() {
                this._isFirstFrame = !1, this.dynamicProperties = [], this._mdf = !1
            },
            prepareProperties: function(e, r) {
                var s, a = this.dynamicProperties.length;
                for (s = 0; s < a; s += 1)(r || this._isParent && this.dynamicProperties[s].propType === "transform") && (this.dynamicProperties[s].getValue(), this.dynamicProperties[s]._mdf && (this.globalData._mdf = !0, this._mdf = !0))
            },
            addDynamicProperty: function(e) {
                this.dynamicProperties.indexOf(e) === -1 && this.dynamicProperties.push(e)
            }
        };

        function FootageElement(t, e, r) {
            this.initFrame(), this.initRenderable(), this.assetData = e.getAssetData(t.refId), this.footageData = e.imageLoader.getAsset(this.assetData), this.initBaseData(t, e, r)
        }
        FootageElement.prototype.prepareFrame = function() {}, extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement), FootageElement.prototype.getBaseElement = function() {
            return null
        }, FootageElement.prototype.renderFrame = function() {}, FootageElement.prototype.destroy = function() {}, FootageElement.prototype.initExpressions = function() {
            var t = getExpressionInterfaces();
            if (t) {
                var e = t("footage");
                this.layerInterface = e(this)
            }
        }, FootageElement.prototype.getFootageData = function() {
            return this.footageData
        };

        function AudioElement(t, e, r) {
            this.initFrame(), this.initRenderable(), this.assetData = e.getAssetData(t.refId), this.initBaseData(t, e, r), this._isPlaying = !1, this._canPlay = !1;
            var s = this.globalData.getAssetsPath(this.assetData);
            this.audio = this.globalData.audioController.createAudio(s), this._currentTime = 0, this.globalData.audioController.addAudio(this), this._volumeMultiplier = 1, this._volume = 1, this._previousVolume = null, this.tm = t.tm ? PropertyFactory.getProp(this, t.tm, 0, e.frameRate, this) : {
                _placeholder: !0
            }, this.lv = PropertyFactory.getProp(this, t.au && t.au.lv ? t.au.lv : {
                k: [100]
            }, 1, .01, this)
        }
        AudioElement.prototype.prepareFrame = function(t) {
            if (this.prepareRenderableFrame(t, !0), this.prepareProperties(t, !0), this.tm._placeholder) this._currentTime = t / this.data.sr;
            else {
                var e = this.tm.v;
                this._currentTime = e
            }
            this._volume = this.lv.v[0];
            var r = this._volume * this._volumeMultiplier;
            this._previousVolume !== r && (this._previousVolume = r, this.audio.volume(r))
        }, extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement), AudioElement.prototype.renderFrame = function() {
            this.isInRange && this._canPlay && (this._isPlaying ? (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > .1) && this.audio.seek(this._currentTime / this.globalData.frameRate) : (this.audio.play(), this.audio.seek(this._currentTime / this.globalData.frameRate), this._isPlaying = !0))
        }, AudioElement.prototype.show = function() {}, AudioElement.prototype.hide = function() {
            this.audio.pause(), this._isPlaying = !1
        }, AudioElement.prototype.pause = function() {
            this.audio.pause(), this._isPlaying = !1, this._canPlay = !1
        }, AudioElement.prototype.resume = function() {
            this._canPlay = !0
        }, AudioElement.prototype.setRate = function(t) {
            this.audio.rate(t)
        }, AudioElement.prototype.volume = function(t) {
            this._volumeMultiplier = t, this._previousVolume = t * this._volume, this.audio.volume(this._previousVolume)
        }, AudioElement.prototype.getBaseElement = function() {
            return null
        }, AudioElement.prototype.destroy = function() {}, AudioElement.prototype.sourceRectAtTime = function() {}, AudioElement.prototype.initExpressions = function() {};

        function BaseRenderer() {}
        BaseRenderer.prototype.checkLayers = function(t) {
            var e, r = this.layers.length,
                s;
            for (this.completeLayers = !0, e = r - 1; e >= 0; e -= 1) this.elements[e] || (s = this.layers[e], s.ip - s.st <= t - this.layers[e].st && s.op - s.st > t - this.layers[e].st && this.buildItem(e)), this.completeLayers = this.elements[e] ? this.completeLayers : !1;
            this.checkPendingElements()
        }, BaseRenderer.prototype.createItem = function(t) {
            switch (t.ty) {
                case 2:
                    return this.createImage(t);
                case 0:
                    return this.createComp(t);
                case 1:
                    return this.createSolid(t);
                case 3:
                    return this.createNull(t);
                case 4:
                    return this.createShape(t);
                case 5:
                    return this.createText(t);
                case 6:
                    return this.createAudio(t);
                case 13:
                    return this.createCamera(t);
                case 15:
                    return this.createFootage(t);
                default:
                    return this.createNull(t)
            }
        }, BaseRenderer.prototype.createCamera = function() {
            throw new Error("You're using a 3d camera. Try the html renderer.")
        }, BaseRenderer.prototype.createAudio = function(t) {
            return new AudioElement(t, this.globalData, this)
        }, BaseRenderer.prototype.createFootage = function(t) {
            return new FootageElement(t, this.globalData, this)
        }, BaseRenderer.prototype.buildAllItems = function() {
            var t, e = this.layers.length;
            for (t = 0; t < e; t += 1) this.buildItem(t);
            this.checkPendingElements()
        }, BaseRenderer.prototype.includeLayers = function(t) {
            this.completeLayers = !1;
            var e, r = t.length,
                s, a = this.layers.length;
            for (e = 0; e < r; e += 1)
                for (s = 0; s < a;) {
                    if (this.layers[s].id === t[e].id) {
                        this.layers[s] = t[e];
                        break
                    }
                    s += 1
                }
        }, BaseRenderer.prototype.setProjectInterface = function(t) {
            this.globalData.projectInterface = t
        }, BaseRenderer.prototype.initItems = function() {
            this.globalData.progressiveLoad || this.buildAllItems()
        }, BaseRenderer.prototype.buildElementParenting = function(t, e, r) {
            for (var s = this.elements, a = this.layers, o = 0, f = a.length; o < f;) a[o].ind == e && (!s[o] || s[o] === !0 ? (this.buildItem(o), this.addPendingElement(t)) : (r.push(s[o]), s[o].setAsParent(), a[o].parent !== void 0 ? this.buildElementParenting(t, a[o].parent, r) : t.setHierarchy(r))), o += 1
        }, BaseRenderer.prototype.addPendingElement = function(t) {
            this.pendingElements.push(t)
        }, BaseRenderer.prototype.searchExtraCompositions = function(t) {
            var e, r = t.length;
            for (e = 0; e < r; e += 1)
                if (t[e].xt) {
                    var s = this.createComp(t[e]);
                    s.initExpressions(), this.globalData.projectInterface.registerComposition(s)
                }
        }, BaseRenderer.prototype.getElementById = function(t) {
            var e, r = this.elements.length;
            for (e = 0; e < r; e += 1)
                if (this.elements[e].data.ind === t) return this.elements[e];
            return null
        }, BaseRenderer.prototype.getElementByPath = function(t) {
            var e = t.shift(),
                r;
            if (typeof e == "number") r = this.elements[e];
            else {
                var s, a = this.elements.length;
                for (s = 0; s < a; s += 1)
                    if (this.elements[s].data.nm === e) {
                        r = this.elements[s];
                        break
                    }
            }
            return t.length === 0 ? r : r.getElementByPath(t)
        }, BaseRenderer.prototype.setupGlobalData = function(t, e) {
            this.globalData.fontManager = new FontManager, this.globalData.slotManager = slotFactory(t), this.globalData.fontManager.addChars(t.chars), this.globalData.fontManager.addFonts(t.fonts, e), this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem), this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem), this.globalData.imageLoader = this.animationItem.imagePreloader, this.globalData.audioController = this.animationItem.audioController, this.globalData.frameId = 0, this.globalData.frameRate = t.fr, this.globalData.nm = t.nm, this.globalData.compSize = {
                w: t.w,
                h: t.h
            }
        };
        var effectTypes = {
            TRANSFORM_EFFECT: "transformEFfect"
        };

        function TransformElement() {}
        TransformElement.prototype = {
            initTransform: function() {
                var e = new Matrix;
                this.finalTransform = {
                    mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {
                        o: 0
                    },
                    _matMdf: !1,
                    _localMatMdf: !1,
                    _opMdf: !1,
                    mat: e,
                    localMat: e,
                    localOpacity: 1
                }, this.data.ao && (this.finalTransform.mProp.autoOriented = !0), this.data.ty
            },
            renderTransform: function() {
                if (this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame, this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame, this.hierarchy) {
                    var e, r = this.finalTransform.mat,
                        s = 0,
                        a = this.hierarchy.length;
                    if (!this.finalTransform._matMdf)
                        for (; s < a;) {
                            if (this.hierarchy[s].finalTransform.mProp._mdf) {
                                this.finalTransform._matMdf = !0;
                                break
                            }
                            s += 1
                        }
                    if (this.finalTransform._matMdf)
                        for (e = this.finalTransform.mProp.v.props, r.cloneFromProps(e), s = 0; s < a; s += 1) r.multiply(this.hierarchy[s].finalTransform.mProp.v)
                }
                this.finalTransform._matMdf && (this.finalTransform._localMatMdf = this.finalTransform._matMdf), this.finalTransform._opMdf && (this.finalTransform.localOpacity = this.finalTransform.mProp.o.v)
            },
            renderLocalTransform: function() {
                if (this.localTransforms) {
                    var e = 0,
                        r = this.localTransforms.length;
                    if (this.finalTransform._localMatMdf = this.finalTransform._matMdf, !this.finalTransform._localMatMdf || !this.finalTransform._opMdf)
                        for (; e < r;) this.localTransforms[e]._mdf && (this.finalTransform._localMatMdf = !0), this.localTransforms[e]._opMdf && !this.finalTransform._opMdf && (this.finalTransform.localOpacity = this.finalTransform.mProp.o.v, this.finalTransform._opMdf = !0), e += 1;
                    if (this.finalTransform._localMatMdf) {
                        var s = this.finalTransform.localMat;
                        for (this.localTransforms[0].matrix.clone(s), e = 1; e < r; e += 1) {
                            var a = this.localTransforms[e].matrix;
                            s.multiply(a)
                        }
                        s.multiply(this.finalTransform.mat)
                    }
                    if (this.finalTransform._opMdf) {
                        var o = this.finalTransform.localOpacity;
                        for (e = 0; e < r; e += 1) o *= this.localTransforms[e].opacity * .01;
                        this.finalTransform.localOpacity = o
                    }
                }
            },
            searchEffectTransforms: function() {
                if (this.renderableEffectsManager) {
                    var e = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);
                    if (e.length) {
                        this.localTransforms = [], this.finalTransform.localMat = new Matrix;
                        var r = 0,
                            s = e.length;
                        for (r = 0; r < s; r += 1) this.localTransforms.push(e[r])
                    }
                }
            },
            globalToLocal: function(e) {
                var r = [];
                r.push(this.finalTransform);
                for (var s = !0, a = this.comp; s;) a.finalTransform ? (a.data.hasMask && r.splice(0, 0, a.finalTransform), a = a.comp) : s = !1;
                var o, f = r.length,
                    d;
                for (o = 0; o < f; o += 1) d = r[o].mat.applyToPointArray(0, 0, 0), e = [e[0] - d[0], e[1] - d[1], 0];
                return e
            },
            mHelper: new Matrix
        };

        function MaskElement(t, e, r) {
            this.data = t, this.element = e, this.globalData = r, this.storedData = [], this.masksProperties = this.data.masksProperties || [], this.maskElement = null;
            var s = this.globalData.defs,
                a, o = this.masksProperties ? this.masksProperties.length : 0;
            this.viewData = createSizedArray(o), this.solidPath = "";
            var f, d = this.masksProperties,
                c = 0,
                m = [],
                S, M, g = createElementID(),
                k, C, b, G, y = "clipPath",
                P = "clip-path";
            for (a = 0; a < o; a += 1)
                if ((d[a].mode !== "a" && d[a].mode !== "n" || d[a].inv || d[a].o.k !== 100 || d[a].o.x) && (y = "mask", P = "mask"), (d[a].mode === "s" || d[a].mode === "i") && c === 0 ? (k = createNS("rect"), k.setAttribute("fill", "#ffffff"), k.setAttribute("width", this.element.comp.data.w || 0), k.setAttribute("height", this.element.comp.data.h || 0), m.push(k)) : k = null, f = createNS("path"), d[a].mode === "n") this.viewData[a] = {
                    op: PropertyFactory.getProp(this.element, d[a].o, 0, .01, this.element),
                    prop: ShapePropertyFactory.getShapeProp(this.element, d[a], 3),
                    elem: f,
                    lastPath: ""
                }, s.appendChild(f);
                else {
                    c += 1, f.setAttribute("fill", d[a].mode === "s" ? "#000000" : "#ffffff"), f.setAttribute("clip-rule", "nonzero");
                    var v;
                    if (d[a].x.k !== 0 ? (y = "mask", P = "mask", G = PropertyFactory.getProp(this.element, d[a].x, 0, null, this.element), v = createElementID(), C = createNS("filter"), C.setAttribute("id", v), b = createNS("feMorphology"), b.setAttribute("operator", "erode"), b.setAttribute("in", "SourceGraphic"), b.setAttribute("radius", "0"), C.appendChild(b), s.appendChild(C), f.setAttribute("stroke", d[a].mode === "s" ? "#000000" : "#ffffff")) : (b = null, G = null), this.storedData[a] = {
                            elem: f,
                            x: G,
                            expan: b,
                            lastPath: "",
                            lastOperator: "",
                            filterId: v,
                            lastRadius: 0
                        }, d[a].mode === "i") {
                        M = m.length;
                        var _ = createNS("g");
                        for (S = 0; S < M; S += 1) _.appendChild(m[S]);
                        var V = createNS("mask");
                        V.setAttribute("mask-type", "alpha"), V.setAttribute("id", g + "_" + c), V.appendChild(f), s.appendChild(V), _.setAttribute("mask", "url(" + getLocationHref() + "#" + g + "_" + c + ")"), m.length = 0, m.push(_)
                    } else m.push(f);
                    d[a].inv && !this.solidPath && (this.solidPath = this.createLayerSolidPath()), this.viewData[a] = {
                        elem: f,
                        lastPath: "",
                        op: PropertyFactory.getProp(this.element, d[a].o, 0, .01, this.element),
                        prop: ShapePropertyFactory.getShapeProp(this.element, d[a], 3),
                        invRect: k
                    }, this.viewData[a].prop.k || this.drawPath(d[a], this.viewData[a].prop.v, this.viewData[a])
                }
            for (this.maskElement = createNS(y), o = m.length, a = 0; a < o; a += 1) this.maskElement.appendChild(m[a]);
            c > 0 && (this.maskElement.setAttribute("id", g), this.element.maskedElement.setAttribute(P, "url(" + getLocationHref() + "#" + g + ")"), s.appendChild(this.maskElement)), this.viewData.length && this.element.addRenderableComponent(this)
        }
        MaskElement.prototype.getMaskProperty = function(t) {
            return this.viewData[t].prop
        }, MaskElement.prototype.renderFrame = function(t) {
            var e = this.element.finalTransform.mat,
                r, s = this.masksProperties.length;
            for (r = 0; r < s; r += 1)
                if ((this.viewData[r].prop._mdf || t) && this.drawPath(this.masksProperties[r], this.viewData[r].prop.v, this.viewData[r]), (this.viewData[r].op._mdf || t) && this.viewData[r].elem.setAttribute("fill-opacity", this.viewData[r].op.v), this.masksProperties[r].mode !== "n" && (this.viewData[r].invRect && (this.element.finalTransform.mProp._mdf || t) && this.viewData[r].invRect.setAttribute("transform", e.getInverseMatrix().to2dCSS()), this.storedData[r].x && (this.storedData[r].x._mdf || t))) {
                    var a = this.storedData[r].expan;
                    this.storedData[r].x.v < 0 ? (this.storedData[r].lastOperator !== "erode" && (this.storedData[r].lastOperator = "erode", this.storedData[r].elem.setAttribute("filter", "url(" + getLocationHref() + "#" + this.storedData[r].filterId + ")")), a.setAttribute("radius", -this.storedData[r].x.v)) : (this.storedData[r].lastOperator !== "dilate" && (this.storedData[r].lastOperator = "dilate", this.storedData[r].elem.setAttribute("filter", null)), this.storedData[r].elem.setAttribute("stroke-width", this.storedData[r].x.v * 2))
                }
        }, MaskElement.prototype.getMaskelement = function() {
            return this.maskElement
        }, MaskElement.prototype.createLayerSolidPath = function() {
            var t = "M0,0 ";
            return t += " h" + this.globalData.compSize.w, t += " v" + this.globalData.compSize.h, t += " h-" + this.globalData.compSize.w, t += " v-" + this.globalData.compSize.h + " ", t
        }, MaskElement.prototype.drawPath = function(t, e, r) {
            var s = " M" + e.v[0][0] + "," + e.v[0][1],
                a, o;
            for (o = e._length, a = 1; a < o; a += 1) s += " C" + e.o[a - 1][0] + "," + e.o[a - 1][1] + " " + e.i[a][0] + "," + e.i[a][1] + " " + e.v[a][0] + "," + e.v[a][1];
            if (e.c && o > 1 && (s += " C" + e.o[a - 1][0] + "," + e.o[a - 1][1] + " " + e.i[0][0] + "," + e.i[0][1] + " " + e.v[0][0] + "," + e.v[0][1]), r.lastPath !== s) {
                var f = "";
                r.elem && (e.c && (f = t.inv ? this.solidPath + s : s), r.elem.setAttribute("d", f)), r.lastPath = s
            }
        }, MaskElement.prototype.destroy = function() {
            this.element = null, this.globalData = null, this.maskElement = null, this.data = null, this.masksProperties = null
        };
        var filtersFactory = function() {
                var t = {};
                t.createFilter = e, t.createAlphaToLuminanceFilter = r;

                function e(s, a) {
                    var o = createNS("filter");
                    return o.setAttribute("id", s), a !== !0 && (o.setAttribute("filterUnits", "objectBoundingBox"), o.setAttribute("x", "0%"), o.setAttribute("y", "0%"), o.setAttribute("width", "100%"), o.setAttribute("height", "100%")), o
                }

                function r() {
                    var s = createNS("feColorMatrix");
                    return s.setAttribute("type", "matrix"), s.setAttribute("color-interpolation-filters", "sRGB"), s.setAttribute("values", "0 0 0 1 0  0 0 0 1 0  0 0 0 1 0  0 0 0 1 1"), s
                }
                return t
            }(),
            featureSupport = function() {
                var t = {
                    maskType: !0,
                    svgLumaHidden: !0,
                    offscreenCanvas: typeof OffscreenCanvas < "u"
                };
                return (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) && (t.maskType = !1), /firefox/i.test(navigator.userAgent) && (t.svgLumaHidden = !1), t
            }(),
            registeredEffects$1 = {},
            idPrefix = "filter_result_";

        function SVGEffects(t) {
            var e, r = "SourceGraphic",
                s = t.data.ef ? t.data.ef.length : 0,
                a = createElementID(),
                o = filtersFactory.createFilter(a, !0),
                f = 0;
            this.filters = [];
            var d;
            for (e = 0; e < s; e += 1) {
                d = null;
                var c = t.data.ef[e].ty;
                if (registeredEffects$1[c]) {
                    var m = registeredEffects$1[c].effect;
                    d = new m(o, t.effectsManager.effectElements[e], t, idPrefix + f, r), r = idPrefix + f, registeredEffects$1[c].countsAsEffect && (f += 1)
                }
                d && this.filters.push(d)
            }
            f && (t.globalData.defs.appendChild(o), t.layerElement.setAttribute("filter", "url(" + getLocationHref() + "#" + a + ")")), this.filters.length && t.addRenderableComponent(this)
        }
        SVGEffects.prototype.renderFrame = function(t) {
            var e, r = this.filters.length;
            for (e = 0; e < r; e += 1) this.filters[e].renderFrame(t)
        }, SVGEffects.prototype.getEffects = function(t) {
            var e, r = this.filters.length,
                s = [];
            for (e = 0; e < r; e += 1) this.filters[e].type === t && s.push(this.filters[e]);
            return s
        };

        function registerEffect$1(t, e, r) {
            registeredEffects$1[t] = {
                effect: e,
                countsAsEffect: r
            }
        }

        function SVGBaseElement() {}
        SVGBaseElement.prototype = {
            initRendererElement: function() {
                this.layerElement = createNS("g")
            },
            createContainerElements: function() {
                this.matteElement = createNS("g"), this.transformedElement = this.layerElement, this.maskedElement = this.layerElement, this._sizeChanged = !1;
                var e = null;
                if (this.data.td) {
                    this.matteMasks = {};
                    var r = createNS("g");
                    r.setAttribute("id", this.layerId), r.appendChild(this.layerElement), e = r, this.globalData.defs.appendChild(r)
                } else this.data.tt ? (this.matteElement.appendChild(this.layerElement), e = this.matteElement, this.baseElement = this.matteElement) : this.baseElement = this.layerElement;
                if (this.data.ln && this.layerElement.setAttribute("id", this.data.ln), this.data.cl && this.layerElement.setAttribute("class", this.data.cl), this.data.ty === 0 && !this.data.hd) {
                    var s = createNS("clipPath"),
                        a = createNS("path");
                    a.setAttribute("d", "M0,0 L" + this.data.w + ",0 L" + this.data.w + "," + this.data.h + " L0," + this.data.h + "z");
                    var o = createElementID();
                    if (s.setAttribute("id", o), s.appendChild(a), this.globalData.defs.appendChild(s), this.checkMasks()) {
                        var f = createNS("g");
                        f.setAttribute("clip-path", "url(" + getLocationHref() + "#" + o + ")"), f.appendChild(this.layerElement), this.transformedElement = f, e ? e.appendChild(this.transformedElement) : this.baseElement = this.transformedElement
                    } else this.layerElement.setAttribute("clip-path", "url(" + getLocationHref() + "#" + o + ")")
                }
                this.data.bm !== 0 && this.setBlendMode()
            },
            renderElement: function() {
                this.finalTransform._localMatMdf && this.transformedElement.setAttribute("transform", this.finalTransform.localMat.to2dCSS()), this.finalTransform._opMdf && this.transformedElement.setAttribute("opacity", this.finalTransform.localOpacity)
            },
            destroyBaseElement: function() {
                this.layerElement = null, this.matteElement = null, this.maskManager.destroy()
            },
            getBaseElement: function() {
                return this.data.hd ? null : this.baseElement
            },
            createRenderableComponents: function() {
                this.maskManager = new MaskElement(this.data, this, this.globalData), this.renderableEffectsManager = new SVGEffects(this), this.searchEffectTransforms()
            },
            getMatte: function(e) {
                if (this.matteMasks || (this.matteMasks = {}), !this.matteMasks[e]) {
                    var r = this.layerId + "_" + e,
                        s, a, o, f;
                    if (e === 1 || e === 3) {
                        var d = createNS("mask");
                        d.setAttribute("id", r), d.setAttribute("mask-type", e === 3 ? "luminance" : "alpha"), o = createNS("use"), o.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + this.layerId), d.appendChild(o), this.globalData.defs.appendChild(d), !featureSupport.maskType && e === 1 && (d.setAttribute("mask-type", "luminance"), s = createElementID(), a = filtersFactory.createFilter(s), this.globalData.defs.appendChild(a), a.appendChild(filtersFactory.createAlphaToLuminanceFilter()), f = createNS("g"), f.appendChild(o), d.appendChild(f), f.setAttribute("filter", "url(" + getLocationHref() + "#" + s + ")"))
                    } else if (e === 2) {
                        var c = createNS("mask");
                        c.setAttribute("id", r), c.setAttribute("mask-type", "alpha");
                        var m = createNS("g");
                        c.appendChild(m), s = createElementID(), a = filtersFactory.createFilter(s);
                        var S = createNS("feComponentTransfer");
                        S.setAttribute("in", "SourceGraphic"), a.appendChild(S);
                        var M = createNS("feFuncA");
                        M.setAttribute("type", "table"), M.setAttribute("tableValues", "1.0 0.0"), S.appendChild(M), this.globalData.defs.appendChild(a);
                        var g = createNS("rect");
                        g.setAttribute("width", this.comp.data.w), g.setAttribute("height", this.comp.data.h), g.setAttribute("x", "0"), g.setAttribute("y", "0"), g.setAttribute("fill", "#ffffff"), g.setAttribute("opacity", "0"), m.setAttribute("filter", "url(" + getLocationHref() + "#" + s + ")"), m.appendChild(g), o = createNS("use"), o.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + this.layerId), m.appendChild(o), featureSupport.maskType || (c.setAttribute("mask-type", "luminance"), a.appendChild(filtersFactory.createAlphaToLuminanceFilter()), f = createNS("g"), m.appendChild(g), f.appendChild(this.layerElement), m.appendChild(f)), this.globalData.defs.appendChild(c)
                    }
                    this.matteMasks[e] = r
                }
                return this.matteMasks[e]
            },
            setMatte: function(e) {
                this.matteElement && this.matteElement.setAttribute("mask", "url(" + getLocationHref() + "#" + e + ")")
            }
        };

        function HierarchyElement() {}
        HierarchyElement.prototype = {
            initHierarchy: function() {
                this.hierarchy = [], this._isParent = !1, this.checkParenting()
            },
            setHierarchy: function(e) {
                this.hierarchy = e
            },
            setAsParent: function() {
                this._isParent = !0
            },
            checkParenting: function() {
                this.data.parent !== void 0 && this.comp.buildElementParenting(this, this.data.parent, [])
            }
        };

        function RenderableDOMElement() {}(function() {
            var t = {
                initElement: function(r, s, a) {
                    this.initFrame(), this.initBaseData(r, s, a), this.initTransform(r, s, a), this.initHierarchy(), this.initRenderable(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), this.createContent(), this.hide()
                },
                hide: function() {
                    if (!this.hidden && (!this.isInRange || this.isTransparent)) {
                        var r = this.baseElement || this.layerElement;
                        r.style.display = "none", this.hidden = !0
                    }
                },
                show: function() {
                    if (this.isInRange && !this.isTransparent) {
                        if (!this.data.hd) {
                            var r = this.baseElement || this.layerElement;
                            r.style.display = "block"
                        }
                        this.hidden = !1, this._isFirstFrame = !0
                    }
                },
                renderFrame: function() {
                    this.data.hd || this.hidden || (this.renderTransform(), this.renderRenderable(), this.renderLocalTransform(), this.renderElement(), this.renderInnerContent(), this._isFirstFrame && (this._isFirstFrame = !1))
                },
                renderInnerContent: function() {},
                prepareFrame: function(r) {
                    this._mdf = !1, this.prepareRenderableFrame(r), this.prepareProperties(r, this.isInRange), this.checkTransparency()
                },
                destroy: function() {
                    this.innerElem = null, this.destroyBaseElement()
                }
            };
            extendPrototype([RenderableElement, createProxyFunction(t)], RenderableDOMElement)
        })();

        function IImageElement(t, e, r) {
            this.assetData = e.getAssetData(t.refId), this.assetData && this.assetData.sid && (this.assetData = e.slotManager.getProp(this.assetData)), this.initElement(t, e, r), this.sourceRect = {
                top: 0,
                left: 0,
                width: this.assetData.w,
                height: this.assetData.h
            }
        }
        extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement), IImageElement.prototype.createContent = function() {
            var t = this.globalData.getAssetsPath(this.assetData);
            this.innerElem = createNS("image"), this.innerElem.setAttribute("width", this.assetData.w + "px"), this.innerElem.setAttribute("height", this.assetData.h + "px"), this.innerElem.setAttribute("preserveAspectRatio", this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio), this.innerElem.setAttributeNS("http://www.w3.org/1999/xlink", "href", t), this.layerElement.appendChild(this.innerElem)
        }, IImageElement.prototype.sourceRectAtTime = function() {
            return this.sourceRect
        };

        function ProcessedElement(t, e) {
            this.elem = t, this.pos = e
        }

        function IShapeElement() {}
        IShapeElement.prototype = {
            addShapeToModifiers: function(e) {
                var r, s = this.shapeModifiers.length;
                for (r = 0; r < s; r += 1) this.shapeModifiers[r].addShape(e)
            },
            isShapeInAnimatedModifiers: function(e) {
                for (var r = 0, s = this.shapeModifiers.length; r < s;)
                    if (this.shapeModifiers[r].isAnimatedWithShape(e)) return !0;
                return !1
            },
            renderModifiers: function() {
                if (this.shapeModifiers.length) {
                    var e, r = this.shapes.length;
                    for (e = 0; e < r; e += 1) this.shapes[e].sh.reset();
                    r = this.shapeModifiers.length;
                    var s;
                    for (e = r - 1; e >= 0 && (s = this.shapeModifiers[e].processShapes(this._isFirstFrame), !s); e -= 1);
                }
            },
            searchProcessedElement: function(e) {
                for (var r = this.processedElements, s = 0, a = r.length; s < a;) {
                    if (r[s].elem === e) return r[s].pos;
                    s += 1
                }
                return 0
            },
            addProcessedElement: function(e, r) {
                for (var s = this.processedElements, a = s.length; a;)
                    if (a -= 1, s[a].elem === e) {
                        s[a].pos = r;
                        return
                    }
                s.push(new ProcessedElement(e, r))
            },
            prepareFrame: function(e) {
                this.prepareRenderableFrame(e), this.prepareProperties(e, this.isInRange)
            }
        };
        var lineCapEnum = {
                1: "butt",
                2: "round",
                3: "square"
            },
            lineJoinEnum = {
                1: "miter",
                2: "round",
                3: "bevel"
            };

        function SVGShapeData(t, e, r) {
            this.caches = [], this.styles = [], this.transformers = t, this.lStr = "", this.sh = r, this.lvl = e, this._isAnimated = !!r.k;
            for (var s = 0, a = t.length; s < a;) {
                if (t[s].mProps.dynamicProperties.length) {
                    this._isAnimated = !0;
                    break
                }
                s += 1
            }
        }
        SVGShapeData.prototype.setAsAnimated = function() {
            this._isAnimated = !0
        };

        function SVGStyleData(t, e) {
            this.data = t, this.type = t.ty, this.d = "", this.lvl = e, this._mdf = !1, this.closed = t.hd === !0, this.pElem = createNS("path"), this.msElem = null
        }
        SVGStyleData.prototype.reset = function() {
            this.d = "", this._mdf = !1
        };

        function DashProperty(t, e, r, s) {
            this.elem = t, this.frameId = -1, this.dataProps = createSizedArray(e.length), this.renderer = r, this.k = !1, this.dashStr = "", this.dashArray = createTypedArray("float32", e.length ? e.length - 1 : 0), this.dashoffset = createTypedArray("float32", 1), this.initDynamicPropertyContainer(s);
            var a, o = e.length || 0,
                f;
            for (a = 0; a < o; a += 1) f = PropertyFactory.getProp(t, e[a].v, 0, 0, this), this.k = f.k || this.k, this.dataProps[a] = {
                n: e[a].n,
                p: f
            };
            this.k || this.getValue(!0), this._isAnimated = this.k
        }
        DashProperty.prototype.getValue = function(t) {
            if (!(this.elem.globalData.frameId === this.frameId && !t) && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf = this._mdf || t, this._mdf)) {
                var e = 0,
                    r = this.dataProps.length;
                for (this.renderer === "svg" && (this.dashStr = ""), e = 0; e < r; e += 1) this.dataProps[e].n !== "o" ? this.renderer === "svg" ? this.dashStr += " " + this.dataProps[e].p.v : this.dashArray[e] = this.dataProps[e].p.v : this.dashoffset[0] = this.dataProps[e].p.v
            }
        }, extendPrototype([DynamicPropertyContainer], DashProperty);

        function SVGStrokeStyleData(t, e, r) {
            this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.o = PropertyFactory.getProp(t, e.o, 0, .01, this), this.w = PropertyFactory.getProp(t, e.w, 0, null, this), this.d = new DashProperty(t, e.d || {}, "svg", this), this.c = PropertyFactory.getProp(t, e.c, 1, 255, this), this.style = r, this._isAnimated = !!this._isAnimated
        }
        extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);

        function SVGFillStyleData(t, e, r) {
            this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.o = PropertyFactory.getProp(t, e.o, 0, .01, this), this.c = PropertyFactory.getProp(t, e.c, 1, 255, this), this.style = r
        }
        extendPrototype([DynamicPropertyContainer], SVGFillStyleData);

        function SVGNoStyleData(t, e, r) {
            this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.style = r
        }
        extendPrototype([DynamicPropertyContainer], SVGNoStyleData);

        function GradientProperty(t, e, r) {
            this.data = e, this.c = createTypedArray("uint8c", e.p * 4);
            var s = e.k.k[0].s ? e.k.k[0].s.length - e.p * 4 : e.k.k.length - e.p * 4;
            this.o = createTypedArray("float32", s), this._cmdf = !1, this._omdf = !1, this._collapsable = this.checkCollapsable(), this._hasOpacity = s, this.initDynamicPropertyContainer(r), this.prop = PropertyFactory.getProp(t, e.k, 1, null, this), this.k = this.prop.k, this.getValue(!0)
        }
        GradientProperty.prototype.comparePoints = function(t, e) {
            for (var r = 0, s = this.o.length / 2, a; r < s;) {
                if (a = Math.abs(t[r * 4] - t[e * 4 + r * 2]), a > .01) return !1;
                r += 1
            }
            return !0
        }, GradientProperty.prototype.checkCollapsable = function() {
            if (this.o.length / 2 !== this.c.length / 4) return !1;
            if (this.data.k.k[0].s)
                for (var t = 0, e = this.data.k.k.length; t < e;) {
                    if (!this.comparePoints(this.data.k.k[t].s, this.data.p)) return !1;
                    t += 1
                } else if (!this.comparePoints(this.data.k.k, this.data.p)) return !1;
            return !0
        }, GradientProperty.prototype.getValue = function(t) {
            if (this.prop.getValue(), this._mdf = !1, this._cmdf = !1, this._omdf = !1, this.prop._mdf || t) {
                var e, r = this.data.p * 4,
                    s, a;
                for (e = 0; e < r; e += 1) s = e % 4 === 0 ? 100 : 255, a = Math.round(this.prop.v[e] * s), this.c[e] !== a && (this.c[e] = a, this._cmdf = !t);
                if (this.o.length)
                    for (r = this.prop.v.length, e = this.data.p * 4; e < r; e += 1) s = e % 2 === 0 ? 100 : 1, a = e % 2 === 0 ? Math.round(this.prop.v[e] * 100) : this.prop.v[e], this.o[e - this.data.p * 4] !== a && (this.o[e - this.data.p * 4] = a, this._omdf = !t);
                this._mdf = !t
            }
        }, extendPrototype([DynamicPropertyContainer], GradientProperty);

        function SVGGradientFillStyleData(t, e, r) {
            this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.initGradientData(t, e, r)
        }
        SVGGradientFillStyleData.prototype.initGradientData = function(t, e, r) {
            this.o = PropertyFactory.getProp(t, e.o, 0, .01, this), this.s = PropertyFactory.getProp(t, e.s, 1, null, this), this.e = PropertyFactory.getProp(t, e.e, 1, null, this), this.h = PropertyFactory.getProp(t, e.h || {
                k: 0
            }, 0, .01, this), this.a = PropertyFactory.getProp(t, e.a || {
                k: 0
            }, 0, degToRads, this), this.g = new GradientProperty(t, e.g, this), this.style = r, this.stops = [], this.setGradientData(r.pElem, e), this.setGradientOpacity(e, r), this._isAnimated = !!this._isAnimated
        }, SVGGradientFillStyleData.prototype.setGradientData = function(t, e) {
            var r = createElementID(),
                s = createNS(e.t === 1 ? "linearGradient" : "radialGradient");
            s.setAttribute("id", r), s.setAttribute("spreadMethod", "pad"), s.setAttribute("gradientUnits", "userSpaceOnUse");
            var a = [],
                o, f, d;
            for (d = e.g.p * 4, f = 0; f < d; f += 4) o = createNS("stop"), s.appendChild(o), a.push(o);
            t.setAttribute(e.ty === "gf" ? "fill" : "stroke", "url(" + getLocationHref() + "#" + r + ")"), this.gf = s, this.cst = a
        }, SVGGradientFillStyleData.prototype.setGradientOpacity = function(t, e) {
            if (this.g._hasOpacity && !this.g._collapsable) {
                var r, s, a, o = createNS("mask"),
                    f = createNS("path");
                o.appendChild(f);
                var d = createElementID(),
                    c = createElementID();
                o.setAttribute("id", c);
                var m = createNS(t.t === 1 ? "linearGradient" : "radialGradient");
                m.setAttribute("id", d), m.setAttribute("spreadMethod", "pad"), m.setAttribute("gradientUnits", "userSpaceOnUse"), a = t.g.k.k[0].s ? t.g.k.k[0].s.length : t.g.k.k.length;
                var S = this.stops;
                for (s = t.g.p * 4; s < a; s += 2) r = createNS("stop"), r.setAttribute("stop-color", "rgb(255,255,255)"), m.appendChild(r), S.push(r);
                f.setAttribute(t.ty === "gf" ? "fill" : "stroke", "url(" + getLocationHref() + "#" + d + ")"), t.ty === "gs" && (f.setAttribute("stroke-linecap", lineCapEnum[t.lc || 2]), f.setAttribute("stroke-linejoin", lineJoinEnum[t.lj || 2]), t.lj === 1 && f.setAttribute("stroke-miterlimit", t.ml)), this.of = m, this.ms = o, this.ost = S, this.maskId = c, e.msElem = f
            }
        }, extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);

        function SVGGradientStrokeStyleData(t, e, r) {
            this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.w = PropertyFactory.getProp(t, e.w, 0, null, this), this.d = new DashProperty(t, e.d || {}, "svg", this), this.initGradientData(t, e, r), this._isAnimated = !!this._isAnimated
        }
        extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);

        function ShapeGroupData() {
            this.it = [], this.prevViewData = [], this.gr = createNS("g")
        }

        function SVGTransformData(t, e, r) {
            this.transform = {
                mProps: t,
                op: e,
                container: r
            }, this.elements = [], this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length
        }
        var buildShapeString = function(e, r, s, a) {
                if (r === 0) return "";
                var o = e.o,
                    f = e.i,
                    d = e.v,
                    c, m = " M" + a.applyToPointStringified(d[0][0], d[0][1]);
                for (c = 1; c < r; c += 1) m += " C" + a.applyToPointStringified(o[c - 1][0], o[c - 1][1]) + " " + a.applyToPointStringified(f[c][0], f[c][1]) + " " + a.applyToPointStringified(d[c][0], d[c][1]);
                return s && r && (m += " C" + a.applyToPointStringified(o[c - 1][0], o[c - 1][1]) + " " + a.applyToPointStringified(f[0][0], f[0][1]) + " " + a.applyToPointStringified(d[0][0], d[0][1]), m += "z"), m
            },
            SVGElementsRenderer = function() {
                var t = new Matrix,
                    e = new Matrix,
                    r = {
                        createRenderFunction: s
                    };

                function s(M) {
                    switch (M.ty) {
                        case "fl":
                            return d;
                        case "gf":
                            return m;
                        case "gs":
                            return c;
                        case "st":
                            return S;
                        case "sh":
                        case "el":
                        case "rc":
                        case "sr":
                            return f;
                        case "tr":
                            return a;
                        case "no":
                            return o;
                        default:
                            return null
                    }
                }

                function a(M, g, k) {
                    (k || g.transform.op._mdf) && g.transform.container.setAttribute("opacity", g.transform.op.v), (k || g.transform.mProps._mdf) && g.transform.container.setAttribute("transform", g.transform.mProps.v.to2dCSS())
                }

                function o() {}

                function f(M, g, k) {
                    var C, b, G, y, P, v, _ = g.styles.length,
                        V = g.lvl,
                        N, Z, J, ht;
                    for (v = 0; v < _; v += 1) {
                        if (y = g.sh._mdf || k, g.styles[v].lvl < V) {
                            for (Z = e.reset(), J = V - g.styles[v].lvl, ht = g.transformers.length - 1; !y && J > 0;) y = g.transformers[ht].mProps._mdf || y, J -= 1, ht -= 1;
                            if (y)
                                for (J = V - g.styles[v].lvl, ht = g.transformers.length - 1; J > 0;) Z.multiply(g.transformers[ht].mProps.v), J -= 1, ht -= 1
                        } else Z = t;
                        if (N = g.sh.paths, b = N._length, y) {
                            for (G = "", C = 0; C < b; C += 1) P = N.shapes[C], P && P._length && (G += buildShapeString(P, P._length, P.c, Z));
                            g.caches[v] = G
                        } else G = g.caches[v];
                        g.styles[v].d += M.hd === !0 ? "" : G, g.styles[v]._mdf = y || g.styles[v]._mdf
                    }
                }

                function d(M, g, k) {
                    var C = g.style;
                    (g.c._mdf || k) && C.pElem.setAttribute("fill", "rgb(" + bmFloor(g.c.v[0]) + "," + bmFloor(g.c.v[1]) + "," + bmFloor(g.c.v[2]) + ")"), (g.o._mdf || k) && C.pElem.setAttribute("fill-opacity", g.o.v)
                }

                function c(M, g, k) {
                    m(M, g, k), S(M, g, k)
                }

                function m(M, g, k) {
                    var C = g.gf,
                        b = g.g._hasOpacity,
                        G = g.s.v,
                        y = g.e.v;
                    if (g.o._mdf || k) {
                        var P = M.ty === "gf" ? "fill-opacity" : "stroke-opacity";
                        g.style.pElem.setAttribute(P, g.o.v)
                    }
                    if (g.s._mdf || k) {
                        var v = M.t === 1 ? "x1" : "cx",
                            _ = v === "x1" ? "y1" : "cy";
                        C.setAttribute(v, G[0]), C.setAttribute(_, G[1]), b && !g.g._collapsable && (g.of.setAttribute(v, G[0]), g.of.setAttribute(_, G[1]))
                    }
                    var V, N, Z, J;
                    if (g.g._cmdf || k) {
                        V = g.cst;
                        var ht = g.g.c;
                        for (Z = V.length, N = 0; N < Z; N += 1) J = V[N], J.setAttribute("offset", ht[N * 4] + "%"), J.setAttribute("stop-color", "rgb(" + ht[N * 4 + 1] + "," + ht[N * 4 + 2] + "," + ht[N * 4 + 3] + ")")
                    }
                    if (b && (g.g._omdf || k)) {
                        var vt = g.g.o;
                        for (g.g._collapsable ? V = g.cst : V = g.ost, Z = V.length, N = 0; N < Z; N += 1) J = V[N], g.g._collapsable || J.setAttribute("offset", vt[N * 2] + "%"), J.setAttribute("stop-opacity", vt[N * 2 + 1])
                    }
                    if (M.t === 1)(g.e._mdf || k) && (C.setAttribute("x2", y[0]), C.setAttribute("y2", y[1]), b && !g.g._collapsable && (g.of.setAttribute("x2", y[0]), g.of.setAttribute("y2", y[1])));
                    else {
                        var ct;
                        if ((g.s._mdf || g.e._mdf || k) && (ct = Math.sqrt(Math.pow(G[0] - y[0], 2) + Math.pow(G[1] - y[1], 2)), C.setAttribute("r", ct), b && !g.g._collapsable && g.of.setAttribute("r", ct)), g.e._mdf || g.h._mdf || g.a._mdf || k) {
                            ct || (ct = Math.sqrt(Math.pow(G[0] - y[0], 2) + Math.pow(G[1] - y[1], 2)));
                            var ft = Math.atan2(y[1] - G[1], y[0] - G[0]),
                                yt = g.h.v;
                            yt >= 1 ? yt = .99 : yt <= -1 && (yt = -.99);
                            var bt = ct * yt,
                                lt = Math.cos(ft + g.a.v) * bt + G[0],
                                D = Math.sin(ft + g.a.v) * bt + G[1];
                            C.setAttribute("fx", lt), C.setAttribute("fy", D), b && !g.g._collapsable && (g.of.setAttribute("fx", lt), g.of.setAttribute("fy", D))
                        }
                    }
                }

                function S(M, g, k) {
                    var C = g.style,
                        b = g.d;
                    b && (b._mdf || k) && b.dashStr && (C.pElem.setAttribute("stroke-dasharray", b.dashStr), C.pElem.setAttribute("stroke-dashoffset", b.dashoffset[0])), g.c && (g.c._mdf || k) && C.pElem.setAttribute("stroke", "rgb(" + bmFloor(g.c.v[0]) + "," + bmFloor(g.c.v[1]) + "," + bmFloor(g.c.v[2]) + ")"), (g.o._mdf || k) && C.pElem.setAttribute("stroke-opacity", g.o.v), (g.w._mdf || k) && (C.pElem.setAttribute("stroke-width", g.w.v), C.msElem && C.msElem.setAttribute("stroke-width", g.w.v))
                }
                return r
            }();

        function SVGShapeElement(t, e, r) {
            this.shapes = [], this.shapesData = t.shapes, this.stylesList = [], this.shapeModifiers = [], this.itemsData = [], this.processedElements = [], this.animatedContents = [], this.initElement(t, e, r), this.prevViewData = []
        }
        extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement), SVGShapeElement.prototype.initSecondaryElement = function() {}, SVGShapeElement.prototype.identityMatrix = new Matrix, SVGShapeElement.prototype.buildExpressionInterface = function() {}, SVGShapeElement.prototype.createContent = function() {
            this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], !0), this.filterUniqueShapes()
        }, SVGShapeElement.prototype.filterUniqueShapes = function() {
            var t, e = this.shapes.length,
                r, s, a = this.stylesList.length,
                o, f = [],
                d = !1;
            for (s = 0; s < a; s += 1) {
                for (o = this.stylesList[s], d = !1, f.length = 0, t = 0; t < e; t += 1) r = this.shapes[t], r.styles.indexOf(o) !== -1 && (f.push(r), d = r._isAnimated || d);
                f.length > 1 && d && this.setShapesAsAnimated(f)
            }
        }, SVGShapeElement.prototype.setShapesAsAnimated = function(t) {
            var e, r = t.length;
            for (e = 0; e < r; e += 1) t[e].setAsAnimated()
        }, SVGShapeElement.prototype.createStyleElement = function(t, e) {
            var r, s = new SVGStyleData(t, e),
                a = s.pElem;
            if (t.ty === "st") r = new SVGStrokeStyleData(this, t, s);
            else if (t.ty === "fl") r = new SVGFillStyleData(this, t, s);
            else if (t.ty === "gf" || t.ty === "gs") {
                var o = t.ty === "gf" ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;
                r = new o(this, t, s), this.globalData.defs.appendChild(r.gf), r.maskId && (this.globalData.defs.appendChild(r.ms), this.globalData.defs.appendChild(r.of), a.setAttribute("mask", "url(" + getLocationHref() + "#" + r.maskId + ")"))
            } else t.ty === "no" && (r = new SVGNoStyleData(this, t, s));
            return (t.ty === "st" || t.ty === "gs") && (a.setAttribute("stroke-linecap", lineCapEnum[t.lc || 2]), a.setAttribute("stroke-linejoin", lineJoinEnum[t.lj || 2]), a.setAttribute("fill-opacity", "0"), t.lj === 1 && a.setAttribute("stroke-miterlimit", t.ml)), t.r === 2 && a.setAttribute("fill-rule", "evenodd"), t.ln && a.setAttribute("id", t.ln), t.cl && a.setAttribute("class", t.cl), t.bm && (a.style["mix-blend-mode"] = getBlendMode(t.bm)), this.stylesList.push(s), this.addToAnimatedContents(t, r), r
        }, SVGShapeElement.prototype.createGroupElement = function(t) {
            var e = new ShapeGroupData;
            return t.ln && e.gr.setAttribute("id", t.ln), t.cl && e.gr.setAttribute("class", t.cl), t.bm && (e.gr.style["mix-blend-mode"] = getBlendMode(t.bm)), e
        }, SVGShapeElement.prototype.createTransformElement = function(t, e) {
            var r = TransformPropertyFactory.getTransformProperty(this, t, this),
                s = new SVGTransformData(r, r.o, e);
            return this.addToAnimatedContents(t, s), s
        }, SVGShapeElement.prototype.createShapeElement = function(t, e, r) {
            var s = 4;
            t.ty === "rc" ? s = 5 : t.ty === "el" ? s = 6 : t.ty === "sr" && (s = 7);
            var a = ShapePropertyFactory.getShapeProp(this, t, s, this),
                o = new SVGShapeData(e, r, a);
            return this.shapes.push(o), this.addShapeToModifiers(o), this.addToAnimatedContents(t, o), o
        }, SVGShapeElement.prototype.addToAnimatedContents = function(t, e) {
            for (var r = 0, s = this.animatedContents.length; r < s;) {
                if (this.animatedContents[r].element === e) return;
                r += 1
            }
            this.animatedContents.push({
                fn: SVGElementsRenderer.createRenderFunction(t),
                element: e,
                data: t
            })
        }, SVGShapeElement.prototype.setElementStyles = function(t) {
            var e = t.styles,
                r, s = this.stylesList.length;
            for (r = 0; r < s; r += 1) this.stylesList[r].closed || e.push(this.stylesList[r])
        }, SVGShapeElement.prototype.reloadShapes = function() {
            this._isFirstFrame = !0;
            var t, e = this.itemsData.length;
            for (t = 0; t < e; t += 1) this.prevViewData[t] = this.itemsData[t];
            for (this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], !0), this.filterUniqueShapes(), e = this.dynamicProperties.length, t = 0; t < e; t += 1) this.dynamicProperties[t].getValue();
            this.renderModifiers()
        }, SVGShapeElement.prototype.searchShapes = function(t, e, r, s, a, o, f) {
            var d = [].concat(o),
                c, m = t.length - 1,
                S, M, g = [],
                k = [],
                C, b, G;
            for (c = m; c >= 0; c -= 1) {
                if (G = this.searchProcessedElement(t[c]), G ? e[c] = r[G - 1] : t[c]._render = f, t[c].ty === "fl" || t[c].ty === "st" || t[c].ty === "gf" || t[c].ty === "gs" || t[c].ty === "no") G ? e[c].style.closed = !1 : e[c] = this.createStyleElement(t[c], a), t[c]._render && e[c].style.pElem.parentNode !== s && s.appendChild(e[c].style.pElem), g.push(e[c].style);
                else if (t[c].ty === "gr") {
                    if (!G) e[c] = this.createGroupElement(t[c]);
                    else
                        for (M = e[c].it.length, S = 0; S < M; S += 1) e[c].prevViewData[S] = e[c].it[S];
                    this.searchShapes(t[c].it, e[c].it, e[c].prevViewData, e[c].gr, a + 1, d, f), t[c]._render && e[c].gr.parentNode !== s && s.appendChild(e[c].gr)
                } else t[c].ty === "tr" ? (G || (e[c] = this.createTransformElement(t[c], s)), C = e[c].transform, d.push(C)) : t[c].ty === "sh" || t[c].ty === "rc" || t[c].ty === "el" || t[c].ty === "sr" ? (G || (e[c] = this.createShapeElement(t[c], d, a)), this.setElementStyles(e[c])) : t[c].ty === "tm" || t[c].ty === "rd" || t[c].ty === "ms" || t[c].ty === "pb" || t[c].ty === "zz" || t[c].ty === "op" ? (G ? (b = e[c], b.closed = !1) : (b = ShapeModifiers.getModifier(t[c].ty), b.init(this, t[c]), e[c] = b, this.shapeModifiers.push(b)), k.push(b)) : t[c].ty === "rp" && (G ? (b = e[c], b.closed = !0) : (b = ShapeModifiers.getModifier(t[c].ty), e[c] = b, b.init(this, t, c, e), this.shapeModifiers.push(b), f = !1), k.push(b));
                this.addProcessedElement(t[c], c + 1)
            }
            for (m = g.length, c = 0; c < m; c += 1) g[c].closed = !0;
            for (m = k.length, c = 0; c < m; c += 1) k[c].closed = !0
        }, SVGShapeElement.prototype.renderInnerContent = function() {
            this.renderModifiers();
            var t, e = this.stylesList.length;
            for (t = 0; t < e; t += 1) this.stylesList[t].reset();
            for (this.renderShape(), t = 0; t < e; t += 1)(this.stylesList[t]._mdf || this._isFirstFrame) && (this.stylesList[t].msElem && (this.stylesList[t].msElem.setAttribute("d", this.stylesList[t].d), this.stylesList[t].d = "M0 0" + this.stylesList[t].d), this.stylesList[t].pElem.setAttribute("d", this.stylesList[t].d || "M0 0"))
        }, SVGShapeElement.prototype.renderShape = function() {
            var t, e = this.animatedContents.length,
                r;
            for (t = 0; t < e; t += 1) r = this.animatedContents[t], (this._isFirstFrame || r.element._isAnimated) && r.data !== !0 && r.fn(r.data, r.element, this._isFirstFrame)
        }, SVGShapeElement.prototype.destroy = function() {
            this.destroyBaseElement(), this.shapesData = null, this.itemsData = null
        };

        function LetterProps(t, e, r, s, a, o) {
            this.o = t, this.sw = e, this.sc = r, this.fc = s, this.m = a, this.p = o, this._mdf = {
                o: !0,
                sw: !!e,
                sc: !!r,
                fc: !!s,
                m: !0,
                p: !0
            }
        }
        LetterProps.prototype.update = function(t, e, r, s, a, o) {
            this._mdf.o = !1, this._mdf.sw = !1, this._mdf.sc = !1, this._mdf.fc = !1, this._mdf.m = !1, this._mdf.p = !1;
            var f = !1;
            return this.o !== t && (this.o = t, this._mdf.o = !0, f = !0), this.sw !== e && (this.sw = e, this._mdf.sw = !0, f = !0), this.sc !== r && (this.sc = r, this._mdf.sc = !0, f = !0), this.fc !== s && (this.fc = s, this._mdf.fc = !0, f = !0), this.m !== a && (this.m = a, this._mdf.m = !0, f = !0), o.length && (this.p[0] !== o[0] || this.p[1] !== o[1] || this.p[4] !== o[4] || this.p[5] !== o[5] || this.p[12] !== o[12] || this.p[13] !== o[13]) && (this.p = o, this._mdf.p = !0, f = !0), f
        };

        function TextProperty(t, e) {
            this._frameId = initialDefaultFrame, this.pv = "", this.v = "", this.kf = !1, this._isFirstFrame = !0, this._mdf = !1, e.d && e.d.sid && (e.d = t.globalData.slotManager.getProp(e.d)), this.data = e, this.elem = t, this.comp = this.elem.comp, this.keysIndex = 0, this.canResize = !1, this.minimumFontSize = 1, this.effectsSequence = [], this.currentData = {
                ascent: 0,
                boxWidth: this.defaultBoxWidth,
                f: "",
                fStyle: "",
                fWeight: "",
                fc: "",
                j: "",
                justifyOffset: "",
                l: [],
                lh: 0,
                lineWidths: [],
                ls: "",
                of: "",
                s: "",
                sc: "",
                sw: 0,
                t: 0,
                tr: 0,
                sz: 0,
                ps: null,
                fillColorAnim: !1,
                strokeColorAnim: !1,
                strokeWidthAnim: !1,
                yOffset: 0,
                finalSize: 0,
                finalText: [],
                finalLineHeight: 0,
                __complete: !1
            }, this.copyData(this.currentData, this.data.d.k[0].s), this.searchProperty() || this.completeTextData(this.currentData)
        }
        TextProperty.prototype.defaultBoxWidth = [0, 0], TextProperty.prototype.copyData = function(t, e) {
            for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]);
            return t
        }, TextProperty.prototype.setCurrentData = function(t) {
            t.__complete || this.completeTextData(t), this.currentData = t, this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth, this._mdf = !0
        }, TextProperty.prototype.searchProperty = function() {
            return this.searchKeyframes()
        }, TextProperty.prototype.searchKeyframes = function() {
            return this.kf = this.data.d.k.length > 1, this.kf && this.addEffect(this.getKeyframeValue.bind(this)), this.kf
        }, TextProperty.prototype.addEffect = function(t) {
            this.effectsSequence.push(t), this.elem.addDynamicProperty(this)
        }, TextProperty.prototype.getValue = function(t) {
            if (!((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !t)) {
                this.currentData.t = this.data.d.k[this.keysIndex].s.t;
                var e = this.currentData,
                    r = this.keysIndex;
                if (this.lock) {
                    this.setCurrentData(this.currentData);
                    return
                }
                this.lock = !0, this._mdf = !1;
                var s, a = this.effectsSequence.length,
                    o = t || this.data.d.k[this.keysIndex].s;
                for (s = 0; s < a; s += 1) r !== this.keysIndex ? o = this.effectsSequence[s](o, o.t) : o = this.effectsSequence[s](this.currentData, o.t);
                e !== o && this.setCurrentData(o), this.v = this.currentData, this.pv = this.v, this.lock = !1, this.frameId = this.elem.globalData.frameId
            }
        }, TextProperty.prototype.getKeyframeValue = function() {
            for (var t = this.data.d.k, e = this.elem.comp.renderedFrame, r = 0, s = t.length; r <= s - 1 && !(r === s - 1 || t[r + 1].t > e);) r += 1;
            return this.keysIndex !== r && (this.keysIndex = r), this.data.d.k[this.keysIndex].s
        }, TextProperty.prototype.buildFinalText = function(t) {
            for (var e = [], r = 0, s = t.length, a, o, f = !1, d = !1, c = ""; r < s;) f = d, d = !1, a = t.charCodeAt(r), c = t.charAt(r), FontManager.isCombinedCharacter(a) ? f = !0 : a >= 55296 && a <= 56319 ? FontManager.isRegionalFlag(t, r) ? c = t.substr(r, 14) : (o = t.charCodeAt(r + 1), o >= 56320 && o <= 57343 && (FontManager.isModifier(a, o) ? (c = t.substr(r, 2), f = !0) : FontManager.isFlagEmoji(t.substr(r, 4)) ? c = t.substr(r, 4) : c = t.substr(r, 2))) : a > 56319 ? (o = t.charCodeAt(r + 1), FontManager.isVariationSelector(a) && (f = !0)) : FontManager.isZeroWidthJoiner(a) && (f = !0, d = !0), f ? (e[e.length - 1] += c, f = !1) : e.push(c), r += c.length;
            return e
        }, TextProperty.prototype.completeTextData = function(t) {
            t.__complete = !0;
            var e = this.elem.globalData.fontManager,
                r = this.data,
                s = [],
                a, o, f, d = 0,
                c, m = r.m.g,
                S = 0,
                M = 0,
                g = 0,
                k = [],
                C = 0,
                b = 0,
                G, y, P = e.getFontByName(t.f),
                v, _ = 0,
                V = getFontProperties(P);
            t.fWeight = V.weight, t.fStyle = V.style, t.finalSize = t.s, t.finalText = this.buildFinalText(t.t), o = t.finalText.length, t.finalLineHeight = t.lh;
            var N = t.tr / 1e3 * t.finalSize,
                Z;
            if (t.sz)
                for (var J = !0, ht = t.sz[0], vt = t.sz[1], ct, ft; J;) {
                    ft = this.buildFinalText(t.t), ct = 0, C = 0, o = ft.length, N = t.tr / 1e3 * t.finalSize;
                    var yt = -1;
                    for (a = 0; a < o; a += 1) Z = ft[a].charCodeAt(0), f = !1, ft[a] === " " ? yt = a : (Z === 13 || Z === 3) && (C = 0, f = !0, ct += t.finalLineHeight || t.finalSize * 1.2), e.chars ? (v = e.getCharData(ft[a], P.fStyle, P.fFamily), _ = f ? 0 : v.w * t.finalSize / 100) : _ = e.measureText(ft[a], t.f, t.finalSize), C + _ > ht && ft[a] !== " " ? (yt === -1 ? o += 1 : a = yt, ct += t.finalLineHeight || t.finalSize * 1.2, ft.splice(a, yt === a ? 1 : 0, "\r"), yt = -1, C = 0) : (C += _, C += N);
                    ct += P.ascent * t.finalSize / 100, this.canResize && t.finalSize > this.minimumFontSize && vt < ct ? (t.finalSize -= 1, t.finalLineHeight = t.finalSize * t.lh / t.s) : (t.finalText = ft, o = t.finalText.length, J = !1)
                }
            C = -N, _ = 0;
            var bt = 0,
                lt;
            for (a = 0; a < o; a += 1)
                if (f = !1, lt = t.finalText[a], Z = lt.charCodeAt(0), Z === 13 || Z === 3 ? (bt = 0, k.push(C), b = C > b ? C : b, C = -2 * N, c = "", f = !0, g += 1) : c = lt, e.chars ? (v = e.getCharData(lt, P.fStyle, e.getFontByName(t.f).fFamily), _ = f ? 0 : v.w * t.finalSize / 100) : _ = e.measureText(c, t.f, t.finalSize), lt === " " ? bt += _ + N : (C += _ + N + bt, bt = 0), s.push({
                        l: _,
                        an: _,
                        add: S,
                        n: f,
                        anIndexes: [],
                        val: c,
                        line: g,
                        animatorJustifyOffset: 0
                    }), m == 2) {
                    if (S += _, c === "" || c === " " || a === o - 1) {
                        for ((c === "" || c === " ") && (S -= _); M <= a;) s[M].an = S, s[M].ind = d, s[M].extra = _, M += 1;
                        d += 1, S = 0
                    }
                } else if (m == 3) {
                if (S += _, c === "" || a === o - 1) {
                    for (c === "" && (S -= _); M <= a;) s[M].an = S, s[M].ind = d, s[M].extra = _, M += 1;
                    S = 0, d += 1
                }
            } else s[d].ind = d, s[d].extra = 0, d += 1;
            if (t.l = s, b = C > b ? C : b, k.push(C), t.sz) t.boxWidth = t.sz[0], t.justifyOffset = 0;
            else switch (t.boxWidth = b, t.j) {
                case 1:
                    t.justifyOffset = -t.boxWidth;
                    break;
                case 2:
                    t.justifyOffset = -t.boxWidth / 2;
                    break;
                default:
                    t.justifyOffset = 0
            }
            t.lineWidths = k;
            var D = r.a,
                X, E;
            y = D.length;
            var w, nt, tt = [];
            for (G = 0; G < y; G += 1) {
                for (X = D[G], X.a.sc && (t.strokeColorAnim = !0), X.a.sw && (t.strokeWidthAnim = !0), (X.a.fc || X.a.fh || X.a.fs || X.a.fb) && (t.fillColorAnim = !0), nt = 0, w = X.s.b, a = 0; a < o; a += 1) E = s[a], E.anIndexes[G] = nt, (w == 1 && E.val !== "" || w == 2 && E.val !== "" && E.val !== " " || w == 3 && (E.n || E.val == " " || a == o - 1) || w == 4 && (E.n || a == o - 1)) && (X.s.rn === 1 && tt.push(nt), nt += 1);
                r.a[G].s.totalChars = nt;
                var gt = -1,
                    Tt;
                if (X.s.rn === 1)
                    for (a = 0; a < o; a += 1) E = s[a], gt != E.anIndexes[G] && (gt = E.anIndexes[G], Tt = tt.splice(Math.floor(Math.random() * tt.length), 1)[0]), E.anIndexes[G] = Tt
            }
            t.yOffset = t.finalLineHeight || t.finalSize * 1.2, t.ls = t.ls || 0, t.ascent = P.ascent * t.finalSize / 100
        }, TextProperty.prototype.updateDocumentData = function(t, e) {
            e = e === void 0 ? this.keysIndex : e;
            var r = this.copyData({}, this.data.d.k[e].s);
            r = this.copyData(r, t), this.data.d.k[e].s = r, this.recalculate(e), this.setCurrentData(r), this.elem.addDynamicProperty(this)
        }, TextProperty.prototype.recalculate = function(t) {
            var e = this.data.d.k[t].s;
            e.__complete = !1, this.keysIndex = 0, this._isFirstFrame = !0, this.getValue(e)
        }, TextProperty.prototype.canResizeFont = function(t) {
            this.canResize = t, this.recalculate(this.keysIndex), this.elem.addDynamicProperty(this)
        }, TextProperty.prototype.setMinimumFontSize = function(t) {
            this.minimumFontSize = Math.floor(t) || 1, this.recalculate(this.keysIndex), this.elem.addDynamicProperty(this)
        };
        var TextSelectorProp = function() {
            var t = Math.max,
                e = Math.min,
                r = Math.floor;

            function s(o, f) {
                this._currentTextLength = -1, this.k = !1, this.data = f, this.elem = o, this.comp = o.comp, this.finalS = 0, this.finalE = 0, this.initDynamicPropertyContainer(o), this.s = PropertyFactory.getProp(o, f.s || {
                    k: 0
                }, 0, 0, this), "e" in f ? this.e = PropertyFactory.getProp(o, f.e, 0, 0, this) : this.e = {
                    v: 100
                }, this.o = PropertyFactory.getProp(o, f.o || {
                    k: 0
                }, 0, 0, this), this.xe = PropertyFactory.getProp(o, f.xe || {
                    k: 0
                }, 0, 0, this), this.ne = PropertyFactory.getProp(o, f.ne || {
                    k: 0
                }, 0, 0, this), this.sm = PropertyFactory.getProp(o, f.sm || {
                    k: 100
                }, 0, 0, this), this.a = PropertyFactory.getProp(o, f.a, 0, .01, this), this.dynamicProperties.length || this.getValue()
            }
            s.prototype = {
                getMult: function(f) {
                    this._currentTextLength !== this.elem.textProperty.currentData.l.length && this.getValue();
                    var d = 0,
                        c = 0,
                        m = 1,
                        S = 1;
                    this.ne.v > 0 ? d = this.ne.v / 100 : c = -this.ne.v / 100, this.xe.v > 0 ? m = 1 - this.xe.v / 100 : S = 1 + this.xe.v / 100;
                    var M = BezierFactory.getBezierEasing(d, c, m, S).get,
                        g = 0,
                        k = this.finalS,
                        C = this.finalE,
                        b = this.data.sh;
                    if (b === 2) C === k ? g = f >= C ? 1 : 0 : g = t(0, e(.5 / (C - k) + (f - k) / (C - k), 1)), g = M(g);
                    else if (b === 3) C === k ? g = f >= C ? 0 : 1 : g = 1 - t(0, e(.5 / (C - k) + (f - k) / (C - k), 1)), g = M(g);
                    else if (b === 4) C === k ? g = 0 : (g = t(0, e(.5 / (C - k) + (f - k) / (C - k), 1)), g < .5 ? g *= 2 : g = 1 - 2 * (g - .5)), g = M(g);
                    else if (b === 5) {
                        if (C === k) g = 0;
                        else {
                            var G = C - k;
                            f = e(t(0, f + .5 - k), C - k);
                            var y = -G / 2 + f,
                                P = G / 2;
                            g = Math.sqrt(1 - y * y / (P * P))
                        }
                        g = M(g)
                    } else b === 6 ? (C === k ? g = 0 : (f = e(t(0, f + .5 - k), C - k), g = (1 + Math.cos(Math.PI + Math.PI * 2 * f / (C - k))) / 2), g = M(g)) : (f >= r(k) && (f - k < 0 ? g = t(0, e(e(C, 1) - (k - f), 1)) : g = t(0, e(C - f, 1))), g = M(g));
                    if (this.sm.v !== 100) {
                        var v = this.sm.v * .01;
                        v === 0 && (v = 1e-8);
                        var _ = .5 - v * .5;
                        g < _ ? g = 0 : (g = (g - _) / v, g > 1 && (g = 1))
                    }
                    return g * this.a.v
                },
                getValue: function(f) {
                    this.iterateDynamicProperties(), this._mdf = f || this._mdf, this._currentTextLength = this.elem.textProperty.currentData.l.length || 0, f && this.data.r === 2 && (this.e.v = this._currentTextLength);
                    var d = this.data.r === 2 ? 1 : 100 / this.data.totalChars,
                        c = this.o.v / d,
                        m = this.s.v / d + c,
                        S = this.e.v / d + c;
                    if (m > S) {
                        var M = m;
                        m = S, S = M
                    }
                    this.finalS = m, this.finalE = S
                }
            }, extendPrototype([DynamicPropertyContainer], s);

            function a(o, f, d) {
                return new s(o, f)
            }
            return {
                getTextSelectorProp: a
            }
        }();

        function TextAnimatorDataProperty(t, e, r) {
            var s = {
                    propType: !1
                },
                a = PropertyFactory.getProp,
                o = e.a;
            this.a = {
                r: o.r ? a(t, o.r, 0, degToRads, r) : s,
                rx: o.rx ? a(t, o.rx, 0, degToRads, r) : s,
                ry: o.ry ? a(t, o.ry, 0, degToRads, r) : s,
                sk: o.sk ? a(t, o.sk, 0, degToRads, r) : s,
                sa: o.sa ? a(t, o.sa, 0, degToRads, r) : s,
                s: o.s ? a(t, o.s, 1, .01, r) : s,
                a: o.a ? a(t, o.a, 1, 0, r) : s,
                o: o.o ? a(t, o.o, 0, .01, r) : s,
                p: o.p ? a(t, o.p, 1, 0, r) : s,
                sw: o.sw ? a(t, o.sw, 0, 0, r) : s,
                sc: o.sc ? a(t, o.sc, 1, 0, r) : s,
                fc: o.fc ? a(t, o.fc, 1, 0, r) : s,
                fh: o.fh ? a(t, o.fh, 0, 0, r) : s,
                fs: o.fs ? a(t, o.fs, 0, .01, r) : s,
                fb: o.fb ? a(t, o.fb, 0, .01, r) : s,
                t: o.t ? a(t, o.t, 0, 0, r) : s
            }, this.s = TextSelectorProp.getTextSelectorProp(t, e.s, r), this.s.t = e.s.t
        }

        function TextAnimatorProperty(t, e, r) {
            this._isFirstFrame = !0, this._hasMaskedPath = !1, this._frameId = -1, this._textData = t, this._renderType = e, this._elem = r, this._animatorsData = createSizedArray(this._textData.a.length), this._pathData = {}, this._moreOptions = {
                alignment: {}
            }, this.renderedLetters = [], this.lettersChangedFlag = !1, this.initDynamicPropertyContainer(r)
        }
        TextAnimatorProperty.prototype.searchProperties = function() {
            var t, e = this._textData.a.length,
                r, s = PropertyFactory.getProp;
            for (t = 0; t < e; t += 1) r = this._textData.a[t], this._animatorsData[t] = new TextAnimatorDataProperty(this._elem, r, this);
            this._textData.p && "m" in this._textData.p ? (this._pathData = {
                a: s(this._elem, this._textData.p.a, 0, 0, this),
                f: s(this._elem, this._textData.p.f, 0, 0, this),
                l: s(this._elem, this._textData.p.l, 0, 0, this),
                r: s(this._elem, this._textData.p.r, 0, 0, this),
                p: s(this._elem, this._textData.p.p, 0, 0, this),
                m: this._elem.maskManager.getMaskProperty(this._textData.p.m)
            }, this._hasMaskedPath = !0) : this._hasMaskedPath = !1, this._moreOptions.alignment = s(this._elem, this._textData.m.a, 1, 0, this)
        }, TextAnimatorProperty.prototype.getMeasures = function(t, e) {
            if (this.lettersChangedFlag = e, !(!this._mdf && !this._isFirstFrame && !e && (!this._hasMaskedPath || !this._pathData.m._mdf))) {
                this._isFirstFrame = !1;
                var r = this._moreOptions.alignment.v,
                    s = this._animatorsData,
                    a = this._textData,
                    o = this.mHelper,
                    f = this._renderType,
                    d = this.renderedLetters.length,
                    c, m, S, M, g = t.l,
                    k, C, b, G, y, P, v, _, V, N, Z, J, ht, vt, ct;
                if (this._hasMaskedPath) {
                    if (ct = this._pathData.m, !this._pathData.n || this._pathData._mdf) {
                        var ft = ct.v;
                        this._pathData.r.v && (ft = ft.reverse()), k = {
                            tLength: 0,
                            segments: []
                        }, M = ft._length - 1;
                        var yt;
                        for (J = 0, S = 0; S < M; S += 1) yt = bez.buildBezierData(ft.v[S], ft.v[S + 1], [ft.o[S][0] - ft.v[S][0], ft.o[S][1] - ft.v[S][1]], [ft.i[S + 1][0] - ft.v[S + 1][0], ft.i[S + 1][1] - ft.v[S + 1][1]]), k.tLength += yt.segmentLength, k.segments.push(yt), J += yt.segmentLength;
                        S = M, ct.v.c && (yt = bez.buildBezierData(ft.v[S], ft.v[0], [ft.o[S][0] - ft.v[S][0], ft.o[S][1] - ft.v[S][1]], [ft.i[0][0] - ft.v[0][0], ft.i[0][1] - ft.v[0][1]]), k.tLength += yt.segmentLength, k.segments.push(yt), J += yt.segmentLength), this._pathData.pi = k
                    }
                    if (k = this._pathData.pi, C = this._pathData.f.v, v = 0, P = 1, G = 0, y = !0, N = k.segments, C < 0 && ct.v.c)
                        for (k.tLength < Math.abs(C) && (C = -Math.abs(C) % k.tLength), v = N.length - 1, V = N[v].points, P = V.length - 1; C < 0;) C += V[P].partialLength, P -= 1, P < 0 && (v -= 1, V = N[v].points, P = V.length - 1);
                    V = N[v].points, _ = V[P - 1], b = V[P], Z = b.partialLength
                }
                M = g.length, c = 0, m = 0;
                var bt = t.finalSize * 1.2 * .714,
                    lt = !0,
                    D, X, E, w, nt;
                w = s.length;
                var tt, gt = -1,
                    Tt, Mt, Lt, Vt = C,
                    Nt = v,
                    qt = P,
                    re = -1,
                    Kt, _t, $t, Rt, St, ue, Se, ve, Jt = "",
                    ge = this.defaultPropsArray,
                    ye;
                if (t.j === 2 || t.j === 1) {
                    var Ut = 0,
                        se = 0,
                        Et = t.j === 2 ? -.5 : -1,
                        Ot = 0,
                        ne = !0;
                    for (S = 0; S < M; S += 1)
                        if (g[S].n) {
                            for (Ut && (Ut += se); Ot < S;) g[Ot].animatorJustifyOffset = Ut, Ot += 1;
                            Ut = 0, ne = !0
                        } else {
                            for (E = 0; E < w; E += 1) D = s[E].a, D.t.propType && (ne && t.j === 2 && (se += D.t.v * Et), X = s[E].s, tt = X.getMult(g[S].anIndexes[E], a.a[E].s.totalChars), tt.length ? Ut += D.t.v * tt[0] * Et : Ut += D.t.v * tt * Et);
                            ne = !1
                        }
                    for (Ut && (Ut += se); Ot < S;) g[Ot].animatorJustifyOffset = Ut, Ot += 1
                }
                for (S = 0; S < M; S += 1) {
                    if (o.reset(), Kt = 1, g[S].n) c = 0, m += t.yOffset, m += lt ? 1 : 0, C = Vt, lt = !1, this._hasMaskedPath && (v = Nt, P = qt, V = N[v].points, _ = V[P - 1], b = V[P], Z = b.partialLength, G = 0), Jt = "", ve = "", ue = "", ye = "", ge = this.defaultPropsArray;
                    else {
                        if (this._hasMaskedPath) {
                            if (re !== g[S].line) {
                                switch (t.j) {
                                    case 1:
                                        C += J - t.lineWidths[g[S].line];
                                        break;
                                    case 2:
                                        C += (J - t.lineWidths[g[S].line]) / 2;
                                        break
                                }
                                re = g[S].line
                            }
                            gt !== g[S].ind && (g[gt] && (C += g[gt].extra), C += g[S].an / 2, gt = g[S].ind), C += r[0] * g[S].an * .005;
                            var ae = 0;
                            for (E = 0; E < w; E += 1) D = s[E].a, D.p.propType && (X = s[E].s, tt = X.getMult(g[S].anIndexes[E], a.a[E].s.totalChars), tt.length ? ae += D.p.v[0] * tt[0] : ae += D.p.v[0] * tt), D.a.propType && (X = s[E].s, tt = X.getMult(g[S].anIndexes[E], a.a[E].s.totalChars), tt.length ? ae += D.a.v[0] * tt[0] : ae += D.a.v[0] * tt);
                            for (y = !0, this._pathData.a.v && (C = g[0].an * .5 + (J - this._pathData.f.v - g[0].an * .5 - g[g.length - 1].an * .5) * gt / (M - 1), C += this._pathData.f.v); y;) G + Z >= C + ae || !V ? (ht = (C + ae - G) / b.partialLength, Mt = _.point[0] + (b.point[0] - _.point[0]) * ht, Lt = _.point[1] + (b.point[1] - _.point[1]) * ht, o.translate(-r[0] * g[S].an * .005, -(r[1] * bt) * .01), y = !1) : V && (G += b.partialLength, P += 1, P >= V.length && (P = 0, v += 1, N[v] ? V = N[v].points : ct.v.c ? (P = 0, v = 0, V = N[v].points) : (G -= b.partialLength, V = null)), V && (_ = b, b = V[P], Z = b.partialLength));
                            Tt = g[S].an / 2 - g[S].add, o.translate(-Tt, 0, 0)
                        } else Tt = g[S].an / 2 - g[S].add, o.translate(-Tt, 0, 0), o.translate(-r[0] * g[S].an * .005, -r[1] * bt * .01, 0);
                        for (E = 0; E < w; E += 1) D = s[E].a, D.t.propType && (X = s[E].s, tt = X.getMult(g[S].anIndexes[E], a.a[E].s.totalChars), (c !== 0 || t.j !== 0) && (this._hasMaskedPath ? tt.length ? C += D.t.v * tt[0] : C += D.t.v * tt : tt.length ? c += D.t.v * tt[0] : c += D.t.v * tt));
                        for (t.strokeWidthAnim && ($t = t.sw || 0), t.strokeColorAnim && (t.sc ? _t = [t.sc[0], t.sc[1], t.sc[2]] : _t = [0, 0, 0]), t.fillColorAnim && t.fc && (Rt = [t.fc[0], t.fc[1], t.fc[2]]), E = 0; E < w; E += 1) D = s[E].a, D.a.propType && (X = s[E].s, tt = X.getMult(g[S].anIndexes[E], a.a[E].s.totalChars), tt.length ? o.translate(-D.a.v[0] * tt[0], -D.a.v[1] * tt[1], D.a.v[2] * tt[2]) : o.translate(-D.a.v[0] * tt, -D.a.v[1] * tt, D.a.v[2] * tt));
                        for (E = 0; E < w; E += 1) D = s[E].a, D.s.propType && (X = s[E].s, tt = X.getMult(g[S].anIndexes[E], a.a[E].s.totalChars), tt.length ? o.scale(1 + (D.s.v[0] - 1) * tt[0], 1 + (D.s.v[1] - 1) * tt[1], 1) : o.scale(1 + (D.s.v[0] - 1) * tt, 1 + (D.s.v[1] - 1) * tt, 1));
                        for (E = 0; E < w; E += 1) {
                            if (D = s[E].a, X = s[E].s, tt = X.getMult(g[S].anIndexes[E], a.a[E].s.totalChars), D.sk.propType && (tt.length ? o.skewFromAxis(-D.sk.v * tt[0], D.sa.v * tt[1]) : o.skewFromAxis(-D.sk.v * tt, D.sa.v * tt)), D.r.propType && (tt.length ? o.rotateZ(-D.r.v * tt[2]) : o.rotateZ(-D.r.v * tt)), D.ry.propType && (tt.length ? o.rotateY(D.ry.v * tt[1]) : o.rotateY(D.ry.v * tt)), D.rx.propType && (tt.length ? o.rotateX(D.rx.v * tt[0]) : o.rotateX(D.rx.v * tt)), D.o.propType && (tt.length ? Kt += (D.o.v * tt[0] - Kt) * tt[0] : Kt += (D.o.v * tt - Kt) * tt), t.strokeWidthAnim && D.sw.propType && (tt.length ? $t += D.sw.v * tt[0] : $t += D.sw.v * tt), t.strokeColorAnim && D.sc.propType)
                                for (St = 0; St < 3; St += 1) tt.length ? _t[St] += (D.sc.v[St] - _t[St]) * tt[0] : _t[St] += (D.sc.v[St] - _t[St]) * tt;
                            if (t.fillColorAnim && t.fc) {
                                if (D.fc.propType)
                                    for (St = 0; St < 3; St += 1) tt.length ? Rt[St] += (D.fc.v[St] - Rt[St]) * tt[0] : Rt[St] += (D.fc.v[St] - Rt[St]) * tt;
                                D.fh.propType && (tt.length ? Rt = addHueToRGB(Rt, D.fh.v * tt[0]) : Rt = addHueToRGB(Rt, D.fh.v * tt)), D.fs.propType && (tt.length ? Rt = addSaturationToRGB(Rt, D.fs.v * tt[0]) : Rt = addSaturationToRGB(Rt, D.fs.v * tt)), D.fb.propType && (tt.length ? Rt = addBrightnessToRGB(Rt, D.fb.v * tt[0]) : Rt = addBrightnessToRGB(Rt, D.fb.v * tt))
                            }
                        }
                        for (E = 0; E < w; E += 1) D = s[E].a, D.p.propType && (X = s[E].s, tt = X.getMult(g[S].anIndexes[E], a.a[E].s.totalChars), this._hasMaskedPath ? tt.length ? o.translate(0, D.p.v[1] * tt[0], -D.p.v[2] * tt[1]) : o.translate(0, D.p.v[1] * tt, -D.p.v[2] * tt) : tt.length ? o.translate(D.p.v[0] * tt[0], D.p.v[1] * tt[1], -D.p.v[2] * tt[2]) : o.translate(D.p.v[0] * tt, D.p.v[1] * tt, -D.p.v[2] * tt));
                        if (t.strokeWidthAnim && (ue = $t < 0 ? 0 : $t), t.strokeColorAnim && (Se = "rgb(" + Math.round(_t[0] * 255) + "," + Math.round(_t[1] * 255) + "," + Math.round(_t[2] * 255) + ")"), t.fillColorAnim && t.fc && (ve = "rgb(" + Math.round(Rt[0] * 255) + "," + Math.round(Rt[1] * 255) + "," + Math.round(Rt[2] * 255) + ")"), this._hasMaskedPath) {
                            if (o.translate(0, -t.ls), o.translate(0, r[1] * bt * .01 + m, 0), this._pathData.p.v) {
                                vt = (b.point[1] - _.point[1]) / (b.point[0] - _.point[0]);
                                var ce = Math.atan(vt) * 180 / Math.PI;
                                b.point[0] < _.point[0] && (ce += 180), o.rotate(-ce * Math.PI / 180)
                            }
                            o.translate(Mt, Lt, 0), C -= r[0] * g[S].an * .005, g[S + 1] && gt !== g[S + 1].ind && (C += g[S].an / 2, C += t.tr * .001 * t.finalSize)
                        } else {
                            switch (o.translate(c, m, 0), t.ps && o.translate(t.ps[0], t.ps[1] + t.ascent, 0), t.j) {
                                case 1:
                                    o.translate(g[S].animatorJustifyOffset + t.justifyOffset + (t.boxWidth - t.lineWidths[g[S].line]), 0, 0);
                                    break;
                                case 2:
                                    o.translate(g[S].animatorJustifyOffset + t.justifyOffset + (t.boxWidth - t.lineWidths[g[S].line]) / 2, 0, 0);
                                    break
                            }
                            o.translate(0, -t.ls), o.translate(Tt, 0, 0), o.translate(r[0] * g[S].an * .005, r[1] * bt * .01, 0), c += g[S].l + t.tr * .001 * t.finalSize
                        }
                        f === "html" ? Jt = o.toCSS() : f === "svg" ? Jt = o.to2dCSS() : ge = [o.props[0], o.props[1], o.props[2], o.props[3], o.props[4], o.props[5], o.props[6], o.props[7], o.props[8], o.props[9], o.props[10], o.props[11], o.props[12], o.props[13], o.props[14], o.props[15]], ye = Kt
                    }
                    d <= S ? (nt = new LetterProps(ye, ue, Se, ve, Jt, ge), this.renderedLetters.push(nt), d += 1, this.lettersChangedFlag = !0) : (nt = this.renderedLetters[S], this.lettersChangedFlag = nt.update(ye, ue, Se, ve, Jt, ge) || this.lettersChangedFlag)
                }
            }
        }, TextAnimatorProperty.prototype.getValue = function() {
            this._elem.globalData.frameId !== this._frameId && (this._frameId = this._elem.globalData.frameId, this.iterateDynamicProperties())
        }, TextAnimatorProperty.prototype.mHelper = new Matrix, TextAnimatorProperty.prototype.defaultPropsArray = [], extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);

        function ITextElement() {}
        ITextElement.prototype.initElement = function(t, e, r) {
            this.lettersChangedFlag = !0, this.initFrame(), this.initBaseData(t, e, r), this.textProperty = new TextProperty(this, t.t, this.dynamicProperties), this.textAnimator = new TextAnimatorProperty(t.t, this.renderType, this), this.initTransform(t, e, r), this.initHierarchy(), this.initRenderable(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), this.createContent(), this.hide(), this.textAnimator.searchProperties(this.dynamicProperties)
        }, ITextElement.prototype.prepareFrame = function(t) {
            this._mdf = !1, this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange)
        }, ITextElement.prototype.createPathShape = function(t, e) {
            var r, s = e.length,
                a, o = "";
            for (r = 0; r < s; r += 1) e[r].ty === "sh" && (a = e[r].ks.k, o += buildShapeString(a, a.i.length, !0, t));
            return o
        }, ITextElement.prototype.updateDocumentData = function(t, e) {
            this.textProperty.updateDocumentData(t, e)
        }, ITextElement.prototype.canResizeFont = function(t) {
            this.textProperty.canResizeFont(t)
        }, ITextElement.prototype.setMinimumFontSize = function(t) {
            this.textProperty.setMinimumFontSize(t)
        }, ITextElement.prototype.applyTextPropertiesToMatrix = function(t, e, r, s, a) {
            switch (t.ps && e.translate(t.ps[0], t.ps[1] + t.ascent, 0), e.translate(0, -t.ls, 0), t.j) {
                case 1:
                    e.translate(t.justifyOffset + (t.boxWidth - t.lineWidths[r]), 0, 0);
                    break;
                case 2:
                    e.translate(t.justifyOffset + (t.boxWidth - t.lineWidths[r]) / 2, 0, 0);
                    break
            }
            e.translate(s, a, 0)
        }, ITextElement.prototype.buildColor = function(t) {
            return "rgb(" + Math.round(t[0] * 255) + "," + Math.round(t[1] * 255) + "," + Math.round(t[2] * 255) + ")"
        }, ITextElement.prototype.emptyProp = new LetterProps, ITextElement.prototype.destroy = function() {}, ITextElement.prototype.validateText = function() {
            (this.textProperty._mdf || this.textProperty._isFirstFrame) && (this.buildNewText(), this.textProperty._isFirstFrame = !1, this.textProperty._mdf = !1)
        };
        var emptyShapeData = {
            shapes: []
        };

        function SVGTextLottieElement(t, e, r) {
            this.textSpans = [], this.renderType = "svg", this.initElement(t, e, r)
        }
        extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement), SVGTextLottieElement.prototype.createContent = function() {
            this.data.singleShape && !this.globalData.fontManager.chars && (this.textContainer = createNS("text"))
        }, SVGTextLottieElement.prototype.buildTextContents = function(t) {
            for (var e = 0, r = t.length, s = [], a = ""; e < r;) t[e] === String.fromCharCode(13) || t[e] === String.fromCharCode(3) ? (s.push(a), a = "") : a += t[e], e += 1;
            return s.push(a), s
        }, SVGTextLottieElement.prototype.buildShapeData = function(t, e) {
            if (t.shapes && t.shapes.length) {
                var r = t.shapes[0];
                if (r.it) {
                    var s = r.it[r.it.length - 1];
                    s.s && (s.s.k[0] = e, s.s.k[1] = e)
                }
            }
            return t
        }, SVGTextLottieElement.prototype.buildNewText = function() {
            this.addDynamicProperty(this);
            var t, e, r = this.textProperty.currentData;
            this.renderedLetters = createSizedArray(r ? r.l.length : 0), r.fc ? this.layerElement.setAttribute("fill", this.buildColor(r.fc)) : this.layerElement.setAttribute("fill", "rgba(0,0,0,0)"), r.sc && (this.layerElement.setAttribute("stroke", this.buildColor(r.sc)), this.layerElement.setAttribute("stroke-width", r.sw)), this.layerElement.setAttribute("font-size", r.finalSize);
            var s = this.globalData.fontManager.getFontByName(r.f);
            if (s.fClass) this.layerElement.setAttribute("class", s.fClass);
            else {
                this.layerElement.setAttribute("font-family", s.fFamily);
                var a = r.fWeight,
                    o = r.fStyle;
                this.layerElement.setAttribute("font-style", o), this.layerElement.setAttribute("font-weight", a)
            }
            this.layerElement.setAttribute("aria-label", r.t);
            var f = r.l || [],
                d = !!this.globalData.fontManager.chars;
            e = f.length;
            var c, m = this.mHelper,
                S = "",
                M = this.data.singleShape,
                g = 0,
                k = 0,
                C = !0,
                b = r.tr * .001 * r.finalSize;
            if (M && !d && !r.sz) {
                var G = this.textContainer,
                    y = "start";
                switch (r.j) {
                    case 1:
                        y = "end";
                        break;
                    case 2:
                        y = "middle";
                        break;
                    default:
                        y = "start";
                        break
                }
                G.setAttribute("text-anchor", y), G.setAttribute("letter-spacing", b);
                var P = this.buildTextContents(r.finalText);
                for (e = P.length, k = r.ps ? r.ps[1] + r.ascent : 0, t = 0; t < e; t += 1) c = this.textSpans[t].span || createNS("tspan"), c.textContent = P[t], c.setAttribute("x", 0), c.setAttribute("y", k), c.style.display = "inherit", G.appendChild(c), this.textSpans[t] || (this.textSpans[t] = {
                    span: null,
                    glyph: null
                }), this.textSpans[t].span = c, k += r.finalLineHeight;
                this.layerElement.appendChild(G)
            } else {
                var v = this.textSpans.length,
                    _;
                for (t = 0; t < e; t += 1) {
                    if (this.textSpans[t] || (this.textSpans[t] = {
                            span: null,
                            childSpan: null,
                            glyph: null
                        }), !d || !M || t === 0) {
                        if (c = v > t ? this.textSpans[t].span : createNS(d ? "g" : "text"), v <= t) {
                            if (c.setAttribute("stroke-linecap", "butt"), c.setAttribute("stroke-linejoin", "round"), c.setAttribute("stroke-miterlimit", "4"), this.textSpans[t].span = c, d) {
                                var V = createNS("g");
                                c.appendChild(V), this.textSpans[t].childSpan = V
                            }
                            this.textSpans[t].span = c, this.layerElement.appendChild(c)
                        }
                        c.style.display = "inherit"
                    }
                    if (m.reset(), M && (f[t].n && (g = -b, k += r.yOffset, k += C ? 1 : 0, C = !1), this.applyTextPropertiesToMatrix(r, m, f[t].line, g, k), g += f[t].l || 0, g += b), d) {
                        _ = this.globalData.fontManager.getCharData(r.finalText[t], s.fStyle, this.globalData.fontManager.getFontByName(r.f).fFamily);
                        var N;
                        if (_.t === 1) N = new SVGCompElement(_.data, this.globalData, this);
                        else {
                            var Z = emptyShapeData;
                            _.data && _.data.shapes && (Z = this.buildShapeData(_.data, r.finalSize)), N = new SVGShapeElement(Z, this.globalData, this)
                        }
                        if (this.textSpans[t].glyph) {
                            var J = this.textSpans[t].glyph;
                            this.textSpans[t].childSpan.removeChild(J.layerElement), J.destroy()
                        }
                        this.textSpans[t].glyph = N, N._debug = !0, N.prepareFrame(0), N.renderFrame(), this.textSpans[t].childSpan.appendChild(N.layerElement), _.t === 1 && this.textSpans[t].childSpan.setAttribute("transform", "scale(" + r.finalSize / 100 + "," + r.finalSize / 100 + ")")
                    } else M && c.setAttribute("transform", "translate(" + m.props[12] + "," + m.props[13] + ")"), c.textContent = f[t].val, c.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve")
                }
                M && c && c.setAttribute("d", S)
            }
            for (; t < this.textSpans.length;) this.textSpans[t].span.style.display = "none", t += 1;
            this._sizeChanged = !0
        }, SVGTextLottieElement.prototype.sourceRectAtTime = function() {
            if (this.prepareFrame(this.comp.renderedFrame - this.data.st), this.renderInnerContent(), this._sizeChanged) {
                this._sizeChanged = !1;
                var t = this.layerElement.getBBox();
                this.bbox = {
                    top: t.y,
                    left: t.x,
                    width: t.width,
                    height: t.height
                }
            }
            return this.bbox
        }, SVGTextLottieElement.prototype.getValue = function() {
            var t, e = this.textSpans.length,
                r;
            for (this.renderedFrame = this.comp.renderedFrame, t = 0; t < e; t += 1) r = this.textSpans[t].glyph, r && (r.prepareFrame(this.comp.renderedFrame - this.data.st), r._mdf && (this._mdf = !0))
        }, SVGTextLottieElement.prototype.renderInnerContent = function() {
            if (this.validateText(), (!this.data.singleShape || this._mdf) && (this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag), this.lettersChangedFlag || this.textAnimator.lettersChangedFlag)) {
                this._sizeChanged = !0;
                var t, e, r = this.textAnimator.renderedLetters,
                    s = this.textProperty.currentData.l;
                e = s.length;
                var a, o, f;
                for (t = 0; t < e; t += 1) s[t].n || (a = r[t], o = this.textSpans[t].span, f = this.textSpans[t].glyph, f && f.renderFrame(), a._mdf.m && o.setAttribute("transform", a.m), a._mdf.o && o.setAttribute("opacity", a.o), a._mdf.sw && o.setAttribute("stroke-width", a.sw), a._mdf.sc && o.setAttribute("stroke", a.sc), a._mdf.fc && o.setAttribute("fill", a.fc))
            }
        };

        function ISolidElement(t, e, r) {
            this.initElement(t, e, r)
        }
        extendPrototype([IImageElement], ISolidElement), ISolidElement.prototype.createContent = function() {
            var t = createNS("rect");
            t.setAttribute("width", this.data.sw), t.setAttribute("height", this.data.sh), t.setAttribute("fill", this.data.sc), this.layerElement.appendChild(t)
        };

        function NullElement(t, e, r) {
            this.initFrame(), this.initBaseData(t, e, r), this.initFrame(), this.initTransform(t, e, r), this.initHierarchy()
        }
        NullElement.prototype.prepareFrame = function(t) {
            this.prepareProperties(t, !0)
        }, NullElement.prototype.renderFrame = function() {}, NullElement.prototype.getBaseElement = function() {
            return null
        }, NullElement.prototype.destroy = function() {}, NullElement.prototype.sourceRectAtTime = function() {}, NullElement.prototype.hide = function() {}, extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);

        function SVGRendererBase() {}
        extendPrototype([BaseRenderer], SVGRendererBase), SVGRendererBase.prototype.createNull = function(t) {
            return new NullElement(t, this.globalData, this)
        }, SVGRendererBase.prototype.createShape = function(t) {
            return new SVGShapeElement(t, this.globalData, this)
        }, SVGRendererBase.prototype.createText = function(t) {
            return new SVGTextLottieElement(t, this.globalData, this)
        }, SVGRendererBase.prototype.createImage = function(t) {
            return new IImageElement(t, this.globalData, this)
        }, SVGRendererBase.prototype.createSolid = function(t) {
            return new ISolidElement(t, this.globalData, this)
        }, SVGRendererBase.prototype.configAnimation = function(t) {
            this.svgElement.setAttribute("xmlns", "http://www.w3.org/2000/svg"), this.svgElement.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"), this.renderConfig.viewBoxSize ? this.svgElement.setAttribute("viewBox", this.renderConfig.viewBoxSize) : this.svgElement.setAttribute("viewBox", "0 0 " + t.w + " " + t.h), this.renderConfig.viewBoxOnly || (this.svgElement.setAttribute("width", t.w), this.svgElement.setAttribute("height", t.h), this.svgElement.style.width = "100%", this.svgElement.style.height = "100%", this.svgElement.style.transform = "translate3d(0,0,0)", this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility), this.renderConfig.width && this.svgElement.setAttribute("width", this.renderConfig.width), this.renderConfig.height && this.svgElement.setAttribute("height", this.renderConfig.height), this.renderConfig.className && this.svgElement.setAttribute("class", this.renderConfig.className), this.renderConfig.id && this.svgElement.setAttribute("id", this.renderConfig.id), this.renderConfig.focusable !== void 0 && this.svgElement.setAttribute("focusable", this.renderConfig.focusable), this.svgElement.setAttribute("preserveAspectRatio", this.renderConfig.preserveAspectRatio), this.animationItem.wrapper.appendChild(this.svgElement);
            var e = this.globalData.defs;
            this.setupGlobalData(t, e), this.globalData.progressiveLoad = this.renderConfig.progressiveLoad, this.data = t;
            var r = createNS("clipPath"),
                s = createNS("rect");
            s.setAttribute("width", t.w), s.setAttribute("height", t.h), s.setAttribute("x", 0), s.setAttribute("y", 0);
            var a = createElementID();
            r.setAttribute("id", a), r.appendChild(s), this.layerElement.setAttribute("clip-path", "url(" + getLocationHref() + "#" + a + ")"), e.appendChild(r), this.layers = t.layers, this.elements = createSizedArray(t.layers.length)
        }, SVGRendererBase.prototype.destroy = function() {
            this.animationItem.wrapper && (this.animationItem.wrapper.innerText = ""), this.layerElement = null, this.globalData.defs = null;
            var t, e = this.layers ? this.layers.length : 0;
            for (t = 0; t < e; t += 1) this.elements[t] && this.elements[t].destroy && this.elements[t].destroy();
            this.elements.length = 0, this.destroyed = !0, this.animationItem = null
        }, SVGRendererBase.prototype.updateContainerSize = function() {}, SVGRendererBase.prototype.findIndexByInd = function(t) {
            var e = 0,
                r = this.layers.length;
            for (e = 0; e < r; e += 1)
                if (this.layers[e].ind === t) return e;
            return -1
        }, SVGRendererBase.prototype.buildItem = function(t) {
            var e = this.elements;
            if (!(e[t] || this.layers[t].ty === 99)) {
                e[t] = !0;
                var r = this.createItem(this.layers[t]);
                if (e[t] = r, getExpressionsPlugin() && (this.layers[t].ty === 0 && this.globalData.projectInterface.registerComposition(r), r.initExpressions()), this.appendElementInPos(r, t), this.layers[t].tt) {
                    var s = "tp" in this.layers[t] ? this.findIndexByInd(this.layers[t].tp) : t - 1;
                    if (s === -1) return;
                    if (!this.elements[s] || this.elements[s] === !0) this.buildItem(s), this.addPendingElement(r);
                    else {
                        var a = e[s],
                            o = a.getMatte(this.layers[t].tt);
                        r.setMatte(o)
                    }
                }
            }
        }, SVGRendererBase.prototype.checkPendingElements = function() {
            for (; this.pendingElements.length;) {
                var t = this.pendingElements.pop();
                if (t.checkParenting(), t.data.tt)
                    for (var e = 0, r = this.elements.length; e < r;) {
                        if (this.elements[e] === t) {
                            var s = "tp" in t.data ? this.findIndexByInd(t.data.tp) : e - 1,
                                a = this.elements[s],
                                o = a.getMatte(this.layers[e].tt);
                            t.setMatte(o);
                            break
                        }
                        e += 1
                    }
            }
        }, SVGRendererBase.prototype.renderFrame = function(t) {
            if (!(this.renderedFrame === t || this.destroyed)) {
                t === null ? t = this.renderedFrame : this.renderedFrame = t, this.globalData.frameNum = t, this.globalData.frameId += 1, this.globalData.projectInterface.currentFrame = t, this.globalData._mdf = !1;
                var e, r = this.layers.length;
                for (this.completeLayers || this.checkLayers(t), e = r - 1; e >= 0; e -= 1)(this.completeLayers || this.elements[e]) && this.elements[e].prepareFrame(t - this.layers[e].st);
                if (this.globalData._mdf)
                    for (e = 0; e < r; e += 1)(this.completeLayers || this.elements[e]) && this.elements[e].renderFrame()
            }
        }, SVGRendererBase.prototype.appendElementInPos = function(t, e) {
            var r = t.getBaseElement();
            if (r) {
                for (var s = 0, a; s < e;) this.elements[s] && this.elements[s] !== !0 && this.elements[s].getBaseElement() && (a = this.elements[s].getBaseElement()), s += 1;
                a ? this.layerElement.insertBefore(r, a) : this.layerElement.appendChild(r)
            }
        }, SVGRendererBase.prototype.hide = function() {
            this.layerElement.style.display = "none"
        }, SVGRendererBase.prototype.show = function() {
            this.layerElement.style.display = "block"
        };

        function ICompElement() {}
        extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement), ICompElement.prototype.initElement = function(t, e, r) {
            this.initFrame(), this.initBaseData(t, e, r), this.initTransform(t, e, r), this.initRenderable(), this.initHierarchy(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), (this.data.xt || !e.progressiveLoad) && this.buildAllItems(), this.hide()
        }, ICompElement.prototype.prepareFrame = function(t) {
            if (this._mdf = !1, this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange), !(!this.isInRange && !this.data.xt)) {
                if (this.tm._placeholder) this.renderedFrame = t / this.data.sr;
                else {
                    var e = this.tm.v;
                    e === this.data.op && (e = this.data.op - 1), this.renderedFrame = e
                }
                var r, s = this.elements.length;
                for (this.completeLayers || this.checkLayers(this.renderedFrame), r = s - 1; r >= 0; r -= 1)(this.completeLayers || this.elements[r]) && (this.elements[r].prepareFrame(this.renderedFrame - this.layers[r].st), this.elements[r]._mdf && (this._mdf = !0))
            }
        }, ICompElement.prototype.renderInnerContent = function() {
            var t, e = this.layers.length;
            for (t = 0; t < e; t += 1)(this.completeLayers || this.elements[t]) && this.elements[t].renderFrame()
        }, ICompElement.prototype.setElements = function(t) {
            this.elements = t
        }, ICompElement.prototype.getElements = function() {
            return this.elements
        }, ICompElement.prototype.destroyElements = function() {
            var t, e = this.layers.length;
            for (t = 0; t < e; t += 1) this.elements[t] && this.elements[t].destroy()
        }, ICompElement.prototype.destroy = function() {
            this.destroyElements(), this.destroyBaseElement()
        };

        function SVGCompElement(t, e, r) {
            this.layers = t.layers, this.supports3d = !0, this.completeLayers = !1, this.pendingElements = [], this.elements = this.layers ? createSizedArray(this.layers.length) : [], this.initElement(t, e, r), this.tm = t.tm ? PropertyFactory.getProp(this, t.tm, 0, e.frameRate, this) : {
                _placeholder: !0
            }
        }
        extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement), SVGCompElement.prototype.createComp = function(t) {
            return new SVGCompElement(t, this.globalData, this)
        };

        function SVGRenderer(t, e) {
            this.animationItem = t, this.layers = null, this.renderedFrame = -1, this.svgElement = createNS("svg");
            var r = "";
            if (e && e.title) {
                var s = createNS("title"),
                    a = createElementID();
                s.setAttribute("id", a), s.textContent = e.title, this.svgElement.appendChild(s), r += a
            }
            if (e && e.description) {
                var o = createNS("desc"),
                    f = createElementID();
                o.setAttribute("id", f), o.textContent = e.description, this.svgElement.appendChild(o), r += " " + f
            }
            r && this.svgElement.setAttribute("aria-labelledby", r);
            var d = createNS("defs");
            this.svgElement.appendChild(d);
            var c = createNS("g");
            this.svgElement.appendChild(c), this.layerElement = c, this.renderConfig = {
                preserveAspectRatio: e && e.preserveAspectRatio || "xMidYMid meet",
                imagePreserveAspectRatio: e && e.imagePreserveAspectRatio || "xMidYMid slice",
                contentVisibility: e && e.contentVisibility || "visible",
                progressiveLoad: e && e.progressiveLoad || !1,
                hideOnTransparent: !(e && e.hideOnTransparent === !1),
                viewBoxOnly: e && e.viewBoxOnly || !1,
                viewBoxSize: e && e.viewBoxSize || !1,
                className: e && e.className || "",
                id: e && e.id || "",
                focusable: e && e.focusable,
                filterSize: {
                    width: e && e.filterSize && e.filterSize.width || "100%",
                    height: e && e.filterSize && e.filterSize.height || "100%",
                    x: e && e.filterSize && e.filterSize.x || "0%",
                    y: e && e.filterSize && e.filterSize.y || "0%"
                },
                width: e && e.width,
                height: e && e.height,
                runExpressions: !e || e.runExpressions === void 0 || e.runExpressions
            }, this.globalData = {
                _mdf: !1,
                frameNum: -1,
                defs: d,
                renderConfig: this.renderConfig
            }, this.elements = [], this.pendingElements = [], this.destroyed = !1, this.rendererType = "svg"
        }
        extendPrototype([SVGRendererBase], SVGRenderer), SVGRenderer.prototype.createComp = function(t) {
            return new SVGCompElement(t, this.globalData, this)
        };

        function ShapeTransformManager() {
            this.sequences = {}, this.sequenceList = [], this.transform_key_count = 0
        }
        ShapeTransformManager.prototype = {
            addTransformSequence: function(e) {
                var r, s = e.length,
                    a = "_";
                for (r = 0; r < s; r += 1) a += e[r].transform.key + "_";
                var o = this.sequences[a];
                return o || (o = {
                    transforms: [].concat(e),
                    finalTransform: new Matrix,
                    _mdf: !1
                }, this.sequences[a] = o, this.sequenceList.push(o)), o
            },
            processSequence: function(e, r) {
                for (var s = 0, a = e.transforms.length, o = r; s < a && !r;) {
                    if (e.transforms[s].transform.mProps._mdf) {
                        o = !0;
                        break
                    }
                    s += 1
                }
                if (o)
                    for (e.finalTransform.reset(), s = a - 1; s >= 0; s -= 1) e.finalTransform.multiply(e.transforms[s].transform.mProps.v);
                e._mdf = o
            },
            processSequences: function(e) {
                var r, s = this.sequenceList.length;
                for (r = 0; r < s; r += 1) this.processSequence(this.sequenceList[r], e)
            },
            getNewKey: function() {
                return this.transform_key_count += 1, "_" + this.transform_key_count
            }
        };
        var lumaLoader = function() {
            var e = "__lottie_element_luma_buffer",
                r = null,
                s = null,
                a = null;

            function o() {
                var c = createNS("svg"),
                    m = createNS("filter"),
                    S = createNS("feColorMatrix");
                return m.setAttribute("id", e), S.setAttribute("type", "matrix"), S.setAttribute("color-interpolation-filters", "sRGB"), S.setAttribute("values", "0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0"), m.appendChild(S), c.appendChild(m), c.setAttribute("id", e + "_svg"), featureSupport.svgLumaHidden && (c.style.display = "none"), c
            }

            function f() {
                r || (a = o(), document.body.appendChild(a), r = createTag("canvas"), s = r.getContext("2d"), s.filter = "url(#" + e + ")", s.fillStyle = "rgba(0,0,0,0)", s.fillRect(0, 0, 1, 1))
            }

            function d(c) {
                return r || f(), r.width = c.width, r.height = c.height, s.filter = "url(#" + e + ")", r
            }
            return {
                load: f,
                get: d
            }
        };

        function createCanvas(t, e) {
            if (featureSupport.offscreenCanvas) return new OffscreenCanvas(t, e);
            var r = createTag("canvas");
            return r.width = t, r.height = e, r
        }
        var assetLoader = function() {
                return {
                    loadLumaCanvas: lumaLoader.load,
                    getLumaCanvas: lumaLoader.get,
                    createCanvas
                }
            }(),
            registeredEffects = {};

        function CVEffects(t) {
            var e, r = t.data.ef ? t.data.ef.length : 0;
            this.filters = [];
            var s;
            for (e = 0; e < r; e += 1) {
                s = null;
                var a = t.data.ef[e].ty;
                if (registeredEffects[a]) {
                    var o = registeredEffects[a].effect;
                    s = new o(t.effectsManager.effectElements[e], t)
                }
                s && this.filters.push(s)
            }
            this.filters.length && t.addRenderableComponent(this)
        }
        CVEffects.prototype.renderFrame = function(t) {
            var e, r = this.filters.length;
            for (e = 0; e < r; e += 1) this.filters[e].renderFrame(t)
        }, CVEffects.prototype.getEffects = function(t) {
            var e, r = this.filters.length,
                s = [];
            for (e = 0; e < r; e += 1) this.filters[e].type === t && s.push(this.filters[e]);
            return s
        };

        function registerEffect(t, e) {
            registeredEffects[t] = {
                effect: e
            }
        }

        function CVMaskElement(t, e) {
            this.data = t, this.element = e, this.masksProperties = this.data.masksProperties || [], this.viewData = createSizedArray(this.masksProperties.length);
            var r, s = this.masksProperties.length,
                a = !1;
            for (r = 0; r < s; r += 1) this.masksProperties[r].mode !== "n" && (a = !0), this.viewData[r] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[r], 3);
            this.hasMasks = a, a && this.element.addRenderableComponent(this)
        }
        CVMaskElement.prototype.renderFrame = function() {
            if (this.hasMasks) {
                var t = this.element.finalTransform.mat,
                    e = this.element.canvasContext,
                    r, s = this.masksProperties.length,
                    a, o, f;
                for (e.beginPath(), r = 0; r < s; r += 1)
                    if (this.masksProperties[r].mode !== "n") {
                        this.masksProperties[r].inv && (e.moveTo(0, 0), e.lineTo(this.element.globalData.compSize.w, 0), e.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h), e.lineTo(0, this.element.globalData.compSize.h), e.lineTo(0, 0)), f = this.viewData[r].v, a = t.applyToPointArray(f.v[0][0], f.v[0][1], 0), e.moveTo(a[0], a[1]);
                        var d, c = f._length;
                        for (d = 1; d < c; d += 1) o = t.applyToTriplePoints(f.o[d - 1], f.i[d], f.v[d]), e.bezierCurveTo(o[0], o[1], o[2], o[3], o[4], o[5]);
                        o = t.applyToTriplePoints(f.o[d - 1], f.i[0], f.v[0]), e.bezierCurveTo(o[0], o[1], o[2], o[3], o[4], o[5])
                    }
                this.element.globalData.renderer.save(!0), e.clip()
            }
        }, CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty, CVMaskElement.prototype.destroy = function() {
            this.element = null
        };

        function CVBaseElement() {}
        var operationsMap = {
            1: "source-in",
            2: "source-out",
            3: "source-in",
            4: "source-out"
        };
        CVBaseElement.prototype = {
            createElements: function() {},
            initRendererElement: function() {},
            createContainerElements: function() {
                if (this.data.tt >= 1) {
                    this.buffers = [];
                    var e = this.globalData.canvasContext,
                        r = assetLoader.createCanvas(e.canvas.width, e.canvas.height);
                    this.buffers.push(r);
                    var s = assetLoader.createCanvas(e.canvas.width, e.canvas.height);
                    this.buffers.push(s), this.data.tt >= 3 && !document._isProxy && assetLoader.loadLumaCanvas()
                }
                this.canvasContext = this.globalData.canvasContext, this.transformCanvas = this.globalData.transformCanvas, this.renderableEffectsManager = new CVEffects(this), this.searchEffectTransforms()
            },
            createContent: function() {},
            setBlendMode: function() {
                var e = this.globalData;
                if (e.blendMode !== this.data.bm) {
                    e.blendMode = this.data.bm;
                    var r = getBlendMode(this.data.bm);
                    e.canvasContext.globalCompositeOperation = r
                }
            },
            createRenderableComponents: function() {
                this.maskManager = new CVMaskElement(this.data, this), this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT)
            },
            hideElement: function() {
                !this.hidden && (!this.isInRange || this.isTransparent) && (this.hidden = !0)
            },
            showElement: function() {
                this.isInRange && !this.isTransparent && (this.hidden = !1, this._isFirstFrame = !0, this.maskManager._isFirstFrame = !0)
            },
            clearCanvas: function(e) {
                e.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy)
            },
            prepareLayer: function() {
                if (this.data.tt >= 1) {
                    var e = this.buffers[0],
                        r = e.getContext("2d");
                    this.clearCanvas(r), r.drawImage(this.canvasContext.canvas, 0, 0), this.currentTransform = this.canvasContext.getTransform(), this.canvasContext.setTransform(1, 0, 0, 1, 0, 0), this.clearCanvas(this.canvasContext), this.canvasContext.setTransform(this.currentTransform)
                }
            },
            exitLayer: function() {
                if (this.data.tt >= 1) {
                    var e = this.buffers[1],
                        r = e.getContext("2d");
                    this.clearCanvas(r), r.drawImage(this.canvasContext.canvas, 0, 0), this.canvasContext.setTransform(1, 0, 0, 1, 0, 0), this.clearCanvas(this.canvasContext), this.canvasContext.setTransform(this.currentTransform);
                    var s = this.comp.getElementById("tp" in this.data ? this.data.tp : this.data.ind - 1);
                    if (s.renderFrame(!0), this.canvasContext.setTransform(1, 0, 0, 1, 0, 0), this.data.tt >= 3 && !document._isProxy) {
                        var a = assetLoader.getLumaCanvas(this.canvasContext.canvas),
                            o = a.getContext("2d");
                        o.drawImage(this.canvasContext.canvas, 0, 0), this.clearCanvas(this.canvasContext), this.canvasContext.drawImage(a, 0, 0)
                    }
                    this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt], this.canvasContext.drawImage(e, 0, 0), this.canvasContext.globalCompositeOperation = "destination-over", this.canvasContext.drawImage(this.buffers[0], 0, 0), this.canvasContext.setTransform(this.currentTransform), this.canvasContext.globalCompositeOperation = "source-over"
                }
            },
            renderFrame: function(e) {
                if (!(this.hidden || this.data.hd) && !(this.data.td === 1 && !e)) {
                    this.renderTransform(), this.renderRenderable(), this.renderLocalTransform(), this.setBlendMode();
                    var r = this.data.ty === 0;
                    this.prepareLayer(), this.globalData.renderer.save(r), this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props), this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity), this.renderInnerContent(), this.globalData.renderer.restore(r), this.exitLayer(), this.maskManager.hasMasks && this.globalData.renderer.restore(!0), this._isFirstFrame && (this._isFirstFrame = !1)
                }
            },
            destroy: function() {
                this.canvasContext = null, this.data = null, this.globalData = null, this.maskManager.destroy()
            },
            mHelper: new Matrix
        }, CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement, CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;

        function CVShapeData(t, e, r, s) {
            this.styledShapes = [], this.tr = [0, 0, 0, 0, 0, 0];
            var a = 4;
            e.ty === "rc" ? a = 5 : e.ty === "el" ? a = 6 : e.ty === "sr" && (a = 7), this.sh = ShapePropertyFactory.getShapeProp(t, e, a, t);
            var o, f = r.length,
                d;
            for (o = 0; o < f; o += 1) r[o].closed || (d = {
                transforms: s.addTransformSequence(r[o].transforms),
                trNodes: []
            }, this.styledShapes.push(d), r[o].elements.push(d))
        }
        CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;

        function CVShapeElement(t, e, r) {
            this.shapes = [], this.shapesData = t.shapes, this.stylesList = [], this.itemsData = [], this.prevViewData = [], this.shapeModifiers = [], this.processedElements = [], this.transformsManager = new ShapeTransformManager, this.initElement(t, e, r)
        }
        extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement), CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement, CVShapeElement.prototype.transformHelper = {
            opacity: 1,
            _opMdf: !1
        }, CVShapeElement.prototype.dashResetter = [], CVShapeElement.prototype.createContent = function() {
            this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, !0, [])
        }, CVShapeElement.prototype.createStyleElement = function(t, e) {
            var r = {
                    data: t,
                    type: t.ty,
                    preTransforms: this.transformsManager.addTransformSequence(e),
                    transforms: [],
                    elements: [],
                    closed: t.hd === !0
                },
                s = {};
            if (t.ty === "fl" || t.ty === "st" ? (s.c = PropertyFactory.getProp(this, t.c, 1, 255, this), s.c.k || (r.co = "rgb(" + bmFloor(s.c.v[0]) + "," + bmFloor(s.c.v[1]) + "," + bmFloor(s.c.v[2]) + ")")) : (t.ty === "gf" || t.ty === "gs") && (s.s = PropertyFactory.getProp(this, t.s, 1, null, this), s.e = PropertyFactory.getProp(this, t.e, 1, null, this), s.h = PropertyFactory.getProp(this, t.h || {
                    k: 0
                }, 0, .01, this), s.a = PropertyFactory.getProp(this, t.a || {
                    k: 0
                }, 0, degToRads, this), s.g = new GradientProperty(this, t.g, this)), s.o = PropertyFactory.getProp(this, t.o, 0, .01, this), t.ty === "st" || t.ty === "gs") {
                if (r.lc = lineCapEnum[t.lc || 2], r.lj = lineJoinEnum[t.lj || 2], t.lj == 1 && (r.ml = t.ml), s.w = PropertyFactory.getProp(this, t.w, 0, null, this), s.w.k || (r.wi = s.w.v), t.d) {
                    var a = new DashProperty(this, t.d, "canvas", this);
                    s.d = a, s.d.k || (r.da = s.d.dashArray, r.do = s.d.dashoffset[0])
                }
            } else r.r = t.r === 2 ? "evenodd" : "nonzero";
            return this.stylesList.push(r), s.style = r, s
        }, CVShapeElement.prototype.createGroupElement = function() {
            var t = {
                it: [],
                prevViewData: []
            };
            return t
        }, CVShapeElement.prototype.createTransformElement = function(t) {
            var e = {
                transform: {
                    opacity: 1,
                    _opMdf: !1,
                    key: this.transformsManager.getNewKey(),
                    op: PropertyFactory.getProp(this, t.o, 0, .01, this),
                    mProps: TransformPropertyFactory.getTransformProperty(this, t, this)
                }
            };
            return e
        }, CVShapeElement.prototype.createShapeElement = function(t) {
            var e = new CVShapeData(this, t, this.stylesList, this.transformsManager);
            return this.shapes.push(e), this.addShapeToModifiers(e), e
        }, CVShapeElement.prototype.reloadShapes = function() {
            this._isFirstFrame = !0;
            var t, e = this.itemsData.length;
            for (t = 0; t < e; t += 1) this.prevViewData[t] = this.itemsData[t];
            for (this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, !0, []), e = this.dynamicProperties.length, t = 0; t < e; t += 1) this.dynamicProperties[t].getValue();
            this.renderModifiers(), this.transformsManager.processSequences(this._isFirstFrame)
        }, CVShapeElement.prototype.addTransformToStyleList = function(t) {
            var e, r = this.stylesList.length;
            for (e = 0; e < r; e += 1) this.stylesList[e].closed || this.stylesList[e].transforms.push(t)
        }, CVShapeElement.prototype.removeTransformFromStyleList = function() {
            var t, e = this.stylesList.length;
            for (t = 0; t < e; t += 1) this.stylesList[t].closed || this.stylesList[t].transforms.pop()
        }, CVShapeElement.prototype.closeStyles = function(t) {
            var e, r = t.length;
            for (e = 0; e < r; e += 1) t[e].closed = !0
        }, CVShapeElement.prototype.searchShapes = function(t, e, r, s, a) {
            var o, f = t.length - 1,
                d, c, m = [],
                S = [],
                M, g, k, C = [].concat(a);
            for (o = f; o >= 0; o -= 1) {
                if (M = this.searchProcessedElement(t[o]), M ? e[o] = r[M - 1] : t[o]._shouldRender = s, t[o].ty === "fl" || t[o].ty === "st" || t[o].ty === "gf" || t[o].ty === "gs") M ? e[o].style.closed = !1 : e[o] = this.createStyleElement(t[o], C), m.push(e[o].style);
                else if (t[o].ty === "gr") {
                    if (!M) e[o] = this.createGroupElement(t[o]);
                    else
                        for (c = e[o].it.length, d = 0; d < c; d += 1) e[o].prevViewData[d] = e[o].it[d];
                    this.searchShapes(t[o].it, e[o].it, e[o].prevViewData, s, C)
                } else t[o].ty === "tr" ? (M || (k = this.createTransformElement(t[o]), e[o] = k), C.push(e[o]), this.addTransformToStyleList(e[o])) : t[o].ty === "sh" || t[o].ty === "rc" || t[o].ty === "el" || t[o].ty === "sr" ? M || (e[o] = this.createShapeElement(t[o])) : t[o].ty === "tm" || t[o].ty === "rd" || t[o].ty === "pb" || t[o].ty === "zz" || t[o].ty === "op" ? (M ? (g = e[o], g.closed = !1) : (g = ShapeModifiers.getModifier(t[o].ty), g.init(this, t[o]), e[o] = g, this.shapeModifiers.push(g)), S.push(g)) : t[o].ty === "rp" && (M ? (g = e[o], g.closed = !0) : (g = ShapeModifiers.getModifier(t[o].ty), e[o] = g, g.init(this, t, o, e), this.shapeModifiers.push(g), s = !1), S.push(g));
                this.addProcessedElement(t[o], o + 1)
            }
            for (this.removeTransformFromStyleList(), this.closeStyles(m), f = S.length, o = 0; o < f; o += 1) S[o].closed = !0
        }, CVShapeElement.prototype.renderInnerContent = function() {
            this.transformHelper.opacity = 1, this.transformHelper._opMdf = !1, this.renderModifiers(), this.transformsManager.processSequences(this._isFirstFrame), this.renderShape(this.transformHelper, this.shapesData, this.itemsData, !0)
        }, CVShapeElement.prototype.renderShapeTransform = function(t, e) {
            (t._opMdf || e.op._mdf || this._isFirstFrame) && (e.opacity = t.opacity, e.opacity *= e.op.v, e._opMdf = !0)
        }, CVShapeElement.prototype.drawLayer = function() {
            var t, e = this.stylesList.length,
                r, s, a, o, f, d, c = this.globalData.renderer,
                m = this.globalData.canvasContext,
                S, M;
            for (t = 0; t < e; t += 1)
                if (M = this.stylesList[t], S = M.type, !((S === "st" || S === "gs") && M.wi === 0 || !M.data._shouldRender || M.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {
                    for (c.save(), f = M.elements, S === "st" || S === "gs" ? (c.ctxStrokeStyle(S === "st" ? M.co : M.grd), c.ctxLineWidth(M.wi), c.ctxLineCap(M.lc), c.ctxLineJoin(M.lj), c.ctxMiterLimit(M.ml || 0)) : c.ctxFillStyle(S === "fl" ? M.co : M.grd), c.ctxOpacity(M.coOp), S !== "st" && S !== "gs" && m.beginPath(), c.ctxTransform(M.preTransforms.finalTransform.props), s = f.length, r = 0; r < s; r += 1) {
                        for ((S === "st" || S === "gs") && (m.beginPath(), M.da && (m.setLineDash(M.da), m.lineDashOffset = M.do)), d = f[r].trNodes, o = d.length, a = 0; a < o; a += 1) d[a].t === "m" ? m.moveTo(d[a].p[0], d[a].p[1]) : d[a].t === "c" ? m.bezierCurveTo(d[a].pts[0], d[a].pts[1], d[a].pts[2], d[a].pts[3], d[a].pts[4], d[a].pts[5]) : m.closePath();
                        (S === "st" || S === "gs") && (c.ctxStroke(), M.da && m.setLineDash(this.dashResetter))
                    }
                    S !== "st" && S !== "gs" && this.globalData.renderer.ctxFill(M.r), c.restore()
                }
        }, CVShapeElement.prototype.renderShape = function(t, e, r, s) {
            var a, o = e.length - 1,
                f;
            for (f = t, a = o; a >= 0; a -= 1) e[a].ty === "tr" ? (f = r[a].transform, this.renderShapeTransform(t, f)) : e[a].ty === "sh" || e[a].ty === "el" || e[a].ty === "rc" || e[a].ty === "sr" ? this.renderPath(e[a], r[a]) : e[a].ty === "fl" ? this.renderFill(e[a], r[a], f) : e[a].ty === "st" ? this.renderStroke(e[a], r[a], f) : e[a].ty === "gf" || e[a].ty === "gs" ? this.renderGradientFill(e[a], r[a], f) : e[a].ty === "gr" ? this.renderShape(f, e[a].it, r[a].it) : e[a].ty;
            s && this.drawLayer()
        }, CVShapeElement.prototype.renderStyledShape = function(t, e) {
            if (this._isFirstFrame || e._mdf || t.transforms._mdf) {
                var r = t.trNodes,
                    s = e.paths,
                    a, o, f, d = s._length;
                r.length = 0;
                var c = t.transforms.finalTransform;
                for (f = 0; f < d; f += 1) {
                    var m = s.shapes[f];
                    if (m && m.v) {
                        for (o = m._length, a = 1; a < o; a += 1) a === 1 && r.push({
                            t: "m",
                            p: c.applyToPointArray(m.v[0][0], m.v[0][1], 0)
                        }), r.push({
                            t: "c",
                            pts: c.applyToTriplePoints(m.o[a - 1], m.i[a], m.v[a])
                        });
                        o === 1 && r.push({
                            t: "m",
                            p: c.applyToPointArray(m.v[0][0], m.v[0][1], 0)
                        }), m.c && o && (r.push({
                            t: "c",
                            pts: c.applyToTriplePoints(m.o[a - 1], m.i[0], m.v[0])
                        }), r.push({
                            t: "z"
                        }))
                    }
                }
                t.trNodes = r
            }
        }, CVShapeElement.prototype.renderPath = function(t, e) {
            if (t.hd !== !0 && t._shouldRender) {
                var r, s = e.styledShapes.length;
                for (r = 0; r < s; r += 1) this.renderStyledShape(e.styledShapes[r], e.sh)
            }
        }, CVShapeElement.prototype.renderFill = function(t, e, r) {
            var s = e.style;
            (e.c._mdf || this._isFirstFrame) && (s.co = "rgb(" + bmFloor(e.c.v[0]) + "," + bmFloor(e.c.v[1]) + "," + bmFloor(e.c.v[2]) + ")"), (e.o._mdf || r._opMdf || this._isFirstFrame) && (s.coOp = e.o.v * r.opacity)
        }, CVShapeElement.prototype.renderGradientFill = function(t, e, r) {
            var s = e.style,
                a;
            if (!s.grd || e.g._mdf || e.s._mdf || e.e._mdf || t.t !== 1 && (e.h._mdf || e.a._mdf)) {
                var o = this.globalData.canvasContext,
                    f = e.s.v,
                    d = e.e.v;
                if (t.t === 1) a = o.createLinearGradient(f[0], f[1], d[0], d[1]);
                else {
                    var c = Math.sqrt(Math.pow(f[0] - d[0], 2) + Math.pow(f[1] - d[1], 2)),
                        m = Math.atan2(d[1] - f[1], d[0] - f[0]),
                        S = e.h.v;
                    S >= 1 ? S = .99 : S <= -1 && (S = -.99);
                    var M = c * S,
                        g = Math.cos(m + e.a.v) * M + f[0],
                        k = Math.sin(m + e.a.v) * M + f[1];
                    a = o.createRadialGradient(g, k, 0, f[0], f[1], c)
                }
                var C, b = t.g.p,
                    G = e.g.c,
                    y = 1;
                for (C = 0; C < b; C += 1) e.g._hasOpacity && e.g._collapsable && (y = e.g.o[C * 2 + 1]), a.addColorStop(G[C * 4] / 100, "rgba(" + G[C * 4 + 1] + "," + G[C * 4 + 2] + "," + G[C * 4 + 3] + "," + y + ")");
                s.grd = a
            }
            s.coOp = e.o.v * r.opacity
        }, CVShapeElement.prototype.renderStroke = function(t, e, r) {
            var s = e.style,
                a = e.d;
            a && (a._mdf || this._isFirstFrame) && (s.da = a.dashArray, s.do = a.dashoffset[0]), (e.c._mdf || this._isFirstFrame) && (s.co = "rgb(" + bmFloor(e.c.v[0]) + "," + bmFloor(e.c.v[1]) + "," + bmFloor(e.c.v[2]) + ")"), (e.o._mdf || r._opMdf || this._isFirstFrame) && (s.coOp = e.o.v * r.opacity), (e.w._mdf || this._isFirstFrame) && (s.wi = e.w.v)
        }, CVShapeElement.prototype.destroy = function() {
            this.shapesData = null, this.globalData = null, this.canvasContext = null, this.stylesList.length = 0, this.itemsData.length = 0
        };

        function CVTextElement(t, e, r) {
            this.textSpans = [], this.yOffset = 0, this.fillColorAnim = !1, this.strokeColorAnim = !1, this.strokeWidthAnim = !1, this.stroke = !1, this.fill = !1, this.justifyOffset = 0, this.currentRender = null, this.renderType = "canvas", this.values = {
                fill: "rgba(0,0,0,0)",
                stroke: "rgba(0,0,0,0)",
                sWidth: 0,
                fValue: ""
            }, this.initElement(t, e, r)
        }
        extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement), CVTextElement.prototype.tHelper = createTag("canvas").getContext("2d"), CVTextElement.prototype.buildNewText = function() {
            var t = this.textProperty.currentData;
            this.renderedLetters = createSizedArray(t.l ? t.l.length : 0);
            var e = !1;
            t.fc ? (e = !0, this.values.fill = this.buildColor(t.fc)) : this.values.fill = "rgba(0,0,0,0)", this.fill = e;
            var r = !1;
            t.sc && (r = !0, this.values.stroke = this.buildColor(t.sc), this.values.sWidth = t.sw);
            var s = this.globalData.fontManager.getFontByName(t.f),
                a, o, f = t.l,
                d = this.mHelper;
            this.stroke = r, this.values.fValue = t.finalSize + "px " + this.globalData.fontManager.getFontByName(t.f).fFamily, o = t.finalText.length;
            var c, m, S, M, g, k, C, b, G, y, P = this.data.singleShape,
                v = t.tr * .001 * t.finalSize,
                _ = 0,
                V = 0,
                N = !0,
                Z = 0;
            for (a = 0; a < o; a += 1) {
                c = this.globalData.fontManager.getCharData(t.finalText[a], s.fStyle, this.globalData.fontManager.getFontByName(t.f).fFamily), m = c && c.data || {}, d.reset(), P && f[a].n && (_ = -v, V += t.yOffset, V += N ? 1 : 0, N = !1), g = m.shapes ? m.shapes[0].it : [], C = g.length, d.scale(t.finalSize / 100, t.finalSize / 100), P && this.applyTextPropertiesToMatrix(t, d, f[a].line, _, V), G = createSizedArray(C - 1);
                var J = 0;
                for (k = 0; k < C; k += 1)
                    if (g[k].ty === "sh") {
                        for (M = g[k].ks.k.i.length, b = g[k].ks.k, y = [], S = 1; S < M; S += 1) S === 1 && y.push(d.applyToX(b.v[0][0], b.v[0][1], 0), d.applyToY(b.v[0][0], b.v[0][1], 0)), y.push(d.applyToX(b.o[S - 1][0], b.o[S - 1][1], 0), d.applyToY(b.o[S - 1][0], b.o[S - 1][1], 0), d.applyToX(b.i[S][0], b.i[S][1], 0), d.applyToY(b.i[S][0], b.i[S][1], 0), d.applyToX(b.v[S][0], b.v[S][1], 0), d.applyToY(b.v[S][0], b.v[S][1], 0));
                        y.push(d.applyToX(b.o[S - 1][0], b.o[S - 1][1], 0), d.applyToY(b.o[S - 1][0], b.o[S - 1][1], 0), d.applyToX(b.i[0][0], b.i[0][1], 0), d.applyToY(b.i[0][0], b.i[0][1], 0), d.applyToX(b.v[0][0], b.v[0][1], 0), d.applyToY(b.v[0][0], b.v[0][1], 0)), G[J] = y, J += 1
                    }
                P && (_ += f[a].l, _ += v), this.textSpans[Z] ? this.textSpans[Z].elem = G : this.textSpans[Z] = {
                    elem: G
                }, Z += 1
            }
        }, CVTextElement.prototype.renderInnerContent = function() {
            this.validateText();
            var t = this.canvasContext;
            t.font = this.values.fValue, this.globalData.renderer.ctxLineCap("butt"), this.globalData.renderer.ctxLineJoin("miter"), this.globalData.renderer.ctxMiterLimit(4), this.data.singleShape || this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
            var e, r, s, a, o, f, d = this.textAnimator.renderedLetters,
                c = this.textProperty.currentData.l;
            r = c.length;
            var m, S = null,
                M = null,
                g = null,
                k, C, b = this.globalData.renderer;
            for (e = 0; e < r; e += 1)
                if (!c[e].n) {
                    if (m = d[e], m && (b.save(), b.ctxTransform(m.p), b.ctxOpacity(m.o)), this.fill) {
                        for (m && m.fc ? S !== m.fc && (b.ctxFillStyle(m.fc), S = m.fc) : S !== this.values.fill && (S = this.values.fill, b.ctxFillStyle(this.values.fill)), k = this.textSpans[e].elem, a = k.length, this.globalData.canvasContext.beginPath(), s = 0; s < a; s += 1)
                            for (C = k[s], f = C.length, this.globalData.canvasContext.moveTo(C[0], C[1]), o = 2; o < f; o += 6) this.globalData.canvasContext.bezierCurveTo(C[o], C[o + 1], C[o + 2], C[o + 3], C[o + 4], C[o + 5]);
                        this.globalData.canvasContext.closePath(), b.ctxFill()
                    }
                    if (this.stroke) {
                        for (m && m.sw ? g !== m.sw && (g = m.sw, b.ctxLineWidth(m.sw)) : g !== this.values.sWidth && (g = this.values.sWidth, b.ctxLineWidth(this.values.sWidth)), m && m.sc ? M !== m.sc && (M = m.sc, b.ctxStrokeStyle(m.sc)) : M !== this.values.stroke && (M = this.values.stroke, b.ctxStrokeStyle(this.values.stroke)), k = this.textSpans[e].elem, a = k.length, this.globalData.canvasContext.beginPath(), s = 0; s < a; s += 1)
                            for (C = k[s], f = C.length, this.globalData.canvasContext.moveTo(C[0], C[1]), o = 2; o < f; o += 6) this.globalData.canvasContext.bezierCurveTo(C[o], C[o + 1], C[o + 2], C[o + 3], C[o + 4], C[o + 5]);
                        this.globalData.canvasContext.closePath(), b.ctxStroke()
                    }
                    m && this.globalData.renderer.restore()
                }
        };

        function CVImageElement(t, e, r) {
            this.assetData = e.getAssetData(t.refId), this.img = e.imageLoader.getAsset(this.assetData), this.initElement(t, e, r)
        }
        extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement), CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement, CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame, CVImageElement.prototype.createContent = function() {
            if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {
                var t = createTag("canvas");
                t.width = this.assetData.w, t.height = this.assetData.h;
                var e = t.getContext("2d"),
                    r = this.img.width,
                    s = this.img.height,
                    a = r / s,
                    o = this.assetData.w / this.assetData.h,
                    f, d, c = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;
                a > o && c === "xMidYMid slice" || a < o && c !== "xMidYMid slice" ? (d = s, f = d * o) : (f = r, d = f / o), e.drawImage(this.img, (r - f) / 2, (s - d) / 2, f, d, 0, 0, this.assetData.w, this.assetData.h), this.img = t
            }
        }, CVImageElement.prototype.renderInnerContent = function() {
            this.canvasContext.drawImage(this.img, 0, 0)
        }, CVImageElement.prototype.destroy = function() {
            this.img = null
        };

        function CVSolidElement(t, e, r) {
            this.initElement(t, e, r)
        }
        extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement), CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement, CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame, CVSolidElement.prototype.renderInnerContent = function() {
            this.globalData.renderer.ctxFillStyle(this.data.sc), this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh)
        };

        function CanvasRendererBase() {}
        extendPrototype([BaseRenderer], CanvasRendererBase), CanvasRendererBase.prototype.createShape = function(t) {
            return new CVShapeElement(t, this.globalData, this)
        }, CanvasRendererBase.prototype.createText = function(t) {
            return new CVTextElement(t, this.globalData, this)
        }, CanvasRendererBase.prototype.createImage = function(t) {
            return new CVImageElement(t, this.globalData, this)
        }, CanvasRendererBase.prototype.createSolid = function(t) {
            return new CVSolidElement(t, this.globalData, this)
        }, CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull, CanvasRendererBase.prototype.ctxTransform = function(t) {
            t[0] === 1 && t[1] === 0 && t[4] === 0 && t[5] === 1 && t[12] === 0 && t[13] === 0 || this.canvasContext.transform(t[0], t[1], t[4], t[5], t[12], t[13])
        }, CanvasRendererBase.prototype.ctxOpacity = function(t) {
            this.canvasContext.globalAlpha *= t < 0 ? 0 : t
        }, CanvasRendererBase.prototype.ctxFillStyle = function(t) {
            this.canvasContext.fillStyle = t
        }, CanvasRendererBase.prototype.ctxStrokeStyle = function(t) {
            this.canvasContext.strokeStyle = t
        }, CanvasRendererBase.prototype.ctxLineWidth = function(t) {
            this.canvasContext.lineWidth = t
        }, CanvasRendererBase.prototype.ctxLineCap = function(t) {
            this.canvasContext.lineCap = t
        }, CanvasRendererBase.prototype.ctxLineJoin = function(t) {
            this.canvasContext.lineJoin = t
        }, CanvasRendererBase.prototype.ctxMiterLimit = function(t) {
            this.canvasContext.miterLimit = t
        }, CanvasRendererBase.prototype.ctxFill = function(t) {
            this.canvasContext.fill(t)
        }, CanvasRendererBase.prototype.ctxFillRect = function(t, e, r, s) {
            this.canvasContext.fillRect(t, e, r, s)
        }, CanvasRendererBase.prototype.ctxStroke = function() {
            this.canvasContext.stroke()
        }, CanvasRendererBase.prototype.reset = function() {
            if (!this.renderConfig.clearCanvas) {
                this.canvasContext.restore();
                return
            }
            this.contextData.reset()
        }, CanvasRendererBase.prototype.save = function() {
            this.canvasContext.save()
        }, CanvasRendererBase.prototype.restore = function(t) {
            if (!this.renderConfig.clearCanvas) {
                this.canvasContext.restore();
                return
            }
            t && (this.globalData.blendMode = "source-over"), this.contextData.restore(t)
        }, CanvasRendererBase.prototype.configAnimation = function(t) {
            if (this.animationItem.wrapper) {
                this.animationItem.container = createTag("canvas");
                var e = this.animationItem.container.style;
                e.width = "100%", e.height = "100%";
                var r = "0px 0px 0px";
                e.transformOrigin = r, e.mozTransformOrigin = r, e.webkitTransformOrigin = r, e["-webkit-transform"] = r, e.contentVisibility = this.renderConfig.contentVisibility, this.animationItem.wrapper.appendChild(this.animationItem.container), this.canvasContext = this.animationItem.container.getContext("2d"), this.renderConfig.className && this.animationItem.container.setAttribute("class", this.renderConfig.className), this.renderConfig.id && this.animationItem.container.setAttribute("id", this.renderConfig.id)
            } else this.canvasContext = this.renderConfig.context;
            this.contextData.setContext(this.canvasContext), this.data = t, this.layers = t.layers, this.transformCanvas = {
                w: t.w,
                h: t.h,
                sx: 0,
                sy: 0,
                tx: 0,
                ty: 0
            }, this.setupGlobalData(t, document.body), this.globalData.canvasContext = this.canvasContext, this.globalData.renderer = this, this.globalData.isDashed = !1, this.globalData.progressiveLoad = this.renderConfig.progressiveLoad, this.globalData.transformCanvas = this.transformCanvas, this.elements = createSizedArray(t.layers.length), this.updateContainerSize()
        }, CanvasRendererBase.prototype.updateContainerSize = function(t, e) {
            this.reset();
            var r, s;
            t ? (r = t, s = e, this.canvasContext.canvas.width = r, this.canvasContext.canvas.height = s) : (this.animationItem.wrapper && this.animationItem.container ? (r = this.animationItem.wrapper.offsetWidth, s = this.animationItem.wrapper.offsetHeight) : (r = this.canvasContext.canvas.width, s = this.canvasContext.canvas.height), this.canvasContext.canvas.width = r * this.renderConfig.dpr, this.canvasContext.canvas.height = s * this.renderConfig.dpr);
            var a, o;
            if (this.renderConfig.preserveAspectRatio.indexOf("meet") !== -1 || this.renderConfig.preserveAspectRatio.indexOf("slice") !== -1) {
                var f = this.renderConfig.preserveAspectRatio.split(" "),
                    d = f[1] || "meet",
                    c = f[0] || "xMidYMid",
                    m = c.substr(0, 4),
                    S = c.substr(4);
                a = r / s, o = this.transformCanvas.w / this.transformCanvas.h, o > a && d === "meet" || o < a && d === "slice" ? (this.transformCanvas.sx = r / (this.transformCanvas.w / this.renderConfig.dpr), this.transformCanvas.sy = r / (this.transformCanvas.w / this.renderConfig.dpr)) : (this.transformCanvas.sx = s / (this.transformCanvas.h / this.renderConfig.dpr), this.transformCanvas.sy = s / (this.transformCanvas.h / this.renderConfig.dpr)), m === "xMid" && (o < a && d === "meet" || o > a && d === "slice") ? this.transformCanvas.tx = (r - this.transformCanvas.w * (s / this.transformCanvas.h)) / 2 * this.renderConfig.dpr : m === "xMax" && (o < a && d === "meet" || o > a && d === "slice") ? this.transformCanvas.tx = (r - this.transformCanvas.w * (s / this.transformCanvas.h)) * this.renderConfig.dpr : this.transformCanvas.tx = 0, S === "YMid" && (o > a && d === "meet" || o < a && d === "slice") ? this.transformCanvas.ty = (s - this.transformCanvas.h * (r / this.transformCanvas.w)) / 2 * this.renderConfig.dpr : S === "YMax" && (o > a && d === "meet" || o < a && d === "slice") ? this.transformCanvas.ty = (s - this.transformCanvas.h * (r / this.transformCanvas.w)) * this.renderConfig.dpr : this.transformCanvas.ty = 0
            } else this.renderConfig.preserveAspectRatio === "none" ? (this.transformCanvas.sx = r / (this.transformCanvas.w / this.renderConfig.dpr), this.transformCanvas.sy = s / (this.transformCanvas.h / this.renderConfig.dpr), this.transformCanvas.tx = 0, this.transformCanvas.ty = 0) : (this.transformCanvas.sx = this.renderConfig.dpr, this.transformCanvas.sy = this.renderConfig.dpr, this.transformCanvas.tx = 0, this.transformCanvas.ty = 0);
            this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1], this.ctxTransform(this.transformCanvas.props), this.canvasContext.beginPath(), this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h), this.canvasContext.closePath(), this.canvasContext.clip(), this.renderFrame(this.renderedFrame, !0)
        }, CanvasRendererBase.prototype.destroy = function() {
            this.renderConfig.clearCanvas && this.animationItem.wrapper && (this.animationItem.wrapper.innerText = "");
            var t, e = this.layers ? this.layers.length : 0;
            for (t = e - 1; t >= 0; t -= 1) this.elements[t] && this.elements[t].destroy && this.elements[t].destroy();
            this.elements.length = 0, this.globalData.canvasContext = null, this.animationItem.container = null, this.destroyed = !0
        }, CanvasRendererBase.prototype.renderFrame = function(t, e) {
            if (!(this.renderedFrame === t && this.renderConfig.clearCanvas === !0 && !e || this.destroyed || t === -1)) {
                this.renderedFrame = t, this.globalData.frameNum = t - this.animationItem._isFirstFrame, this.globalData.frameId += 1, this.globalData._mdf = !this.renderConfig.clearCanvas || e, this.globalData.projectInterface.currentFrame = t;
                var r, s = this.layers.length;
                for (this.completeLayers || this.checkLayers(t), r = s - 1; r >= 0; r -= 1)(this.completeLayers || this.elements[r]) && this.elements[r].prepareFrame(t - this.layers[r].st);
                if (this.globalData._mdf) {
                    for (this.renderConfig.clearCanvas === !0 ? this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h) : this.save(), r = s - 1; r >= 0; r -= 1)(this.completeLayers || this.elements[r]) && this.elements[r].renderFrame();
                    this.renderConfig.clearCanvas !== !0 && this.restore()
                }
            }
        }, CanvasRendererBase.prototype.buildItem = function(t) {
            var e = this.elements;
            if (!(e[t] || this.layers[t].ty === 99)) {
                var r = this.createItem(this.layers[t], this, this.globalData);
                e[t] = r, r.initExpressions()
            }
        }, CanvasRendererBase.prototype.checkPendingElements = function() {
            for (; this.pendingElements.length;) {
                var t = this.pendingElements.pop();
                t.checkParenting()
            }
        }, CanvasRendererBase.prototype.hide = function() {
            this.animationItem.container.style.display = "none"
        }, CanvasRendererBase.prototype.show = function() {
            this.animationItem.container.style.display = "block"
        };

        function CanvasContext() {
            this.opacity = -1, this.transform = createTypedArray("float32", 16), this.fillStyle = "", this.strokeStyle = "", this.lineWidth = "", this.lineCap = "", this.lineJoin = "", this.miterLimit = "", this.id = Math.random()
        }

        function CVContextData() {
            this.stack = [], this.cArrPos = 0, this.cTr = new Matrix;
            var t, e = 15;
            for (t = 0; t < e; t += 1) {
                var r = new CanvasContext;
                this.stack[t] = r
            }
            this._length = e, this.nativeContext = null, this.transformMat = new Matrix, this.currentOpacity = 1, this.currentFillStyle = "", this.appliedFillStyle = "", this.currentStrokeStyle = "", this.appliedStrokeStyle = "", this.currentLineWidth = "", this.appliedLineWidth = "", this.currentLineCap = "", this.appliedLineCap = "", this.currentLineJoin = "", this.appliedLineJoin = "", this.appliedMiterLimit = "", this.currentMiterLimit = ""
        }
        CVContextData.prototype.duplicate = function() {
            var t = this._length * 2,
                e = 0;
            for (e = this._length; e < t; e += 1) this.stack[e] = new CanvasContext;
            this._length = t
        }, CVContextData.prototype.reset = function() {
            this.cArrPos = 0, this.cTr.reset(), this.stack[this.cArrPos].opacity = 1
        }, CVContextData.prototype.restore = function(t) {
            this.cArrPos -= 1;
            var e = this.stack[this.cArrPos],
                r = e.transform,
                s, a = this.cTr.props;
            for (s = 0; s < 16; s += 1) a[s] = r[s];
            if (t) {
                this.nativeContext.restore();
                var o = this.stack[this.cArrPos + 1];
                this.appliedFillStyle = o.fillStyle, this.appliedStrokeStyle = o.strokeStyle, this.appliedLineWidth = o.lineWidth, this.appliedLineCap = o.lineCap, this.appliedLineJoin = o.lineJoin, this.appliedMiterLimit = o.miterLimit
            }
            this.nativeContext.setTransform(r[0], r[1], r[4], r[5], r[12], r[13]), (t || e.opacity !== -1 && this.currentOpacity !== e.opacity) && (this.nativeContext.globalAlpha = e.opacity, this.currentOpacity = e.opacity), this.currentFillStyle = e.fillStyle, this.currentStrokeStyle = e.strokeStyle, this.currentLineWidth = e.lineWidth, this.currentLineCap = e.lineCap, this.currentLineJoin = e.lineJoin, this.currentMiterLimit = e.miterLimit
        }, CVContextData.prototype.save = function(t) {
            t && this.nativeContext.save();
            var e = this.cTr.props;
            this._length <= this.cArrPos && this.duplicate();
            var r = this.stack[this.cArrPos],
                s;
            for (s = 0; s < 16; s += 1) r.transform[s] = e[s];
            this.cArrPos += 1;
            var a = this.stack[this.cArrPos];
            a.opacity = r.opacity, a.fillStyle = r.fillStyle, a.strokeStyle = r.strokeStyle, a.lineWidth = r.lineWidth, a.lineCap = r.lineCap, a.lineJoin = r.lineJoin, a.miterLimit = r.miterLimit
        }, CVContextData.prototype.setOpacity = function(t) {
            this.stack[this.cArrPos].opacity = t
        }, CVContextData.prototype.setContext = function(t) {
            this.nativeContext = t
        }, CVContextData.prototype.fillStyle = function(t) {
            this.stack[this.cArrPos].fillStyle !== t && (this.currentFillStyle = t, this.stack[this.cArrPos].fillStyle = t)
        }, CVContextData.prototype.strokeStyle = function(t) {
            this.stack[this.cArrPos].strokeStyle !== t && (this.currentStrokeStyle = t, this.stack[this.cArrPos].strokeStyle = t)
        }, CVContextData.prototype.lineWidth = function(t) {
            this.stack[this.cArrPos].lineWidth !== t && (this.currentLineWidth = t, this.stack[this.cArrPos].lineWidth = t)
        }, CVContextData.prototype.lineCap = function(t) {
            this.stack[this.cArrPos].lineCap !== t && (this.currentLineCap = t, this.stack[this.cArrPos].lineCap = t)
        }, CVContextData.prototype.lineJoin = function(t) {
            this.stack[this.cArrPos].lineJoin !== t && (this.currentLineJoin = t, this.stack[this.cArrPos].lineJoin = t)
        }, CVContextData.prototype.miterLimit = function(t) {
            this.stack[this.cArrPos].miterLimit !== t && (this.currentMiterLimit = t, this.stack[this.cArrPos].miterLimit = t)
        }, CVContextData.prototype.transform = function(t) {
            this.transformMat.cloneFromProps(t);
            var e = this.cTr;
            this.transformMat.multiply(e), e.cloneFromProps(this.transformMat.props);
            var r = e.props;
            this.nativeContext.setTransform(r[0], r[1], r[4], r[5], r[12], r[13])
        }, CVContextData.prototype.opacity = function(t) {
            var e = this.stack[this.cArrPos].opacity;
            e *= t < 0 ? 0 : t, this.stack[this.cArrPos].opacity !== e && (this.currentOpacity !== t && (this.nativeContext.globalAlpha = t, this.currentOpacity = t), this.stack[this.cArrPos].opacity = e)
        }, CVContextData.prototype.fill = function(t) {
            this.appliedFillStyle !== this.currentFillStyle && (this.appliedFillStyle = this.currentFillStyle, this.nativeContext.fillStyle = this.appliedFillStyle), this.nativeContext.fill(t)
        }, CVContextData.prototype.fillRect = function(t, e, r, s) {
            this.appliedFillStyle !== this.currentFillStyle && (this.appliedFillStyle = this.currentFillStyle, this.nativeContext.fillStyle = this.appliedFillStyle), this.nativeContext.fillRect(t, e, r, s)
        }, CVContextData.prototype.stroke = function() {
            this.appliedStrokeStyle !== this.currentStrokeStyle && (this.appliedStrokeStyle = this.currentStrokeStyle, this.nativeContext.strokeStyle = this.appliedStrokeStyle), this.appliedLineWidth !== this.currentLineWidth && (this.appliedLineWidth = this.currentLineWidth, this.nativeContext.lineWidth = this.appliedLineWidth), this.appliedLineCap !== this.currentLineCap && (this.appliedLineCap = this.currentLineCap, this.nativeContext.lineCap = this.appliedLineCap), this.appliedLineJoin !== this.currentLineJoin && (this.appliedLineJoin = this.currentLineJoin, this.nativeContext.lineJoin = this.appliedLineJoin), this.appliedMiterLimit !== this.currentMiterLimit && (this.appliedMiterLimit = this.currentMiterLimit, this.nativeContext.miterLimit = this.appliedMiterLimit), this.nativeContext.stroke()
        };

        function CVCompElement(t, e, r) {
            this.completeLayers = !1, this.layers = t.layers, this.pendingElements = [], this.elements = createSizedArray(this.layers.length), this.initElement(t, e, r), this.tm = t.tm ? PropertyFactory.getProp(this, t.tm, 0, e.frameRate, this) : {
                _placeholder: !0
            }
        }
        extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement), CVCompElement.prototype.renderInnerContent = function() {
            var t = this.canvasContext;
            t.beginPath(), t.moveTo(0, 0), t.lineTo(this.data.w, 0), t.lineTo(this.data.w, this.data.h), t.lineTo(0, this.data.h), t.lineTo(0, 0), t.clip();
            var e, r = this.layers.length;
            for (e = r - 1; e >= 0; e -= 1)(this.completeLayers || this.elements[e]) && this.elements[e].renderFrame()
        }, CVCompElement.prototype.destroy = function() {
            var t, e = this.layers.length;
            for (t = e - 1; t >= 0; t -= 1) this.elements[t] && this.elements[t].destroy();
            this.layers = null, this.elements = null
        }, CVCompElement.prototype.createComp = function(t) {
            return new CVCompElement(t, this.globalData, this)
        };

        function CanvasRenderer(t, e) {
            this.animationItem = t, this.renderConfig = {
                clearCanvas: e && e.clearCanvas !== void 0 ? e.clearCanvas : !0,
                context: e && e.context || null,
                progressiveLoad: e && e.progressiveLoad || !1,
                preserveAspectRatio: e && e.preserveAspectRatio || "xMidYMid meet",
                imagePreserveAspectRatio: e && e.imagePreserveAspectRatio || "xMidYMid slice",
                contentVisibility: e && e.contentVisibility || "visible",
                className: e && e.className || "",
                id: e && e.id || "",
                runExpressions: !e || e.runExpressions === void 0 || e.runExpressions
            }, this.renderConfig.dpr = e && e.dpr || 1, this.animationItem.wrapper && (this.renderConfig.dpr = e && e.dpr || window.devicePixelRatio || 1), this.renderedFrame = -1, this.globalData = {
                frameNum: -1,
                _mdf: !1,
                renderConfig: this.renderConfig,
                currentGlobalAlpha: -1
            }, this.contextData = new CVContextData, this.elements = [], this.pendingElements = [], this.transformMat = new Matrix, this.completeLayers = !1, this.rendererType = "canvas", this.renderConfig.clearCanvas && (this.ctxTransform = this.contextData.transform.bind(this.contextData), this.ctxOpacity = this.contextData.opacity.bind(this.contextData), this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData), this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData), this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData), this.ctxLineCap = this.contextData.lineCap.bind(this.contextData), this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData), this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData), this.ctxFill = this.contextData.fill.bind(this.contextData), this.ctxFillRect = this.contextData.fillRect.bind(this.contextData), this.ctxStroke = this.contextData.stroke.bind(this.contextData), this.save = this.contextData.save.bind(this.contextData))
        }
        extendPrototype([CanvasRendererBase], CanvasRenderer), CanvasRenderer.prototype.createComp = function(t) {
            return new CVCompElement(t, this.globalData, this)
        };

        function HBaseElement() {}
        HBaseElement.prototype = {
            checkBlendMode: function() {},
            initRendererElement: function() {
                this.baseElement = createTag(this.data.tg || "div"), this.data.hasMask ? (this.svgElement = createNS("svg"), this.layerElement = createNS("g"), this.maskedElement = this.layerElement, this.svgElement.appendChild(this.layerElement), this.baseElement.appendChild(this.svgElement)) : this.layerElement = this.baseElement, styleDiv(this.baseElement)
            },
            createContainerElements: function() {
                this.renderableEffectsManager = new CVEffects(this), this.transformedElement = this.baseElement, this.maskedElement = this.layerElement, this.data.ln && this.layerElement.setAttribute("id", this.data.ln), this.data.cl && this.layerElement.setAttribute("class", this.data.cl), this.data.bm !== 0 && this.setBlendMode()
            },
            renderElement: function() {
                var e = this.transformedElement ? this.transformedElement.style : {};
                if (this.finalTransform._matMdf) {
                    var r = this.finalTransform.mat.toCSS();
                    e.transform = r, e.webkitTransform = r
                }
                this.finalTransform._opMdf && (e.opacity = this.finalTransform.mProp.o.v)
            },
            renderFrame: function() {
                this.data.hd || this.hidden || (this.renderTransform(), this.renderRenderable(), this.renderElement(), this.renderInnerContent(), this._isFirstFrame && (this._isFirstFrame = !1))
            },
            destroy: function() {
                this.layerElement = null, this.transformedElement = null, this.matteElement && (this.matteElement = null), this.maskManager && (this.maskManager.destroy(), this.maskManager = null)
            },
            createRenderableComponents: function() {
                this.maskManager = new MaskElement(this.data, this, this.globalData)
            },
            addEffects: function() {},
            setMatte: function() {}
        }, HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement, HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy, HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;

        function HSolidElement(t, e, r) {
            this.initElement(t, e, r)
        }
        extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement), HSolidElement.prototype.createContent = function() {
            var t;
            this.data.hasMask ? (t = createNS("rect"), t.setAttribute("width", this.data.sw), t.setAttribute("height", this.data.sh), t.setAttribute("fill", this.data.sc), this.svgElement.setAttribute("width", this.data.sw), this.svgElement.setAttribute("height", this.data.sh)) : (t = createTag("div"), t.style.width = this.data.sw + "px", t.style.height = this.data.sh + "px", t.style.backgroundColor = this.data.sc), this.layerElement.appendChild(t)
        };

        function HShapeElement(t, e, r) {
            this.shapes = [], this.shapesData = t.shapes, this.stylesList = [], this.shapeModifiers = [], this.itemsData = [], this.processedElements = [], this.animatedContents = [], this.shapesContainer = createNS("g"), this.initElement(t, e, r), this.prevViewData = [], this.currentBBox = {
                x: 999999,
                y: -999999,
                h: 0,
                w: 0
            }
        }
        extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement), HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent, HShapeElement.prototype.createContent = function() {
            var t;
            if (this.baseElement.style.fontSize = 0, this.data.hasMask) this.layerElement.appendChild(this.shapesContainer), t = this.svgElement;
            else {
                t = createNS("svg");
                var e = this.comp.data ? this.comp.data : this.globalData.compSize;
                t.setAttribute("width", e.w), t.setAttribute("height", e.h), t.appendChild(this.shapesContainer), this.layerElement.appendChild(t)
            }
            this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], !0), this.filterUniqueShapes(), this.shapeCont = t
        }, HShapeElement.prototype.getTransformedPoint = function(t, e) {
            var r, s = t.length;
            for (r = 0; r < s; r += 1) e = t[r].mProps.v.applyToPointArray(e[0], e[1], 0);
            return e
        }, HShapeElement.prototype.calculateShapeBoundingBox = function(t, e) {
            var r = t.sh.v,
                s = t.transformers,
                a, o = r._length,
                f, d, c, m;
            if (!(o <= 1)) {
                for (a = 0; a < o - 1; a += 1) f = this.getTransformedPoint(s, r.v[a]), d = this.getTransformedPoint(s, r.o[a]), c = this.getTransformedPoint(s, r.i[a + 1]), m = this.getTransformedPoint(s, r.v[a + 1]), this.checkBounds(f, d, c, m, e);
                r.c && (f = this.getTransformedPoint(s, r.v[a]), d = this.getTransformedPoint(s, r.o[a]), c = this.getTransformedPoint(s, r.i[0]), m = this.getTransformedPoint(s, r.v[0]), this.checkBounds(f, d, c, m, e))
            }
        }, HShapeElement.prototype.checkBounds = function(t, e, r, s, a) {
            this.getBoundsOfCurve(t, e, r, s);
            var o = this.shapeBoundingBox;
            a.x = bmMin(o.left, a.x), a.xMax = bmMax(o.right, a.xMax), a.y = bmMin(o.top, a.y), a.yMax = bmMax(o.bottom, a.yMax)
        }, HShapeElement.prototype.shapeBoundingBox = {
            left: 0,
            right: 0,
            top: 0,
            bottom: 0
        }, HShapeElement.prototype.tempBoundingBox = {
            x: 0,
            xMax: 0,
            y: 0,
            yMax: 0,
            width: 0,
            height: 0
        }, HShapeElement.prototype.getBoundsOfCurve = function(t, e, r, s) {
            for (var a = [
                    [t[0], s[0]],
                    [t[1], s[1]]
                ], o, f, d, c, m, S, M, g = 0; g < 2; ++g) f = 6 * t[g] - 12 * e[g] + 6 * r[g], o = -3 * t[g] + 9 * e[g] - 9 * r[g] + 3 * s[g], d = 3 * e[g] - 3 * t[g], f |= 0, o |= 0, d |= 0, o === 0 && f === 0 || (o === 0 ? (c = -d / f, c > 0 && c < 1 && a[g].push(this.calculateF(c, t, e, r, s, g))) : (m = f * f - 4 * d * o, m >= 0 && (S = (-f + bmSqrt(m)) / (2 * o), S > 0 && S < 1 && a[g].push(this.calculateF(S, t, e, r, s, g)), M = (-f - bmSqrt(m)) / (2 * o), M > 0 && M < 1 && a[g].push(this.calculateF(M, t, e, r, s, g)))));
            this.shapeBoundingBox.left = bmMin.apply(null, a[0]), this.shapeBoundingBox.top = bmMin.apply(null, a[1]), this.shapeBoundingBox.right = bmMax.apply(null, a[0]), this.shapeBoundingBox.bottom = bmMax.apply(null, a[1])
        }, HShapeElement.prototype.calculateF = function(t, e, r, s, a, o) {
            return bmPow(1 - t, 3) * e[o] + 3 * bmPow(1 - t, 2) * t * r[o] + 3 * (1 - t) * bmPow(t, 2) * s[o] + bmPow(t, 3) * a[o]
        }, HShapeElement.prototype.calculateBoundingBox = function(t, e) {
            var r, s = t.length;
            for (r = 0; r < s; r += 1) t[r] && t[r].sh ? this.calculateShapeBoundingBox(t[r], e) : t[r] && t[r].it ? this.calculateBoundingBox(t[r].it, e) : t[r] && t[r].style && t[r].w && this.expandStrokeBoundingBox(t[r].w, e)
        }, HShapeElement.prototype.expandStrokeBoundingBox = function(t, e) {
            var r = 0;
            if (t.keyframes) {
                for (var s = 0; s < t.keyframes.length; s += 1) {
                    var a = t.keyframes[s].s;
                    a > r && (r = a)
                }
                r *= t.mult
            } else r = t.v * t.mult;
            e.x -= r, e.xMax += r, e.y -= r, e.yMax += r
        }, HShapeElement.prototype.currentBoxContains = function(t) {
            return this.currentBBox.x <= t.x && this.currentBBox.y <= t.y && this.currentBBox.width + this.currentBBox.x >= t.x + t.width && this.currentBBox.height + this.currentBBox.y >= t.y + t.height
        }, HShapeElement.prototype.renderInnerContent = function() {
            if (this._renderShapeFrame(), !this.hidden && (this._isFirstFrame || this._mdf)) {
                var t = this.tempBoundingBox,
                    e = 999999;
                if (t.x = e, t.xMax = -e, t.y = e, t.yMax = -e, this.calculateBoundingBox(this.itemsData, t), t.width = t.xMax < t.x ? 0 : t.xMax - t.x, t.height = t.yMax < t.y ? 0 : t.yMax - t.y, this.currentBoxContains(t)) return;
                var r = !1;
                if (this.currentBBox.w !== t.width && (this.currentBBox.w = t.width, this.shapeCont.setAttribute("width", t.width), r = !0), this.currentBBox.h !== t.height && (this.currentBBox.h = t.height, this.shapeCont.setAttribute("height", t.height), r = !0), r || this.currentBBox.x !== t.x || this.currentBBox.y !== t.y) {
                    this.currentBBox.w = t.width, this.currentBBox.h = t.height, this.currentBBox.x = t.x, this.currentBBox.y = t.y, this.shapeCont.setAttribute("viewBox", this.currentBBox.x + " " + this.currentBBox.y + " " + this.currentBBox.w + " " + this.currentBBox.h);
                    var s = this.shapeCont.style,
                        a = "translate(" + this.currentBBox.x + "px," + this.currentBBox.y + "px)";
                    s.transform = a, s.webkitTransform = a
                }
            }
        };

        function HTextElement(t, e, r) {
            this.textSpans = [], this.textPaths = [], this.currentBBox = {
                x: 999999,
                y: -999999,
                h: 0,
                w: 0
            }, this.renderType = "svg", this.isMasked = !1, this.initElement(t, e, r)
        }
        extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement), HTextElement.prototype.createContent = function() {
            if (this.isMasked = this.checkMasks(), this.isMasked) {
                this.renderType = "svg", this.compW = this.comp.data.w, this.compH = this.comp.data.h, this.svgElement.setAttribute("width", this.compW), this.svgElement.setAttribute("height", this.compH);
                var t = createNS("g");
                this.maskedElement.appendChild(t), this.innerElem = t
            } else this.renderType = "html", this.innerElem = this.layerElement;
            this.checkParenting()
        }, HTextElement.prototype.buildNewText = function() {
            var t = this.textProperty.currentData;
            this.renderedLetters = createSizedArray(t.l ? t.l.length : 0);
            var e = this.innerElem.style,
                r = t.fc ? this.buildColor(t.fc) : "rgba(0,0,0,0)";
            e.fill = r, e.color = r, t.sc && (e.stroke = this.buildColor(t.sc), e.strokeWidth = t.sw + "px");
            var s = this.globalData.fontManager.getFontByName(t.f);
            if (!this.globalData.fontManager.chars)
                if (e.fontSize = t.finalSize + "px", e.lineHeight = t.finalSize + "px", s.fClass) this.innerElem.className = s.fClass;
                else {
                    e.fontFamily = s.fFamily;
                    var a = t.fWeight,
                        o = t.fStyle;
                    e.fontStyle = o, e.fontWeight = a
                }
            var f, d, c = t.l;
            d = c.length;
            var m, S, M, g = this.mHelper,
                k, C = "",
                b = 0;
            for (f = 0; f < d; f += 1) {
                if (this.globalData.fontManager.chars ? (this.textPaths[b] ? m = this.textPaths[b] : (m = createNS("path"), m.setAttribute("stroke-linecap", lineCapEnum[1]), m.setAttribute("stroke-linejoin", lineJoinEnum[2]), m.setAttribute("stroke-miterlimit", "4")), this.isMasked || (this.textSpans[b] ? (S = this.textSpans[b], M = S.children[0]) : (S = createTag("div"), S.style.lineHeight = 0, M = createNS("svg"), M.appendChild(m), styleDiv(S)))) : this.isMasked ? m = this.textPaths[b] ? this.textPaths[b] : createNS("text") : this.textSpans[b] ? (S = this.textSpans[b], m = this.textPaths[b]) : (S = createTag("span"), styleDiv(S), m = createTag("span"), styleDiv(m), S.appendChild(m)), this.globalData.fontManager.chars) {
                    var G = this.globalData.fontManager.getCharData(t.finalText[f], s.fStyle, this.globalData.fontManager.getFontByName(t.f).fFamily),
                        y;
                    if (G ? y = G.data : y = null, g.reset(), y && y.shapes && y.shapes.length && (k = y.shapes[0].it, g.scale(t.finalSize / 100, t.finalSize / 100), C = this.createPathShape(g, k), m.setAttribute("d", C)), this.isMasked) this.innerElem.appendChild(m);
                    else {
                        if (this.innerElem.appendChild(S), y && y.shapes) {
                            document.body.appendChild(M);
                            var P = M.getBBox();
                            M.setAttribute("width", P.width + 2), M.setAttribute("height", P.height + 2), M.setAttribute("viewBox", P.x - 1 + " " + (P.y - 1) + " " + (P.width + 2) + " " + (P.height + 2));
                            var v = M.style,
                                _ = "translate(" + (P.x - 1) + "px," + (P.y - 1) + "px)";
                            v.transform = _, v.webkitTransform = _, c[f].yOffset = P.y - 1
                        } else M.setAttribute("width", 1), M.setAttribute("height", 1);
                        S.appendChild(M)
                    }
                } else if (m.textContent = c[f].val, m.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"), this.isMasked) this.innerElem.appendChild(m);
                else {
                    this.innerElem.appendChild(S);
                    var V = m.style,
                        N = "translate3d(0," + -t.finalSize / 1.2 + "px,0)";
                    V.transform = N, V.webkitTransform = N
                }
                this.isMasked ? this.textSpans[b] = m : this.textSpans[b] = S, this.textSpans[b].style.display = "block", this.textPaths[b] = m, b += 1
            }
            for (; b < this.textSpans.length;) this.textSpans[b].style.display = "none", b += 1
        }, HTextElement.prototype.renderInnerContent = function() {
            this.validateText();
            var t;
            if (this.data.singleShape) {
                if (!this._isFirstFrame && !this.lettersChangedFlag) return;
                if (this.isMasked && this.finalTransform._matMdf) {
                    this.svgElement.setAttribute("viewBox", -this.finalTransform.mProp.p.v[0] + " " + -this.finalTransform.mProp.p.v[1] + " " + this.compW + " " + this.compH), t = this.svgElement.style;
                    var e = "translate(" + -this.finalTransform.mProp.p.v[0] + "px," + -this.finalTransform.mProp.p.v[1] + "px)";
                    t.transform = e, t.webkitTransform = e
                }
            }
            if (this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag), !(!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag)) {
                var r, s, a = 0,
                    o = this.textAnimator.renderedLetters,
                    f = this.textProperty.currentData.l;
                s = f.length;
                var d, c, m;
                for (r = 0; r < s; r += 1) f[r].n ? a += 1 : (c = this.textSpans[r], m = this.textPaths[r], d = o[a], a += 1, d._mdf.m && (this.isMasked ? c.setAttribute("transform", d.m) : (c.style.webkitTransform = d.m, c.style.transform = d.m)), c.style.opacity = d.o, d.sw && d._mdf.sw && m.setAttribute("stroke-width", d.sw), d.sc && d._mdf.sc && m.setAttribute("stroke", d.sc), d.fc && d._mdf.fc && (m.setAttribute("fill", d.fc), m.style.color = d.fc));
                if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {
                    var S = this.innerElem.getBBox();
                    this.currentBBox.w !== S.width && (this.currentBBox.w = S.width, this.svgElement.setAttribute("width", S.width)), this.currentBBox.h !== S.height && (this.currentBBox.h = S.height, this.svgElement.setAttribute("height", S.height));
                    var M = 1;
                    if (this.currentBBox.w !== S.width + M * 2 || this.currentBBox.h !== S.height + M * 2 || this.currentBBox.x !== S.x - M || this.currentBBox.y !== S.y - M) {
                        this.currentBBox.w = S.width + M * 2, this.currentBBox.h = S.height + M * 2, this.currentBBox.x = S.x - M, this.currentBBox.y = S.y - M, this.svgElement.setAttribute("viewBox", this.currentBBox.x + " " + this.currentBBox.y + " " + this.currentBBox.w + " " + this.currentBBox.h), t = this.svgElement.style;
                        var g = "translate(" + this.currentBBox.x + "px," + this.currentBBox.y + "px)";
                        t.transform = g, t.webkitTransform = g
                    }
                }
            }
        };

        function HCameraElement(t, e, r) {
            this.initFrame(), this.initBaseData(t, e, r), this.initHierarchy();
            var s = PropertyFactory.getProp;
            if (this.pe = s(this, t.pe, 0, 0, this), t.ks.p.s ? (this.px = s(this, t.ks.p.x, 1, 0, this), this.py = s(this, t.ks.p.y, 1, 0, this), this.pz = s(this, t.ks.p.z, 1, 0, this)) : this.p = s(this, t.ks.p, 1, 0, this), t.ks.a && (this.a = s(this, t.ks.a, 1, 0, this)), t.ks.or.k.length && t.ks.or.k[0].to) {
                var a, o = t.ks.or.k.length;
                for (a = 0; a < o; a += 1) t.ks.or.k[a].to = null, t.ks.or.k[a].ti = null
            }
            this.or = s(this, t.ks.or, 1, degToRads, this), this.or.sh = !0, this.rx = s(this, t.ks.rx, 0, degToRads, this), this.ry = s(this, t.ks.ry, 0, degToRads, this), this.rz = s(this, t.ks.rz, 0, degToRads, this), this.mat = new Matrix, this._prevMat = new Matrix, this._isFirstFrame = !0, this.finalTransform = {
                mProp: this
            }
        }
        extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement), HCameraElement.prototype.setup = function() {
            var t, e = this.comp.threeDElements.length,
                r, s, a;
            for (t = 0; t < e; t += 1)
                if (r = this.comp.threeDElements[t], r.type === "3d") {
                    s = r.perspectiveElem.style, a = r.container.style;
                    var o = this.pe.v + "px",
                        f = "0px 0px 0px",
                        d = "matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)";
                    s.perspective = o, s.webkitPerspective = o, a.transformOrigin = f, a.mozTransformOrigin = f, a.webkitTransformOrigin = f, s.transform = d, s.webkitTransform = d
                }
        }, HCameraElement.prototype.createElements = function() {}, HCameraElement.prototype.hide = function() {}, HCameraElement.prototype.renderFrame = function() {
            var t = this._isFirstFrame,
                e, r;
            if (this.hierarchy)
                for (r = this.hierarchy.length, e = 0; e < r; e += 1) t = this.hierarchy[e].finalTransform.mProp._mdf || t;
            if (t || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {
                if (this.mat.reset(), this.hierarchy)
                    for (r = this.hierarchy.length - 1, e = r; e >= 0; e -= 1) {
                        var s = this.hierarchy[e].finalTransform.mProp;
                        this.mat.translate(-s.p.v[0], -s.p.v[1], s.p.v[2]), this.mat.rotateX(-s.or.v[0]).rotateY(-s.or.v[1]).rotateZ(s.or.v[2]), this.mat.rotateX(-s.rx.v).rotateY(-s.ry.v).rotateZ(s.rz.v), this.mat.scale(1 / s.s.v[0], 1 / s.s.v[1], 1 / s.s.v[2]), this.mat.translate(s.a.v[0], s.a.v[1], s.a.v[2])
                    }
                if (this.p ? this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]) : this.mat.translate(-this.px.v, -this.py.v, this.pz.v), this.a) {
                    var a;
                    this.p ? a = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]] : a = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];
                    var o = Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2)),
                        f = [a[0] / o, a[1] / o, a[2] / o],
                        d = Math.sqrt(f[2] * f[2] + f[0] * f[0]),
                        c = Math.atan2(f[1], d),
                        m = Math.atan2(f[0], -f[2]);
                    this.mat.rotateY(m).rotateX(-c)
                }
                this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v), this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]), this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0), this.mat.translate(0, 0, this.pe.v);
                var S = !this._prevMat.equals(this.mat);
                if ((S || this.pe._mdf) && this.comp.threeDElements) {
                    r = this.comp.threeDElements.length;
                    var M, g, k;
                    for (e = 0; e < r; e += 1)
                        if (M = this.comp.threeDElements[e], M.type === "3d") {
                            if (S) {
                                var C = this.mat.toCSS();
                                k = M.container.style, k.transform = C, k.webkitTransform = C
                            }
                            this.pe._mdf && (g = M.perspectiveElem.style, g.perspective = this.pe.v + "px", g.webkitPerspective = this.pe.v + "px")
                        }
                    this.mat.clone(this._prevMat)
                }
            }
            this._isFirstFrame = !1
        }, HCameraElement.prototype.prepareFrame = function(t) {
            this.prepareProperties(t, !0)
        }, HCameraElement.prototype.destroy = function() {}, HCameraElement.prototype.getBaseElement = function() {
            return null
        };

        function HImageElement(t, e, r) {
            this.assetData = e.getAssetData(t.refId), this.initElement(t, e, r)
        }
        extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement), HImageElement.prototype.createContent = function() {
            var t = this.globalData.getAssetsPath(this.assetData),
                e = new Image;
            this.data.hasMask ? (this.imageElem = createNS("image"), this.imageElem.setAttribute("width", this.assetData.w + "px"), this.imageElem.setAttribute("height", this.assetData.h + "px"), this.imageElem.setAttributeNS("http://www.w3.org/1999/xlink", "href", t), this.layerElement.appendChild(this.imageElem), this.baseElement.setAttribute("width", this.assetData.w), this.baseElement.setAttribute("height", this.assetData.h)) : this.layerElement.appendChild(e), e.crossOrigin = "anonymous", e.src = t, this.data.ln && this.baseElement.setAttribute("id", this.data.ln)
        };

        function HybridRendererBase(t, e) {
            this.animationItem = t, this.layers = null, this.renderedFrame = -1, this.renderConfig = {
                className: e && e.className || "",
                imagePreserveAspectRatio: e && e.imagePreserveAspectRatio || "xMidYMid slice",
                hideOnTransparent: !(e && e.hideOnTransparent === !1),
                filterSize: {
                    width: e && e.filterSize && e.filterSize.width || "400%",
                    height: e && e.filterSize && e.filterSize.height || "400%",
                    x: e && e.filterSize && e.filterSize.x || "-100%",
                    y: e && e.filterSize && e.filterSize.y || "-100%"
                }
            }, this.globalData = {
                _mdf: !1,
                frameNum: -1,
                renderConfig: this.renderConfig
            }, this.pendingElements = [], this.elements = [], this.threeDElements = [], this.destroyed = !1, this.camera = null, this.supports3d = !0, this.rendererType = "html"
        }
        extendPrototype([BaseRenderer], HybridRendererBase), HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem, HybridRendererBase.prototype.checkPendingElements = function() {
            for (; this.pendingElements.length;) {
                var t = this.pendingElements.pop();
                t.checkParenting()
            }
        }, HybridRendererBase.prototype.appendElementInPos = function(t, e) {
            var r = t.getBaseElement();
            if (r) {
                var s = this.layers[e];
                if (!s.ddd || !this.supports3d)
                    if (this.threeDElements) this.addTo3dContainer(r, e);
                    else {
                        for (var a = 0, o, f, d; a < e;) this.elements[a] && this.elements[a] !== !0 && this.elements[a].getBaseElement && (f = this.elements[a], d = this.layers[a].ddd ? this.getThreeDContainerByPos(a) : f.getBaseElement(), o = d || o), a += 1;
                        o ? (!s.ddd || !this.supports3d) && this.layerElement.insertBefore(r, o) : (!s.ddd || !this.supports3d) && this.layerElement.appendChild(r)
                    }
                else this.addTo3dContainer(r, e)
            }
        }, HybridRendererBase.prototype.createShape = function(t) {
            return this.supports3d ? new HShapeElement(t, this.globalData, this) : new SVGShapeElement(t, this.globalData, this)
        }, HybridRendererBase.prototype.createText = function(t) {
            return this.supports3d ? new HTextElement(t, this.globalData, this) : new SVGTextLottieElement(t, this.globalData, this)
        }, HybridRendererBase.prototype.createCamera = function(t) {
            return this.camera = new HCameraElement(t, this.globalData, this), this.camera
        }, HybridRendererBase.prototype.createImage = function(t) {
            return this.supports3d ? new HImageElement(t, this.globalData, this) : new IImageElement(t, this.globalData, this)
        }, HybridRendererBase.prototype.createSolid = function(t) {
            return this.supports3d ? new HSolidElement(t, this.globalData, this) : new ISolidElement(t, this.globalData, this)
        }, HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull, HybridRendererBase.prototype.getThreeDContainerByPos = function(t) {
            for (var e = 0, r = this.threeDElements.length; e < r;) {
                if (this.threeDElements[e].startPos <= t && this.threeDElements[e].endPos >= t) return this.threeDElements[e].perspectiveElem;
                e += 1
            }
            return null
        }, HybridRendererBase.prototype.createThreeDContainer = function(t, e) {
            var r = createTag("div"),
                s, a;
            styleDiv(r);
            var o = createTag("div");
            if (styleDiv(o), e === "3d") {
                s = r.style, s.width = this.globalData.compSize.w + "px", s.height = this.globalData.compSize.h + "px";
                var f = "50% 50%";
                s.webkitTransformOrigin = f, s.mozTransformOrigin = f, s.transformOrigin = f, a = o.style;
                var d = "matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)";
                a.transform = d, a.webkitTransform = d
            }
            r.appendChild(o);
            var c = {
                container: o,
                perspectiveElem: r,
                startPos: t,
                endPos: t,
                type: e
            };
            return this.threeDElements.push(c), c
        }, HybridRendererBase.prototype.build3dContainers = function() {
            var t, e = this.layers.length,
                r, s = "";
            for (t = 0; t < e; t += 1) this.layers[t].ddd && this.layers[t].ty !== 3 ? (s !== "3d" && (s = "3d", r = this.createThreeDContainer(t, "3d")), r.endPos = Math.max(r.endPos, t)) : (s !== "2d" && (s = "2d", r = this.createThreeDContainer(t, "2d")), r.endPos = Math.max(r.endPos, t));
            for (e = this.threeDElements.length, t = e - 1; t >= 0; t -= 1) this.resizerElem.appendChild(this.threeDElements[t].perspectiveElem)
        }, HybridRendererBase.prototype.addTo3dContainer = function(t, e) {
            for (var r = 0, s = this.threeDElements.length; r < s;) {
                if (e <= this.threeDElements[r].endPos) {
                    for (var a = this.threeDElements[r].startPos, o; a < e;) this.elements[a] && this.elements[a].getBaseElement && (o = this.elements[a].getBaseElement()), a += 1;
                    o ? this.threeDElements[r].container.insertBefore(t, o) : this.threeDElements[r].container.appendChild(t);
                    break
                }
                r += 1
            }
        }, HybridRendererBase.prototype.configAnimation = function(t) {
            var e = createTag("div"),
                r = this.animationItem.wrapper,
                s = e.style;
            s.width = t.w + "px", s.height = t.h + "px", this.resizerElem = e, styleDiv(e), s.transformStyle = "flat", s.mozTransformStyle = "flat", s.webkitTransformStyle = "flat", this.renderConfig.className && e.setAttribute("class", this.renderConfig.className), r.appendChild(e), s.overflow = "hidden";
            var a = createNS("svg");
            a.setAttribute("width", "1"), a.setAttribute("height", "1"), styleDiv(a), this.resizerElem.appendChild(a);
            var o = createNS("defs");
            a.appendChild(o), this.data = t, this.setupGlobalData(t, a), this.globalData.defs = o, this.layers = t.layers, this.layerElement = this.resizerElem, this.build3dContainers(), this.updateContainerSize()
        }, HybridRendererBase.prototype.destroy = function() {
            this.animationItem.wrapper && (this.animationItem.wrapper.innerText = ""), this.animationItem.container = null, this.globalData.defs = null;
            var t, e = this.layers ? this.layers.length : 0;
            for (t = 0; t < e; t += 1) this.elements[t] && this.elements[t].destroy && this.elements[t].destroy();
            this.elements.length = 0, this.destroyed = !0, this.animationItem = null
        }, HybridRendererBase.prototype.updateContainerSize = function() {
            var t = this.animationItem.wrapper.offsetWidth,
                e = this.animationItem.wrapper.offsetHeight,
                r = t / e,
                s = this.globalData.compSize.w / this.globalData.compSize.h,
                a, o, f, d;
            s > r ? (a = t / this.globalData.compSize.w, o = t / this.globalData.compSize.w, f = 0, d = (e - this.globalData.compSize.h * (t / this.globalData.compSize.w)) / 2) : (a = e / this.globalData.compSize.h, o = e / this.globalData.compSize.h, f = (t - this.globalData.compSize.w * (e / this.globalData.compSize.h)) / 2, d = 0);
            var c = this.resizerElem.style;
            c.webkitTransform = "matrix3d(" + a + ",0,0,0,0," + o + ",0,0,0,0,1,0," + f + "," + d + ",0,1)", c.transform = c.webkitTransform
        }, HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame, HybridRendererBase.prototype.hide = function() {
            this.resizerElem.style.display = "none"
        }, HybridRendererBase.prototype.show = function() {
            this.resizerElem.style.display = "block"
        }, HybridRendererBase.prototype.initItems = function() {
            if (this.buildAllItems(), this.camera) this.camera.setup();
            else {
                var t = this.globalData.compSize.w,
                    e = this.globalData.compSize.h,
                    r, s = this.threeDElements.length;
                for (r = 0; r < s; r += 1) {
                    var a = this.threeDElements[r].perspectiveElem.style;
                    a.webkitPerspective = Math.sqrt(Math.pow(t, 2) + Math.pow(e, 2)) + "px", a.perspective = a.webkitPerspective
                }
            }
        }, HybridRendererBase.prototype.searchExtraCompositions = function(t) {
            var e, r = t.length,
                s = createTag("div");
            for (e = 0; e < r; e += 1)
                if (t[e].xt) {
                    var a = this.createComp(t[e], s, this.globalData.comp, null);
                    a.initExpressions(), this.globalData.projectInterface.registerComposition(a)
                }
        };

        function HCompElement(t, e, r) {
            this.layers = t.layers, this.supports3d = !t.hasMask, this.completeLayers = !1, this.pendingElements = [], this.elements = this.layers ? createSizedArray(this.layers.length) : [], this.initElement(t, e, r), this.tm = t.tm ? PropertyFactory.getProp(this, t.tm, 0, e.frameRate, this) : {
                _placeholder: !0
            }
        }
        extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement), HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements, HCompElement.prototype.createContainerElements = function() {
            this._createBaseContainerElements(), this.data.hasMask ? (this.svgElement.setAttribute("width", this.data.w), this.svgElement.setAttribute("height", this.data.h), this.transformedElement = this.baseElement) : this.transformedElement = this.layerElement
        }, HCompElement.prototype.addTo3dContainer = function(t, e) {
            for (var r = 0, s; r < e;) this.elements[r] && this.elements[r].getBaseElement && (s = this.elements[r].getBaseElement()), r += 1;
            s ? this.layerElement.insertBefore(t, s) : this.layerElement.appendChild(t)
        }, HCompElement.prototype.createComp = function(t) {
            return this.supports3d ? new HCompElement(t, this.globalData, this) : new SVGCompElement(t, this.globalData, this)
        };

        function HybridRenderer(t, e) {
            this.animationItem = t, this.layers = null, this.renderedFrame = -1, this.renderConfig = {
                className: e && e.className || "",
                imagePreserveAspectRatio: e && e.imagePreserveAspectRatio || "xMidYMid slice",
                hideOnTransparent: !(e && e.hideOnTransparent === !1),
                filterSize: {
                    width: e && e.filterSize && e.filterSize.width || "400%",
                    height: e && e.filterSize && e.filterSize.height || "400%",
                    x: e && e.filterSize && e.filterSize.x || "-100%",
                    y: e && e.filterSize && e.filterSize.y || "-100%"
                },
                runExpressions: !e || e.runExpressions === void 0 || e.runExpressions
            }, this.globalData = {
                _mdf: !1,
                frameNum: -1,
                renderConfig: this.renderConfig
            }, this.pendingElements = [], this.elements = [], this.threeDElements = [], this.destroyed = !1, this.camera = null, this.supports3d = !0, this.rendererType = "html"
        }
        extendPrototype([HybridRendererBase], HybridRenderer), HybridRenderer.prototype.createComp = function(t) {
            return this.supports3d ? new HCompElement(t, this.globalData, this) : new SVGCompElement(t, this.globalData, this)
        };
        var CompExpressionInterface = function() {
            return function(t) {
                function e(r) {
                    for (var s = 0, a = t.layers.length; s < a;) {
                        if (t.layers[s].nm === r || t.layers[s].ind === r) return t.elements[s].layerInterface;
                        s += 1
                    }
                    return null
                }
                return Object.defineProperty(e, "_name", {
                    value: t.data.nm
                }), e.layer = e, e.pixelAspect = 1, e.height = t.data.h || t.globalData.compSize.h, e.width = t.data.w || t.globalData.compSize.w, e.pixelAspect = 1, e.frameDuration = 1 / t.globalData.frameRate, e.displayStartTime = 0, e.numLayers = t.layers.length, e
            }
        }();

        function _typeof$2(t) {
            "@babel/helpers - typeof";
            return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? _typeof$2 = function(r) {
                return typeof r
            } : _typeof$2 = function(r) {
                return r && typeof Symbol == "function" && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r
            }, _typeof$2(t)
        }

        function seedRandom(t, e) {
            var r = this,
                s = 256,
                a = 6,
                o = 52,
                f = "random",
                d = e.pow(s, a),
                c = e.pow(2, o),
                m = c * 2,
                S = s - 1,
                M;

            function g(v, _, V) {
                var N = [];
                _ = _ === !0 ? {
                    entropy: !0
                } : _ || {};
                var Z = G(b(_.entropy ? [v, P(t)] : v === null ? y() : v, 3), N),
                    J = new k(N),
                    ht = function() {
                        for (var ct = J.g(a), ft = d, yt = 0; ct < c;) ct = (ct + yt) * s, ft *= s, yt = J.g(1);
                        for (; ct >= m;) ct /= 2, ft /= 2, yt >>>= 1;
                        return (ct + yt) / ft
                    };
                return ht.int32 = function() {
                    return J.g(4) | 0
                }, ht.quick = function() {
                    return J.g(4) / 4294967296
                }, ht.double = ht, G(P(J.S), t), (_.pass || V || function(vt, ct, ft, yt) {
                    return yt && (yt.S && C(yt, J), vt.state = function() {
                        return C(J, {})
                    }), ft ? (e[f] = vt, ct) : vt
                })(ht, Z, "global" in _ ? _.global : this == e, _.state)
            }
            e["seed" + f] = g;

            function k(v) {
                var _, V = v.length,
                    N = this,
                    Z = 0,
                    J = N.i = N.j = 0,
                    ht = N.S = [];
                for (V || (v = [V++]); Z < s;) ht[Z] = Z++;
                for (Z = 0; Z < s; Z++) ht[Z] = ht[J = S & J + v[Z % V] + (_ = ht[Z])], ht[J] = _;
                N.g = function(vt) {
                    for (var ct, ft = 0, yt = N.i, bt = N.j, lt = N.S; vt--;) ct = lt[yt = S & yt + 1], ft = ft * s + lt[S & (lt[yt] = lt[bt = S & bt + ct]) + (lt[bt] = ct)];
                    return N.i = yt, N.j = bt, ft
                }
            }

            function C(v, _) {
                return _.i = v.i, _.j = v.j, _.S = v.S.slice(), _
            }

            function b(v, _) {
                var V = [],
                    N = _typeof$2(v),
                    Z;
                if (_ && N == "object")
                    for (Z in v) try {
                        V.push(b(v[Z], _ - 1))
                    } catch {}
                return V.length ? V : N == "string" ? v : v + "\0"
            }

            function G(v, _) {
                for (var V = v + "", N, Z = 0; Z < V.length;) _[S & Z] = S & (N ^= _[S & Z] * 19) + V.charCodeAt(Z++);
                return P(_)
            }

            function y() {
                try {
                    var v = new Uint8Array(s);
                    return (r.crypto || r.msCrypto).getRandomValues(v), P(v)
                } catch {
                    var _ = r.navigator,
                        V = _ && _.plugins;
                    return [+new Date, r, V, r.screen, P(t)]
                }
            }

            function P(v) {
                return String.fromCharCode.apply(0, v)
            }
            G(e.random(), t)
        }

        function initialize$2(t) {
            seedRandom([], t)
        }
        var propTypes = {
            SHAPE: "shape"
        };

        function _typeof$1(t) {
            "@babel/helpers - typeof";
            return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? _typeof$1 = function(r) {
                return typeof r
            } : _typeof$1 = function(r) {
                return r && typeof Symbol == "function" && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r
            }, _typeof$1(t)
        }
        var ExpressionManager = function() {
                var ob = {},
                    Math = BMMath,
                    window = null,
                    document = null,
                    XMLHttpRequest = null,
                    fetch = null,
                    frames = null,
                    _lottieGlobal = {};
                initialize$2(BMMath);

                function resetFrame() {
                    _lottieGlobal = {}
                }

                function $bm_isInstanceOfArray(t) {
                    return t.constructor === Array || t.constructor === Float32Array
                }

                function isNumerable(t, e) {
                    return t === "number" || e instanceof Number || t === "boolean" || t === "string"
                }

                function $bm_neg(t) {
                    var e = _typeof$1(t);
                    if (e === "number" || t instanceof Number || e === "boolean") return -t;
                    if ($bm_isInstanceOfArray(t)) {
                        var r, s = t.length,
                            a = [];
                        for (r = 0; r < s; r += 1) a[r] = -t[r];
                        return a
                    }
                    return t.propType ? t.v : -t
                }
                var easeInBez = BezierFactory.getBezierEasing(.333, 0, .833, .833, "easeIn").get,
                    easeOutBez = BezierFactory.getBezierEasing(.167, .167, .667, 1, "easeOut").get,
                    easeInOutBez = BezierFactory.getBezierEasing(.33, 0, .667, 1, "easeInOut").get;

                function sum(t, e) {
                    var r = _typeof$1(t),
                        s = _typeof$1(e);
                    if (isNumerable(r, t) && isNumerable(s, e) || r === "string" || s === "string") return t + e;
                    if ($bm_isInstanceOfArray(t) && isNumerable(s, e)) return t = t.slice(0), t[0] += e, t;
                    if (isNumerable(r, t) && $bm_isInstanceOfArray(e)) return e = e.slice(0), e[0] = t + e[0], e;
                    if ($bm_isInstanceOfArray(t) && $bm_isInstanceOfArray(e)) {
                        for (var a = 0, o = t.length, f = e.length, d = []; a < o || a < f;)(typeof t[a] == "number" || t[a] instanceof Number) && (typeof e[a] == "number" || e[a] instanceof Number) ? d[a] = t[a] + e[a] : d[a] = e[a] === void 0 ? t[a] : t[a] || e[a], a += 1;
                        return d
                    }
                    return 0
                }
                var add = sum;

                function sub(t, e) {
                    var r = _typeof$1(t),
                        s = _typeof$1(e);
                    if (isNumerable(r, t) && isNumerable(s, e)) return r === "string" && (t = parseInt(t, 10)), s === "string" && (e = parseInt(e, 10)), t - e;
                    if ($bm_isInstanceOfArray(t) && isNumerable(s, e)) return t = t.slice(0), t[0] -= e, t;
                    if (isNumerable(r, t) && $bm_isInstanceOfArray(e)) return e = e.slice(0), e[0] = t - e[0], e;
                    if ($bm_isInstanceOfArray(t) && $bm_isInstanceOfArray(e)) {
                        for (var a = 0, o = t.length, f = e.length, d = []; a < o || a < f;)(typeof t[a] == "number" || t[a] instanceof Number) && (typeof e[a] == "number" || e[a] instanceof Number) ? d[a] = t[a] - e[a] : d[a] = e[a] === void 0 ? t[a] : t[a] || e[a], a += 1;
                        return d
                    }
                    return 0
                }

                function mul(t, e) {
                    var r = _typeof$1(t),
                        s = _typeof$1(e),
                        a;
                    if (isNumerable(r, t) && isNumerable(s, e)) return t * e;
                    var o, f;
                    if ($bm_isInstanceOfArray(t) && isNumerable(s, e)) {
                        for (f = t.length, a = createTypedArray("float32", f), o = 0; o < f; o += 1) a[o] = t[o] * e;
                        return a
                    }
                    if (isNumerable(r, t) && $bm_isInstanceOfArray(e)) {
                        for (f = e.length, a = createTypedArray("float32", f), o = 0; o < f; o += 1) a[o] = t * e[o];
                        return a
                    }
                    return 0
                }

                function div(t, e) {
                    var r = _typeof$1(t),
                        s = _typeof$1(e),
                        a;
                    if (isNumerable(r, t) && isNumerable(s, e)) return t / e;
                    var o, f;
                    if ($bm_isInstanceOfArray(t) && isNumerable(s, e)) {
                        for (f = t.length, a = createTypedArray("float32", f), o = 0; o < f; o += 1) a[o] = t[o] / e;
                        return a
                    }
                    if (isNumerable(r, t) && $bm_isInstanceOfArray(e)) {
                        for (f = e.length, a = createTypedArray("float32", f), o = 0; o < f; o += 1) a[o] = t / e[o];
                        return a
                    }
                    return 0
                }

                function mod(t, e) {
                    return typeof t == "string" && (t = parseInt(t, 10)), typeof e == "string" && (e = parseInt(e, 10)), t % e
                }
                var $bm_sum = sum,
                    $bm_sub = sub,
                    $bm_mul = mul,
                    $bm_div = div,
                    $bm_mod = mod;

                function clamp(t, e, r) {
                    if (e > r) {
                        var s = r;
                        r = e, e = s
                    }
                    return Math.min(Math.max(t, e), r)
                }

                function radiansToDegrees(t) {
                    return t / degToRads
                }
                var radians_to_degrees = radiansToDegrees;

                function degreesToRadians(t) {
                    return t * degToRads
                }
                var degrees_to_radians = radiansToDegrees,
                    helperLengthArray = [0, 0, 0, 0, 0, 0];

                function length(t, e) {
                    if (typeof t == "number" || t instanceof Number) return e = e || 0, Math.abs(t - e);
                    e || (e = helperLengthArray);
                    var r, s = Math.min(t.length, e.length),
                        a = 0;
                    for (r = 0; r < s; r += 1) a += Math.pow(e[r] - t[r], 2);
                    return Math.sqrt(a)
                }

                function normalize(t) {
                    return div(t, length(t))
                }

                function rgbToHsl(t) {
                    var e = t[0],
                        r = t[1],
                        s = t[2],
                        a = Math.max(e, r, s),
                        o = Math.min(e, r, s),
                        f, d, c = (a + o) / 2;
                    if (a === o) f = 0, d = 0;
                    else {
                        var m = a - o;
                        switch (d = c > .5 ? m / (2 - a - o) : m / (a + o), a) {
                            case e:
                                f = (r - s) / m + (r < s ? 6 : 0);
                                break;
                            case r:
                                f = (s - e) / m + 2;
                                break;
                            case s:
                                f = (e - r) / m + 4;
                                break
                        }
                        f /= 6
                    }
                    return [f, d, c, t[3]]
                }

                function hue2rgb(t, e, r) {
                    return r < 0 && (r += 1), r > 1 && (r -= 1), r < 1 / 6 ? t + (e - t) * 6 * r : r < 1 / 2 ? e : r < 2 / 3 ? t + (e - t) * (2 / 3 - r) * 6 : t
                }

                function hslToRgb(t) {
                    var e = t[0],
                        r = t[1],
                        s = t[2],
                        a, o, f;
                    if (r === 0) a = s, f = s, o = s;
                    else {
                        var d = s < .5 ? s * (1 + r) : s + r - s * r,
                            c = 2 * s - d;
                        a = hue2rgb(c, d, e + 1 / 3), o = hue2rgb(c, d, e), f = hue2rgb(c, d, e - 1 / 3)
                    }
                    return [a, o, f, t[3]]
                }

                function linear(t, e, r, s, a) {
                    if ((s === void 0 || a === void 0) && (s = e, a = r, e = 0, r = 1), r < e) {
                        var o = r;
                        r = e, e = o
                    }
                    if (t <= e) return s;
                    if (t >= r) return a;
                    var f = r === e ? 0 : (t - e) / (r - e);
                    if (!s.length) return s + (a - s) * f;
                    var d, c = s.length,
                        m = createTypedArray("float32", c);
                    for (d = 0; d < c; d += 1) m[d] = s[d] + (a[d] - s[d]) * f;
                    return m
                }

                function random(t, e) {
                    if (e === void 0 && (t === void 0 ? (t = 0, e = 1) : (e = t, t = void 0)), e.length) {
                        var r, s = e.length;
                        t || (t = createTypedArray("float32", s));
                        var a = createTypedArray("float32", s),
                            o = BMMath.random();
                        for (r = 0; r < s; r += 1) a[r] = t[r] + o * (e[r] - t[r]);
                        return a
                    }
                    t === void 0 && (t = 0);
                    var f = BMMath.random();
                    return t + f * (e - t)
                }

                function createPath(t, e, r, s) {
                    var a, o = t.length,
                        f = shapePool.newElement();
                    f.setPathData(!!s, o);
                    var d = [0, 0],
                        c, m;
                    for (a = 0; a < o; a += 1) c = e && e[a] ? e[a] : d, m = r && r[a] ? r[a] : d, f.setTripleAt(t[a][0], t[a][1], m[0] + t[a][0], m[1] + t[a][1], c[0] + t[a][0], c[1] + t[a][1], a, !0);
                    return f
                }

                function initiateExpression(elem, data, property) {
                    function noOp(t) {
                        return t
                    }
                    if (!elem.globalData.renderConfig.runExpressions) return noOp;
                    var val = data.x,
                        needsVelocity = /velocity(?![\w\d])/.test(val),
                        _needsRandom = val.indexOf("random") !== -1,
                        elemType = elem.data.ty,
                        transform, $bm_transform, content, effect, thisProperty = property;
                    thisProperty.valueAtTime = thisProperty.getValueAtTime, Object.defineProperty(thisProperty, "value", {
                        get: function() {
                            return thisProperty.v
                        }
                    }), elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate, elem.comp.displayStartTime = 0;
                    var inPoint = elem.data.ip / elem.comp.globalData.frameRate,
                        outPoint = elem.data.op / elem.comp.globalData.frameRate,
                        width = elem.data.sw ? elem.data.sw : 0,
                        height = elem.data.sh ? elem.data.sh : 0,
                        name = elem.data.nm,
                        loopIn, loop_in, loopOut, loop_out, smooth, toWorld, fromWorld, fromComp, toComp, fromCompToSurface, position, rotation, anchorPoint, scale, thisLayer, thisComp, mask, valueAtTime, velocityAtTime, scoped_bm_rt, expression_function = eval("[function _expression_function(){" + val + ";scoped_bm_rt=$bm_rt}]")[0],
                        numKeys = property.kf ? data.k.length : 0,
                        active = !this.data || this.data.hd !== !0,
                        wiggle = (function t(e, r) {
                            var s, a, o = this.pv.length ? this.pv.length : 1,
                                f = createTypedArray("float32", o);
                            e = 5;
                            var d = Math.floor(time * e);
                            for (s = 0, a = 0; s < d;) {
                                for (a = 0; a < o; a += 1) f[a] += -r + r * 2 * BMMath.random();
                                s += 1
                            }
                            var c = time * e,
                                m = c - Math.floor(c),
                                S = createTypedArray("float32", o);
                            if (o > 1) {
                                for (a = 0; a < o; a += 1) S[a] = this.pv[a] + f[a] + (-r + r * 2 * BMMath.random()) * m;
                                return S
                            }
                            return this.pv + f[0] + (-r + r * 2 * BMMath.random()) * m
                        }).bind(this);
                    thisProperty.loopIn && (loopIn = thisProperty.loopIn.bind(thisProperty), loop_in = loopIn), thisProperty.loopOut && (loopOut = thisProperty.loopOut.bind(thisProperty), loop_out = loopOut), thisProperty.smooth && (smooth = thisProperty.smooth.bind(thisProperty));

                    function loopInDuration(t, e) {
                        return loopIn(t, e, !0)
                    }

                    function loopOutDuration(t, e) {
                        return loopOut(t, e, !0)
                    }
                    this.getValueAtTime && (valueAtTime = this.getValueAtTime.bind(this)), this.getVelocityAtTime && (velocityAtTime = this.getVelocityAtTime.bind(this));
                    var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);

                    function lookAt(t, e) {
                        var r = [e[0] - t[0], e[1] - t[1], e[2] - t[2]],
                            s = Math.atan2(r[0], Math.sqrt(r[1] * r[1] + r[2] * r[2])) / degToRads,
                            a = -Math.atan2(r[1], r[2]) / degToRads;
                        return [a, s, 0]
                    }

                    function easeOut(t, e, r, s, a) {
                        return applyEase(easeOutBez, t, e, r, s, a)
                    }

                    function easeIn(t, e, r, s, a) {
                        return applyEase(easeInBez, t, e, r, s, a)
                    }

                    function ease(t, e, r, s, a) {
                        return applyEase(easeInOutBez, t, e, r, s, a)
                    }

                    function applyEase(t, e, r, s, a, o) {
                        a === void 0 ? (a = r, o = s) : e = (e - r) / (s - r), e > 1 ? e = 1 : e < 0 && (e = 0);
                        var f = t(e);
                        if ($bm_isInstanceOfArray(a)) {
                            var d, c = a.length,
                                m = createTypedArray("float32", c);
                            for (d = 0; d < c; d += 1) m[d] = (o[d] - a[d]) * f + a[d];
                            return m
                        }
                        return (o - a) * f + a
                    }

                    function nearestKey(t) {
                        var e, r = data.k.length,
                            s, a;
                        if (!data.k.length || typeof data.k[0] == "number") s = 0, a = 0;
                        else if (s = -1, t *= elem.comp.globalData.frameRate, t < data.k[0].t) s = 1, a = data.k[0].t;
                        else {
                            for (e = 0; e < r - 1; e += 1)
                                if (t === data.k[e].t) {
                                    s = e + 1, a = data.k[e].t;
                                    break
                                } else if (t > data.k[e].t && t < data.k[e + 1].t) {
                                t - data.k[e].t > data.k[e + 1].t - t ? (s = e + 2, a = data.k[e + 1].t) : (s = e + 1, a = data.k[e].t);
                                break
                            }
                            s === -1 && (s = e + 1, a = data.k[e].t)
                        }
                        var o = {};
                        return o.index = s, o.time = a / elem.comp.globalData.frameRate, o
                    }

                    function key(t) {
                        var e, r, s;
                        if (!data.k.length || typeof data.k[0] == "number") throw new Error("The property has no keyframe at index " + t);
                        t -= 1, e = {
                            time: data.k[t].t / elem.comp.globalData.frameRate,
                            value: []
                        };
                        var a = Object.prototype.hasOwnProperty.call(data.k[t], "s") ? data.k[t].s : data.k[t - 1].e;
                        for (s = a.length, r = 0; r < s; r += 1) e[r] = a[r], e.value[r] = a[r];
                        return e
                    }

                    function framesToTime(t, e) {
                        return e || (e = elem.comp.globalData.frameRate), t / e
                    }

                    function timeToFrames(t, e) {
                        return !t && t !== 0 && (t = time), e || (e = elem.comp.globalData.frameRate), t * e
                    }

                    function seedRandom(t) {
                        BMMath.seedrandom(randSeed + t)
                    }

                    function sourceRectAtTime() {
                        return elem.sourceRectAtTime()
                    }

                    function substring(t, e) {
                        return typeof value == "string" ? e === void 0 ? value.substring(t) : value.substring(t, e) : ""
                    }

                    function substr(t, e) {
                        return typeof value == "string" ? e === void 0 ? value.substr(t) : value.substr(t, e) : ""
                    }

                    function posterizeTime(t) {
                        time = t === 0 ? 0 : Math.floor(time * t) / t, value = valueAtTime(time)
                    }
                    var time, velocity, value, text, textIndex, textTotal, selectorValue, index = elem.data.ind,
                        hasParent = !!(elem.hierarchy && elem.hierarchy.length),
                        parent, randSeed = Math.floor(Math.random() * 1e6),
                        globalData = elem.globalData;

                    function executeExpression(t) {
                        return value = t, this.frameExpressionId === elem.globalData.frameId && this.propType !== "textSelector" ? value : (this.propType === "textSelector" && (textIndex = this.textIndex, textTotal = this.textTotal, selectorValue = this.selectorValue), thisLayer || (text = elem.layerInterface.text, thisLayer = elem.layerInterface, thisComp = elem.comp.compInterface, toWorld = thisLayer.toWorld.bind(thisLayer), fromWorld = thisLayer.fromWorld.bind(thisLayer), fromComp = thisLayer.fromComp.bind(thisLayer), toComp = thisLayer.toComp.bind(thisLayer), mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null, fromCompToSurface = fromComp), transform || (transform = elem.layerInterface("ADBE Transform Group"), $bm_transform = transform, transform && (anchorPoint = transform.anchorPoint)), elemType === 4 && !content && (content = thisLayer("ADBE Root Vectors Group")), effect || (effect = thisLayer(4)), hasParent = !!(elem.hierarchy && elem.hierarchy.length), hasParent && !parent && (parent = elem.hierarchy[0].layerInterface), time = this.comp.renderedFrame / this.comp.globalData.frameRate, _needsRandom && seedRandom(randSeed + time), needsVelocity && (velocity = velocityAtTime(time)), expression_function(), this.frameExpressionId = elem.globalData.frameId, scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt, scoped_bm_rt)
                    }
                    return executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData], executeExpression
                }
                return ob.initiateExpression = initiateExpression, ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal], ob.resetFrame = resetFrame, ob
            }(),
            Expressions = function() {
                var t = {};
                t.initExpressions = e, t.resetFrame = ExpressionManager.resetFrame;

                function e(r) {
                    var s = 0,
                        a = [];

                    function o() {
                        s += 1
                    }

                    function f() {
                        s -= 1, s === 0 && c()
                    }

                    function d(m) {
                        a.indexOf(m) === -1 && a.push(m)
                    }

                    function c() {
                        var m, S = a.length;
                        for (m = 0; m < S; m += 1) a[m].release();
                        a.length = 0
                    }
                    r.renderer.compInterface = CompExpressionInterface(r.renderer), r.renderer.globalData.projectInterface.registerComposition(r.renderer), r.renderer.globalData.pushExpression = o, r.renderer.globalData.popExpression = f, r.renderer.globalData.registerExpressionProperty = d
                }
                return t
            }(),
            MaskManagerInterface = function() {
                function t(r, s) {
                    this._mask = r, this._data = s
                }
                Object.defineProperty(t.prototype, "maskPath", {
                    get: function() {
                        return this._mask.prop.k && this._mask.prop.getValue(), this._mask.prop
                    }
                }), Object.defineProperty(t.prototype, "maskOpacity", {
                    get: function() {
                        return this._mask.op.k && this._mask.op.getValue(), this._mask.op.v * 100
                    }
                });
                var e = function(s) {
                    var a = createSizedArray(s.viewData.length),
                        o, f = s.viewData.length;
                    for (o = 0; o < f; o += 1) a[o] = new t(s.viewData[o], s.masksProperties[o]);
                    var d = function(m) {
                        for (o = 0; o < f;) {
                            if (s.masksProperties[o].nm === m) return a[o];
                            o += 1
                        }
                        return null
                    };
                    return d
                };
                return e
            }(),
            ExpressionPropertyInterface = function() {
                var t = {
                        pv: 0,
                        v: 0,
                        mult: 1
                    },
                    e = {
                        pv: [0, 0, 0],
                        v: [0, 0, 0],
                        mult: 1
                    };

                function r(f, d, c) {
                    Object.defineProperty(f, "velocity", {
                        get: function() {
                            return d.getVelocityAtTime(d.comp.currentFrame)
                        }
                    }), f.numKeys = d.keyframes ? d.keyframes.length : 0, f.key = function(m) {
                        if (!f.numKeys) return 0;
                        var S = "";
                        "s" in d.keyframes[m - 1] ? S = d.keyframes[m - 1].s : "e" in d.keyframes[m - 2] ? S = d.keyframes[m - 2].e : S = d.keyframes[m - 2].s;
                        var M = c === "unidimensional" ? new Number(S) : Object.assign({}, S);
                        return M.time = d.keyframes[m - 1].t / d.elem.comp.globalData.frameRate, M.value = c === "unidimensional" ? S[0] : S, M
                    }, f.valueAtTime = d.getValueAtTime, f.speedAtTime = d.getSpeedAtTime, f.velocityAtTime = d.getVelocityAtTime, f.propertyGroup = d.propertyGroup
                }

                function s(f) {
                    (!f || !("pv" in f)) && (f = t);
                    var d = 1 / f.mult,
                        c = f.pv * d,
                        m = new Number(c);
                    return m.value = c, r(m, f, "unidimensional"),
                        function() {
                            return f.k && f.getValue(), c = f.v * d, m.value !== c && (m = new Number(c), m.value = c, r(m, f, "unidimensional")), m
                        }
                }

                function a(f) {
                    (!f || !("pv" in f)) && (f = e);
                    var d = 1 / f.mult,
                        c = f.data && f.data.l || f.pv.length,
                        m = createTypedArray("float32", c),
                        S = createTypedArray("float32", c);
                    return m.value = S, r(m, f, "multidimensional"),
                        function() {
                            f.k && f.getValue();
                            for (var M = 0; M < c; M += 1) S[M] = f.v[M] * d, m[M] = S[M];
                            return m
                        }
                }

                function o() {
                    return t
                }
                return function(f) {
                    return f ? f.propType === "unidimensional" ? s(f) : a(f) : o
                }
            }(),
            TransformExpressionInterface = function() {
                return function(t) {
                    function e(f) {
                        switch (f) {
                            case "scale":
                            case "Scale":
                            case "ADBE Scale":
                            case 6:
                                return e.scale;
                            case "rotation":
                            case "Rotation":
                            case "ADBE Rotation":
                            case "ADBE Rotate Z":
                            case 10:
                                return e.rotation;
                            case "ADBE Rotate X":
                                return e.xRotation;
                            case "ADBE Rotate Y":
                                return e.yRotation;
                            case "position":
                            case "Position":
                            case "ADBE Position":
                            case 2:
                                return e.position;
                            case "ADBE Position_0":
                                return e.xPosition;
                            case "ADBE Position_1":
                                return e.yPosition;
                            case "ADBE Position_2":
                                return e.zPosition;
                            case "anchorPoint":
                            case "AnchorPoint":
                            case "Anchor Point":
                            case "ADBE AnchorPoint":
                            case 1:
                                return e.anchorPoint;
                            case "opacity":
                            case "Opacity":
                            case 11:
                                return e.opacity;
                            default:
                                return null
                        }
                    }
                    Object.defineProperty(e, "rotation", {
                        get: ExpressionPropertyInterface(t.r || t.rz)
                    }), Object.defineProperty(e, "zRotation", {
                        get: ExpressionPropertyInterface(t.rz || t.r)
                    }), Object.defineProperty(e, "xRotation", {
                        get: ExpressionPropertyInterface(t.rx)
                    }), Object.defineProperty(e, "yRotation", {
                        get: ExpressionPropertyInterface(t.ry)
                    }), Object.defineProperty(e, "scale", {
                        get: ExpressionPropertyInterface(t.s)
                    });
                    var r, s, a, o;
                    return t.p ? o = ExpressionPropertyInterface(t.p) : (r = ExpressionPropertyInterface(t.px), s = ExpressionPropertyInterface(t.py), t.pz && (a = ExpressionPropertyInterface(t.pz))), Object.defineProperty(e, "position", {
                        get: function() {
                            return t.p ? o() : [r(), s(), a ? a() : 0]
                        }
                    }), Object.defineProperty(e, "xPosition", {
                        get: ExpressionPropertyInterface(t.px)
                    }), Object.defineProperty(e, "yPosition", {
                        get: ExpressionPropertyInterface(t.py)
                    }), Object.defineProperty(e, "zPosition", {
                        get: ExpressionPropertyInterface(t.pz)
                    }), Object.defineProperty(e, "anchorPoint", {
                        get: ExpressionPropertyInterface(t.a)
                    }), Object.defineProperty(e, "opacity", {
                        get: ExpressionPropertyInterface(t.o)
                    }), Object.defineProperty(e, "skew", {
                        get: ExpressionPropertyInterface(t.sk)
                    }), Object.defineProperty(e, "skewAxis", {
                        get: ExpressionPropertyInterface(t.sa)
                    }), Object.defineProperty(e, "orientation", {
                        get: ExpressionPropertyInterface(t.or)
                    }), e
                }
            }(),
            LayerExpressionInterface = function() {
                function t(m) {
                    var S = new Matrix;
                    if (m !== void 0) {
                        var M = this._elem.finalTransform.mProp.getValueAtTime(m);
                        M.clone(S)
                    } else {
                        var g = this._elem.finalTransform.mProp;
                        g.applyToMatrix(S)
                    }
                    return S
                }

                function e(m, S) {
                    var M = this.getMatrix(S);
                    return M.props[12] = 0, M.props[13] = 0, M.props[14] = 0, this.applyPoint(M, m)
                }

                function r(m, S) {
                    var M = this.getMatrix(S);
                    return this.applyPoint(M, m)
                }

                function s(m, S) {
                    var M = this.getMatrix(S);
                    return M.props[12] = 0, M.props[13] = 0, M.props[14] = 0, this.invertPoint(M, m)
                }

                function a(m, S) {
                    var M = this.getMatrix(S);
                    return this.invertPoint(M, m)
                }

                function o(m, S) {
                    if (this._elem.hierarchy && this._elem.hierarchy.length) {
                        var M, g = this._elem.hierarchy.length;
                        for (M = 0; M < g; M += 1) this._elem.hierarchy[M].finalTransform.mProp.applyToMatrix(m)
                    }
                    return m.applyToPointArray(S[0], S[1], S[2] || 0)
                }

                function f(m, S) {
                    if (this._elem.hierarchy && this._elem.hierarchy.length) {
                        var M, g = this._elem.hierarchy.length;
                        for (M = 0; M < g; M += 1) this._elem.hierarchy[M].finalTransform.mProp.applyToMatrix(m)
                    }
                    return m.inversePoint(S)
                }

                function d(m) {
                    var S = new Matrix;
                    if (S.reset(), this._elem.finalTransform.mProp.applyToMatrix(S), this._elem.hierarchy && this._elem.hierarchy.length) {
                        var M, g = this._elem.hierarchy.length;
                        for (M = 0; M < g; M += 1) this._elem.hierarchy[M].finalTransform.mProp.applyToMatrix(S);
                        return S.inversePoint(m)
                    }
                    return S.inversePoint(m)
                }

                function c() {
                    return [1, 1, 1, 1]
                }
                return function(m) {
                    var S;

                    function M(b) {
                        k.mask = new MaskManagerInterface(b, m)
                    }

                    function g(b) {
                        k.effect = b
                    }

                    function k(b) {
                        switch (b) {
                            case "ADBE Root Vectors Group":
                            case "Contents":
                            case 2:
                                return k.shapeInterface;
                            case 1:
                            case 6:
                            case "Transform":
                            case "transform":
                            case "ADBE Transform Group":
                                return S;
                            case 4:
                            case "ADBE Effect Parade":
                            case "effects":
                            case "Effects":
                                return k.effect;
                            case "ADBE Text Properties":
                                return k.textInterface;
                            default:
                                return null
                        }
                    }
                    k.getMatrix = t, k.invertPoint = f, k.applyPoint = o, k.toWorld = r, k.toWorldVec = e, k.fromWorld = a, k.fromWorldVec = s, k.toComp = r, k.fromComp = d, k.sampleImage = c, k.sourceRectAtTime = m.sourceRectAtTime.bind(m), k._elem = m, S = TransformExpressionInterface(m.finalTransform.mProp);
                    var C = getDescriptor(S, "anchorPoint");
                    return Object.defineProperties(k, {
                        hasParent: {
                            get: function() {
                                return m.hierarchy.length
                            }
                        },
                        parent: {
                            get: function() {
                                return m.hierarchy[0].layerInterface
                            }
                        },
                        rotation: getDescriptor(S, "rotation"),
                        scale: getDescriptor(S, "scale"),
                        position: getDescriptor(S, "position"),
                        opacity: getDescriptor(S, "opacity"),
                        anchorPoint: C,
                        anchor_point: C,
                        transform: {
                            get: function() {
                                return S
                            }
                        },
                        active: {
                            get: function() {
                                return m.isInRange
                            }
                        }
                    }), k.startTime = m.data.st, k.index = m.data.ind, k.source = m.data.refId, k.height = m.data.ty === 0 ? m.data.h : 100, k.width = m.data.ty === 0 ? m.data.w : 100, k.inPoint = m.data.ip / m.comp.globalData.frameRate, k.outPoint = m.data.op / m.comp.globalData.frameRate, k._name = m.data.nm, k.registerMaskInterface = M, k.registerEffectsInterface = g, k
                }
            }(),
            propertyGroupFactory = function() {
                return function(t, e) {
                    return function(r) {
                        return r = r === void 0 ? 1 : r, r <= 0 ? t : e(r - 1)
                    }
                }
            }(),
            PropertyInterface = function() {
                return function(t, e) {
                    var r = {
                        _name: t
                    };

                    function s(a) {
                        return a = a === void 0 ? 1 : a, a <= 0 ? r : e(a - 1)
                    }
                    return s
                }
            }(),
            EffectsExpressionInterface = function() {
                var t = {
                    createEffectsInterface: e
                };

                function e(a, o) {
                    if (a.effectsManager) {
                        var f = [],
                            d = a.data.ef,
                            c, m = a.effectsManager.effectElements.length;
                        for (c = 0; c < m; c += 1) f.push(r(d[c], a.effectsManager.effectElements[c], o, a));
                        var S = a.data.ef || [],
                            M = function(k) {
                                for (c = 0, m = S.length; c < m;) {
                                    if (k === S[c].nm || k === S[c].mn || k === S[c].ix) return f[c];
                                    c += 1
                                }
                                return null
                            };
                        return Object.defineProperty(M, "numProperties", {
                            get: function() {
                                return S.length
                            }
                        }), M
                    }
                    return null
                }

                function r(a, o, f, d) {
                    function c(k) {
                        for (var C = a.ef, b = 0, G = C.length; b < G;) {
                            if (k === C[b].nm || k === C[b].mn || k === C[b].ix) return C[b].ty === 5 ? S[b] : S[b]();
                            b += 1
                        }
                        throw new Error
                    }
                    var m = propertyGroupFactory(c, f),
                        S = [],
                        M, g = a.ef.length;
                    for (M = 0; M < g; M += 1) a.ef[M].ty === 5 ? S.push(r(a.ef[M], o.effectElements[M], o.effectElements[M].propertyGroup, d)) : S.push(s(o.effectElements[M], a.ef[M].ty, d, m));
                    return a.mn === "ADBE Color Control" && Object.defineProperty(c, "color", {
                        get: function() {
                            return S[0]()
                        }
                    }), Object.defineProperties(c, {
                        numProperties: {
                            get: function() {
                                return a.np
                            }
                        },
                        _name: {
                            value: a.nm
                        },
                        propertyGroup: {
                            value: m
                        }
                    }), c.enabled = a.en !== 0, c.active = c.enabled, c
                }

                function s(a, o, f, d) {
                    var c = ExpressionPropertyInterface(a.p);

                    function m() {
                        return o === 10 ? f.comp.compInterface(a.p.v) : c()
                    }
                    return a.p.setGroupProperty && a.p.setGroupProperty(PropertyInterface("", d)), m
                }
                return t
            }(),
            ShapePathInterface = function() {
                return function(e, r, s) {
                    var a = r.sh;

                    function o(d) {
                        return d === "Shape" || d === "shape" || d === "Path" || d === "path" || d === "ADBE Vector Shape" || d === 2 ? o.path : null
                    }
                    var f = propertyGroupFactory(o, s);
                    return a.setGroupProperty(PropertyInterface("Path", f)), Object.defineProperties(o, {
                        path: {
                            get: function() {
                                return a.k && a.getValue(), a
                            }
                        },
                        shape: {
                            get: function() {
                                return a.k && a.getValue(), a
                            }
                        },
                        _name: {
                            value: e.nm
                        },
                        ix: {
                            value: e.ix
                        },
                        propertyIndex: {
                            value: e.ix
                        },
                        mn: {
                            value: e.mn
                        },
                        propertyGroup: {
                            value: s
                        }
                    }), o
                }
            }(),
            ShapeExpressionInterface = function() {
                function t(C, b, G) {
                    var y = [],
                        P, v = C ? C.length : 0;
                    for (P = 0; P < v; P += 1) C[P].ty === "gr" ? y.push(r(C[P], b[P], G)) : C[P].ty === "fl" ? y.push(s(C[P], b[P], G)) : C[P].ty === "st" ? y.push(f(C[P], b[P], G)) : C[P].ty === "tm" ? y.push(d(C[P], b[P], G)) : C[P].ty === "tr" || (C[P].ty === "el" ? y.push(m(C[P], b[P], G)) : C[P].ty === "sr" ? y.push(S(C[P], b[P], G)) : C[P].ty === "sh" ? y.push(ShapePathInterface(C[P], b[P], G)) : C[P].ty === "rc" ? y.push(M(C[P], b[P], G)) : C[P].ty === "rd" ? y.push(g(C[P], b[P], G)) : C[P].ty === "rp" ? y.push(k(C[P], b[P], G)) : C[P].ty === "gf" ? y.push(a(C[P], b[P], G)) : y.push(o(C[P], b[P])));
                    return y
                }

                function e(C, b, G) {
                    var y, P = function(V) {
                        for (var N = 0, Z = y.length; N < Z;) {
                            if (y[N]._name === V || y[N].mn === V || y[N].propertyIndex === V || y[N].ix === V || y[N].ind === V) return y[N];
                            N += 1
                        }
                        return typeof V == "number" ? y[V - 1] : null
                    };
                    P.propertyGroup = propertyGroupFactory(P, G), y = t(C.it, b.it, P.propertyGroup), P.numProperties = y.length;
                    var v = c(C.it[C.it.length - 1], b.it[b.it.length - 1], P.propertyGroup);
                    return P.transform = v, P.propertyIndex = C.cix, P._name = C.nm, P
                }

                function r(C, b, G) {
                    var y = function(V) {
                        switch (V) {
                            case "ADBE Vectors Group":
                            case "Contents":
                            case 2:
                                return y.content;
                            default:
                                return y.transform
                        }
                    };
                    y.propertyGroup = propertyGroupFactory(y, G);
                    var P = e(C, b, y.propertyGroup),
                        v = c(C.it[C.it.length - 1], b.it[b.it.length - 1], y.propertyGroup);
                    return y.content = P, y.transform = v, Object.defineProperty(y, "_name", {
                        get: function() {
                            return C.nm
                        }
                    }), y.numProperties = C.np, y.propertyIndex = C.ix, y.nm = C.nm, y.mn = C.mn, y
                }

                function s(C, b, G) {
                    function y(P) {
                        return P === "Color" || P === "color" ? y.color : P === "Opacity" || P === "opacity" ? y.opacity : null
                    }
                    return Object.defineProperties(y, {
                        color: {
                            get: ExpressionPropertyInterface(b.c)
                        },
                        opacity: {
                            get: ExpressionPropertyInterface(b.o)
                        },
                        _name: {
                            value: C.nm
                        },
                        mn: {
                            value: C.mn
                        }
                    }), b.c.setGroupProperty(PropertyInterface("Color", G)), b.o.setGroupProperty(PropertyInterface("Opacity", G)), y
                }

                function a(C, b, G) {
                    function y(P) {
                        return P === "Start Point" || P === "start point" ? y.startPoint : P === "End Point" || P === "end point" ? y.endPoint : P === "Opacity" || P === "opacity" ? y.opacity : null
                    }
                    return Object.defineProperties(y, {
                        startPoint: {
                            get: ExpressionPropertyInterface(b.s)
                        },
                        endPoint: {
                            get: ExpressionPropertyInterface(b.e)
                        },
                        opacity: {
                            get: ExpressionPropertyInterface(b.o)
                        },
                        type: {
                            get: function() {
                                return "a"
                            }
                        },
                        _name: {
                            value: C.nm
                        },
                        mn: {
                            value: C.mn
                        }
                    }), b.s.setGroupProperty(PropertyInterface("Start Point", G)), b.e.setGroupProperty(PropertyInterface("End Point", G)), b.o.setGroupProperty(PropertyInterface("Opacity", G)), y
                }

                function o() {
                    function C() {
                        return null
                    }
                    return C
                }

                function f(C, b, G) {
                    var y = propertyGroupFactory(Z, G),
                        P = propertyGroupFactory(N, y);

                    function v(J) {
                        Object.defineProperty(N, C.d[J].nm, {
                            get: ExpressionPropertyInterface(b.d.dataProps[J].p)
                        })
                    }
                    var _, V = C.d ? C.d.length : 0,
                        N = {};
                    for (_ = 0; _ < V; _ += 1) v(_), b.d.dataProps[_].p.setGroupProperty(P);

                    function Z(J) {
                        return J === "Color" || J === "color" ? Z.color : J === "Opacity" || J === "opacity" ? Z.opacity : J === "Stroke Width" || J === "stroke width" ? Z.strokeWidth : null
                    }
                    return Object.defineProperties(Z, {
                        color: {
                            get: ExpressionPropertyInterface(b.c)
                        },
                        opacity: {
                            get: ExpressionPropertyInterface(b.o)
                        },
                        strokeWidth: {
                            get: ExpressionPropertyInterface(b.w)
                        },
                        dash: {
                            get: function() {
                                return N
                            }
                        },
                        _name: {
                            value: C.nm
                        },
                        mn: {
                            value: C.mn
                        }
                    }), b.c.setGroupProperty(PropertyInterface("Color", y)), b.o.setGroupProperty(PropertyInterface("Opacity", y)), b.w.setGroupProperty(PropertyInterface("Stroke Width", y)), Z
                }

                function d(C, b, G) {
                    function y(v) {
                        return v === C.e.ix || v === "End" || v === "end" ? y.end : v === C.s.ix ? y.start : v === C.o.ix ? y.offset : null
                    }
                    var P = propertyGroupFactory(y, G);
                    return y.propertyIndex = C.ix, b.s.setGroupProperty(PropertyInterface("Start", P)), b.e.setGroupProperty(PropertyInterface("End", P)), b.o.setGroupProperty(PropertyInterface("Offset", P)), y.propertyIndex = C.ix, y.propertyGroup = G, Object.defineProperties(y, {
                        start: {
                            get: ExpressionPropertyInterface(b.s)
                        },
                        end: {
                            get: ExpressionPropertyInterface(b.e)
                        },
                        offset: {
                            get: ExpressionPropertyInterface(b.o)
                        },
                        _name: {
                            value: C.nm
                        }
                    }), y.mn = C.mn, y
                }

                function c(C, b, G) {
                    function y(v) {
                        return C.a.ix === v || v === "Anchor Point" ? y.anchorPoint : C.o.ix === v || v === "Opacity" ? y.opacity : C.p.ix === v || v === "Position" ? y.position : C.r.ix === v || v === "Rotation" || v === "ADBE Vector Rotation" ? y.rotation : C.s.ix === v || v === "Scale" ? y.scale : C.sk && C.sk.ix === v || v === "Skew" ? y.skew : C.sa && C.sa.ix === v || v === "Skew Axis" ? y.skewAxis : null
                    }
                    var P = propertyGroupFactory(y, G);
                    return b.transform.mProps.o.setGroupProperty(PropertyInterface("Opacity", P)), b.transform.mProps.p.setGroupProperty(PropertyInterface("Position", P)), b.transform.mProps.a.setGroupProperty(PropertyInterface("Anchor Point", P)), b.transform.mProps.s.setGroupProperty(PropertyInterface("Scale", P)), b.transform.mProps.r.setGroupProperty(PropertyInterface("Rotation", P)), b.transform.mProps.sk && (b.transform.mProps.sk.setGroupProperty(PropertyInterface("Skew", P)), b.transform.mProps.sa.setGroupProperty(PropertyInterface("Skew Angle", P))), b.transform.op.setGroupProperty(PropertyInterface("Opacity", P)), Object.defineProperties(y, {
                        opacity: {
                            get: ExpressionPropertyInterface(b.transform.mProps.o)
                        },
                        position: {
                            get: ExpressionPropertyInterface(b.transform.mProps.p)
                        },
                        anchorPoint: {
                            get: ExpressionPropertyInterface(b.transform.mProps.a)
                        },
                        scale: {
                            get: ExpressionPropertyInterface(b.transform.mProps.s)
                        },
                        rotation: {
                            get: ExpressionPropertyInterface(b.transform.mProps.r)
                        },
                        skew: {
                            get: ExpressionPropertyInterface(b.transform.mProps.sk)
                        },
                        skewAxis: {
                            get: ExpressionPropertyInterface(b.transform.mProps.sa)
                        },
                        _name: {
                            value: C.nm
                        }
                    }), y.ty = "tr", y.mn = C.mn, y.propertyGroup = G, y
                }

                function m(C, b, G) {
                    function y(_) {
                        return C.p.ix === _ ? y.position : C.s.ix === _ ? y.size : null
                    }
                    var P = propertyGroupFactory(y, G);
                    y.propertyIndex = C.ix;
                    var v = b.sh.ty === "tm" ? b.sh.prop : b.sh;
                    return v.s.setGroupProperty(PropertyInterface("Size", P)), v.p.setGroupProperty(PropertyInterface("Position", P)), Object.defineProperties(y, {
                        size: {
                            get: ExpressionPropertyInterface(v.s)
                        },
                        position: {
                            get: ExpressionPropertyInterface(v.p)
                        },
                        _name: {
                            value: C.nm
                        }
                    }), y.mn = C.mn, y
                }

                function S(C, b, G) {
                    function y(_) {
                        return C.p.ix === _ ? y.position : C.r.ix === _ ? y.rotation : C.pt.ix === _ ? y.points : C.or.ix === _ || _ === "ADBE Vector Star Outer Radius" ? y.outerRadius : C.os.ix === _ ? y.outerRoundness : C.ir && (C.ir.ix === _ || _ === "ADBE Vector Star Inner Radius") ? y.innerRadius : C.is && C.is.ix === _ ? y.innerRoundness : null
                    }
                    var P = propertyGroupFactory(y, G),
                        v = b.sh.ty === "tm" ? b.sh.prop : b.sh;
                    return y.propertyIndex = C.ix, v.or.setGroupProperty(PropertyInterface("Outer Radius", P)), v.os.setGroupProperty(PropertyInterface("Outer Roundness", P)), v.pt.setGroupProperty(PropertyInterface("Points", P)), v.p.setGroupProperty(PropertyInterface("Position", P)), v.r.setGroupProperty(PropertyInterface("Rotation", P)), C.ir && (v.ir.setGroupProperty(PropertyInterface("Inner Radius", P)), v.is.setGroupProperty(PropertyInterface("Inner Roundness", P))), Object.defineProperties(y, {
                        position: {
                            get: ExpressionPropertyInterface(v.p)
                        },
                        rotation: {
                            get: ExpressionPropertyInterface(v.r)
                        },
                        points: {
                            get: ExpressionPropertyInterface(v.pt)
                        },
                        outerRadius: {
                            get: ExpressionPropertyInterface(v.or)
                        },
                        outerRoundness: {
                            get: ExpressionPropertyInterface(v.os)
                        },
                        innerRadius: {
                            get: ExpressionPropertyInterface(v.ir)
                        },
                        innerRoundness: {
                            get: ExpressionPropertyInterface(v.is)
                        },
                        _name: {
                            value: C.nm
                        }
                    }), y.mn = C.mn, y
                }

                function M(C, b, G) {
                    function y(_) {
                        return C.p.ix === _ ? y.position : C.r.ix === _ ? y.roundness : C.s.ix === _ || _ === "Size" || _ === "ADBE Vector Rect Size" ? y.size : null
                    }
                    var P = propertyGroupFactory(y, G),
                        v = b.sh.ty === "tm" ? b.sh.prop : b.sh;
                    return y.propertyIndex = C.ix, v.p.setGroupProperty(PropertyInterface("Position", P)), v.s.setGroupProperty(PropertyInterface("Size", P)), v.r.setGroupProperty(PropertyInterface("Rotation", P)), Object.defineProperties(y, {
                        position: {
                            get: ExpressionPropertyInterface(v.p)
                        },
                        roundness: {
                            get: ExpressionPropertyInterface(v.r)
                        },
                        size: {
                            get: ExpressionPropertyInterface(v.s)
                        },
                        _name: {
                            value: C.nm
                        }
                    }), y.mn = C.mn, y
                }

                function g(C, b, G) {
                    function y(_) {
                        return C.r.ix === _ || _ === "Round Corners 1" ? y.radius : null
                    }
                    var P = propertyGroupFactory(y, G),
                        v = b;
                    return y.propertyIndex = C.ix, v.rd.setGroupProperty(PropertyInterface("Radius", P)), Object.defineProperties(y, {
                        radius: {
                            get: ExpressionPropertyInterface(v.rd)
                        },
                        _name: {
                            value: C.nm
                        }
                    }), y.mn = C.mn, y
                }

                function k(C, b, G) {
                    function y(_) {
                        return C.c.ix === _ || _ === "Copies" ? y.copies : C.o.ix === _ || _ === "Offset" ? y.offset : null
                    }
                    var P = propertyGroupFactory(y, G),
                        v = b;
                    return y.propertyIndex = C.ix, v.c.setGroupProperty(PropertyInterface("Copies", P)), v.o.setGroupProperty(PropertyInterface("Offset", P)), Object.defineProperties(y, {
                        copies: {
                            get: ExpressionPropertyInterface(v.c)
                        },
                        offset: {
                            get: ExpressionPropertyInterface(v.o)
                        },
                        _name: {
                            value: C.nm
                        }
                    }), y.mn = C.mn, y
                }
                return function(C, b, G) {
                    var y;

                    function P(_) {
                        if (typeof _ == "number") return _ = _ === void 0 ? 1 : _, _ === 0 ? G : y[_ - 1];
                        for (var V = 0, N = y.length; V < N;) {
                            if (y[V]._name === _) return y[V];
                            V += 1
                        }
                        return null
                    }

                    function v() {
                        return G
                    }
                    return P.propertyGroup = propertyGroupFactory(P, v), y = t(C, b, P.propertyGroup), P.numProperties = y.length, P._name = "Contents", P
                }
            }(),
            TextExpressionInterface = function() {
                return function(t) {
                    var e;

                    function r(s) {
                        switch (s) {
                            case "ADBE Text Document":
                                return r.sourceText;
                            default:
                                return null
                        }
                    }
                    return Object.defineProperty(r, "sourceText", {
                        get: function() {
                            t.textProperty.getValue();
                            var a = t.textProperty.currentData.t;
                            return (!e || a !== e.value) && (e = new String(a), e.value = a || new String(a), Object.defineProperty(e, "style", {
                                get: function() {
                                    return {
                                        fillColor: t.textProperty.currentData.fc
                                    }
                                }
                            })), e
                        }
                    }), r
                }
            }();

        function _typeof(t) {
            "@babel/helpers - typeof";
            return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? _typeof = function(r) {
                return typeof r
            } : _typeof = function(r) {
                return r && typeof Symbol == "function" && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r
            }, _typeof(t)
        }
        var FootageInterface = function() {
                var t = function(s) {
                        var a = "",
                            o = s.getFootageData();

                        function f() {
                            return a = "", o = s.getFootageData(), d
                        }

                        function d(c) {
                            if (o[c]) return a = c, o = o[c], _typeof(o) === "object" ? d : o;
                            var m = c.indexOf(a);
                            if (m !== -1) {
                                var S = parseInt(c.substr(m + a.length), 10);
                                return o = o[S], _typeof(o) === "object" ? d : o
                            }
                            return ""
                        }
                        return f
                    },
                    e = function(s) {
                        function a(o) {
                            return o === "Outline" ? a.outlineInterface() : null
                        }
                        return a._name = "Outline", a.outlineInterface = t(s), a
                    };
                return function(r) {
                    function s(a) {
                        return a === "Data" ? s.dataInterface : null
                    }
                    return s._name = "Data", s.dataInterface = e(r), s
                }
            }(),
            interfaces = {
                layer: LayerExpressionInterface,
                effects: EffectsExpressionInterface,
                comp: CompExpressionInterface,
                shape: ShapeExpressionInterface,
                text: TextExpressionInterface,
                footage: FootageInterface
            };

        function getInterface(t) {
            return interfaces[t] || null
        }
        var expressionHelpers = function() {
            function t(f, d, c) {
                d.x && (c.k = !0, c.x = !0, c.initiateExpression = ExpressionManager.initiateExpression, c.effectsSequence.push(c.initiateExpression(f, d, c).bind(c)))
            }

            function e(f) {
                return f *= this.elem.globalData.frameRate, f -= this.offsetTime, f !== this._cachingAtTime.lastFrame && (this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < f ? this._cachingAtTime.lastIndex : 0, this._cachingAtTime.value = this.interpolateValue(f, this._cachingAtTime), this._cachingAtTime.lastFrame = f), this._cachingAtTime.value
            }

            function r(f) {
                var d = -.01,
                    c = this.getValueAtTime(f),
                    m = this.getValueAtTime(f + d),
                    S = 0;
                if (c.length) {
                    var M;
                    for (M = 0; M < c.length; M += 1) S += Math.pow(m[M] - c[M], 2);
                    S = Math.sqrt(S) * 100
                } else S = 0;
                return S
            }

            function s(f) {
                if (this.vel !== void 0) return this.vel;
                var d = -.001,
                    c = this.getValueAtTime(f),
                    m = this.getValueAtTime(f + d),
                    S;
                if (c.length) {
                    S = createTypedArray("float32", c.length);
                    var M;
                    for (M = 0; M < c.length; M += 1) S[M] = (m[M] - c[M]) / d
                } else S = (m - c) / d;
                return S
            }

            function a() {
                return this.pv
            }

            function o(f) {
                this.propertyGroup = f
            }
            return {
                searchExpressions: t,
                getSpeedAtTime: r,
                getVelocityAtTime: s,
                getValueAtTime: e,
                getStaticValueAtTime: a,
                setGroupProperty: o
            }
        }();

        function addPropertyDecorator() {
            function t(g, k, C) {
                if (!this.k || !this.keyframes) return this.pv;
                g = g ? g.toLowerCase() : "";
                var b = this.comp.renderedFrame,
                    G = this.keyframes,
                    y = G[G.length - 1].t;
                if (b <= y) return this.pv;
                var P, v;
                C ? (k ? P = Math.abs(y - this.elem.comp.globalData.frameRate * k) : P = Math.max(0, y - this.elem.data.ip), v = y - P) : ((!k || k > G.length - 1) && (k = G.length - 1), v = G[G.length - 1 - k].t, P = y - v);
                var _, V, N;
                if (g === "pingpong") {
                    var Z = Math.floor((b - v) / P);
                    if (Z % 2 !== 0) return this.getValueAtTime((P - (b - v) % P + v) / this.comp.globalData.frameRate, 0)
                } else if (g === "offset") {
                    var J = this.getValueAtTime(v / this.comp.globalData.frameRate, 0),
                        ht = this.getValueAtTime(y / this.comp.globalData.frameRate, 0),
                        vt = this.getValueAtTime(((b - v) % P + v) / this.comp.globalData.frameRate, 0),
                        ct = Math.floor((b - v) / P);
                    if (this.pv.length) {
                        for (N = new Array(J.length), V = N.length, _ = 0; _ < V; _ += 1) N[_] = (ht[_] - J[_]) * ct + vt[_];
                        return N
                    }
                    return (ht - J) * ct + vt
                } else if (g === "continue") {
                    var ft = this.getValueAtTime(y / this.comp.globalData.frameRate, 0),
                        yt = this.getValueAtTime((y - .001) / this.comp.globalData.frameRate, 0);
                    if (this.pv.length) {
                        for (N = new Array(ft.length), V = N.length, _ = 0; _ < V; _ += 1) N[_] = ft[_] + (ft[_] - yt[_]) * ((b - y) / this.comp.globalData.frameRate) / 5e-4;
                        return N
                    }
                    return ft + (ft - yt) * ((b - y) / .001)
                }
                return this.getValueAtTime(((b - v) % P + v) / this.comp.globalData.frameRate, 0)
            }

            function e(g, k, C) {
                if (!this.k) return this.pv;
                g = g ? g.toLowerCase() : "";
                var b = this.comp.renderedFrame,
                    G = this.keyframes,
                    y = G[0].t;
                if (b >= y) return this.pv;
                var P, v;
                C ? (k ? P = Math.abs(this.elem.comp.globalData.frameRate * k) : P = Math.max(0, this.elem.data.op - y), v = y + P) : ((!k || k > G.length - 1) && (k = G.length - 1), v = G[k].t, P = v - y);
                var _, V, N;
                if (g === "pingpong") {
                    var Z = Math.floor((y - b) / P);
                    if (Z % 2 === 0) return this.getValueAtTime(((y - b) % P + y) / this.comp.globalData.frameRate, 0)
                } else if (g === "offset") {
                    var J = this.getValueAtTime(y / this.comp.globalData.frameRate, 0),
                        ht = this.getValueAtTime(v / this.comp.globalData.frameRate, 0),
                        vt = this.getValueAtTime((P - (y - b) % P + y) / this.comp.globalData.frameRate, 0),
                        ct = Math.floor((y - b) / P) + 1;
                    if (this.pv.length) {
                        for (N = new Array(J.length), V = N.length, _ = 0; _ < V; _ += 1) N[_] = vt[_] - (ht[_] - J[_]) * ct;
                        return N
                    }
                    return vt - (ht - J) * ct
                } else if (g === "continue") {
                    var ft = this.getValueAtTime(y / this.comp.globalData.frameRate, 0),
                        yt = this.getValueAtTime((y + .001) / this.comp.globalData.frameRate, 0);
                    if (this.pv.length) {
                        for (N = new Array(ft.length), V = N.length, _ = 0; _ < V; _ += 1) N[_] = ft[_] + (ft[_] - yt[_]) * (y - b) / .001;
                        return N
                    }
                    return ft + (ft - yt) * (y - b) / .001
                }
                return this.getValueAtTime((P - ((y - b) % P + y)) / this.comp.globalData.frameRate, 0)
            }

            function r(g, k) {
                if (!this.k) return this.pv;
                if (g = (g || .4) * .5, k = Math.floor(k || 5), k <= 1) return this.pv;
                var C = this.comp.renderedFrame / this.comp.globalData.frameRate,
                    b = C - g,
                    G = C + g,
                    y = k > 1 ? (G - b) / (k - 1) : 1,
                    P = 0,
                    v = 0,
                    _;
                this.pv.length ? _ = createTypedArray("float32", this.pv.length) : _ = 0;
                for (var V; P < k;) {
                    if (V = this.getValueAtTime(b + P * y), this.pv.length)
                        for (v = 0; v < this.pv.length; v += 1) _[v] += V[v];
                    else _ += V;
                    P += 1
                }
                if (this.pv.length)
                    for (v = 0; v < this.pv.length; v += 1) _[v] /= k;
                else _ /= k;
                return _
            }

            function s(g) {
                this._transformCachingAtTime || (this._transformCachingAtTime = {
                    v: new Matrix
                });
                var k = this._transformCachingAtTime.v;
                if (k.cloneFromProps(this.pre.props), this.appliedTransformations < 1) {
                    var C = this.a.getValueAtTime(g);
                    k.translate(-C[0] * this.a.mult, -C[1] * this.a.mult, C[2] * this.a.mult)
                }
                if (this.appliedTransformations < 2) {
                    var b = this.s.getValueAtTime(g);
                    k.scale(b[0] * this.s.mult, b[1] * this.s.mult, b[2] * this.s.mult)
                }
                if (this.sk && this.appliedTransformations < 3) {
                    var G = this.sk.getValueAtTime(g),
                        y = this.sa.getValueAtTime(g);
                    k.skewFromAxis(-G * this.sk.mult, y * this.sa.mult)
                }
                if (this.r && this.appliedTransformations < 4) {
                    var P = this.r.getValueAtTime(g);
                    k.rotate(-P * this.r.mult)
                } else if (!this.r && this.appliedTransformations < 4) {
                    var v = this.rz.getValueAtTime(g),
                        _ = this.ry.getValueAtTime(g),
                        V = this.rx.getValueAtTime(g),
                        N = this.or.getValueAtTime(g);
                    k.rotateZ(-v * this.rz.mult).rotateY(_ * this.ry.mult).rotateX(V * this.rx.mult).rotateZ(-N[2] * this.or.mult).rotateY(N[1] * this.or.mult).rotateX(N[0] * this.or.mult)
                }
                if (this.data.p && this.data.p.s) {
                    var Z = this.px.getValueAtTime(g),
                        J = this.py.getValueAtTime(g);
                    if (this.data.p.z) {
                        var ht = this.pz.getValueAtTime(g);
                        k.translate(Z * this.px.mult, J * this.py.mult, -ht * this.pz.mult)
                    } else k.translate(Z * this.px.mult, J * this.py.mult, 0)
                } else {
                    var vt = this.p.getValueAtTime(g);
                    k.translate(vt[0] * this.p.mult, vt[1] * this.p.mult, -vt[2] * this.p.mult)
                }
                return k
            }

            function a() {
                return this.v.clone(new Matrix)
            }
            var o = TransformPropertyFactory.getTransformProperty;
            TransformPropertyFactory.getTransformProperty = function(g, k, C) {
                var b = o(g, k, C);
                return b.dynamicProperties.length ? b.getValueAtTime = s.bind(b) : b.getValueAtTime = a.bind(b), b.setGroupProperty = expressionHelpers.setGroupProperty, b
            };
            var f = PropertyFactory.getProp;
            PropertyFactory.getProp = function(g, k, C, b, G) {
                var y = f(g, k, C, b, G);
                y.kf ? y.getValueAtTime = expressionHelpers.getValueAtTime.bind(y) : y.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(y), y.setGroupProperty = expressionHelpers.setGroupProperty, y.loopOut = t, y.loopIn = e, y.smooth = r, y.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(y), y.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(y), y.numKeys = k.a === 1 ? k.k.length : 0, y.propertyIndex = k.ix;
                var P = 0;
                return C !== 0 && (P = createTypedArray("float32", k.a === 1 ? k.k[0].s.length : k.k.length)), y._cachingAtTime = {
                    lastFrame: initialDefaultFrame,
                    lastIndex: 0,
                    value: P
                }, expressionHelpers.searchExpressions(g, k, y), y.k && G.addDynamicProperty(y), y
            };

            function d(g) {
                return this._cachingAtTime || (this._cachingAtTime = {
                    shapeValue: shapePool.clone(this.pv),
                    lastIndex: 0,
                    lastTime: initialDefaultFrame
                }), g *= this.elem.globalData.frameRate, g -= this.offsetTime, g !== this._cachingAtTime.lastTime && (this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < g ? this._caching.lastIndex : 0, this._cachingAtTime.lastTime = g, this.interpolateShape(g, this._cachingAtTime.shapeValue, this._cachingAtTime)), this._cachingAtTime.shapeValue
            }
            var c = ShapePropertyFactory.getConstructorFunction(),
                m = ShapePropertyFactory.getKeyframedConstructorFunction();

            function S() {}
            S.prototype = {
                vertices: function(k, C) {
                    this.k && this.getValue();
                    var b = this.v;
                    C !== void 0 && (b = this.getValueAtTime(C, 0));
                    var G, y = b._length,
                        P = b[k],
                        v = b.v,
                        _ = createSizedArray(y);
                    for (G = 0; G < y; G += 1) k === "i" || k === "o" ? _[G] = [P[G][0] - v[G][0], P[G][1] - v[G][1]] : _[G] = [P[G][0], P[G][1]];
                    return _
                },
                points: function(k) {
                    return this.vertices("v", k)
                },
                inTangents: function(k) {
                    return this.vertices("i", k)
                },
                outTangents: function(k) {
                    return this.vertices("o", k)
                },
                isClosed: function() {
                    return this.v.c
                },
                pointOnPath: function(k, C) {
                    var b = this.v;
                    C !== void 0 && (b = this.getValueAtTime(C, 0)), this._segmentsLength || (this._segmentsLength = bez.getSegmentsLength(b));
                    for (var G = this._segmentsLength, y = G.lengths, P = G.totalLength * k, v = 0, _ = y.length, V = 0, N; v < _;) {
                        if (V + y[v].addedLength > P) {
                            var Z = v,
                                J = b.c && v === _ - 1 ? 0 : v + 1,
                                ht = (P - V) / y[v].addedLength;
                            N = bez.getPointInSegment(b.v[Z], b.v[J], b.o[Z], b.i[J], ht, y[v]);
                            break
                        } else V += y[v].addedLength;
                        v += 1
                    }
                    return N || (N = b.c ? [b.v[0][0], b.v[0][1]] : [b.v[b._length - 1][0], b.v[b._length - 1][1]]), N
                },
                vectorOnPath: function(k, C, b) {
                    k == 1 ? k = this.v.c : k == 0 && (k = .999);
                    var G = this.pointOnPath(k, C),
                        y = this.pointOnPath(k + .001, C),
                        P = y[0] - G[0],
                        v = y[1] - G[1],
                        _ = Math.sqrt(Math.pow(P, 2) + Math.pow(v, 2));
                    if (_ === 0) return [0, 0];
                    var V = b === "tangent" ? [P / _, v / _] : [-v / _, P / _];
                    return V
                },
                tangentOnPath: function(k, C) {
                    return this.vectorOnPath(k, C, "tangent")
                },
                normalOnPath: function(k, C) {
                    return this.vectorOnPath(k, C, "normal")
                },
                setGroupProperty: expressionHelpers.setGroupProperty,
                getValueAtTime: expressionHelpers.getStaticValueAtTime
            }, extendPrototype([S], c), extendPrototype([S], m), m.prototype.getValueAtTime = d, m.prototype.initiateExpression = ExpressionManager.initiateExpression;
            var M = ShapePropertyFactory.getShapeProp;
            ShapePropertyFactory.getShapeProp = function(g, k, C, b, G) {
                var y = M(g, k, C, b, G);
                return y.propertyIndex = k.ix, y.lock = !1, C === 3 ? expressionHelpers.searchExpressions(g, k.pt, y) : C === 4 && expressionHelpers.searchExpressions(g, k.ks, y), y.k && g.addDynamicProperty(y), y
            }
        }

        function initialize$1() {
            addPropertyDecorator()
        }

        function addDecorator() {
            function t() {
                return this.data.d.x ? (this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this), this.addEffect(this.getExpressionValue.bind(this)), !0) : null
            }
            TextProperty.prototype.getExpressionValue = function(e, r) {
                var s = this.calculateExpression(r);
                if (e.t !== s) {
                    var a = {};
                    return this.copyData(a, e), a.t = s.toString(), a.__complete = !1, a
                }
                return e
            }, TextProperty.prototype.searchProperty = function() {
                var e = this.searchKeyframes(),
                    r = this.searchExpressions();
                return this.kf = e || r, this.kf
            }, TextProperty.prototype.searchExpressions = t
        }

        function initialize() {
            addDecorator()
        }

        function SVGComposableEffect() {}
        SVGComposableEffect.prototype = {
            createMergeNode: function t(e, r) {
                var s = createNS("feMerge");
                s.setAttribute("result", e);
                var a, o;
                for (o = 0; o < r.length; o += 1) a = createNS("feMergeNode"), a.setAttribute("in", r[o]), s.appendChild(a), s.appendChild(a);
                return s
            }
        };
        var linearFilterValue = "0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0";

        function SVGTintFilter(t, e, r, s, a) {
            this.filterManager = e;
            var o = createNS("feColorMatrix");
            o.setAttribute("type", "matrix"), o.setAttribute("color-interpolation-filters", "linearRGB"), o.setAttribute("values", linearFilterValue + " 1 0"), this.linearFilter = o, o.setAttribute("result", s + "_tint_1"), t.appendChild(o), o = createNS("feColorMatrix"), o.setAttribute("type", "matrix"), o.setAttribute("color-interpolation-filters", "sRGB"), o.setAttribute("values", "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"), o.setAttribute("result", s + "_tint_2"), t.appendChild(o), this.matrixFilter = o;
            var f = this.createMergeNode(s, [a, s + "_tint_1", s + "_tint_2"]);
            t.appendChild(f)
        }
        extendPrototype([SVGComposableEffect], SVGTintFilter), SVGTintFilter.prototype.renderFrame = function(t) {
            if (t || this.filterManager._mdf) {
                var e = this.filterManager.effectElements[0].p.v,
                    r = this.filterManager.effectElements[1].p.v,
                    s = this.filterManager.effectElements[2].p.v / 100;
                this.linearFilter.setAttribute("values", linearFilterValue + " " + s + " 0"), this.matrixFilter.setAttribute("values", r[0] - e[0] + " 0 0 0 " + e[0] + " " + (r[1] - e[1]) + " 0 0 0 " + e[1] + " " + (r[2] - e[2]) + " 0 0 0 " + e[2] + " 0 0 0 1 0")
            }
        };

        function SVGFillFilter(t, e, r, s) {
            this.filterManager = e;
            var a = createNS("feColorMatrix");
            a.setAttribute("type", "matrix"), a.setAttribute("color-interpolation-filters", "sRGB"), a.setAttribute("values", "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"), a.setAttribute("result", s), t.appendChild(a), this.matrixFilter = a
        }
        SVGFillFilter.prototype.renderFrame = function(t) {
            if (t || this.filterManager._mdf) {
                var e = this.filterManager.effectElements[2].p.v,
                    r = this.filterManager.effectElements[6].p.v;
                this.matrixFilter.setAttribute("values", "0 0 0 0 " + e[0] + " 0 0 0 0 " + e[1] + " 0 0 0 0 " + e[2] + " 0 0 0 " + r + " 0")
            }
        };

        function SVGStrokeEffect(t, e, r) {
            this.initialized = !1, this.filterManager = e, this.elem = r, this.paths = []
        }
        SVGStrokeEffect.prototype.initialize = function() {
            var t = this.elem.layerElement.children || this.elem.layerElement.childNodes,
                e, r, s, a;
            for (this.filterManager.effectElements[1].p.v === 1 ? (a = this.elem.maskManager.masksProperties.length, s = 0) : (s = this.filterManager.effectElements[0].p.v - 1, a = s + 1), r = createNS("g"), r.setAttribute("fill", "none"), r.setAttribute("stroke-linecap", "round"), r.setAttribute("stroke-dashoffset", 1), s; s < a; s += 1) e = createNS("path"), r.appendChild(e), this.paths.push({
                p: e,
                m: s
            });
            if (this.filterManager.effectElements[10].p.v === 3) {
                var o = createNS("mask"),
                    f = createElementID();
                o.setAttribute("id", f), o.setAttribute("mask-type", "alpha"), o.appendChild(r), this.elem.globalData.defs.appendChild(o);
                var d = createNS("g");
                for (d.setAttribute("mask", "url(" + getLocationHref() + "#" + f + ")"); t[0];) d.appendChild(t[0]);
                this.elem.layerElement.appendChild(d), this.masker = o, r.setAttribute("stroke", "#fff")
            } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {
                if (this.filterManager.effectElements[10].p.v === 2)
                    for (t = this.elem.layerElement.children || this.elem.layerElement.childNodes; t.length;) this.elem.layerElement.removeChild(t[0]);
                this.elem.layerElement.appendChild(r), this.elem.layerElement.removeAttribute("mask"), r.setAttribute("stroke", "#fff")
            }
            this.initialized = !0, this.pathMasker = r
        }, SVGStrokeEffect.prototype.renderFrame = function(t) {
            this.initialized || this.initialize();
            var e, r = this.paths.length,
                s, a;
            for (e = 0; e < r; e += 1)
                if (this.paths[e].m !== -1 && (s = this.elem.maskManager.viewData[this.paths[e].m], a = this.paths[e].p, (t || this.filterManager._mdf || s.prop._mdf) && a.setAttribute("d", s.lastPath), t || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || s.prop._mdf)) {
                    var o;
                    if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {
                        var f = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * .01,
                            d = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * .01,
                            c = a.getTotalLength();
                        o = "0 0 0 " + c * f + " ";
                        var m = c * (d - f),
                            S = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * .01,
                            M = Math.floor(m / S),
                            g;
                        for (g = 0; g < M; g += 1) o += "1 " + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * .01 + " ";
                        o += "0 " + c * 10 + " 0 0"
                    } else o = "1 " + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * .01;
                    a.setAttribute("stroke-dasharray", o)
                }
            if ((t || this.filterManager.effectElements[4].p._mdf) && this.pathMasker.setAttribute("stroke-width", this.filterManager.effectElements[4].p.v * 2), (t || this.filterManager.effectElements[6].p._mdf) && this.pathMasker.setAttribute("opacity", this.filterManager.effectElements[6].p.v), (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) && (t || this.filterManager.effectElements[3].p._mdf)) {
                var k = this.filterManager.effectElements[3].p.v;
                this.pathMasker.setAttribute("stroke", "rgb(" + bmFloor(k[0] * 255) + "," + bmFloor(k[1] * 255) + "," + bmFloor(k[2] * 255) + ")")
            }
        };

        function SVGTritoneFilter(t, e, r, s) {
            this.filterManager = e;
            var a = createNS("feColorMatrix");
            a.setAttribute("type", "matrix"), a.setAttribute("color-interpolation-filters", "linearRGB"), a.setAttribute("values", "0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"), t.appendChild(a);
            var o = createNS("feComponentTransfer");
            o.setAttribute("color-interpolation-filters", "sRGB"), o.setAttribute("result", s), this.matrixFilter = o;
            var f = createNS("feFuncR");
            f.setAttribute("type", "table"), o.appendChild(f), this.feFuncR = f;
            var d = createNS("feFuncG");
            d.setAttribute("type", "table"), o.appendChild(d), this.feFuncG = d;
            var c = createNS("feFuncB");
            c.setAttribute("type", "table"), o.appendChild(c), this.feFuncB = c, t.appendChild(o)
        }
        SVGTritoneFilter.prototype.renderFrame = function(t) {
            if (t || this.filterManager._mdf) {
                var e = this.filterManager.effectElements[0].p.v,
                    r = this.filterManager.effectElements[1].p.v,
                    s = this.filterManager.effectElements[2].p.v,
                    a = s[0] + " " + r[0] + " " + e[0],
                    o = s[1] + " " + r[1] + " " + e[1],
                    f = s[2] + " " + r[2] + " " + e[2];
                this.feFuncR.setAttribute("tableValues", a), this.feFuncG.setAttribute("tableValues", o), this.feFuncB.setAttribute("tableValues", f)
            }
        };

        function SVGProLevelsFilter(t, e, r, s) {
            this.filterManager = e;
            var a = this.filterManager.effectElements,
                o = createNS("feComponentTransfer");
            (a[10].p.k || a[10].p.v !== 0 || a[11].p.k || a[11].p.v !== 1 || a[12].p.k || a[12].p.v !== 1 || a[13].p.k || a[13].p.v !== 0 || a[14].p.k || a[14].p.v !== 1) && (this.feFuncR = this.createFeFunc("feFuncR", o)), (a[17].p.k || a[17].p.v !== 0 || a[18].p.k || a[18].p.v !== 1 || a[19].p.k || a[19].p.v !== 1 || a[20].p.k || a[20].p.v !== 0 || a[21].p.k || a[21].p.v !== 1) && (this.feFuncG = this.createFeFunc("feFuncG", o)), (a[24].p.k || a[24].p.v !== 0 || a[25].p.k || a[25].p.v !== 1 || a[26].p.k || a[26].p.v !== 1 || a[27].p.k || a[27].p.v !== 0 || a[28].p.k || a[28].p.v !== 1) && (this.feFuncB = this.createFeFunc("feFuncB", o)), (a[31].p.k || a[31].p.v !== 0 || a[32].p.k || a[32].p.v !== 1 || a[33].p.k || a[33].p.v !== 1 || a[34].p.k || a[34].p.v !== 0 || a[35].p.k || a[35].p.v !== 1) && (this.feFuncA = this.createFeFunc("feFuncA", o)), (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) && (o.setAttribute("color-interpolation-filters", "sRGB"), t.appendChild(o)), (a[3].p.k || a[3].p.v !== 0 || a[4].p.k || a[4].p.v !== 1 || a[5].p.k || a[5].p.v !== 1 || a[6].p.k || a[6].p.v !== 0 || a[7].p.k || a[7].p.v !== 1) && (o = createNS("feComponentTransfer"), o.setAttribute("color-interpolation-filters", "sRGB"), o.setAttribute("result", s), t.appendChild(o), this.feFuncRComposed = this.createFeFunc("feFuncR", o), this.feFuncGComposed = this.createFeFunc("feFuncG", o), this.feFuncBComposed = this.createFeFunc("feFuncB", o))
        }
        SVGProLevelsFilter.prototype.createFeFunc = function(t, e) {
            var r = createNS(t);
            return r.setAttribute("type", "table"), e.appendChild(r), r
        }, SVGProLevelsFilter.prototype.getTableValue = function(t, e, r, s, a) {
            for (var o = 0, f = 256, d, c = Math.min(t, e), m = Math.max(t, e), S = Array.call(null, {
                    length: f
                }), M, g = 0, k = a - s, C = e - t; o <= 256;) d = o / 256, d <= c ? M = C < 0 ? a : s : d >= m ? M = C < 0 ? s : a : M = s + k * Math.pow((d - t) / C, 1 / r), S[g] = M, g += 1, o += 256 / (f - 1);
            return S.join(" ")
        }, SVGProLevelsFilter.prototype.renderFrame = function(t) {
            if (t || this.filterManager._mdf) {
                var e, r = this.filterManager.effectElements;
                this.feFuncRComposed && (t || r[3].p._mdf || r[4].p._mdf || r[5].p._mdf || r[6].p._mdf || r[7].p._mdf) && (e = this.getTableValue(r[3].p.v, r[4].p.v, r[5].p.v, r[6].p.v, r[7].p.v), this.feFuncRComposed.setAttribute("tableValues", e), this.feFuncGComposed.setAttribute("tableValues", e), this.feFuncBComposed.setAttribute("tableValues", e)), this.feFuncR && (t || r[10].p._mdf || r[11].p._mdf || r[12].p._mdf || r[13].p._mdf || r[14].p._mdf) && (e = this.getTableValue(r[10].p.v, r[11].p.v, r[12].p.v, r[13].p.v, r[14].p.v), this.feFuncR.setAttribute("tableValues", e)), this.feFuncG && (t || r[17].p._mdf || r[18].p._mdf || r[19].p._mdf || r[20].p._mdf || r[21].p._mdf) && (e = this.getTableValue(r[17].p.v, r[18].p.v, r[19].p.v, r[20].p.v, r[21].p.v), this.feFuncG.setAttribute("tableValues", e)), this.feFuncB && (t || r[24].p._mdf || r[25].p._mdf || r[26].p._mdf || r[27].p._mdf || r[28].p._mdf) && (e = this.getTableValue(r[24].p.v, r[25].p.v, r[26].p.v, r[27].p.v, r[28].p.v), this.feFuncB.setAttribute("tableValues", e)), this.feFuncA && (t || r[31].p._mdf || r[32].p._mdf || r[33].p._mdf || r[34].p._mdf || r[35].p._mdf) && (e = this.getTableValue(r[31].p.v, r[32].p.v, r[33].p.v, r[34].p.v, r[35].p.v), this.feFuncA.setAttribute("tableValues", e))
            }
        };

        function SVGDropShadowEffect(t, e, r, s, a) {
            var o = e.container.globalData.renderConfig.filterSize,
                f = e.data.fs || o;
            t.setAttribute("x", f.x || o.x), t.setAttribute("y", f.y || o.y), t.setAttribute("width", f.width || o.width), t.setAttribute("height", f.height || o.height), this.filterManager = e;
            var d = createNS("feGaussianBlur");
            d.setAttribute("in", "SourceAlpha"), d.setAttribute("result", s + "_drop_shadow_1"), d.setAttribute("stdDeviation", "0"), this.feGaussianBlur = d, t.appendChild(d);
            var c = createNS("feOffset");
            c.setAttribute("dx", "25"), c.setAttribute("dy", "0"), c.setAttribute("in", s + "_drop_shadow_1"), c.setAttribute("result", s + "_drop_shadow_2"), this.feOffset = c, t.appendChild(c);
            var m = createNS("feFlood");
            m.setAttribute("flood-color", "#00ff00"), m.setAttribute("flood-opacity", "1"), m.setAttribute("result", s + "_drop_shadow_3"), this.feFlood = m, t.appendChild(m);
            var S = createNS("feComposite");
            S.setAttribute("in", s + "_drop_shadow_3"), S.setAttribute("in2", s + "_drop_shadow_2"), S.setAttribute("operator", "in"), S.setAttribute("result", s + "_drop_shadow_4"), t.appendChild(S);
            var M = this.createMergeNode(s, [s + "_drop_shadow_4", a]);
            t.appendChild(M)
        }
        extendPrototype([SVGComposableEffect], SVGDropShadowEffect), SVGDropShadowEffect.prototype.renderFrame = function(t) {
            if (t || this.filterManager._mdf) {
                if ((t || this.filterManager.effectElements[4].p._mdf) && this.feGaussianBlur.setAttribute("stdDeviation", this.filterManager.effectElements[4].p.v / 4), t || this.filterManager.effectElements[0].p._mdf) {
                    var e = this.filterManager.effectElements[0].p.v;
                    this.feFlood.setAttribute("flood-color", rgbToHex(Math.round(e[0] * 255), Math.round(e[1] * 255), Math.round(e[2] * 255)))
                }
                if ((t || this.filterManager.effectElements[1].p._mdf) && this.feFlood.setAttribute("flood-opacity", this.filterManager.effectElements[1].p.v / 255), t || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {
                    var r = this.filterManager.effectElements[3].p.v,
                        s = (this.filterManager.effectElements[2].p.v - 90) * degToRads,
                        a = r * Math.cos(s),
                        o = r * Math.sin(s);
                    this.feOffset.setAttribute("dx", a), this.feOffset.setAttribute("dy", o)
                }
            }
        };
        var _svgMatteSymbols = [];

        function SVGMatte3Effect(t, e, r) {
            this.initialized = !1, this.filterManager = e, this.filterElem = t, this.elem = r, r.matteElement = createNS("g"), r.matteElement.appendChild(r.layerElement), r.matteElement.appendChild(r.transformedElement), r.baseElement = r.matteElement
        }
        SVGMatte3Effect.prototype.findSymbol = function(t) {
            for (var e = 0, r = _svgMatteSymbols.length; e < r;) {
                if (_svgMatteSymbols[e] === t) return _svgMatteSymbols[e];
                e += 1
            }
            return null
        }, SVGMatte3Effect.prototype.replaceInParent = function(t, e) {
            var r = t.layerElement.parentNode;
            if (r) {
                for (var s = r.children, a = 0, o = s.length; a < o && s[a] !== t.layerElement;) a += 1;
                var f;
                a <= o - 2 && (f = s[a + 1]);
                var d = createNS("use");
                d.setAttribute("href", "#" + e), f ? r.insertBefore(d, f) : r.appendChild(d)
            }
        }, SVGMatte3Effect.prototype.setElementAsMask = function(t, e) {
            if (!this.findSymbol(e)) {
                var r = createElementID(),
                    s = createNS("mask");
                s.setAttribute("id", e.layerId), s.setAttribute("mask-type", "alpha"), _svgMatteSymbols.push(e);
                var a = t.globalData.defs;
                a.appendChild(s);
                var o = createNS("symbol");
                o.setAttribute("id", r), this.replaceInParent(e, r), o.appendChild(e.layerElement), a.appendChild(o);
                var f = createNS("use");
                f.setAttribute("href", "#" + r), s.appendChild(f), e.data.hd = !1, e.show()
            }
            t.setMatte(e.layerId)
        }, SVGMatte3Effect.prototype.initialize = function() {
            for (var t = this.filterManager.effectElements[0].p.v, e = this.elem.comp.elements, r = 0, s = e.length; r < s;) e[r] && e[r].data.ind === t && this.setElementAsMask(this.elem, e[r]), r += 1;
            this.initialized = !0
        }, SVGMatte3Effect.prototype.renderFrame = function() {
            this.initialized || this.initialize()
        };

        function SVGGaussianBlurEffect(t, e, r, s) {
            t.setAttribute("x", "-100%"), t.setAttribute("y", "-100%"), t.setAttribute("width", "300%"), t.setAttribute("height", "300%"), this.filterManager = e;
            var a = createNS("feGaussianBlur");
            a.setAttribute("result", s), t.appendChild(a), this.feGaussianBlur = a
        }
        SVGGaussianBlurEffect.prototype.renderFrame = function(t) {
            if (t || this.filterManager._mdf) {
                var e = .3,
                    r = this.filterManager.effectElements[0].p.v * e,
                    s = this.filterManager.effectElements[1].p.v,
                    a = s == 3 ? 0 : r,
                    o = s == 2 ? 0 : r;
                this.feGaussianBlur.setAttribute("stdDeviation", a + " " + o);
                var f = this.filterManager.effectElements[2].p.v == 1 ? "wrap" : "duplicate";
                this.feGaussianBlur.setAttribute("edgeMode", f)
            }
        };

        function TransformEffect() {}
        TransformEffect.prototype.init = function(t) {
            this.effectsManager = t, this.type = effectTypes.TRANSFORM_EFFECT, this.matrix = new Matrix, this.opacity = -1, this._mdf = !1, this._opMdf = !1
        }, TransformEffect.prototype.renderFrame = function(t) {
            if (this._opMdf = !1, this._mdf = !1, t || this.effectsManager._mdf) {
                var e = this.effectsManager.effectElements,
                    r = e[0].p.v,
                    s = e[1].p.v,
                    a = e[2].p.v === 1,
                    o = e[3].p.v,
                    f = a ? o : e[4].p.v,
                    d = e[5].p.v,
                    c = e[6].p.v,
                    m = e[7].p.v;
                this.matrix.reset(), this.matrix.translate(-r[0], -r[1], r[2]), this.matrix.scale(f * .01, o * .01, 1), this.matrix.rotate(-m * degToRads), this.matrix.skewFromAxis(-d * degToRads, (c + 90) * degToRads), this.matrix.translate(s[0], s[1], 0), this._mdf = !0, this.opacity !== e[8].p.v && (this.opacity = e[8].p.v, this._opMdf = !0)
            }
        };

        function SVGTransformEffect(t, e) {
            this.init(e)
        }
        extendPrototype([TransformEffect], SVGTransformEffect);

        function CVTransformEffect(t) {
            this.init(t)
        }
        return extendPrototype([TransformEffect], CVTransformEffect), registerRenderer("canvas", CanvasRenderer), registerRenderer("html", HybridRenderer), registerRenderer("svg", SVGRenderer), ShapeModifiers.registerModifier("tm", TrimModifier), ShapeModifiers.registerModifier("pb", PuckerAndBloatModifier), ShapeModifiers.registerModifier("rp", RepeaterModifier), ShapeModifiers.registerModifier("rd", RoundCornersModifier), ShapeModifiers.registerModifier("zz", ZigZagModifier), ShapeModifiers.registerModifier("op", OffsetPathModifier), setExpressionsPlugin(Expressions), setExpressionInterfaces(getInterface), initialize$1(), initialize(), registerEffect$1(20, SVGTintFilter, !0), registerEffect$1(21, SVGFillFilter, !0), registerEffect$1(22, SVGStrokeEffect, !1), registerEffect$1(23, SVGTritoneFilter, !0), registerEffect$1(24, SVGProLevelsFilter, !0), registerEffect$1(25, SVGDropShadowEffect, !0), registerEffect$1(28, SVGMatte3Effect, !1), registerEffect$1(29, SVGGaussianBlurEffect, !0), registerEffect$1(35, SVGTransformEffect, !1), registerEffect(35, CVTransformEffect), lottie
    })
})(lottie$2, lottie$2.exports);
var lottieExports = lottie$2.exports;
const lottie = getDefaultExportFromCjs(lottieExports),
    lottie$1 = _mergeNamespaces({
        __proto__: null,
        default: lottie
    }, [lottieExports]);
export {
    lottie$1 as a, getDefaultExportFromCjs as b, commonjsGlobal as c, getAugmentedNamespace as g, lottie_light$1 as l
};
//# sourceMappingURL=chunk.lottie-da9386a5.js.map