t = 0, function() {
           return '__lottie_element_' + (t += 1)
         });
  function y(t, e, s) {
    var i, a, r, n, h, o, l, p;
    switch (o = s * (1 - e),
            l = s * (1 - (h = 6 * t - (n = Math.floor(6 * t))) * e),
            p = s * (1 - (1 - h) * e), n % 6) {
      case 0:
        i = s, a = p, r = o;
        break;
      case 1:
        i = l, a = s, r = o;
        break;
      case 2:
        i = o, a = s, r = p;
        break;
      case 3:
        i = o, a = l, r = s;
        break;
      case 4:
        i = p, a = o, r = s;
        break;
      case 5:
        i = s, a = o, r = l
    }
    return [i, a, r]
  }
  function b(t, e, s) {
    var i, a = Math.max(t, e, s), r = Math.min(t, e, s), n = a - r,
           h = 0 === a ? 0 : n / a, o = a / 255;
    switch (a) {
      case r:
        i = 0;
        break;
      case t:
        i = e - s + n * (e < s ? 6 : 0), i /= 6 * n;
        break;
      case e:
        i = s - t + 2 * n, i /= 6 * n;
        break;
      case s:
        i = t - e + 4 * n, i /= 6 * n
    }
    return [i, h, o]
  }
  function lt(t, e) {
    var s = b(255 * t[0], 255 * t[1], 255 * t[2]);
    return s[1] += e, 1 < s[1] ? s[1] = 1 : s[1] <= 0 && (s[1] = 0),
                                 y(s[0], s[1], s[2])
  }
  function pt(t, e) {
    var s = b(255 * t[0], 255 * t[1], 255 * t[2]);
    return s[2] += e, 1 < s[2] ? s[2] = 1 : s[2] < 0 && (s[2] = 0),
                                 y(s[0], s[1], s[2])
  }
  function ft(t, e) {
    var s = b(255 * t[0], 255 * t[1], 255 * t[2]);
    return s[0] += e / 360, 1 < s[0] ? s[0] -= 1 : s[0] < 0 && (s[0] += 1),
           y(s[0], s[1], s[2])
  }
  !function() {
    var t, e, s = [];
    for (t = 0; t < 256; t += 1)
      e = t.toString(16), s[t] = 1 === e.length ? '0' + e : e
  }();
  function C() {}
  C.prototype = {
    triggerEvent: function(t, e) {
      if (this._cbs[t])
        for (var s = this._cbs[t].length, i = 0; i < s; i += 1)
          this._cbs[t][i](e)
    },
    addEventListener: function(t, e) {
      return this._cbs[t] || (this._cbs[t] = []), this._cbs[t].push(e),
             function() {
               this.removeEventListener(t, e)
             }.bind(this)
    },
    removeEventListener: function(t, e) {
      if (e) {
        if (this._cbs[t]) {
          for (var s = 0, i = this._cbs[t].length; s < i;)
            this._cbs[t][s] === e &&
                (this._cbs[t].splice(s, 1), s -= 1, i -= 1),
                s += 1;
          this._cbs[t].length || (this._cbs[t] = null)
        }
      } else
        this._cbs[t] = null
    }
  };
  var j = function() {
    function s(t, e) {
      var s, i = 0, a = [];
      switch (t) {
        case 'int16':
        case 'uint8c':
          s = 1;
          break;
        default:
          s = 1.1
      }
      for (i = 0; i < e; i += 1) a.push(s);
      return a
    }
    return 'function' == typeof Uint8ClampedArray &&
            'function' == typeof Float32Array ?
        function(t, e) {
          return 'float32' === t ? new Float32Array(e) :
              'int16' === t      ? new Int16Array(e) :
              'uint8c' === t     ? new Uint8ClampedArray(e) :
                                   s(t, e)
        } :
        s
  }();
  function D(t) {
    return Array.apply(null, {length: t})
  }
  function x(t) {
    return document.createElementNS(e, t)
  }
  function w(t) {
    return document.createElement(t)
  }
  function F() {}
  F.prototype = {
    addDynamicProperty: function(t) {
      -1 === this.dynamicProperties.indexOf(t) &&
          (this.dynamicProperties.push(t),
           this.container.addDynamicProperty(this), this._isAnimated = !0)
    },
    iterateDynamicProperties: function() {
      var t;
      this._mdf = !1;
      var e = this.dynamicProperties.length;
      for (t = 0; t < e; t += 1)
        this.dynamicProperties[t].getValue(),
            this.dynamicProperties[t]._mdf && (this._mdf = !0)
    },
    initDynamicPropertyContainer: function(t) {
      this.container = t, this.dynamicProperties = [], this._mdf = !1,
      this._isAnimated = !1
    }
  };
  var T,
      E =
          (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'
          },
           function(t) {
             return T[t] || ''
           }),
      I = function() {
        var a = Math.cos, r = Math.sin, n = Math.tan, i = Math.round;
        function t() {
          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 e(t) {
          if (0 === t) return this;
          var e = a(t), s = r(t);
          return this._t(e, -s, 0, 0, s, e, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
        }
        function s(t) {
          if (0 === t) return this;
          var e = a(t), s = r(t);
          return this._t(1, 0, 0, 0, 0, e, -s, 0, 0, s, e, 0, 0, 0, 0, 1)
        }
        function h(t) {
          if (0 === t) return this;
          var e = a(t), s = r(t);
          return this._t(e, 0, s, 0, 0, 1, 0, 0, -s, 0, e, 0, 0, 0, 0, 1)
        }
        function o(t) {
          if (0 === t) return this;
          var e = a(t), s = r(t);
          return this._t(e, -s, 0, 0, s, e, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
        }
        function l(t, e) {
          return this._t(1, e, t, 1, 0, 0)
        }
        function p(t, e) {
          return this.shear(n(t), n(e))
        }
        function f(t, e) {
          var s = a(e), i = r(e);
          return this._t(s, i, 0, 0, -i, s, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
              ._t(1, 0, 0, 0, n(t), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
              ._t(s, -i, 0, 0, i, s, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
        }
        function d(t, e, s) {
          return s || 0 === s || (s = 1),
                 1 === t && 1 === e && 1 === s ?
                     this :
                     this._t(t, 0, 0, 0, 0, e, 0, 0, 0, 0, s, 0, 0, 0, 0, 1)
        }
        function m(t, e, s, i, a, r, n, h, o, l, p, f, d, m, c, u) {
          return this.props[0] = t, this.props[1] = e, this.props[2] = s,
                 this.props[3] = i, this.props[4] = a, this.props[5] = r,
                 this.props[6] = n, this.props[7] = h, this.props[8] = o,
                 this.props[9] = l, this.props[10] = p, this.props[11] = f,
                 this.props[12] = d, this.props[13] = m, this.props[14] = c,
                 this.props[15] = u, this
        }
        function c(t, e, s) {
          return s = s || 0,
                 0 !== t || 0 !== e || 0 !== s ?
                     this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, t, e, s, 1) :
                     this
        }
        function u(t, e, s, i, a, r, n, h, o, l, p, f, d, m, c, u) {
          var g = this.props;
          if (1 === t && 0 === e && 0 === s && 0 === i && 0 === a && 1 === r &&
              0 === n && 0 === h && 0 === o && 0 === l && 1 === p && 0 === f)
            return g[12] = g[12] * t + g[15] * d, g[13] = g[13] * r + g[15] * m,
                   g[14] = g[14] * p + g[15] * c, g[15] *= u,
                   this._identityCalculated = !1, this;
          var y = g[0], v = g[1], b = g[2], _ = g[3], k = g[4], A = g[5],
              P = g[6], S = g[7], C = g[8], D = g[9], x = g[10], w = g[11],
              F = g[12], T = g[13], E = g[14], M = g[15];
          return g[0] = y * t + v * a + b * o + _ * d,
                 g[1] = y * e + v * r + b * l + _ * m,
                 g[2] = y * s + v * n + b * p + _ * c,
                 g[3] = y * i + v * h + b * f + _ * u,
                 g[4] = k * t + A * a + P * o + S * d,
                 g[5] = k * e + A * r + P * l + S * m,
                 g[6] = k * s + A * n + P * p + S * c,
                 g[7] = k * i + A * h + P * f + S * u,
                 g[8] = C * t + D * a + x * o + w * d,
                 g[9] = C * e + D * r + x * l + w * m,
                 g[10] = C * s + D * n + x * p + w * c,
                 g[11] = C * i + D * h + x * f + w * u,
                 g[12] = F * t + T * a + E * o + M * d,
                 g[13] = F * e + T * r + E * l + M * m,
                 g[14] = F * s + T * n + E * p + M * c,
                 g[15] = F * i + T * h + E * f + M * u,
                 this._identityCalculated = !1, this
        }
        function g() {
          return this._identityCalculated ||
                     (this._identity =
                          !(1 !== this.props[0] || 0 !== this.props[1] ||
                            0 !== this.props[2] || 0 !== this.props[3] ||
                            0 !== this.props[4] || 1 !== this.props[5] ||
                            0 !== this.props[6] || 0 !== this.props[7] ||
                            0 !== this.props[8] || 0 !== this.props[9] ||
                            1 !== this.props[10] || 0 !== this.props[11] ||
                            0 !== this.props[12] || 0 !== this.props[13] ||
                            0 !== this.props[14] || 1 !== this.props[15]),
                      this._identityCalculated = !0),
                 this._identity
        }
        function y(t) {
          for (var e = 0; e < 16;) {
            if (t.props[e] !== this.props[e]) return !1;
            e += 1
          }
          return !0
        }
        function v(t) {
          var e;
          for (e = 0; e < 16; e += 1) t.props[e] = this.props[e];
          return t
        }
        function b(t) {
          var e;
          for (e = 0; e < 16; e += 1) this.props[e] = t[e]
        }
        function _(t, e, s) {
          return {
            x: t * this.props[0] + e * this.props[4] + s * this.props[8] +
                this.props[12],
                y: t * this.props[1] + e * this.props[5] + s * this.props[9] +
                this.props[13],
                z: t * this.props[2] + e * this.props[6] + s * this.props[10] +
                this.props[14]
          }
        }
        function k(t, e, s) {
          return t * this.props[0] + e * this.props[4] + s * this.props[8] +
              this.props[12]
        }
        function A(t, e, s) {
          return t * this.props[1] + e * this.props[5] + s * this.props[9] +
              this.props[13]
        }
        function P(t, e, s) {
          return t * this.props[2] + e * this.props[6] + s * this.props[10] +
              this.props[14]
        }
        function S() {
          var t = this.props[0] * this.props[5] - this.props[1] * this.props[4],
              e = this.props[5] / t, s = -this.props[1] / t,
              i = -this.props[4] / t, a = this.props[0] / t,
              r = (this.props[4] * this.props[13] -
                   this.props[5] * this.props[12]) /
              t,
              n = -(this.props[0] * this.props[13] -
                    this.props[1] * this.props[12]) /
              t,
              h = new I;
          return h.props[0] = e, h.props[1] = s, h.props[4] = i, h.props[5] = a,
                 h.props[12] = r, h.props[13] = n, h
        }
        function C(t) {
          return this.getInverseMatrix().applyToPointArray(
              t[0], t[1], t[2] || 0)
        }
        function D(t) {
          var e, s = t.length, i = [];
          for (e = 0; e < s; e += 1) i[e] = C(t[e]);
          return i
        }
        function x(t, e, s) {
          var i = j('float32', 6);
          if (this.isIdentity())
            i[0] = t[0], i[1] = t[1], i[2] = e[0], i[3] = e[1], i[4] = s[0],
            i[5] = s[1];
          else {
            var a = this.props[0], r = this.props[1], n = this.props[4],
                h = this.props[5], o = this.props[12], l = this.props[13];
            i[0] = t[0] * a + t[1] * n + o, i[1] = t[0] * r + t[1] * h + l,
            i[2] = e[0] * a + e[1] * n + o, i[3] = e[0] * r + e[1] * h + l,
            i[4] = s[0] * a + s[1] * n + o, i[5] = s[0] * r + s[1] * h + l
          }
          return i
        }
        function w(t, e, s) {
          return this.isIdentity() ? [t, e, s] : [
            t * this.props[0] + e * this.props[4] + s * this.props[8] +
                this.props[12],
            t * this.props[1] + e * this.props[5] + s * this.props[9] +
                this.props[13],
            t * this.props[2] + e * this.props[6] + s * this.props[10] +
                this.props[14]
          ]
        }
        function F(t, e) {
          if (this.isIdentity()) return t + ',' + e;
          var s = this.props;
          return Math.round(100 * (t * s[0] + e * s[4] + s[12])) / 100 + ',' +
              Math.round(100 * (t * s[1] + e * s[5] + s[13])) / 100
        }
        function T() {
          for (var t = 0, e = this.props, s = 'matrix3d('; t < 16;)
            s += i(1e4 * e[t]) / 1e4, s += 15 === t ? ')' : ',', t += 1;
          return s
        }
        function E(t) {
          return t < 1e-6 && 0 < t || -1e-6 < t && t < 0 ? i(1e4 * t) / 1e4 : t
        }
        function M() {
          var t = this.props;
          return 'matrix(' + E(t[0]) + ',' + E(t[1]) + ',' + E(t[4]) + ',' +
              E(t[5]) + ',' + E(t[12]) + ',' + E(t[13]) + ')'
        }
        return function() {
          this.reset = t, this.rotate = e, this.rotateX = s, this.rotateY = h,
          this.rotateZ = o, this.skew = p, this.skewFromAxis = f,
          this.shear = l, this.scale = d, this.setTransform = m,
          this.translate = c, this.transform = u, this.applyToPoint = _,
          this.applyToX = k, this.applyToY = A, this.applyToZ = P,
          this.applyToPointArray = w, this.applyToTriplePoints = x,
          this.applyToPointStringified = F, this.toCSS = T, this.to2dCSS = M,
          this.clone = v, this.cloneFromProps = b, this.equals = y,
          this.inversePoints = D, this.inversePoint = C,
          this.getInverseMatrix = S, this._t = this.transform,
          this.isIdentity = g, this._identity = !0,
          this._identityCalculated = !1, this.props = j('float32', 16),
          this.reset()
        }
      }();
  !function(h, o) {
    var l, p = this, f = 256, d = 6, m = 'random', c = o.pow(f, d),
           u = o.pow(2, 52), g = 2 * u, y = f - 1;
    function v(t) {
      var e, s = t.length, n = this, i = 0, a = n.i = n.j = 0, r = n.S = [];
      for (s || (t = [s++]); i < f;) r[i] = i++;
      for (i = 0; i < f; i++)
        r[i] = r[a = y & a + t[i % s] + (e = r[i])], r[a] = e;
      n.g = function(t) {
        for (var e, s = 0, i = n.i, a = n.j, r = n.S; t--;)
          e = r[i = y & i + 1],
          s = s * f + r[y & (r[i] = r[a = y & a + e]) + (r[a] = e)];
        return n.i = i, n.j = a, s
      }
    }
    function b(t, e) {
      return e.i = t.i, e.j = t.j, e.S = t.S.slice(), e
    }
    function _(t, e) {
      for (var s, i = t + '', a = 0; a < i.length;)
        e[y & a] = y & (s ^= 19 * e[y & a]) + i.charCodeAt(a++);
      return k(e)
    }
    function k(t) {
      return String.fromCharCode.apply(0, t)
    }
    o['seed' + m] = function(t, e, s) {
      var i = [],
          a = _(
              function t(e, s) {
                var i, a = [], r = typeof e;
                if (s && 'object' == r)
                  for (i in e) try {
                      a.push(t(e[i], s - 1))
                    } catch (t) {
                    }
                return a.length ? a : 'string' == r ? e : e + '\0'
              }((e = !0 === e ? {entropy: !0} : e || {}).entropy ?
                    [t, k(h)] :
                    null === t ?
                    function() {
                      try {
                        if (l) return k(l.randomBytes(f));
                        var t = new Uint8Array(f);
                        return (p.crypto || p.msCrypto).getRandomValues(t), k(t)
                      } catch (t) {
                        var e = p.navigator, s = e && e.plugins;
                        return [+new Date, p, s, p.screen, k(h)]
                      }
                    }() :
                    t,
                3),
              i),
          r = new v(i), n = function() {
            for (var t = r.g(d), e = c, s = 0; t < u;)
              t = (t + s) * f, e *= f, s = r.g(1);
            for (; g <= t;) t /= 2, e /= 2, s >>>= 1;
            return (t + s) / e
          };
      return n.int32 = function() {
        return 0 | r.g(4)
      }, n.quick = function() {
        return r.g(4) / 4294967296
      }, n.double = n, _(k(r.S), h), (e.pass || s || function(t, e, s, i) {
               return i && (i.S && b(i, r), t.state = function() {
                        return b(r, {})
                      }), s ? (o[m] = t, e) : t
             })(n, a, 'global' in e ? e.global : this == o, e.state)
    }, _(o.random(), h)
  }([], a);
  var W = function() {
    var t = {
      getBezierEasing: function(t, e, s, i, a) {
        var r =
            a || ('bez_' + t + '_' + e + '_' + s + '_' + i).replace(/\./g, 'p');
        if (h[r]) return h[r];
        var n = new o([t, e, s, i]);
        return h[r] = n
      }
    },
        h = {};
    var l = 11, p = 1 / (l - 1), e = 'function' == typeof Float32Array;
    function i(t, e) {
      return 1 - 3 * e + 3 * t
    }
    function a(t, e) {
      return 3 * e - 6 * t
    }
    function r(t) {
      return 3 * t
    }
    function f(t, e, s) {
      return ((i(e, s) * t + a(e, s)) * t + r(e)) * t
    }
    function d(t, e, s) {
      return 3 * i(e, s) * t * t + 2 * a(e, s) * t + r(e)
    }
    function o(t) {
      this._p = t, this._mSampleValues = e ? new Float32Array(l) : new Array(l),
      this._precomputed = !1, this.get = this.get.bind(this)
    }
    return o.prototype = {
      get: function(t) {
        var e = this._p[0], s = this._p[1], i = this._p[2], a = this._p[3];
        return this._precomputed || this._precompute(),
               e === s && i === a ? t :
                   0 === t        ? 0 :
                   1 === t        ? 1 :
                                    f(this._getTForX(t), s, a)
      },
             _precompute: function() {
        var t = this._p[0], e = this._p[1], s = this._p[2], i = this._p[3];
        this._precomputed = !0, t === e && s === i || this._calcSampleValues()
      },
      _calcSampleValues: function() {
        for (var t = this._p[0], e = this._p[2], s = 0; s < l; ++s)
          this._mSampleValues[s] = f(s * p, t, e)
      },
      _getTForX: function(t) {
        for (var e = this._p[0], s = this._p[2], i = this._mSampleValues, a = 0,
                 r = 1, n = l - 1;
             r !== n && i[r] <= t; ++r)
          a += p;
        var h = a + (t - i[--r]) / (i[r + 1] - i[r]) * p, o = d(h, e, s);
        return .001 <= o ?
            function(t, e, s, i) {
              for (var a = 0; a < 4; ++a) {
                var r = d(e, s, i);
                if (0 === r) return e;
                e -= (f(e, s, i) - t) / r
              }
              return e
            }(t, h, e, s) :
            0 === o ?
            h :
            function(t, e, s, i, a) {
              for (var r, n, h = 0;
                   0 < (r = f(n = e + (s - e) / 2, i, a) - t) ? s = n : e = n,
                             1e-7 < Math.abs(r) && ++h < 10;);
              return n
            }(t, a, a + p, e, s)
      }
    },
           t
  }();
  function M(t, e) {
    var s, i, a = t.length;
    for (s = 0; s < a; s += 1)
      for (var r in i = t[s].prototype)
        Object.prototype.hasOwnProperty.call(i, r) && (e.prototype[r] = i[r])
  }
  !function() {
    for (var a = 0, t = ['ms', 'moz', 'webkit', 'o'], e = 0;
         e < t.length && !window.requestAnimationFrame; ++e)
      window.requestAnimationFrame = window[t[e] + 'RequestAnimationFrame'],
      window.cancelAnimationFrame = window[t[e] + 'CancelAnimationFrame'] ||
          window[t[e] + 'CancelRequestAnimationFrame'];
    window.requestAnimationFrame ||
        (window.requestAnimationFrame =
             function(t) {
               var e = (new Date).getTime(), s = Math.max(0, 16 - (e - a)),
                   i = setTimeout(function() {
                     t(e + s)
                   }, s);
               return a = e + s, i
             }),
        window.cancelAnimationFrame ||
        (window.cancelAnimationFrame = function(t) {
          clearTimeout(t)
        })
  }();
  var dt = function() {
    var F = Math;
    function g(t, e, s, i, a, r) {
      var n = t * i + e * a + s * r - a * i - r * t - s * e;
      return -.001 < n && n < .001
    }
    var p = function(t, e, s, i) {
      var a, r, n, h, o, l, p = P, f = 0, d = [], m = [], c = Ft.newElement();
      for (n = s.length, a = 0; a < p; a += 1) {
        for (o = a / (p - 1), r = l = 0; r < n; r += 1)
          h = _(1 - o, 3) * t[r] + 3 * _(1 - o, 2) * o * s[r] +
              3 * (1 - o) * _(o, 2) * i[r] + _(o, 3) * e[r],
          d[r] = h, null !== m[r] && (l += _(d[r] - m[r], 2)), m[r] = d[r];
        l && (f += l = k(l)), c.percents[a] = o, c.lengths[a] = f
      }
      return c.addedLength = f, c
    };
    function y(t) {
      this.segmentLength = 0, this.points = new Array(t)
    }
    function v(t, e) {
      this.partialLength = t, this.point = e
    }
    var b,
        t = (b = {}, function(t, e, s, i) {
          var a = (t[0] + '_' + t[1] + '_' + e[0] + '_' + e[1] + '_' + s[0] +
                   '_' + s[1] + '_' + i[0] + '_' + i[1])
                      .replace(/\./g, 'p');
          if (!b[a]) {
            var r, n, h, o, l, p, f, d = P, m = 0, c = null;
            2 === t.length && (t[0] !== e[0] || t[1] !== e[1]) &&
                g(t[0], t[1], e[0], e[1], t[0] + s[0], t[1] + s[1]) &&
                g(t[0], t[1], e[0], e[1], e[0] + i[0], e[1] + i[1]) && (d = 2);
            var u = new y(d);
            for (h = s.length, r = 0; r < d; r += 1) {
              for (f = D(h), l = r / (d - 1), n = p = 0; n < h; n += 1)
                o = _(1 - l, 3) * t[n] + 3 * _(1 - l, 2) * l * (t[n] + s[n]) +
                    3 * (1 - l) * _(l, 2) * (e[n] + i[n]) + _(l, 3) * e[n],
                f[n] = o, null !== c && (p += _(f[n] - c[n], 2));
              m += p = k(p), u.points[r] = new v(p, f), c = f
            }
            u.segmentLength = m, b[a] = u
          }
          return b[a]
        });
    function T(t, e) {
      var s = e.percents, i = e.lengths, a = s.length, r = f((a - 1) * t),
          n = t * e.addedLength, h = 0;
      if (r === a - 1 || 0 === r || n === i[r]) return s[r];
      for (var o = i[r] > n ? -1 : 1, l = !0; l;)
        if (i[r] <= n && i[r + 1] > n ?
                (h = (n - i[r]) / (i[r + 1] - i[r]), l = !1) :
                r += o,
            r < 0 || a - 1 <= r) {
          if (r === a - 1) return s[r];
          l = !1
        }
      return s[r] + (s[r + 1] - s[r]) * h
    }
    var E = j('float32', 8);
    return {
      getSegmentsLength:
          function(t) {
            var e, s = wt.newElement(), i = t.c, a = t.v, r = t.o, n = t.i,
                   h = t._length, o = s.lengths, l = 0;
            for (e = 0; e < h - 1; e += 1)
              o[e] = p(a[e], a[e + 1], r[e], n[e + 1]), l += o[e].addedLength;
            return i && h &&
                       (o[e] = p(a[e], a[0], r[e], n[0]),
                        l += o[e].addedLength),
                   s.totalLength = l, s
          },
          getNewSegment:
              function(t, e, s, i, a, r, n) {
                a < 0 ? a = 0 : 1 < a && (a = 1);
                var h, o = T(a, n), l = T(r = 1 < r ? 1 : r, n), p = t.length,
                       f = 1 - o, d = 1 - l, m = f * f * f, c = o * f * f * 3,
                       u = o * o * f * 3, g = o * o * o, y = f * f * d,
                       v = o * f * d + f * o * d + f * f * l,
                       b = o * o * d + f * o * l + o * f * l, _ = o * o * l,
                       k = f * d * d, A = o * d * d + f * l * d + f * d * l,
                       P = o * l * d + f * l * l + o * d * l, S = o * l * l,
                       C = d * d * d, D = l * d * d + d * l * d + d * d * l,
                       x = l * l * d + d * l * l + l * d * l, w = l * l * l;
                for (h = 0; h < p; h += 1)
                  E[4 * h] =
                      F.round(
                          1e3 * (m * t[h] + c * s[h] + u * i[h] + g * e[h])) /
                      1e3,
                        E[4 * h + 1] =
                            F.round(
                                1e3 *
                                (y * t[h] + v * s[h] + b * i[h] + _ * e[h])) /
                      1e3,
                        E[4 * h + 2] =
                            F.round(
                                1e3 *
                                (k * t[h] + A * s[h] + P * i[h] + S * e[h])) /
                      1e3,
                        E[4 * h + 3] =
                            F.round(
                                1e3 *
                                (C * t[h] + D * s[h] + x * i[h] + w * e[h])) /
                      1e3;
                return E
              },
          getPointInSegment:
              function(t, e, s, i, a, r) {
                var n = T(a, r), h = 1 - n;
                return [
                  F.round(
                      1e3 *
                      (h * h * h * t[0] +
                       (n * h * h + h * n * h + h * h * n) * s[0] +
                       (n * n * h + h * n * n + n * h * n) * i[0] +
                       n * n * n * e[0])) /
                      1e3,
                  F.round(
                      1e3 *
                      (h * h * h * t[1] +
                       (n * h * h + h * n * h + h * h * n) * s[1] +
                       (n * n * h + h * n * n + n * h * n) * i[1] +
                       n * n * n * e[1])) /
                      1e3
                ]
              },
          buildBezierData: t, pointOnLine2D: g,
          pointOnLine3D: function(t, e, s, i, a, r, n, h, o) {
            if (0 === s && 0 === r && 0 === o) return g(t, e, i, a, n, h);
            var l,
                p = F.sqrt(F.pow(i - t, 2) + F.pow(a - e, 2) + F.pow(r - s, 2)),
                f = F.sqrt(F.pow(n - t, 2) + F.pow(h - e, 2) + F.pow(o - s, 2)),
                d = F.sqrt(F.pow(n - i, 2) + F.pow(h - a, 2) + F.pow(o - r, 2));
            return -1e-4 < (l = f < p ? d < p ? p - f - d : d - f - p :
                                f < d ? d - f - p :
                                        f - p - d) &&
                l < 1e-4
          }
    }
  }();
  var L = function() {
    function d(t, e, s) {
      var i, a, r, n, h, o, l, p = t.length;
      for (a = 0; a < p; a += 1)
        if ('ks' in (i = t[a]) && !i.completed) {
          if (i.completed = !0, i.tt && (t[a - 1].td = i.tt), i.hasMask) {
            var f = i.masksProperties;
            for (n = f.length, r = 0; r < n; r += 1)
              if (f[r].pt.k.i)
                u(f[r].pt.k);
              else
                for (o = f[r].pt.k.length, h = 0; h < o; h += 1)
                  f[r].pt.k[h].s && u(f[r].pt.k[h].s[0]),
                      f[r].pt.k[h].e && u(f[r].pt.k[h].e[0])
          }
          0 === i.ty     ? (i.layers = m(i.refId, e), d(i.layers, e, s)) :
              4 === i.ty ? c(i.shapes) :
                           5 === i.ty &&
                  (0 !== (l = i).t.a.length || 'm' in l.t.p ||
                   (l.singleShape = !0))
        }
    }
    function m(t, e) {
      for (var s = 0, i = e.length; s < i;) {
        if (e[s].id === t)
          return e[s].layers.__used ? JSON.parse(JSON.stringify(e[s].layers)) :
                                      (e[s].layers.__used = !0, e[s].layers);
        s += 1
      }
      return null
    }
    function c(t) {
      var e, s, i;
      for (e = t.length - 1; 0 <= e; e -= 1)
        if ('sh' === t[e].ty)
          if (t[e].ks.k.i)
            u(t[e].ks.k);
          else
            for (i = t[e].ks.k.length, s = 0; s < i; s += 1)
              t[e].ks.k[s].s && u(t[e].ks.k[s].s[0]),
                  t[e].ks.k[s].e && u(t[e].ks.k[s].e[0]);
        else
          'gr' === t[e].ty && c(t[e].it)
    }
    function u(t) {
      var e, s = t.i.length;
      for (e = 0; e < s; e += 1)
        t.i[e][0] += t.v[e][0], t.i[e][1] += t.v[e][1], t.o[e][0] += t.v[e][0],
            t.o[e][1] += t.v[e][1]
    }
    function h(t, e) {
      var s = e ? e.split('.') : [100, 100, 100];
      return t[0] > s[0] ||
          !(s[0] > t[0]) &&
          (t[1] > s[1] ||
           !(s[1] > t[1]) && (t[2] > s[2] || !(s[2] > t[2]) && null))
    }
    var o, s = function() {
      var i = [4, 4, 14];
      function a(t) {
        var e, s, i, a = t.length;
        for (e = 0; e < a; e += 1)
          5 === t[e].ty && (s = t[e], i = s.t.d, s.t.d = {k: [{s: i, t: 0}]})
      }
      return function(t) {
        if (h(i, t.v) && (a(t.layers), t.assets)) {
          var e, s = t.assets.length;
          for (e = 0; e < s; e += 1) t.assets[e].layers && a(t.assets[e].layers)
        }
      }
    }(), i = (o = [4, 7, 99], function(t) {
           if (t.chars && !h(o, t.v)) {
             var e, s, i, a, r, n = t.chars.length;
             for (e = 0; e < n; e += 1)
               if (t.chars[e].data && t.chars[e].data.shapes)
                 for (i = (r = t.chars[e].data.shapes[0].it).length, s = 0;
                      s < i; s += 1)
                   (a = r[s].ks.k).__converted ||
                       (u(r[s].ks.k), a.__converted = !0)
           }
         }), a = function() {
      var i = [4, 1, 9];
      function r(t) {
        var e, s, i, a = t.length;
        for (e = 0; e < a; e += 1)
          if ('gr' === t[e].ty)
            r(t[e].it);
          else if ('fl' === t[e].ty || 'st' === t[e].ty)
            if (t[e].c.k && t[e].c.k[0].i)
              for (i = t[e].c.k.length, s = 0; s < i; s += 1)
                t[e].c.k[s].s &&
                    (t[e].c.k[s].s[0] /= 255, t[e].c.k[s].s[1] /= 255,
                     t[e].c.k[s].s[2] /= 255, t[e].c.k[s].s[3] /= 255),
                    t[e].c.k[s].e &&
                    (t[e].c.k[s].e[0] /= 255, t[e].c.k[s].e[1] /= 255,
                     t[e].c.k[s].e[2] /= 255, t[e].c.k[s].e[3] /= 255);
            else
              t[e].c.k[0] /= 255, t[e].c.k[1] /= 255, t[e].c.k[2] /= 255,
                  t[e].c.k[3] /= 255
      }
      function a(t) {
        var e, s = t.length;
        for (e = 0; e < s; e += 1) 4 === t[e].ty && r(t[e].shapes)
      }
      return function(t) {
        if (h(i, t.v) && (a(t.layers), t.assets)) {
          var e, s = t.assets.length;
          for (e = 0; e < s; e += 1) t.assets[e].layers && a(t.assets[e].layers)
        }
      }
    }(), r = function() {
      var i = [4, 4, 18];
      function l(t) {
        var e, s, i;
        for (e = t.length - 1; 0 <= e; e -= 1)
          if ('sh' === t[e].ty)
            if (t[e].ks.k.i)
              t[e].ks.k.c = t[e].closed;
            else
              for (i = t[e].ks.k.length, s = 0; s < i; s += 1)
                t[e].ks.k[s].s && (t[e].ks.k[s].s[0].c = t[e].closed),
                    t[e].ks.k[s].e && (t[e].ks.k[s].e[0].c = t[e].closed);
          else
            'gr' === t[e].ty && l(t[e].it)
      }
      function a(t) {
        var e, s, i, a, r, n, h = t.length;
        for (s = 0; s < h; s += 1) {
          if ((e = t[s]).hasMask) {
            var o = e.masksProperties;
            for (a = o.length, i = 0; i < a; i += 1)
              if (o[i].pt.k.i)
                o[i].pt.k.c = o[i].cl;
              else
                for (n = o[i].pt.k.length, r = 0; r < n; r += 1)
                  o[i].pt.k[r].s && (o[i].pt.k[r].s[0].c = o[i].cl),
                      o[i].pt.k[r].e && (o[i].pt.k[r].e[0].c = o[i].cl)
          }
          4 === e.ty && l(e.shapes)
        }
      }
      return function(t) {
        if (h(i, t.v) && (a(t.layers), t.assets)) {
          var e, s = t.assets.length;
          for (e = 0; e < s; e += 1) t.assets[e].layers && a(t.assets[e].layers)
        }
      }
    }();
    var t = {
      completeData: function(t, e) {
        t.__complete ||
            (a(t), s(t), i(t), r(t), d(t.layers, t.assets, e),
             t.__complete = !0)
      }
    };
    return t.checkColors = a, t.checkChars = i, t.checkShapes = r,
           t.completeLayers = d, t
  }();
  function q(t) {
    for (var e = t.fStyle ? t.fStyle.split(' ') : [], s = 'normal',
             i = 'normal', a = e.length, r = 0;
         r < a; r += 1)
      switch (e[r].toLowerCase()) {
        case 'italic':
          i = 'italic';
          break;
        case 'bold':
          s = '700';
          break;
        case 'black':
          s = '900';
          break;
        case 'medium':
          s = '500';
          break;
        case 'regular':
        case 'normal':
          s = '400';
          break;
        case 'light':
        case 'thin':
          s = '200'
      }
    return {
      style: i, weight: t.fWeight || s
    }
  }
  var V = function() {
    var r = {w: 0, size: 0, shapes: []}, t = [];
    function d(t, e) {
      var s = w('span');
      s.setAttribute('aria-hidden', !0), s.style.fontFamily = e;
      var i = w('span');
      i.innerText = 'giItT1WQy@!-/#', s.style.position = 'absolute',
      s.style.left = '-10000px', s.style.top = '-10000px',
      s.style.fontSize = '300px', s.style.fontVariant = 'normal',
      s.style.fontStyle = 'normal', s.style.fontWeight = 'normal',
      s.style.letterSpacing = '0', s.appendChild(i),
      document.body.appendChild(s);
      var a = i.offsetWidth;
      return i.style.fontFamily = function(t) {
        var e, s = t.split(','), i = s.length, a = [];
        for (e = 0; e < i; e += 1)
          'sans-serif' !== s[e] && 'monospace' !== s[e] && a.push(s[e]);
        return a.join(',')
      }(t) + ', ' + e, {
        node: i, w: a, parent: s
      }
    }
    function m(t, e) {
      var s = x('text');
      s.style.fontSize = '100px';
      var i = q(e);
      return s.setAttribute('font-family', e.fFamily),
             s.setAttribute('font-style', i.style),
             s.setAttribute('font-weight', i.weight),
             s.textContent = '1',
             e.fClass ? (s.style.fontFamily = 'inherit',
                         s.setAttribute('class', e.fClass)) :
                        s.style.fontFamily = e.fFamily,
             t.appendChild(s),
             w('canvas').getContext('2d').font =
                 e.fWeight + ' ' + e.fStyle + ' 100px ' + e.fFamily,
             s
    }
    t = t.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 e = 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)
    };
    return e.getCombinedCharacterCodes =
               function() {
      return t
    },
           e.prototype = {
             addChars: function(t) {
               if (t) {
                 var e;
                 this.chars || (this.chars = []);
                 var s, i, a = t.length, r = this.chars.length;
                 for (e = 0; e < a; e += 1) {
                   for (s = 0, i = !1; s < r;)
                     this.chars[s].style === t[e].style &&
                         this.chars[s].fFamily === t[e].fFamily &&
                         this.chars[s].ch === t[e].ch && (i = !0),
                         s += 1;
                   i || (this.chars.push(t[e]), r += 1)
                 }
               }
             },
             addFonts: function(t, e) {
               if (t) {
                 if (this.chars)
                   return this.isLoaded = !0, void (this.fonts = t.list);
                 var s, i = t.list, a = i.length, r = a;
                 for (s = 0; s < a; s += 1) {
                   var n, h, o = !0;
                   if (i[s].loaded = !1,
                       i[s].monoCase = d(i[s].fFamily, 'monospace'),
                       i[s].sansCase = d(i[s].fFamily, 'sans-serif'),
                       i[s].fPath) {
                     if ('p' === i[s].fOrigin || 3 === i[s].origin) {
                       if (0 < (n = document.querySelectorAll(
                                    'style[f-forigin="p"][f-family="' +
                                    i[s].fFamily +
                                    '"], style[f-origin="3"][f-family="' +
                                    i[s].fFamily + '"]'))
                                       .length &&
                               (o = !1),
                           o) {
                         var l = w('style');
                         l.setAttribute('f-forigin', i[s].fOrigin),
                             l.setAttribute('f-origin', i[s].origin),
                             l.setAttribute('f-family', i[s].fFamily),
                             l.type = 'text/css',
                             l.innerText =
                                 '@font-face {font-family: ' + i[s].fFamily +
                             '; font-style: normal; src: url(\'' + i[s].fPath +
                             '\');}',
                             e.appendChild(l)
                       }
                     } else if ('g' === i[s].fOrigin || 1 === i[s].origin) {
                       for (n = document.querySelectorAll(
                                'link[f-forigin="g"], link[f-origin="1"]'),
                           h = 0;
                            h < n.length; h += 1)
                         -1 !== n[h].href.indexOf(i[s].fPath) && (o = !1);
                       if (o) {
                         var p = w('link');
                         p.setAttribute('f-forigin', i[s].fOrigin),
                             p.setAttribute('f-origin', i[s].origin),
                             p.type = 'text/css', p.rel = 'stylesheet',
                             p.href = i[s].fPath, document.body.appendChild(p)
                       }
                     } else if ('t' === i[s].fOrigin || 2 === i[s].origin) {
                       for (n = document.querySelectorAll(
                                'script[f-forigin="t"], script[f-origin="2"]'),
                           h = 0;
                            h < n.length; h += 1)
                         i[s].fPath === n[h].src && (o = !1);
                       if (o) {
                         var f = w('link');
                         f.setAttribute('f-forigin', i[s].fOrigin),
                             f.setAttribute('f-origin', i[s].origin),
                             f.setAttribute('rel', 'stylesheet'),
                             f.setAttribute('href', i[s].fPath),
                             e.appendChild(f)
                       }
                     }
                   } else
                     i[s].loaded = !0, r -= 1;
                   i[s].helper = m(e, i[s]), i[s].cache = {},
                   this.fonts.push(i[s])
                 }
                 0 === r ? this.isLoaded = !0 :
                           setTimeout(this.checkLoadedFonts.bind(this), 100)
               } else
                 this.isLoaded = !0
             },
             getCharData: function(t, e, s) {
               for (var i = 0, a = this.chars.length; i < a;) {
                 if (this.chars[i].ch === t && this.chars[i].style === e &&
                     this.chars[i].fFamily === s)
                   return this.chars[i];
                 i += 1
               }
               return ('string' == typeof t && 13 !== t.charCodeAt(0) || !t) &&
                          console && console.warn && !this._warned &&
                          (this._warned = !0,
                           console.warn(
                               'Missing character from exported characters list: ',
                               t, e, s)),
                      r
             },
             getFontByName: function(t) {
               for (var e = 0, s = this.fonts.length; e < s;) {
                 if (this.fonts[e].fName === t) return this.fonts[e];
                 e += 1
               }
               return this.fonts[0]
             },
             measureText: function(t, e, s) {
               var i = this.getFontByName(e), a = t.charCodeAt(0);
               if (!i.cache[a + 1]) {
                 var r = i.helper;
                 if (' ' === t) {
                   r.textContent = '|' + t + '|';
                   var n = r.getComputedTextLength();
                   r.textContent = '||';
                   var h = r.getComputedTextLength();
                   i.cache[a + 1] = (n - h) / 100
                 } else
                   r.textContent = t,
                   i.cache[a + 1] = r.getComputedTextLength() / 100
               }
               return i.cache[a + 1] * s
             },
             checkLoadedFonts: function() {
               var t, e, s, i = this.fonts.length, a = i;
               for (t = 0; t < i; t += 1)
                 this.fonts[t].loaded ?
                     a -= 1 :
                     'n' === this.fonts[t].fOrigin ||
                         0 === this.fonts[t].origin ?
                     this.fonts[t].loaded = !0 :
                     (e = this.fonts[t].monoCase.node,
                      s = this.fonts[t].monoCase.w,
                      e.offsetWidth !== s ?
                          (a -= 1, this.fonts[t].loaded = !0) :
                          (e = this.fonts[t].sansCase.node,
                           s = this.fonts[t].sansCase.w,
                           e.offsetWidth !== s &&
                               (a -= 1, this.fonts[t].loaded = !0)),
                      this.fonts[t].loaded &&
                          (this.fonts[t].sansCase.parent.parentNode.removeChild(
                               this.fonts[t].sansCase.parent),
                           this.fonts[t].monoCase.parent.parentNode.removeChild(
                               this.fonts[t].monoCase.parent)));
               0 !== a && Date.now() - this.initTime < 5e3 ?
                   setTimeout(this.checkLoadedFontsBinded, 20) :
                   setTimeout(this.setIsLoadedBinded, 10)
             },
             setIsLoaded: function() {
               this.isLoaded = !0
             }
           },
           e
  }(), R = function() {
    var f = s, a = Math.abs;
    function d(t, e) {
      var s, i = this.offsetTime;
      'multidimensional' === this.propType &&
          (s = j('float32', this.pv.length));
      for (var a, r, n, h, o, l, p, f, d = e.lastIndex, m = d,
                                       c = this.keyframes.length - 1, u = !0;
           u;) {
        if (a = this.keyframes[m], r = this.keyframes[m + 1],
            m === c - 1 && t >= r.t - i) {
          a.h && (a = r), d = 0;
          break
        }
        if (r.t - i > t) {
          d = m;
          break
        }
        m < c - 1 ? m += 1 : (d = 0, u = !1)
      }
      var g, y, v, b, _, k, A, P, S, C, D = r.t - i, x = a.t - i;
      if (a.to) {
        a.bezierData ||
            (a.bezierData = dt.buildBezierData(a.s, r.s || a.e, a.to, a.ti));
        var w = a.bezierData;
        if (D <= t || t < x) {
          var F = D <= t ? w.points.length - 1 : 0;
          for (h = w.points[F].point.length, n = 0; n < h; n += 1)
            s[n] = w.points[F].point[n]
        } else {
          a.__fnct ?
              f = a.__fnct :
              (f = W.getBezierEasing(a.o.x, a.o.y, a.i.x, a.i.y, a.n).get,
               a.__fnct = f),
              o = f((t - x) / (D - x));
          var T, E = w.segmentLength * o,
                 M = e.lastFrame < t && e._lastKeyframeIndex === m ?
              e._lastAddedLength :
              0;
          for (p = e.lastFrame < t && e._lastKeyframeIndex === m ?
                   e._lastPoint :
                   0,
              u = !0, l = w.points.length;
               u;) {
            if (M += w.points[p].partialLength,
                0 === E || 0 === o || p === w.points.length - 1) {
              for (h = w.points[p].point.length, n = 0; n < h; n += 1)
                s[n] = w.points[p].point[n];
              break
            }
            if (M <= E && E < M + w.points[p + 1].partialLength) {
              for (T = (E - M) / w.points[p + 1].partialLength,
                  h = w.points[p].point.length, n = 0;
                   n < h; n += 1)
                s[n] = w.points[p].point[n] +
                    (w.points[p + 1].point[n] - w.points[p].point[n]) * T;
              break
            }
            p < l - 1 ? p += 1 : u = !1
          }
          e._lastPoint = p, e._lastAddedLength = M - w.points[p].partialLength,
          e._lastKeyframeIndex = m
        }
      } else {
        var I, L, V, R, z;
        if (c = a.s.length, g = r.s || a.e, this.sh && 1 !== a.h)
          if (D <= t)
            s[0] = g[0], s[1] = g[1], s[2] = g[2];
          else if (t <= x)
            s[0] = a.s[0], s[1] = a.s[1], s[2] = a.s[2];
          else {
            var N = q(a.s), O = q(g);
            y = s,
            v =
                function(t, e, s) {
              var i, a, r, n, h, o = [], l = t[0], p = t[1], f = t[2], d = t[3],
                                 m = e[0], c = e[1], u = e[2], g = e[3];
              (a = l * m + p * c + f * u + d * g) < 0 &&
                  (a = -a, m = -m, c = -c, u = -u, g = -g);
              h = 1e-6 < 1 - a ?
                  (i = Math.acos(a), r = Math.sin(i),
                   n = Math.sin((1 - s) * i) / r, Math.sin(s * i) / r) :
                  (n = 1 - s, s);
              return o[0] = n * l + h * m, o[1] = n * p + h * c,
                     o[2] = n * f + h * u, o[3] = n * d + h * g, o
            }(N, O, (t - x) / (D - x)),
            b = v[0], _ = v[1], k = v[2], A = v[3],
            P = Math.atan2(2 * _ * A - 2 * b * k, 1 - 2 * _ * _ - 2 * k * k),
            S = Math.asin(2 * b * _ + 2 * k * A),
            C = Math.atan2(2 * b * A - 2 * _ * k, 1 - 2 * b * b - 2 * k * k),
            y[0] = P / B, y[1] = S / B, y[2] = C / B
          }
        else
          for (m = 0; m < c; m += 1)
            1 !== a.h &&
                (o = D <= t ?
                     1 :
                     t < x ?
                     0 :
                     (a.o.x.constructor === Array ?
                          (a.__fnct || (a.__fnct = []),
                           a.__fnct[m] ?
                               f = a.__fnct[m] :
                               (I = void 0 === a.o.x[m] ? a.o.x[0] : a.o.x[m],
                                L = void 0 === a.o.y[m] ? a.o.y[0] : a.o.y[m],
                                V = void 0 === a.i.x[m] ? a.i.x[0] : a.i.x[m],
                                R = void 0 === a.i.y[m] ? a.i.y[0] : a.i.y[m],
                                f = W.getBezierEasing(I, L, V, R).get,
                                a.__fnct[m] = f)) :
                          a.__fnct ?
                          f = a.__fnct :
                          (I = a.o.x, L = a.o.y, V = a.i.x, R = a.i.y,
                           f = W.getBezierEasing(I, L, V, R).get, a.__fnct = f),
                      f((t - x) / (D - x)))),
                g = r.s || a.e,
                z = 1 === a.h ? a.s[m] : a.s[m] + (g[m] - a.s[m]) * o,
                'multidimensional' === this.propType ? s[m] = z : s = z
      }
      return e.lastIndex = d, s
    }
    function q(t) {
      var e = t[0] * B, s = t[1] * B, i = t[2] * B, a = Math.cos(e / 2),
          r = Math.cos(s / 2), n = Math.cos(i / 2), h = Math.sin(e / 2),
          o = Math.sin(s / 2), l = Math.sin(i / 2);
      return [
        h * o * n + a * r * l, h * r * n + a * o * l, a * o * n - h * r * l,
        a * r * n - h * o * l
      ]
    }
    function m() {
      var t = this.comp.renderedFrame - this.offsetTime,
          e = this.keyframes[0].t - this.offsetTime,
          s = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;
      if (!(t === this._caching.lastFrame ||
            this._caching.lastFrame !== f &&
                (this._caching.lastFrame >= s && s <= t ||
                 this._caching.lastFrame < e && t < e))) {
        this._caching.lastFrame >= t &&
            (this._caching._lastKeyframeIndex = -1,
             this._caching.lastIndex = 0);
        var i = this.interpolateValue(t, this._caching);
        this.pv = i
      }
      return this._caching.lastFrame = t, this.pv
    }
    function c(t) {
      var e;
      if ('unidimensional' === this.propType)
        e = t * this.mult, 1e-5 < a(this.v - e) && (this.v = e, this._mdf = !0);
      else
        for (var s = 0, i = this.v.length; s < i;)
          e = t[s] * this.mult,
          1e-5 < a(this.v[s] - e) && (this.v[s] = e, this._mdf = !0), s += 1
    }
    function u() {
      if (this.elem.globalData.frameId !== this.frameId &&
          this.effectsSequence.length)
        if (this.lock)
          this.setVValue(this.pv);
        else {
          var t;
          this.lock = !0, this._mdf = this._isFirstFrame;
          var e = this.effectsSequence.length,
              s = this.kf ? this.pv : this.data.k;
          for (t = 0; t < e; t += 1) s = this.effectsSequence[t](s);
          this.setVValue(s), this._isFirstFrame = !1, this.lock = !1,
                             this.frameId = this.elem.globalData.frameId
        }
    }
    function g(t) {
      this.effectsSequence.push(t), this.container.addDynamicProperty(this)
    }
    function n(t, e, s, i) {
      this.propType = 'unidimensional', this.mult = s || 1, this.data = e,
      this.v = s ? e.k * s : e.k, this.pv = e.k, this._mdf = !1, this.elem = t,
      this.container = i, this.comp = t.comp, this.k = !1, this.kf = !1,
      this.vel = 0, this.effectsSequence = [], this._isFirstFrame = !0,
      this.getValue = u, this.setVValue = c, this.addEffect = g
    }
    function h(t, e, s, i) {
      var a;
      this.propType = 'multidimensional', this.mult = s || 1, this.data = e,
      this._mdf = !1, this.elem = t, this.container = i, this.comp = t.comp,
      this.k = !1, this.kf = !1, this.frameId = -1;
      var r = e.k.length;
      for (this.v = j('float32', r), this.pv = j('float32', r),
          this.vel = j('float32', r), a = 0;
           a < r; a += 1)
        this.v[a] = e.k[a] * this.mult, this.pv[a] = e.k[a];
      this._isFirstFrame = !0, this.effectsSequence = [], this.getValue = u,
      this.setVValue = c, this.addEffect = g
    }
    function o(t, e, s, i) {
      this.propType = 'unidimensional', this.keyframes = e.k,
      this.offsetTime = t.data.st, this.frameId = -1,
      this._caching =
          {lastFrame: f, lastIndex: 0, value: 0, _lastKeyframeIndex: -1},
      this.k = !0, this.kf = !0, this.data = e, this.mult = s || 1,
      this.elem = t, this.container = i, this.comp = t.comp, this.v = f,
      this.pv = f, this._isFirstFrame = !0, this.getValue = u,
      this.setVValue = c, this.interpolateValue = d,
      this.effectsSequence = [m.bind(this)], this.addEffect = g
    }
    function l(t, e, s, i) {
      var a;
      this.propType = 'multidimensional';
      var r, n, h, o, l = e.k.length;
      for (a = 0; a < l - 1; a += 1)
        e.k[a].to && e.k[a].s && e.k[a + 1] && e.k[a + 1].s &&
            (r = e.k[a].s, n = e.k[a + 1].s, h = e.k[a].to, o = e.k[a].ti,
             (2 === r.length && (r[0] !== n[0] || r[1] !== n[1]) &&
                  dt.pointOnLine2D(
                      r[0], r[1], n[0], n[1], r[0] + h[0], r[1] + h[1]) &&
                  dt.pointOnLine2D(
                      r[0], r[1], n[0], n[1], n[0] + o[0], n[1] + o[1]) ||
              3 === r.length &&
                  (r[0] !== n[0] || r[1] !== n[1] || r[2] !== n[2]) &&
                  dt.pointOnLine3D(
                      r[0], r[1], r[2], n[0], n[1], n[2], r[0] + h[0],
                      r[1] + h[1], r[2] + h[2]) &&
                  dt.pointOnLine3D(
                      r[0], r[1], r[2], n[0], n[1], n[2], n[0] + o[0],
                      n[1] + o[1], n[2] + o[2])) &&
                 (e.k[a].to = null, e.k[a].ti = null),
             r[0] === n[0] && r[1] === n[1] && 0 === h[0] && 0 === h[1] &&
                 0 === o[0] && 0 === o[1] &&
                 (2 === r.length ||
                  r[2] === n[2] && 0 === h[2] && 0 === o[2]) &&
                 (e.k[a].to = null, e.k[a].ti = null));
      this.effectsSequence = [m.bind(this)], this.data = e,
      this.keyframes = e.k, this.offsetTime = t.data.st, this.k = !0,
      this.kf = !0, this._isFirstFrame = !0, this.mult = s || 1, this.elem = t,
      this.container = i, this.comp = t.comp, this.getValue = u,
      this.setVValue = c, this.interpolateValue = d, this.frameId = -1;
      var p = e.k[0].s.length;
      for (this.v = j('float32', p), this.pv = j('float32', p), a = 0; a < p;
           a += 1)
        this.v[a] = f, this.pv[a] = f;
      this._caching = {lastFrame: f, lastIndex: 0, value: j('float32', p)},
      this.addEffect = g
    }
    return {
      getProp: function(t, e, s, i, a) {
        var r;
        if (e.k.length)
          if ('number' == typeof e.k[0])
            r = new h(t, e, i, a);
          else
            switch (s) {
              case 0:
                r = new o(t, e, i, a);
                break;
              case 1:
                r = new l(t, e, i, a)
            }
        else
          r = new n(t, e, i, a);
        return r.effectsSequence.length && a.addDynamicProperty(r), r
      }
    }
  }(), z = function() {
    var n = [0, 0];
    function i(t, e, s) {
      if (this.elem = t, this.frameId = -1, this.propType = 'transform',
          this.data = e, this.v = new I, this.pre = new I,
          this.appliedTransformations = 0,
          this.initDynamicPropertyContainer(s || t),
          e.p && e.p.s ?
              (this.px = R.getProp(t, e.p.x, 0, 0, this),
               this.py = R.getProp(t, e.p.y, 0, 0, this),
               e.p.z && (this.pz = R.getProp(t, e.p.z, 0, 0, this))) :
              this.p = R.getProp(t, e.p || {k: [0, 0, 0]}, 1, 0, this),
          e.rx) {
        if (this.rx = R.getProp(t, e.rx, 0, B, this),
            this.ry = R.getProp(t, e.ry, 0, B, this),
            this.rz = R.getProp(t, e.rz, 0, B, this), e.or.k[0].ti) {
          var i, a = e.or.k.length;
          for (i = 0; i < a; i += 1) e.or.k[i].to = null, e.or.k[i].ti = null
        }
        this.or = R.getProp(t, e.or, 1, B, this), this.or.sh = !0
      } else
        this.r = R.getProp(t, e.r || {k: 0}, 0, B, this);
      e.sk &&
          (this.sk = R.getProp(t, e.sk, 0, B, this),
           this.sa = R.getProp(t, e.sa, 0, B, this)),
          this.a = R.getProp(t, e.a || {k: [0, 0, 0]}, 1, 0, this),
          this.s = R.getProp(t, e.s || {k: [100, 100, 100]}, 1, .01, this),
          e.o ? this.o = R.getProp(t, e.o, 0, .01, t) :
                this.o = {_mdf: !1, v: 1},
          this._isDirty = !0, this.dynamicProperties.length || this.getValue(!0)
    }
    return i.prototype = {
      applyToMatrix: function(t) {
        var e = this._mdf;
        this.iterateDynamicProperties(),
            this._mdf = this._mdf || e,
            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])
      },
      getValue: function(t) {
        if (this.elem.globalData.frameId !== this.frameId) {
          if (this._isDirty && (this.precalculateMatrix(), this._isDirty = !1),
              this.iterateDynamicProperties(), this._mdf || t) {
            var e;
            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, i;
              if (e = this.elem.globalData.frameRate,
                  this.p && this.p.keyframes && this.p.getValueAtTime)
                i = this.p._caching.lastFrame + this.p.offsetTime <=
                        this.p.keyframes[0].t ?
                    (s = this.p.getValueAtTime(
                         (this.p.keyframes[0].t + .01) / e, 0),
                     this.p.getValueAtTime(this.p.keyframes[0].t / e, 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 / e,
                         0),
                     this.p.getValueAtTime(
                         (this.p.keyframes[this.p.keyframes.length - 1].t -
                          .05) /
                             e,
                         0)) :
                    (s = this.p.pv,
                     this.p.getValueAtTime(
                         (this.p._caching.lastFrame + this.p.offsetTime - .01) /
                             e,
                         this.p.offsetTime));
              else if (
                  this.px && this.px.keyframes && this.py.keyframes &&
                  this.px.getValueAtTime && this.py.getValueAtTime) {
                s = [], i = [];
                var a = this.px, r = this.py;
                a._caching.lastFrame + a.offsetTime <= a.keyframes[0].t ?
                    (s[0] = a.getValueAtTime((a.keyframes[0].t + .01) / e, 0),
                     s[1] = r.getValueAtTime((r.keyframes[0].t + .01) / e, 0),
                     i[0] = a.getValueAtTime(a.keyframes[0].t / e, 0),
                     i[1] = r.getValueAtTime(r.keyframes[0].t / e, 0)) :
                    a._caching.lastFrame + a.offsetTime >=
                        a.keyframes[a.keyframes.length - 1].t ?
                    (s[0] = a.getValueAtTime(
                         a.keyframes[a.keyframes.length - 1].t / e, 0),
                     s[1] = r.getValueAtTime(
                         r.keyframes[r.keyframes.length - 1].t / e, 0),
                     i[0] = a.getValueAtTime(
                         (a.keyframes[a.keyframes.length - 1].t - .01) / e, 0),
                     i[1] = r.getValueAtTime(
                         (r.keyframes[r.keyframes.length - 1].t - .01) / e,
                         0)) :
                    (s = [a.pv, r.pv],
                     i[0] = a.getValueAtTime(
                         (a._caching.lastFrame + a.offsetTime - .01) / e,
                         a.offsetTime),
                     i[1] = r.getValueAtTime(
                         (r._caching.lastFrame + r.offsetTime - .01) / e,
                         r.offsetTime))
              } else
                s = i = n;
              this.v.rotate(-Math.atan2(s[1] - i[1], s[0] - i[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
        }
      },
      precalculateMatrix: function() {
        if (!this.a.k &&
            (this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]),
             this.appliedTransformations = 1, !this.s.effectsSequence.length)) {
          if (this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]),
              this.appliedTransformations = 2, this.sk) {
            if (this.sk.effectsSequence.length ||
                this.sa.effectsSequence.length)
              return;
            this.pre.skewFromAxis(-this.sk.v, this.sa.v),
                this.appliedTransformations = 3
          }
          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)
        }
      },
      autoOrient: function() {}
    },
           M([F], 