onairos 4.2.0 → 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +474 -474
- package/dist/345.js +1 -1
- package/dist/345.js.map +1 -1
- package/dist/373.js +1 -1
- package/dist/373.js.map +1 -1
- package/dist/486.js +2 -0
- package/dist/486.js.map +1 -0
- package/dist/486.onairos.esm.js +2 -0
- package/dist/486.onairos.esm.js.map +1 -0
- package/dist/670.js +2 -0
- package/dist/670.js.map +1 -0
- package/dist/811.js +2 -0
- package/dist/811.js.map +1 -0
- package/dist/iframe.bundle.js +1 -1
- package/dist/iframe.bundle.js.map +1 -1
- package/dist/oauth-callback.html +276 -276
- package/dist/onairos-laravel.js +1 -1
- package/dist/onairos-laravel.js.map +1 -1
- package/dist/onairos.bundle.js +1 -1
- package/dist/onairos.bundle.js.map +1 -1
- package/dist/onairos.esm.js +1 -1
- package/dist/onairos.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/811.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"811.js","mappings":"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","sources":["webpack://OnairosLaravel/./node_modules/@capacitor/app/dist/esm/index.js","webpack://OnairosLaravel/./node_modules/@react-oauth/google/dist/index.esm.js","webpack://OnairosLaravel/./node_modules/lottie-react/build/index.umd.js","webpack://OnairosLaravel/./node_modules/lottie-web/build/player/lottie.js","webpack://OnairosLaravel/./node_modules/lucide-react/dist/esm/shared/src/utils.js","webpack://OnairosLaravel/./node_modules/lucide-react/dist/esm/defaultAttributes.js","webpack://OnairosLaravel/./node_modules/lucide-react/dist/esm/Icon.js","webpack://OnairosLaravel/./node_modules/lucide-react/dist/esm/icons/check.js","webpack://OnairosLaravel/./node_modules/lucide-react/dist/esm/createLucideIcon.js","webpack://OnairosLaravel/./node_modules/engine.io-parser/build/esm/commons.js","webpack://OnairosLaravel/./node_modules/engine.io-parser/build/esm/encodePacket.browser.js","webpack://OnairosLaravel/./node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","webpack://OnairosLaravel/./node_modules/engine.io-parser/build/esm/decodePacket.browser.js","webpack://OnairosLaravel/./node_modules/engine.io-parser/build/esm/index.js","webpack://OnairosLaravel/./node_modules/@socket.io/component-emitter/lib/esm/index.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/globals.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/util.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/transport.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/contrib/parseqs.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/transports/polling.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/contrib/has-cors.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/transports/polling-xhr.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/transports/websocket.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/transports/index.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/transports/webtransport.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/contrib/parseuri.js","webpack://OnairosLaravel/./node_modules/engine.io-client/build/esm/socket.js","webpack://OnairosLaravel/./node_modules/socket.io-parser/build/esm/is-binary.js","webpack://OnairosLaravel/./node_modules/socket.io-parser/build/esm/binary.js","webpack://OnairosLaravel/./node_modules/socket.io-parser/build/esm/index.js","webpack://OnairosLaravel/./node_modules/socket.io-client/build/esm/on.js","webpack://OnairosLaravel/./node_modules/socket.io-client/build/esm/socket.js","webpack://OnairosLaravel/./node_modules/socket.io-client/build/esm/contrib/backo2.js","webpack://OnairosLaravel/./node_modules/socket.io-client/build/esm/manager.js","webpack://OnairosLaravel/./node_modules/socket.io-client/build/esm/index.js","webpack://OnairosLaravel/./node_modules/socket.io-client/build/esm/url.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst App = registerPlugin('App', {\n web: () => import('./web').then((m) => new m.AppWeb()),\n});\nexport * from './definitions';\nexport { App };\n//# sourceMappingURL=index.js.map","'use client'\nimport React, { useState, useRef, useEffect, createContext, useMemo, useContext, useCallback } from 'react';\n\nfunction useLoadGsiScript(options = {}) {\r\n const { nonce, onScriptLoadSuccess, onScriptLoadError } = options;\r\n const [scriptLoadedSuccessfully, setScriptLoadedSuccessfully] = useState(false);\r\n const onScriptLoadSuccessRef = useRef(onScriptLoadSuccess);\r\n onScriptLoadSuccessRef.current = onScriptLoadSuccess;\r\n const onScriptLoadErrorRef = useRef(onScriptLoadError);\r\n onScriptLoadErrorRef.current = onScriptLoadError;\r\n useEffect(() => {\r\n const scriptTag = document.createElement('script');\r\n scriptTag.src = 'https://accounts.google.com/gsi/client';\r\n scriptTag.async = true;\r\n scriptTag.defer = true;\r\n scriptTag.nonce = nonce;\r\n scriptTag.onload = () => {\r\n var _a;\r\n setScriptLoadedSuccessfully(true);\r\n (_a = onScriptLoadSuccessRef.current) === null || _a === void 0 ? void 0 : _a.call(onScriptLoadSuccessRef);\r\n };\r\n scriptTag.onerror = () => {\r\n var _a;\r\n setScriptLoadedSuccessfully(false);\r\n (_a = onScriptLoadErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onScriptLoadErrorRef);\r\n };\r\n document.body.appendChild(scriptTag);\r\n return () => {\r\n document.body.removeChild(scriptTag);\r\n };\r\n }, [nonce]);\r\n return scriptLoadedSuccessfully;\r\n}\n\nconst GoogleOAuthContext = createContext(null);\r\nfunction GoogleOAuthProvider({ clientId, nonce, onScriptLoadSuccess, onScriptLoadError, children, }) {\r\n const scriptLoadedSuccessfully = useLoadGsiScript({\r\n nonce,\r\n onScriptLoadSuccess,\r\n onScriptLoadError,\r\n });\r\n const contextValue = useMemo(() => ({\r\n clientId,\r\n scriptLoadedSuccessfully,\r\n }), [clientId, scriptLoadedSuccessfully]);\r\n return (React.createElement(GoogleOAuthContext.Provider, { value: contextValue }, children));\r\n}\r\nfunction useGoogleOAuth() {\r\n const context = useContext(GoogleOAuthContext);\r\n if (!context) {\r\n throw new Error('Google OAuth components must be used within GoogleOAuthProvider');\r\n }\r\n return context;\r\n}\n\nfunction extractClientId(credentialResponse) {\r\n var _a;\r\n const clientId = (_a = credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.clientId) !== null && _a !== void 0 ? _a : credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.client_id;\r\n return clientId;\r\n}\n\nconst containerHeightMap = { large: 40, medium: 32, small: 20 };\r\nfunction GoogleLogin({ onSuccess, onError, useOneTap, promptMomentNotification, type = 'standard', theme = 'outline', size = 'large', text, shape, logo_alignment, width, locale, click_listener, containerProps, ...props }) {\r\n const btnContainerRef = useRef(null);\r\n const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n const onSuccessRef = useRef(onSuccess);\r\n onSuccessRef.current = onSuccess;\r\n const onErrorRef = useRef(onError);\r\n onErrorRef.current = onError;\r\n const promptMomentNotificationRef = useRef(promptMomentNotification);\r\n promptMomentNotificationRef.current = promptMomentNotification;\r\n useEffect(() => {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\r\n if (!scriptLoadedSuccessfully)\r\n return;\r\n (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.initialize({\r\n client_id: clientId,\r\n callback: (credentialResponse) => {\r\n var _a;\r\n if (!(credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.credential)) {\r\n return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef);\r\n }\r\n const { credential, select_by } = credentialResponse;\r\n onSuccessRef.current({\r\n credential,\r\n clientId: extractClientId(credentialResponse),\r\n select_by,\r\n });\r\n },\r\n ...props,\r\n });\r\n (_f = (_e = (_d = window === null || window === void 0 ? void 0 : window.google) === null || _d === void 0 ? void 0 : _d.accounts) === null || _e === void 0 ? void 0 : _e.id) === null || _f === void 0 ? void 0 : _f.renderButton(btnContainerRef.current, {\r\n type,\r\n theme,\r\n size,\r\n text,\r\n shape,\r\n logo_alignment,\r\n width,\r\n locale,\r\n click_listener,\r\n });\r\n if (useOneTap)\r\n (_j = (_h = (_g = window === null || window === void 0 ? void 0 : window.google) === null || _g === void 0 ? void 0 : _g.accounts) === null || _h === void 0 ? void 0 : _h.id) === null || _j === void 0 ? void 0 : _j.prompt(promptMomentNotificationRef.current);\r\n return () => {\r\n var _a, _b, _c;\r\n if (useOneTap)\r\n (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.cancel();\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n clientId,\r\n scriptLoadedSuccessfully,\r\n useOneTap,\r\n type,\r\n theme,\r\n size,\r\n text,\r\n shape,\r\n logo_alignment,\r\n width,\r\n locale,\r\n ]);\r\n return (React.createElement(\"div\", { ...containerProps, ref: btnContainerRef, style: { height: containerHeightMap[size], ...containerProps === null || containerProps === void 0 ? void 0 : containerProps.style } }));\r\n}\n\nfunction googleLogout() {\r\n var _a, _b, _c;\r\n (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.disableAutoSelect();\r\n}\n\n/* eslint-disable import/export */\r\nfunction useGoogleLogin({ flow = 'implicit', scope = '', onSuccess, onError, onNonOAuthError, overrideScope, state, ...props }) {\r\n const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n const clientRef = useRef();\r\n const onSuccessRef = useRef(onSuccess);\r\n onSuccessRef.current = onSuccess;\r\n const onErrorRef = useRef(onError);\r\n onErrorRef.current = onError;\r\n const onNonOAuthErrorRef = useRef(onNonOAuthError);\r\n onNonOAuthErrorRef.current = onNonOAuthError;\r\n useEffect(() => {\r\n var _a, _b;\r\n if (!scriptLoadedSuccessfully)\r\n return;\r\n const clientMethod = flow === 'implicit' ? 'initTokenClient' : 'initCodeClient';\r\n const client = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.oauth2[clientMethod]({\r\n client_id: clientId,\r\n scope: overrideScope ? scope : `openid profile email ${scope}`,\r\n callback: (response) => {\r\n var _a, _b;\r\n if (response.error)\r\n return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef, response);\r\n (_b = onSuccessRef.current) === null || _b === void 0 ? void 0 : _b.call(onSuccessRef, response);\r\n },\r\n error_callback: (nonOAuthError) => {\r\n var _a;\r\n (_a = onNonOAuthErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onNonOAuthErrorRef, nonOAuthError);\r\n },\r\n state,\r\n ...props,\r\n });\r\n clientRef.current = client;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [clientId, scriptLoadedSuccessfully, flow, scope, state]);\r\n const loginImplicitFlow = useCallback((overrideConfig) => { var _a; return (_a = clientRef.current) === null || _a === void 0 ? void 0 : _a.requestAccessToken(overrideConfig); }, []);\r\n const loginAuthCodeFlow = useCallback(() => { var _a; return (_a = clientRef.current) === null || _a === void 0 ? void 0 : _a.requestCode(); }, []);\r\n return flow === 'implicit' ? loginImplicitFlow : loginAuthCodeFlow;\r\n}\n\nfunction useGoogleOneTapLogin({ onSuccess, onError, promptMomentNotification, cancel_on_tap_outside, prompt_parent_id, state_cookie_domain, hosted_domain, use_fedcm_for_prompt = false, use_fedcm_for_button = false, disabled, auto_select, }) {\r\n const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n const onSuccessRef = useRef(onSuccess);\r\n onSuccessRef.current = onSuccess;\r\n const onErrorRef = useRef(onError);\r\n onErrorRef.current = onError;\r\n const promptMomentNotificationRef = useRef(promptMomentNotification);\r\n promptMomentNotificationRef.current = promptMomentNotification;\r\n useEffect(() => {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\r\n if (!scriptLoadedSuccessfully)\r\n return;\r\n if (disabled) {\r\n (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.cancel();\r\n return;\r\n }\r\n (_f = (_e = (_d = window === null || window === void 0 ? void 0 : window.google) === null || _d === void 0 ? void 0 : _d.accounts) === null || _e === void 0 ? void 0 : _e.id) === null || _f === void 0 ? void 0 : _f.initialize({\r\n client_id: clientId,\r\n callback: (credentialResponse) => {\r\n var _a;\r\n if (!(credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.credential)) {\r\n return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef);\r\n }\r\n const { credential, select_by } = credentialResponse;\r\n onSuccessRef.current({\r\n credential,\r\n clientId: extractClientId(credentialResponse),\r\n select_by,\r\n });\r\n },\r\n hosted_domain,\r\n cancel_on_tap_outside,\r\n prompt_parent_id,\r\n state_cookie_domain,\r\n use_fedcm_for_prompt,\r\n use_fedcm_for_button,\r\n auto_select,\r\n });\r\n (_j = (_h = (_g = window === null || window === void 0 ? void 0 : window.google) === null || _g === void 0 ? void 0 : _g.accounts) === null || _h === void 0 ? void 0 : _h.id) === null || _j === void 0 ? void 0 : _j.prompt(promptMomentNotificationRef.current);\r\n return () => {\r\n var _a, _b, _c;\r\n (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.cancel();\r\n };\r\n }, [\r\n clientId,\r\n scriptLoadedSuccessfully,\r\n cancel_on_tap_outside,\r\n prompt_parent_id,\r\n state_cookie_domain,\r\n hosted_domain,\r\n use_fedcm_for_prompt,\r\n use_fedcm_for_button,\r\n disabled,\r\n auto_select,\r\n ]);\r\n}\n\n/**\r\n * Checks if the user granted all the specified scope or scopes\r\n * @returns True if all the scopes are granted\r\n */\r\nfunction hasGrantedAllScopesGoogle(tokenResponse, firstScope, ...restScopes) {\r\n var _a, _b, _c;\r\n if (!(window === null || window === void 0 ? void 0 : window.google))\r\n return false;\r\n return (((_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.oauth2) === null || _c === void 0 ? void 0 : _c.hasGrantedAllScopes(tokenResponse, firstScope, ...restScopes)) || false);\r\n}\n\n/**\r\n * Checks if the user granted any of the specified scope or scopes.\r\n * @returns True if any of the scopes are granted\r\n */\r\nfunction hasGrantedAnyScopeGoogle(tokenResponse, firstScope, ...restScopes) {\r\n var _a, _b, _c;\r\n if (!(window === null || window === void 0 ? void 0 : window.google))\r\n return false;\r\n return (((_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.oauth2) === null || _c === void 0 ? void 0 : _c.hasGrantedAnyScope(tokenResponse, firstScope, ...restScopes)) || false);\r\n}\n\nexport { GoogleLogin, GoogleOAuthProvider, googleLogout, hasGrantedAllScopesGoogle, hasGrantedAnyScopeGoogle, useGoogleLogin, useGoogleOAuth, useGoogleOneTapLogin };\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('lottie-web'), require('react')) :\n typeof define === 'function' && define.amd ? define(['exports', 'lottie-web', 'react'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global[\"lottie-react\"] = {}, global.Lottie, global.React));\n})(this, (function (exports, lottie, React) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var lottie__default = /*#__PURE__*/_interopDefaultLegacy(lottie);\n var React__default = /*#__PURE__*/_interopDefaultLegacy(React);\n\n function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n }\n function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n }\n function _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n }\n function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n }\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n function ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n }\n function _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n }\n function _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n }\n function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n }\n function _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n }\n function _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n }\n function _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n }\n function _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n }\n\n var _excluded$1 = [\"animationData\", \"loop\", \"autoplay\", \"initialSegment\", \"onComplete\", \"onLoopComplete\", \"onEnterFrame\", \"onSegmentStart\", \"onConfigReady\", \"onDataReady\", \"onDataFailed\", \"onLoadedImages\", \"onDOMLoaded\", \"onDestroy\", \"lottieRef\", \"renderer\", \"name\", \"assetsPath\", \"rendererSettings\"];\n var useLottie = function useLottie(props, style) {\n var animationData = props.animationData,\n loop = props.loop,\n autoplay = props.autoplay,\n initialSegment = props.initialSegment,\n onComplete = props.onComplete,\n onLoopComplete = props.onLoopComplete,\n onEnterFrame = props.onEnterFrame,\n onSegmentStart = props.onSegmentStart,\n onConfigReady = props.onConfigReady,\n onDataReady = props.onDataReady,\n onDataFailed = props.onDataFailed,\n onLoadedImages = props.onLoadedImages,\n onDOMLoaded = props.onDOMLoaded,\n onDestroy = props.onDestroy;\n props.lottieRef;\n props.renderer;\n props.name;\n props.assetsPath;\n props.rendererSettings;\n var rest = _objectWithoutProperties(props, _excluded$1);\n var _useState = React.useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n animationLoaded = _useState2[0],\n setAnimationLoaded = _useState2[1];\n var animationInstanceRef = React.useRef();\n var animationContainer = React.useRef(null);\n /*\n ======================================\n INTERACTION METHODS\n ======================================\n */\n /**\n * Play\n */\n var play = function play() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.play();\n };\n /**\n * Stop\n */\n var stop = function stop() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.stop();\n };\n /**\n * Pause\n */\n var pause = function pause() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n };\n /**\n * Set animation speed\n * @param speed\n */\n var setSpeed = function setSpeed(speed) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSpeed(speed);\n };\n /**\n * Got to frame and play\n * @param value\n * @param isFrame\n */\n var goToAndPlay = function goToAndPlay(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndPlay(value, isFrame);\n };\n /**\n * Got to frame and stop\n * @param value\n * @param isFrame\n */\n var goToAndStop = function goToAndStop(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(value, isFrame);\n };\n /**\n * Set animation direction\n * @param direction\n */\n var setDirection = function setDirection(direction) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setDirection(direction);\n };\n /**\n * Play animation segments\n * @param segments\n * @param forceFlag\n */\n var playSegments = function playSegments(segments, forceFlag) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.playSegments(segments, forceFlag);\n };\n /**\n * Set sub frames\n * @param useSubFrames\n */\n var setSubframe = function setSubframe(useSubFrames) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSubframe(useSubFrames);\n };\n /**\n * Get animation duration\n * @param inFrames\n */\n var getDuration = function getDuration(inFrames) {\n var _a;\n return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames);\n };\n /**\n * Destroy animation\n */\n var destroy = function destroy() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Removing the reference to the animation so separate cleanups are skipped.\n // Without it the internal `lottie-react` instance throws exceptions as it already cleared itself on destroy.\n animationInstanceRef.current = undefined;\n };\n /*\n ======================================\n LOTTIE\n ======================================\n */\n /**\n * Load a new animation, and if it's the case, destroy the previous one\n * @param {Object} forcedConfigs\n */\n var loadAnimation = function loadAnimation() {\n var forcedConfigs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _a;\n // Return if the container ref is null\n if (!animationContainer.current) {\n return;\n }\n // Destroy any previous instance\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Build the animation configuration\n var config = _objectSpread2(_objectSpread2(_objectSpread2({}, props), forcedConfigs), {}, {\n container: animationContainer.current\n });\n // Save the animation instance\n animationInstanceRef.current = lottie__default[\"default\"].loadAnimation(config);\n setAnimationLoaded(!!animationInstanceRef.current);\n // Return a function that will clean up\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n animationInstanceRef.current = undefined;\n };\n };\n /**\n * (Re)Initialize when animation data changed\n */\n React.useEffect(function () {\n var onUnmount = loadAnimation();\n // Clean up on unmount\n return function () {\n return onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationData, loop]);\n // Update the autoplay state\n React.useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n animationInstanceRef.current.autoplay = !!autoplay;\n }, [autoplay]);\n // Update the initial segment state\n React.useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n // When null should reset to default animation length\n if (!initialSegment) {\n animationInstanceRef.current.resetSegments(true);\n return;\n }\n // If it's not a valid segment, do nothing\n if (!Array.isArray(initialSegment) || !initialSegment.length) {\n return;\n }\n // If the current position it's not in the new segment\n // set the current position to start\n if (animationInstanceRef.current.currentRawFrame < initialSegment[0] || animationInstanceRef.current.currentRawFrame > initialSegment[1]) {\n animationInstanceRef.current.currentRawFrame = initialSegment[0];\n }\n // Update the segment\n animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);\n }, [initialSegment]);\n /*\n ======================================\n EVENTS\n ======================================\n */\n /**\n * Reinitialize listener on change\n */\n React.useEffect(function () {\n var partialListeners = [{\n name: \"complete\",\n handler: onComplete\n }, {\n name: \"loopComplete\",\n handler: onLoopComplete\n }, {\n name: \"enterFrame\",\n handler: onEnterFrame\n }, {\n name: \"segmentStart\",\n handler: onSegmentStart\n }, {\n name: \"config_ready\",\n handler: onConfigReady\n }, {\n name: \"data_ready\",\n handler: onDataReady\n }, {\n name: \"data_failed\",\n handler: onDataFailed\n }, {\n name: \"loaded_images\",\n handler: onLoadedImages\n }, {\n name: \"DOMLoaded\",\n handler: onDOMLoaded\n }, {\n name: \"destroy\",\n handler: onDestroy\n }];\n var listeners = partialListeners.filter(function (listener) {\n return listener.handler != null;\n });\n if (!listeners.length) {\n return;\n }\n var deregisterList = listeners.map(\n /**\n * Handle the process of adding an event listener\n * @param {Listener} listener\n * @return {Function} Function that deregister the listener\n */\n function (listener) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(listener.name, listener.handler);\n // Return a function to deregister this listener\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(listener.name, listener.handler);\n };\n });\n // Deregister listeners on unmount\n return function () {\n deregisterList.forEach(function (deregister) {\n return deregister();\n });\n };\n }, [onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy]);\n /**\n * Build the animation view\n */\n var View = /*#__PURE__*/React__default[\"default\"].createElement(\"div\", _objectSpread2({\n style: style,\n ref: animationContainer\n }, rest));\n return {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainer,\n animationLoaded: animationLoaded,\n animationItem: animationInstanceRef.current\n };\n };\n\n // helpers\n function getContainerVisibility(container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n top = _container$getBoundin.top,\n height = _container$getBoundin.height;\n var current = window.innerHeight - top;\n var max = window.innerHeight + height;\n return current / max;\n }\n function getContainerCursorPosition(container, cursorX, cursorY) {\n var _container$getBoundin2 = container.getBoundingClientRect(),\n top = _container$getBoundin2.top,\n left = _container$getBoundin2.left,\n width = _container$getBoundin2.width,\n height = _container$getBoundin2.height;\n var x = (cursorX - left) / width;\n var y = (cursorY - top) / height;\n return {\n x: x,\n y: y\n };\n }\n var useInitInteractivity = function useInitInteractivity(_ref) {\n var wrapperRef = _ref.wrapperRef,\n animationItem = _ref.animationItem,\n mode = _ref.mode,\n actions = _ref.actions;\n React.useEffect(function () {\n var wrapper = wrapperRef.current;\n if (!wrapper || !animationItem || !actions.length) {\n return;\n }\n animationItem.stop();\n var scrollModeHandler = function scrollModeHandler() {\n var assignedSegment = null;\n var scrollHandler = function scrollHandler() {\n var currentPercent = getContainerVisibility(wrapper);\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref2) {\n var visibility = _ref2.visibility;\n return visibility && currentPercent >= visibility[0] && currentPercent <= visibility[1];\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n if (action.type === \"seek\" && action.visibility && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var frameToGo = action.frames[0] + Math.ceil((currentPercent - action.visibility[0]) / (action.visibility[1] - action.visibility[0]) * action.frames[1]);\n //! goToAndStop must be relative to the start of the current segment\n animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);\n }\n if (action.type === \"loop\") {\n // Loop: Loop a given frames\n if (assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else if (animationItem.isPaused) {\n // if they are equal the play method must be called only if lottie is paused\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n }\n }\n if (action.type === \"play\" && animationItem.isPaused) {\n // Play: Reset segments and continue playing full animation from current position\n animationItem.resetSegments(true);\n animationItem.play();\n }\n if (action.type === \"stop\") {\n // Stop: Stop playback\n animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);\n }\n };\n document.addEventListener(\"scroll\", scrollHandler);\n return function () {\n document.removeEventListener(\"scroll\", scrollHandler);\n };\n };\n var cursorModeHandler = function cursorModeHandler() {\n var handleCursor = function handleCursor(_x, _y) {\n var x = _x;\n var y = _y;\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n var pos = getContainerCursorPosition(wrapper, x, y);\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref3) {\n var position = _ref3.position;\n if (position && Array.isArray(position.x) && Array.isArray(position.y)) {\n return x >= position.x[0] && x <= position.x[1] && y >= position.y[0] && y <= position.y[1];\n }\n if (position && !Number.isNaN(position.x) && !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n return false;\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n // Process action types:\n if (action.type === \"seek\" && action.position && Array.isArray(action.position.x) && Array.isArray(action.position.y) && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var xPercent = (x - action.position.x[0]) / (action.position.x[1] - action.position.x[0]);\n var yPercent = (y - action.position.y[0]) / (action.position.y[1] - action.position.y[0]);\n animationItem.playSegments(action.frames, true);\n animationItem.goToAndStop(Math.ceil((xPercent + yPercent) / 2 * (action.frames[1] - action.frames[0])), true);\n }\n if (action.type === \"loop\") {\n animationItem.playSegments(action.frames, true);\n }\n if (action.type === \"play\") {\n // Play: Reset segments and continue playing full animation from current position\n if (animationItem.isPaused) {\n animationItem.resetSegments(false);\n }\n animationItem.playSegments(action.frames);\n }\n if (action.type === \"stop\") {\n animationItem.goToAndStop(action.frames[0], true);\n }\n };\n var mouseMoveHandler = function mouseMoveHandler(ev) {\n handleCursor(ev.clientX, ev.clientY);\n };\n var mouseOutHandler = function mouseOutHandler() {\n handleCursor(-1, -1);\n };\n wrapper.addEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.addEventListener(\"mouseout\", mouseOutHandler);\n return function () {\n wrapper.removeEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.removeEventListener(\"mouseout\", mouseOutHandler);\n };\n };\n switch (mode) {\n case \"scroll\":\n return scrollModeHandler();\n case \"cursor\":\n return cursorModeHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, animationItem]);\n };\n var useLottieInteractivity = function useLottieInteractivity(_ref4) {\n var actions = _ref4.actions,\n mode = _ref4.mode,\n lottieObj = _ref4.lottieObj;\n var animationItem = lottieObj.animationItem,\n View = lottieObj.View,\n animationContainerRef = lottieObj.animationContainerRef;\n useInitInteractivity({\n actions: actions,\n animationItem: animationItem,\n mode: mode,\n wrapperRef: animationContainerRef\n });\n return View;\n };\n\n var _excluded = [\"style\", \"interactivity\"];\n var Lottie = function Lottie(props) {\n var _a, _b, _c;\n var style = props.style,\n interactivity = props.interactivity,\n lottieProps = _objectWithoutProperties(props, _excluded);\n /**\n * Initialize the 'useLottie' hook\n */\n var _useLottie = useLottie(lottieProps, style),\n View = _useLottie.View,\n play = _useLottie.play,\n stop = _useLottie.stop,\n pause = _useLottie.pause,\n setSpeed = _useLottie.setSpeed,\n goToAndStop = _useLottie.goToAndStop,\n goToAndPlay = _useLottie.goToAndPlay,\n setDirection = _useLottie.setDirection,\n playSegments = _useLottie.playSegments,\n setSubframe = _useLottie.setSubframe,\n getDuration = _useLottie.getDuration,\n destroy = _useLottie.destroy,\n animationContainerRef = _useLottie.animationContainerRef,\n animationLoaded = _useLottie.animationLoaded,\n animationItem = _useLottie.animationItem;\n /**\n * Make the hook variables/methods available through the provided 'lottieRef'\n */\n React.useEffect(function () {\n if (props.lottieRef) {\n props.lottieRef.current = {\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndPlay: goToAndPlay,\n goToAndStop: goToAndStop,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);\n return useLottieInteractivity({\n lottieObj: {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n },\n actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],\n mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : \"scroll\"\n });\n };\n\n Object.defineProperty(exports, 'LottiePlayer', {\n enumerable: true,\n get: function () { return lottie__default[\"default\"]; }\n });\n exports[\"default\"] = Lottie;\n exports.useLottie = useLottie;\n exports.useLottieInteractivity = useLottieInteractivity;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=index.umd.js.map\n","(typeof document !== \"undefined\") && (typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n default:\n value = 1.1;\n break;\n }\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n return arr;\n }\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n if (type === 'int16') {\n return new Int16Array(len);\n }\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n return createRegularArray(type, len);\n }\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n return createRegularArray;\n }();\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(o) { \"@babel/helpers - typeof\"; return _typeof$6 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$6(o); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n (function () {\n var propertyNames = ['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'];\n var i;\n var len = propertyNames.length;\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n function ProjectInterface$1() {\n return {};\n }\n BMMath.random = Math.random;\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n return absArr;\n }\n return Math.abs(val);\n };\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n return value;\n }\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n default:\n break;\n }\n return [r, g, b];\n }\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n switch (max) {\n case min:\n h = 0;\n break;\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n default:\n break;\n }\n return [h, s, v];\n }\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n if (g < 0) {\n g = 0;\n }\n if (b < 0) {\n b = 0;\n }\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(o) { \"@babel/helpers - typeof\"; return _typeof$5 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$5(o); }\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n });\n // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n workerFn = fn;\n return workerProxy;\n }\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets);\n // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n i += 1;\n }\n return null;\n }\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n return JSON.parse(JSON.stringify(comp.layers));\n }\n return null;\n }\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n return null;\n }\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\n // data.singleShape = true;\n }\n }\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n return null;\n }\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest();\n // set responseType after calling open or IE will break.\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n xhr.send();\n }\n return {\n load: loadAsset\n };\n }();\n }\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n _workerSelf.dataManager.completeData(animation);\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n function imageLoaded() {\n this.loadedAssets += 1;\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n return path;\n }\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n if (box.width || _count > 500) {\n this._imageLoaded();\n clearInterval(intervalId);\n }\n _count += 1;\n }.bind(this), 50);\n }\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n function setPath(path) {\n this.path = path || '';\n }\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n i += 1;\n }\n return null;\n }\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n this._cbs[eventName].push(callback);\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n i -= 1;\n len -= 1;\n }\n i += 1;\n }\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n if (keysCount === 0) {\n throw new Error();\n }\n return keys;\n }\n return function (_markers) {\n var markers = [];\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n markers.push(markerData);\n }\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n return this.compositions[i].compInterface;\n }\n i += 1;\n }\n return null;\n }\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n function getRenderer(key) {\n return renderers[key];\n }\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n }\n // Returns any renderer that is registered\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n return '';\n }\n\n function _typeof$4(o) { \"@babel/helpers - typeof\"; return _typeof$4 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$4(o); }\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n extendPrototype([BaseEvent], AnimationItem);\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n var animType = 'svg';\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n if (prerender === 'false') {\n params.prerender = false;\n }\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n i += 1;\n }\n }\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n if (data.assets) {\n len = data.assets.length;\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n this.loadNextSegment();\n };\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n this.loadNextSegment();\n };\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n try {\n this.animationData = animData;\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n this.renderer.configAnimation(animData);\n if (!animData.assets) {\n animData.assets = [];\n }\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n if (this.autoplay) {\n this.play();\n }\n }\n };\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n var _height = typeof height === 'number' ? height : undefined;\n this.renderer.updateContainerSize(_width, _height);\n };\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n return null;\n };\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n var numValue = Number(value);\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n this.pause();\n };\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n var numValue = Number(value);\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n this.play();\n };\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false;\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n this.trigger('segmentStart');\n };\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n if (this.isPaused) {\n this.play();\n }\n };\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n return false;\n };\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.setVolume(val);\n };\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.mute();\n };\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.unmute();\n };\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n return path;\n };\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n i += 1;\n }\n return null;\n };\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {\n // TODO: decide how to handle catch case\n }\n };\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n default:\n this.triggerEvent(name);\n }\n }\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n i += 1;\n }\n }\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n var i = 0;\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n i += 1;\n }\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n return animations;\n }\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n function setSpeed(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n function setDirection(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n function play(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n initTime = nowTime;\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n function pause(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n function goToAndStop(value, isFrame, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n function stop(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n function togglePause(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n function destroy(animation) {\n var i;\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n registerAnimation(animElements[i], animationData);\n }\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n function resize() {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n function freeze() {\n _isFrozen = true;\n }\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n function setVolume(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n function mute(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n function unmute(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize;\n // moduleOb.start = start;\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n *\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\n * Usage:\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\n *\n */\n\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n if (beziers[str]) {\n return beziers[str];\n }\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n }\n\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n function C(aA1) {\n return 3.0 * aA1;\n }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n }\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n /**\n * points is an array of [ mX1, mY1, mX2, mY2 ]\n */\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n /**\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n if (initialSlope === 0.0) {\n return guessForT;\n }\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n function newElement() {\n var element;\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n return element;\n }\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n if (_release) {\n _release(element);\n }\n pool[_length] = element;\n _length += 1;\n }\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n function release(element) {\n var i;\n var len = element.lengths.length;\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n element.lengths.length = 0;\n }\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n lastPoint[i] = point[i];\n }\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n return storedData[bezierName];\n };\n }();\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n flag = false;\n }\n }\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n var bezierSegmentPoints = createTypedArray('float32', 8);\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n var t0t0t0 = t0 * t0 * t0;\n //\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n var t0t0t1 = t0 * t0 * t1;\n //\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n var t0t1t1 = t0 * t1 * t1;\n //\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n var t1t1t1 = t1 * t1 * t1;\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n return bezierSegmentPoints;\n }\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n iterationIndex = 0;\n break;\n }\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n var bezierData = keyframeMetadata.bezierData;\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n }\n // caching._lastKeyframeIndex = -1;\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n break;\n }\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n caching.lastIndex = iterationIndex;\n return newValue;\n }\n\n // based on @Toji's https://github.com/toji/gl-matrix/\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n function setVValue(val) {\n var multipliedValue;\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n i += 1;\n }\n }\n }\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n var p;\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n default:\n break;\n }\n }\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n return p;\n }\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n this._length = len;\n };\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n case 'i':\n arr = this.i;\n break;\n case 'o':\n arr = this.o;\n break;\n default:\n arr = [];\n break;\n }\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n return newPath;\n };\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n shapePath._length = 0;\n shapePath.c = false;\n }\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n return cloned;\n }\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n function newShapeCollection() {\n var shapeCollection;\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n return shapeCollection;\n }\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n shapeCollection._length = 0;\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n pool[_length] = shapeCollection;\n _length += 1;\n }\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\n keyPropS = kf[kf.length - 1].s[0];\n }else{\n keyPropS = kf[kf.length - 2].e[0];\n } */\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n keyPropS = keyData.s[0];\n }\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching);\n /// /\n }\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n var i;\n var len = shape1._length;\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n return true;\n }\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n this.lock = true;\n this._mdf = false;\n var finalValue;\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n var i;\n var len = this.effectsSequence.length;\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n var _cw = this.d !== 3;\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\n this.v.i.length = numPts;\n this.v.o.length = numPts; */\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n\n /* this.v.v[i] = [x,y];\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\n this.v._length = numPts; */\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n function getShapeProp(elem, data, type) {\n var prop;\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n return prop;\n }\n function getConstructorFunction() {\n return ShapeProperty;\n }\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\n Transformation Matrix v2.0\n (c) Epistemex 2014-2015\n www.epistemex.com\n By Ken Fyrstenberg\n Contributions by leeoniya.\n License: MIT, header required.\n */\n\n /**\n * 2D transformation matrix object initialized with identity matrix.\n *\n * The matrix can synchronize a canvas context by supplying the context\n * as an argument, or later apply current absolute transform to an\n * existing context.\n *\n * All values are handled as floating point values.\n *\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\n * @prop {number} a - scale x\n * @prop {number} b - shear y\n * @prop {number} c - shear x\n * @prop {number} d - scale y\n * @prop {number} e - translate x\n * @prop {number} f - translate y\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\n * @constructor\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n function translate(tx, ty, tz) {\n tz = tz || 0;\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n return this;\n }\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2;\n // }\n this._identityCalculated = false;\n return this;\n }\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n\n /* matrix order (canvas compatible):\n * ace\n * bdf\n * 001\n */\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n function isIdentity() {\n if (!this._identityCalculated) {\n 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);\n this._identityCalculated = true;\n }\n return this._identity;\n }\n function equals(matr) {\n var i = 0;\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n i += 1;\n }\n return true;\n }\n function clone(matr) {\n var i;\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n return matr;\n }\n function cloneFromProps(props) {\n var i;\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\n x: x * me.a + y * me.c + me.e,\n y: x * me.b + y * me.d + me.f\n }; */\n }\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n return retPts;\n }\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n return arr;\n }\n function applyToPointArray(x, y, z) {\n var arr;\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n return arr;\n }\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n /* if(this.isIdentity()) {\n return '';\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n return cssValue;\n }\n function roundMatrixProperty(val) {\n var v = 10000;\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n return val;\n }\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n /* if(this.isIdentity()) {\n return '';\n } */\n var props = this.props;\n var _a = roundMatrixProperty(props[0]);\n var _b = roundMatrixProperty(props[1]);\n var _c = roundMatrixProperty(props[4]);\n var _d = roundMatrixProperty(props[5]);\n var _e = roundMatrixProperty(props[12]);\n var _f = roundMatrixProperty(props[13]);\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(o) { \"@babel/helpers - typeof\"; return _typeof$3 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$3(o); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n function setLocation(href) {\n setLocationHref(href);\n }\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n return animationManager.loadAnimation(params);\n }\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n case 'matrix':\n return Matrix;\n default:\n return null;\n }\n }\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize;\n // lottie.start = start;\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.13.0';\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n return null;\n }\n var queryString = '';\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n renderer = getQueryVariable('renderer');\n }\n var readyStateCheckInterval = setInterval(checkReady, 100);\n\n // this adds bodymovin to the window object for backwards compatibility\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {\n //\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n return ob;\n }();\n function ShapeModifier() {}\n ShapeModifier.prototype.initModifierProperties = function () {};\n ShapeModifier.prototype.addShapeToModifier = function () {};\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n extendPrototype([ShapeModifier], TrimModifier);\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n return shapeSegments;\n };\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n pathsData.length = 0;\n return pathsData;\n };\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n if (o < 0) {\n o += 1;\n }\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes();\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n jLen = edges.length;\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n var newShapesData = this.addShapes(shapeData, segments[0]);\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n shapes.push(shapePath);\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false;\n shapePath.c = false;\n }\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n if (addedLength > shapeSegment.e) {\n break;\n }\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n return clonedPath;\n };\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.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]);\n }\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n this.iterateDynamicProperties();\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n 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]);\n }\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n this.frameId = this.elem.globalData.frameId;\n }\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n 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]);\n this.appliedTransformations = 4;\n }\n }\n function autoOrient() {\n //\n // var prevP = this.getValueAtTime();\n }\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix();\n // Precalculated matrix with non animated properties\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\n // sh Indicates it needs to be capped between -180 and 180\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this);\n // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n this._isDirty = true;\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n extendPrototype([ShapeModifier], RepeaterModifier);\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n while (pos > 0) {\n pos -= 1;\n // this._elements.unshift(arr.splice(pos,1)[0]);\n this._elements.unshift(arr[pos]);\n }\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n this._groups.splice(0, 0, group);\n this._currentCopies += 1;\n }\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n cont = 0;\n var renderFlag;\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n cont += 1;\n }\n this._currentCopies = copies;\n /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n this.matrix.reset();\n } else {\n this.matrix.reset();\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n return hasReloaded;\n };\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n extendPrototype([ShapeModifier], RoundCornersModifier);\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\n clonedPath.o[index] = currentO;\n clonedPath.i[index] = currentI; */\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n return clonedPath;\n };\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c;\n // Complex roots\n if (s < 0) return [];\n var singleRoot = -b / (2 * a);\n // 1 root\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a);\n // 2 roots\n return [singleRoot - delta, singleRoot + delta];\n }\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n PolynomialBezier.prototype.point = function (t) {\n 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]];\n };\n PolynomialBezier.prototype.derivative = function (t) {\n 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]];\n };\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n }\n // Derivative roots to find min/max\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n return {\n min: min,\n max: max\n };\n }\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n extendPrototype([ShapeModifier], ZigZagModifier);\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n return direction;\n }\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n if (!path.c) {\n count -= 1;\n }\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n return clonedPath;\n };\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0];\n\n // Bevel\n if (lineJoin === 3) return p0;\n\n // Connected, they don't need a joint\n if (pointEqual(p0, p1)) return p0;\n\n // Round\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n }\n\n // Miter\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n return p0;\n }\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n return [outa, outb];\n }\n function pruneIntersections(segments) {\n var e;\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n return segments;\n }\n function offsetSegmentSplit(segment, amount) {\n /*\n We split each bezier segment into smaller pieces based\n on inflection points, this ensures the control point\n polygon is convex.\n (A cubic bezier can have none, one, or two inflection points)\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n function OffsetPathModifier() {}\n extendPrototype([ShapeModifier], OffsetPathModifier);\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n if (!inputBezier.c) {\n count -= 1;\n }\n var i;\n var j;\n var segment;\n var multiSegments = [];\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n multiSegments = pruneIntersections(multiSegments);\n\n // Add bezier segments to the output and apply line joints\n var lastPoint = null;\n var lastSeg = null;\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n case 'bold':\n fWeight = '700';\n break;\n case 'black':\n fWeight = '900';\n break;\n case 'medium':\n fWeight = '500';\n break;\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n default:\n break;\n }\n }\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = [];\n // Hindi characters\n combinedCharacters = combinedCharacters.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]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n return enabledFamilies.join(',');\n }\n function setUpNode(font, family) {\n var parentNode = createTag('span');\n // Node is invisible to screen readers.\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span');\n // Characters that vary significantly among different fonts\n node.innerText = 'giItT1WQy@!-/#';\n // Visible - so we can measure it - but not on the screen\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px';\n // Large font size makes even subtle changes obvious\n parentNode.style.fontSize = '300px';\n // Reset any font properties\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode);\n\n // Remember width with no applied web font\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px';\n // tHelper.style.fontFamily = fontData.fFamily;\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n return helper.measureText(text).width;\n }\n return {\n measureText: measure\n };\n }\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n function addChars(chars) {\n if (!chars) {\n return;\n }\n if (!this.chars) {\n this.chars = [];\n }\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n j += 1;\n }\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n i += 1;\n }\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n return emptyChar;\n }\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName);\n // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n var index = _char2;\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n return fontData.cache[index] * size;\n }\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n i += 1;\n }\n return this.fonts[0];\n }\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return codePoint;\n }\n\n // Skin tone modifiers\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n }\n\n // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n }\n\n // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n return false;\n }\n\n // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n }\n\n // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n var count = 0;\n index += 2;\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n count += 1;\n index += 2;\n }\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n function setIsLoaded() {\n this.isLoaded = true;\n }\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n return data;\n };\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false;\n // layer's display state\n this.hidden = false;\n // If layer's transparency equals 0, it can be hidden\n this.isTransparent = false;\n // list of animated components\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n /**\n * @function\n * Initializes frame related properties.\n *\n * @param {number} num\n * current frame number in Layer's time\n *\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n for (i = 0; i < len; i += 1) {\n eff = null;\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n var i = 0;\n var len = this.data.masksProperties.length;\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n i += 1;\n }\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n if (!expressionsInterfaces) {\n return;\n }\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID();\n\n // Stretch factor for old animations missing this property.\n if (!this.data.sr) {\n this.data.sr = 1;\n }\n // effects manager\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\n * @file\n * Handles element's layer frame update.\n * Checks layer in point and out point\n *\n */\n\n function FrameElement() {}\n FrameElement.prototype = {\n /**\n * @function\n * Initializes frame related properties.\n *\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false;\n // list of animated properties\n this.dynamicProperties = [];\n // If layer has been modified in current tick this will be true\n this._mdf = false;\n },\n /**\n * @function\n * Calculates all dynamic values\n *\n * @param {number} num\n * current frame number in Layer's time\n * @param {boolean} isVisible\n * if layers is currently in range\n *\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n FootageElement.prototype.prepareFrame = function () {};\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n FootageElement.prototype.renderFrame = function () {};\n FootageElement.prototype.destroy = function () {};\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n if (!expressionsInterfaces) {\n return;\n }\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n AudioElement.prototype.show = function () {\n // this.audio.play()\n };\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n AudioElement.prototype.destroy = function () {};\n AudioElement.prototype.sourceRectAtTime = function () {};\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n this.checkPendingElements();\n };\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n case 0:\n return this.createComp(layer);\n case 1:\n return this.createSolid(layer);\n case 3:\n return this.createNull(layer);\n case 4:\n return this.createShape(layer);\n case 5:\n return this.createText(layer);\n case 6:\n return this.createAudio(layer);\n case 13:\n return this.createCamera(layer);\n case 15:\n return this.createFootage(layer);\n default:\n return this.createNull(layer);\n }\n };\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n this.checkPendingElements();\n };\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n for (i = 0; i < len; i += 1) {\n j = 0;\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n j += 1;\n }\n }\n };\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n i += 1;\n }\n };\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n return null;\n };\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n if (path.length === 0) {\n return element;\n }\n return element.getElementByPath(path);\n };\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n }\n\n // TODO: check TYPE 11: Guided elements\n if (this.data.ty !== 11) {\n // this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length;\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n i += 1;\n }\n }\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n if (!this.localTransforms || this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n i += 1;\n }\n }\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n localMat.multiply(this.finalTransform.mat);\n }\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n var i;\n var len = transforms.length;\n var ptNew;\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n path = createNS('path');\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n }\n\n // TODO move this to a factory or to a constructor\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n }\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n }\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n }\n // pathNodes.__renderedString = pathString;\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n viewData.lastPath = pathString;\n }\n };\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n return fil;\n }\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n if (/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)) {\n ob.maskType = false;\n }\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n return effects;\n };\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null;\n // If this layer acts as a mask for the following layer\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n /// /\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc);\n /// /\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n this.globalData.defs.appendChild(maskGroup);\n }\n this.matteMasks[matteType] = id;\n }\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\n * @file\n * Handles AE's layer parenting property.\n *\n */\n\n function HierarchyElement() {}\n HierarchyElement.prototype = {\n /**\n * @function\n * Initializes hierarchy properties\n *\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = [];\n // if element is parent of another layer _isParent will be true\n this._isParent = false;\n this.checkParenting();\n },\n /**\n * @function\n * Sets layer's hierarchy.\n * @param {array} hierarch\n * layer's parent list\n *\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n /**\n * @function\n * Sets layer as parent.\n *\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n /**\n * @function\n * Searches layer's parenting chain\n *\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n var i;\n var len = this.shapes.length;\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);\n // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n i += 1;\n }\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n while (i) {\n i -= 1;\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level;\n // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n this._isAnimated = !!shape.k;\n // TODO: commenting this for now since all shapes are animated\n var i = 0;\n var len = transformers.length;\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n i += 1;\n }\n }\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n if (!this.k) {\n this.getValue(true);\n }\n this._isAnimated = this.k;\n }\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n if (diff > 0.01) {\n return false;\n }\n i += 1;\n }\n return true;\n };\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n return true;\n };\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n if (this.o.length) {\n len = this.prop.v.length;\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n this._mdf = !forceRender;\n }\n };\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n var _matrixHelper = new Matrix();\n var ob = {\n createRenderFunction: createRenderFunction\n };\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n case 'gf':\n return renderGradient;\n case 'gs':\n return renderGradientStroke;\n case 'st':\n return renderStroke;\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n case 'tr':\n return renderContentTransform;\n case 'no':\n return renderNoop;\n default:\n return null;\n }\n }\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n function renderNoop() {}\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n paths = itemData.sh.paths;\n jLen = paths._length;\n if (redraw) {\n pathStringTransformed = '';\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n var stops;\n var i;\n var len;\n var stop;\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n len = stops.length;\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n if (itemData.s._mdf || itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n }\n // gfill.setAttribute('fy','200');\n }\n }\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = [];\n // Full shape data\n this.shapesData = data.shapes;\n // List of styles that will be applied to shapes\n this.stylesList = [];\n // List of modifiers that will be applied to shapes\n this.shapeModifiers = [];\n // List of items in shape tree\n this.itemsData = [];\n // List of items in previous shape tree\n this.processedElements = [];\n // List of animated components\n this.animatedContents = [];\n this.initElement(data, globalData, comp);\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n this.prevViewData = [];\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n\n /*\n This method searches for multiple shapes that affect a single element and one of them is animated\n */\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n return elementData;\n };\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n i += 1;\n }\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n for (j = 0; j < jLen; j += 1) {\n if (arr.indexOf(this.stylesList[j]) === -1 && !this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n this.renderModifiers();\n };\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = arr[i].hd;\n }\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n ownModifiers.push(modifier);\n }\n this.addProcessedElement(arr[i], i + 1);\n }\n len = ownStyles.length;\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n len = ownModifiers.length;\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n this.renderShape();\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);\n // Adding M0 0 fixes same mask bug on all browsers\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n if (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])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n return obj;\n };\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n return this.kf;\n };\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n i += 1;\n }\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n return this.data.d.k[this.keysIndex].s;\n };\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true;\n // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1);\n // It's a surrogate pair (this is the Low surrogate)\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n i += currentChars.length;\n }\n return charactersArray;\n };\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r');\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n }\n\n //\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n default:\n documentData.justifyOffset = 0;\n }\n }\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n ind = 0;\n based = animatorData.s.b;\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n ind += 1;\n }\n }\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n mult = easer(mult);\n }\n // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n var threshold = 0.5 - smoothness * 0.5;\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n if (this._pathData.r.v) {\n paths = paths.reverse();\n }\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n i = len;\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n this._pathData.pi = pathInfo;\n }\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO;\n\n //\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n isNewLine = false;\n }\n }\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n }\n //\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n default:\n break;\n }\n currentLine = letters[i].line;\n }\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n flag = true;\n // Force alignment only works with a single line for now\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n\n // Grouping alignment\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n default:\n break;\n }\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n letterO = elemOpacity;\n }\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n return shapeStr;\n };\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n matrixHelper.translate(0, -documentData.ls, 0);\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n default:\n break;\n }\n matrixHelper.translate(xPos, yPos, 0);\n };\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n ITextElement.prototype.emptyProp = new LetterProps();\n ITextElement.prototype.destroy = function () {};\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n i += 1;\n }\n textContents.push(currentTextContent);\n return textContents;\n };\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n return data;\n };\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n case 2:\n justify = 'middle';\n break;\n default:\n justify = 'start';\n break;\n }\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n tSpan.style.display = 'inherit';\n }\n matrixHelper.reset();\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0;\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n xPos += trackingOffset;\n }\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement;\n // t === 1 means the character has been replaced with an animated shaped\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement);\n // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n }\n //\n }\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n this._sizeChanged = true;\n };\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n return this.bbox;\n };\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n extendPrototype([IImageElement], ISolidElement);\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect');\n /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n NullElement.prototype.renderFrame = function () {};\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n NullElement.prototype.destroy = function () {};\n NullElement.prototype.sourceRectAtTime = function () {};\n NullElement.prototype.hide = function () {};\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n extendPrototype([BaseRenderer], SVGRendererBase);\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio);\n // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n this.animationItem.wrapper.appendChild(this.svgElement);\n // Mask animation\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n SVGRendererBase.prototype.updateContainerSize = function () {};\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n return -1;\n };\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n element.initExpressions();\n }\n this.appendElementInPos(element, pos);\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n if (elementIndex === -1) {\n return;\n }\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n i += 1;\n }\n }\n }\n };\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n }\n // console.log('-------');\n // console.log('FRAME ',num);\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n if (!newElement) {\n return;\n }\n var i = 0;\n var nextElement;\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n i += 1;\n }\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n this.hide();\n };\n\n /* ICompElement.prototype.hide = function(){\n if(!this.hidden){\n this.hideElement();\n var i,len = this.elements.length;\n for( i = 0; i < len; i+=1 ){\n if(this.elements[i]){\n this.elements[i].hide();\n }\n }\n }\n }; */\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n var i;\n var len = this.elements.length;\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n }\n // This iteration needs to be backwards because of how expressions connect between each other\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n extendPrototype([SVGRendererBase], SVGRenderer);\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n var sequence = this.sequences[key];\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n i += 1;\n }\n if (_mdf) {\n sequence.finalTransform.reset();\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null;\n\n // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n /*\n var svgString = [\n '<svg xmlns=\"http://www.w3.org/2000/svg\">',\n '<filter id=\"' + id + '\">',\n '<feColorMatrix type=\"matrix\" color-interpolation-filters=\"sRGB\" values=\"',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0',\n '\"/>',\n '</filter>',\n '</svg>',\n ].join('');\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\n var url = URL.createObjectURL(blob);\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.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');\n fil.appendChild(matrix);\n _svg.appendChild(fil);\n _svg.setAttribute('id', id + '_svg');\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n return _svg;\n }\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d');\n // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height;\n // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n return effects;\n };\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n this.hasMasks = hasMasks;\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n // on the first buffer we store the current state of the global drawing\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1];\n // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n // We clear the canvas again\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n // We draw the mask\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true);\n // We draw the second buffer (that contains the content of this layer)\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n\n // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext);\n // we repaint the context with the mask applied to it\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0);\n // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform);\n // We reset the globalCompositeOperation to source-over, the standard type of operation\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n ownModifiers.push(modifier);\n }\n this.addProcessedElement(arr[i], i + 1);\n }\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type;\n\n // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd);\n // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n renderer.ctxLineWidth(currentStyle.wi);\n // ctx.lineWidth = currentStyle.wi;\n renderer.ctxLineCap(currentStyle.lc);\n // ctx.lineCap = currentStyle.lc;\n renderer.ctxLineJoin(currentStyle.lj);\n // ctx.lineJoin = currentStyle.lj;\n renderer.ctxMiterLimit(currentStyle.ml || 0);\n // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd);\n // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n renderer.ctxOpacity(currentStyle.coOp);\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n renderer.restore();\n }\n }\n };\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {\n //\n }\n }\n if (isMain) {\n this.drawLayer();\n }\n };\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n styledShape.trNodes = shapeNodes;\n }\n };\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n styleElem.grd = grd;\n }\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n this.fill = hasFill;\n var hasStroke = false;\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length;\n // this.tHelper.font = this.values.fValue;\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n cnt += 1;\n }\n };\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt');\n // ctx.lineCap = 'butt';\n this.globalData.renderer.ctxLineJoin('miter');\n // ctx.lineJoin = 'miter';\n this.globalData.renderer.ctxMiterLimit(4);\n // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc;\n // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill);\n // ctx.fillStyle = this.values.fill;\n }\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n this.globalData.canvasContext.closePath();\n renderer.ctxFill();\n // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw);\n // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth);\n // ctx.lineWidth = this.values.sWidth;\n }\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc);\n // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke);\n // ctx.strokeStyle = this.values.stroke;\n }\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke();\n // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc);\n // ctx.fillStyle = this.data.sc;\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh);\n // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n extendPrototype([BaseRenderer], CanvasRendererBase);\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n this.contextData.reset();\n };\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n this.contextData.restore(actionFlag);\n };\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n var elementRel;\n var animationRel;\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n 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];\n /* var i, len = this.elements.length;\n for(i=0;i<len;i+=1){\n if(this.elements[i] && this.elements[i].data.ty === 0){\n this.elements[i].resize(this.globalData.transformCanvas);\n }\n } */\n this.ctxTransform(this.transformCanvas.props);\n this.canvasContext.beginPath();\n this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n this.canvasContext.closePath();\n this.canvasContext.clip();\n this.renderFrame(this.renderedFrame, true);\n };\n CanvasRendererBase.prototype.destroy = function () {\n if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n var i;\n var len = this.layers ? this.layers.length : 0;\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num;\n\n // console.log('--------');\n // console.log('NEW: ',num);\n var i;\n var len = this.layers.length;\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\n element.resize(this.globalData.transformCanvas);\n } */\n };\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1;\n //\n this.currentFillStyle = '';\n this.appliedFillStyle = '';\n //\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = '';\n //\n this.currentLineWidth = '';\n this.appliedLineWidth = '';\n //\n this.currentLineCap = '';\n this.appliedLineCap = '';\n //\n this.currentLineJoin = '';\n this.appliedLineJoin = '';\n //\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n this._length = newLength;\n };\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n var props = this.cTr.props;\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n var currentStack = this.stack[this.cArrPos];\n var i;\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props);\n // Taking the last transform value from the stored stack of transforms\n var currentTransform = this.cTr;\n // Applying the last transform value after the new transform to respect the order of transformations\n this.transformMat.multiply(currentTransform);\n // Storing the new transformed value in the stored transform\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props;\n // Applying the new transform to the canvas\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n this.nativeContext.fill(rule);\n };\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n this.nativeContext.fillRect(x, y, w, h);\n };\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n this.layers = null;\n this.elements = null;\n };\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n if (this.matteElement) {\n this.matteElement = null;\n }\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n HSolidElement.prototype.createContent = function () {\n var rect;\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = [];\n // Full shape data\n this.shapesData = data.shapes;\n // List of styles that will be applied to shapes\n this.stylesList = [];\n // List of modifiers that will be applied to shapes\n this.shapeModifiers = [];\n // List of items in shape tree\n this.itemsData = [];\n // List of items in previous shape tree\n this.processedElements = [];\n // List of animated components\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp);\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n return point;\n };\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n if (len <= 1) {\n return;\n }\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n a |= 0; // eslint-disable-line no-bitwise\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {\n //\n } else if (a === 0) {\n t = -c / b;\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n if (kfw > width) {\n width = kfw;\n }\n }\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;\n // var tempBoundingBox = this.shapeCont.getBBox();\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n var changed = false;\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n this.checkParenting();\n };\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n }\n // tSpan.setAttribute('visibility', 'hidden');\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n matrixHelper.reset();\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n //\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n }\n //\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n }\n /// /textSpan.setAttribute('opacity',renderedLetter.o);\n textSpan.style.opacity = renderedLetter.o;\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n var margin = 1;\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true;\n\n // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n this.finalTransform = {\n mProp: this\n };\n }\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n HCameraElement.prototype.createElements = function () {};\n HCameraElement.prototype.hide = function () {};\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n if (this.hierarchy) {\n len = this.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n if (_mdf || 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) {\n this.mat.reset();\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n if (this.a) {\n var diffVector;\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));\n // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n this.mat.clone(this._prevMat);\n }\n }\n this._isFirstFrame = false;\n };\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n HCameraElement.prototype.destroy = function () {};\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n if (!newDOMElement) {\n return;\n }\n var layer = this.layers[pos];\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n i += 1;\n }\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n return new HShapeElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n return new HTextElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n return new HImageElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n return new HSolidElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n i += 1;\n }\n return null;\n };\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n perspectiveElem.appendChild(container);\n // this.resizerElem.appendChild(perspectiveElem);\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n len = this.threeDElements.length;\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n j += 1;\n }\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n break;\n }\n i += 1;\n }\n };\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData;\n // Mask animation\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements();\n // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n j += 1;\n }\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n extendPrototype([HybridRendererBase], HybridRenderer);\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n i += 1;\n }\n return null;\n // return {active:false};\n }\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(o) { \"@babel/helpers - typeof\"; return _typeof$2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$2(o); }\n /* eslint-disable */\n /*\n Copyright 2014 David Bau.\n\n Permission is hereby granted, free of charge, to any person obtaining\n a copy of this software and associated documentation files (the\n \"Software\"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n */\n\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {};\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n prng[\"double\"] = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n }\n // Only provide the .state method if requested via options.state.\n prng.state = function () {\n return copy(arc4, {});\n };\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n math['seed' + rngname] = seedrandom;\n\n //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) {\n key = [keylen++];\n }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n me.i = i;\n me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n }\n\n //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n }\n\n //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n }\n\n //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n return tostring(key);\n }\n\n //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n }\n\n //\n // tostring()\n // Converts an array of charcodes to a string\n //\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n }\n\n //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n mixkey(math.random(), pool);\n\n //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n\n // End anonymous scope, and pass initial values.\n }\n ;\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(o) { \"@babel/helpers - typeof\"; return _typeof$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$1(o); }\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n function resetFrame() {\n _lottieGlobal = {};\n }\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n return retArr;\n }\n if (a.propType) {\n return a.v;\n }\n return -a;\n }\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n i += 1;\n }\n return retArr;\n }\n return 0;\n }\n var add = sum;\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n return a - b;\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n i += 1;\n }\n return retArr;\n }\n return 0;\n }\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n var arr;\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n var i;\n var len;\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n return arr;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n return arr;\n }\n return 0;\n }\n function div(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n var arr;\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n var i;\n var len;\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n return arr;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n return arr;\n }\n return 0;\n }\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n return a % b;\n }\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n return Math.min(Math.max(num, min), max);\n }\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n var radians_to_degrees = radiansToDegrees;\n function degreesToRadians(val) {\n return val * degToRads;\n }\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n return Math.sqrt(addedLength);\n }\n function normalize(vec) {\n return div(vec, length(vec));\n }\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n if (max === min) {\n h = 0; // achromatic\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return [h, s, l, val[3]];\n }\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n if (s === 0) {\n r = l; // achromatic\n b = l; // achromatic\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return [r, g, b, val[3]];\n }\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n if (t <= tMin) {\n return value1;\n }\n if (t >= tMax) {\n return value2;\n }\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n return arr;\n }\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n if (max.length) {\n var i;\n var len = max.length;\n if (!min) {\n min = createTypedArray('float32', len);\n }\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n return arr;\n }\n if (min === undefined) {\n min = 0;\n }\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n return path;\n }\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n var _needsRandom = val.indexOf('random') !== -1;\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty._name = elem.data.nm;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt;\n // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random();\n // addedAmps[j] += -amp + amp*2*rnd;\n }\n iWiggle += 1;\n }\n // var rnd2 = BMMath.random();\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc;\n // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n return arr;\n }\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n var mult = fn(t);\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n return arr;\n }\n return (val2 - val1) * mult + val1;\n }\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n break;\n }\n }\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n return obKey;\n }\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n return fr / fps;\n }\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n return t * fps;\n }\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n return value.substring(init, end);\n }\n return '';\n }\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n return value.substr(init, end);\n }\n return '';\n }\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\n rotation = transform.rotation;\n scale = transform.scale; */\n }\n }\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n if (!effect) {\n effect = thisLayer(4);\n }\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n expression_function();\n this.frameExpressionId = elem.globalData.frameId;\n\n // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n }\n // Bundlers will see these as dead code and unless we reference them\n 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];\n return executeExpression;\n }\n ob.initiateExpression = initiateExpression;\n 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];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n function pushExpression() {\n stackCount += 1;\n }\n function popExpression() {\n stackCount -= 1;\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n function releaseInstances() {\n var i;\n var len = registers.length;\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n registers.length = 0;\n }\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n return this._mask.op.v * 100;\n }\n });\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n var i;\n var len = maskManager.viewData.length;\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n var maskFunction = function maskFunction(name) {\n i = 0;\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n i += 1;\n }\n return null;\n };\n return maskFunction;\n };\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n var value = '';\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n val = property.v * mult;\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n expressionValue.value = val;\n expressionValue[0] = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n return expressionValue;\n };\n }\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n return expressionValue;\n };\n }\n\n // TODO: try to avoid using this getter\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n default:\n return null;\n }\n }\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n var _px;\n var _py;\n var _pz;\n var _transformFactory;\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n return toWorldMat;\n }\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n return matrix.inversePoint(arr);\n }\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n return toWorldMat.inversePoint(arr);\n }\n return toWorldMat.inversePoint(arr);\n }\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n return function (elem) {\n var transformInterface;\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n default:\n return null;\n }\n }\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n if (val <= 0) {\n return interfaceFunction;\n }\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n if (val <= 0) {\n return interfaceFunction;\n }\n return propertyGroup(val - 1);\n }\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n var effects = elem.data.ef || [];\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n i += 1;\n }\n return null;\n };\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n return null;\n }\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n return effectElements[i]();\n }\n i += 1;\n }\n throw new Error();\n }\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n var effectElements = [];\n var i;\n var len = data.ef.length;\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n return expressionProperty();\n }\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n return interfaceFunction;\n }\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {\n // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n return arr;\n }\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n i += 1;\n }\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n return null;\n };\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n default:\n return interfaceFunction.transform;\n }\n };\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n });\n // interfaceFunction.content = interfaceFunction;\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n return null;\n }\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n return null;\n }\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n return interfaceFunction;\n }\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n return null;\n }\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n return function (shapes, view, propertyGroup) {\n var interfaces;\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n if (value === 0) {\n return propertyGroup;\n }\n return interfaces[value - 1];\n }\n var i = 0;\n var len = interfaces.length;\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n i += 1;\n }\n return null;\n }\n function parentGroupWrapper() {\n return propertyGroup;\n }\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n default:\n return null;\n }\n }\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n return currentProperty;\n }\n var propertyNameIndex = value.indexOf(currentPropertyName);\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n return currentProperty;\n }\n return '';\n }\n return init;\n };\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n return null;\n }\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n return null;\n }\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n return this._cachingAtTime.value;\n }\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n if (v1.length) {\n var i;\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n return speed;\n }\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n var delta = -0.001;\n // frameNum += this.elem.data.st;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n return velocity;\n }\n function getStaticValueAtTime() {\n return this.pv;\n }\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n var cycleDuration;\n var firstKeyFrame;\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n var i;\n var len;\n var ret;\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n return ret;\n }\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n return ret;\n }\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n var cycleDuration;\n var lastKeyFrame;\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n var i;\n var len;\n var ret;\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n return ret;\n }\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n return ret;\n }\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n if (samples <= 1) {\n return this.pv;\n }\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n var sampleValue;\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n i += 1;\n }\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n return value;\n }\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n }\n /// /\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n return matrix;\n /// /\n }\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n var propertyGetProp = PropertyFactory.getProp;\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container);\n // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n return prop;\n };\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n return this._cachingAtTime.shapeValue;\n }\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n function ShapeExpressions() {}\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n var shapePath = this.v;\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n i += 1;\n }\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n if (magnitude === 0) {\n return [0, 0];\n }\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n return prop;\n };\n }\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n return null;\n }\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n return currentValue;\n };\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n return feMerge;\n }\n };\n\n 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';\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.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');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer');\n\n // Red\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n }\n // Green\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n }\n // Blue\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n // Alpha\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n }\n // RGB\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n while (cnt <= 256) {\n perc = cnt / 256;\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n return table.join(' ');\n };\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge);\n //\n }\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n i += 1;\n }\n return null;\n };\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n if (!parentNode) {\n return;\n }\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n i += 1;\n }\n var nextChild;\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n _svgMatteSymbols.push(mask);\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n elem.setMatte(mask.layerId);\n };\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n i += 1;\n }\n this.initialized = true;\n };\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma;\n\n // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY);\n\n // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n extendPrototype([TransformEffect], CVTransformEffect);\n\n // Registering renderers\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer);\n\n // Registering shape modifiers\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier);\n\n // Registering expression plugin\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize();\n\n // Registering svg effects\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","/**\n * @license lucide-react v0.503.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.503.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.503.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => {\n return createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.503.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.503.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE, } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: PACKET_TYPES_REVERSE[type],\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET, } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload, };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\nexport const defaultBinaryType = \"arraybuffer\";\nexport function createCookieJar() { }\n","import { globalThisShim as globalThis } from \"./globals.node.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n/**\n * Generates a random 8-characters string.\n */\nexport function randomString() {\n return (Date.now().toString(36).substring(3) +\n Math.random().toString(36).substring(2, 5));\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nexport class TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port !== 443)) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","import { Transport } from \"../transport.js\";\nimport { randomString } from \"../util.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this._polling = false;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this._poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this._polling || !this.writable) {\n let total = 0;\n if (this._polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n _poll() {\n this._polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this._polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this._poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","import { Polling } from \"./polling.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globals.node.js\";\nimport { hasCORS } from \"../contrib/has-cors.js\";\nfunction empty() { }\nexport class BaseXHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(createRequest, uri, opts) {\n super();\n this.createRequest = createRequest;\n installTimerFunctions(this, opts);\n this._opts = opts;\n this._method = opts.method || \"GET\";\n this._uri = uri;\n this._data = undefined !== opts.data ? opts.data : null;\n this._create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n _create() {\n var _a;\n const opts = pick(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this._opts.xd;\n const xhr = (this._xhr = this.createRequest(opts));\n try {\n xhr.open(this._method, this._uri, true);\n try {\n if (this._opts.extraHeaders) {\n // @ts-ignore\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this._opts.extraHeaders) {\n if (this._opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this._method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this._opts.withCredentials;\n }\n if (this._opts.requestTimeout) {\n xhr.timeout = this._opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(\n // @ts-ignore\n xhr.getResponseHeader(\"set-cookie\"));\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this._onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this._data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this._onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this._index = Request.requestsCount++;\n Request.requests[this._index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n _onError(err) {\n this.emitReserved(\"error\", err, this._xhr);\n this._cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n _cleanup(fromError) {\n if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n return;\n }\n this._xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this._xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this._index];\n }\n this._xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n _onLoad() {\n const data = this._xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this._cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this._cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\nconst hasXHR2 = (function () {\n const xhr = newRequest({\n xdomain: false,\n });\n return xhr && xhr.responseType !== null;\n})();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */\nexport class XHR extends BaseXHR {\n constructor(opts) {\n super(opts);\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd }, this.opts);\n return new Request(newRequest, this.uri(), opts);\n }\n}\nfunction newRequest(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { pick, randomString } from \"../util.js\";\nimport { encodePacket } from \"engine.io-parser\";\nimport { globalThisShim as globalThis, nextTick } from \"../globals.node.js\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class BaseWS extends Transport {\n get name() {\n return \"websocket\";\n }\n doOpen() {\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws = this.createSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n this.doWrite(packet, data);\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.onerror = () => { };\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nconst WebSocketCtor = globalThis.WebSocket || globalThis.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */\nexport class WS extends BaseWS {\n createSocket(uri, protocols, opts) {\n return !isReactNative\n ? protocols\n ? new WebSocketCtor(uri, protocols)\n : new WebSocketCtor(uri)\n : new WebSocketCtor(uri, protocols, opts);\n }\n doWrite(_packet, data) {\n this.ws.send(data);\n }\n}\n","import { XHR } from \"./polling-xhr.node.js\";\nimport { WS } from \"./websocket.node.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: XHR,\n};\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"../globals.node.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n try {\n // @ts-ignore\n this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this._transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this._transport.ready.then(() => {\n this._transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this._writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this._writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this._writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n if (str.length > 8000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports as DEFAULT_TRANSPORTS } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { createCookieJar, defaultBinaryType, nextTick, } from \"./globals.node.js\";\nconst withEventListeners = typeof addEventListener === \"function\" &&\n typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n // script, so we create one single event listener here which will forward the event to the socket instances\n addEventListener(\"offline\", () => {\n OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */\nexport class SocketWithoutUpgrade extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n this._pingInterval = -1;\n this._pingTimeout = -1;\n this._maxPayload = -1;\n /**\n * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\n */\n this._pingTimeoutTime = Infinity;\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n const parsedUri = parse(uri);\n opts.hostname = parsedUri.host;\n opts.secure =\n parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n opts.port = parsedUri.port;\n if (parsedUri.query)\n opts.query = parsedUri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = [];\n this._transportsByName = {};\n opts.transports.forEach((t) => {\n const transportName = t.prototype.name;\n this.transports.push(transportName);\n this._transportsByName[transportName] = t;\n });\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n if (withEventListeners) {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this._beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this._offlineEventListener = () => {\n this._onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n }\n }\n if (this.opts.withCredentials) {\n this._cookieJar = createCookieJar();\n }\n this._open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new this._transportsByName[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n _open() {\n if (this.transports.length === 0) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n const transportName = this.opts.rememberUpgrade &&\n SocketWithoutUpgrade.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1\n ? \"websocket\"\n : this.transports[0];\n this.readyState = \"opening\";\n const transport = this.createTransport(transportName);\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this._onDrain.bind(this))\n .on(\"packet\", this._onPacket.bind(this))\n .on(\"error\", this._onError.bind(this))\n .on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n _onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this._sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n this._resetPingTimeout();\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this._onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this._pingInterval = data.pingInterval;\n this._pingTimeout = data.pingTimeout;\n this._maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this._resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n _resetPingTimeout() {\n this.clearTimeoutFn(this._pingTimeoutTimer);\n const delay = this._pingInterval + this._pingTimeout;\n this._pingTimeoutTime = Date.now() + delay;\n this._pingTimeoutTimer = this.setTimeoutFn(() => {\n this._onClose(\"ping timeout\");\n }, delay);\n if (this.opts.autoUnref) {\n this._pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n _onDrain() {\n this.writeBuffer.splice(0, this._prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this._prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this._getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this._prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n _getWritablePackets() {\n const shouldCheckPayloadSize = this._maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this._maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n *\n * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n * `write()` method then the message would not be buffered by the Socket.IO client.\n *\n * @return {boolean}\n * @private\n */\n /* private */ _hasPingExpired() {\n if (!this._pingTimeoutTime)\n return true;\n const hasExpired = Date.now() > this._pingTimeoutTime;\n if (hasExpired) {\n this._pingTimeoutTime = 0;\n nextTick(() => {\n this._onClose(\"ping timeout\");\n }, this.setTimeoutFn);\n }\n return hasExpired;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a message. Alias of {@link Socket#write}.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n send(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n _sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this._onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n _onError(err) {\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n if (this.opts.tryAllTransports &&\n this.transports.length > 1 &&\n this.readyState === \"opening\") {\n this.transports.shift();\n return this._open();\n }\n this.emitReserved(\"error\", err);\n this._onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n _onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this._pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (withEventListeners) {\n if (this._beforeunloadEventListener) {\n removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this._offlineEventListener) {\n const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n if (i !== -1) {\n OFFLINE_EVENT_LISTENERS.splice(i, 1);\n }\n }\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n }\n }\n}\nSocketWithoutUpgrade.protocol = protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */\nexport class SocketWithUpgrade extends SocketWithoutUpgrade {\n constructor() {\n super(...arguments);\n this._upgrades = [];\n }\n onOpen() {\n super.onOpen();\n if (\"open\" === this.readyState && this.opts.upgrade) {\n for (let i = 0; i < this._upgrades.length; i++) {\n this._probe(this._upgrades[i]);\n }\n }\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n _probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this._upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n onHandshake(data) {\n this._upgrades = this._filterUpgrades(data.upgrades);\n super.onHandshake(data);\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n _filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n for (let i = 0; i < upgrades.length; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */\nexport class Socket extends SocketWithUpgrade {\n constructor(uri, opts = {}) {\n const o = typeof uri === \"object\" ? uri : opts;\n if (!o.transports ||\n (o.transports && typeof o.transports[0] === \"string\")) {\n o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"])\n .map((transportName) => DEFAULT_TRANSPORTS[transportName])\n .filter((t) => !!t);\n }\n super(uri, o);\n }\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n var _a, _b, _c;\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n const discardPacket = this.flags.volatile && !isTransportWritable;\n if (discardPacket) {\n }\n else if (isConnected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n // the packet has already been acknowledged\n return;\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n return;\n }\n delete this.acks[packet.id];\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n this._drainQueue(true);\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n if (!v) {\n this.skipReconnect = true;\n }\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), \n // @ts-ignore\n on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called when:\n *\n * - the low-level engine is closed\n * - the parser encountered a badly formatted packet\n * - all sockets are disconnected\n *\n * @private\n */\n onclose(reason, description) {\n var _a;\n this.cleanup();\n (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\nexport { Fetch, NodeXHR, XHR, NodeWebSocket, WebSocket, WebTransport, } from \"engine.io-client\";\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n"],"names":["App","registerPlugin","web","then","m","AppWeb","GoogleOAuthContext","createContext","useGoogleOAuth","context","useContext","Error","extractClientId","credentialResponse","_a","clientId","client_id","containerHeightMap","large","medium","small","GoogleLogin","onSuccess","onError","useOneTap","promptMomentNotification","type","theme","size","text","shape","logo_alignment","width","locale","click_listener","containerProps","props","btnContainerRef","useRef","scriptLoadedSuccessfully","onSuccessRef","current","onErrorRef","promptMomentNotificationRef","useEffect","_b","_c","_d","_e","_f","_g","_h","_j","window","google","accounts","id","initialize","callback","credential","call","select_by","renderButton","prompt","cancel","ref","style","height","exports","lottie","React","_interopDefaultLegacy","e","lottie__default","React__default","_arrayLikeToArray","r","a","length","n","Array","_arrayWithHoles","isArray","_defineProperty","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","_iterableToArrayLimit","l","Symbol","iterator","i","u","f","o","next","done","push","return","_nonIterableRest","TypeError","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","apply","_objectSpread2","arguments","forEach","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","_objectWithoutPropertiesLoose","s","includes","propertyIsEnumerable","hasOwnProperty","_slicedToArray","_unsupportedIterableToArray","_toPrimitive","toPrimitive","String","Number","toString","slice","constructor","name","from","test","_excluded$1","useLottie","animationData","loop","autoplay","initialSegment","onComplete","onLoopComplete","onEnterFrame","onSegmentStart","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","onDestroy","lottieRef","renderer","assetsPath","rendererSettings","rest","_useState2","useState","animationLoaded","setAnimationLoaded","animationInstanceRef","animationContainer","play","stop","pause","setSpeed","speed","goToAndPlay","isFrame","goToAndStop","setDirection","direction","playSegments","segments","forceFlag","setSubframe","useSubFrames","getDuration","inFrames","destroy","undefined","loadAnimation","forcedConfigs","config","container","onUnmount","currentRawFrame","setSegment","resetSegments","listeners","handler","listener","deregisterList","map","addEventListener","removeEventListener","deregister","View","createElement","animationContainerRef","animationItem","getContainerVisibility","_container$getBoundin","getBoundingClientRect","top","innerHeight","getContainerCursorPosition","cursorX","cursorY","_container$getBoundin2","x","left","y","useInitInteractivity","_ref","wrapperRef","mode","actions","wrapper","scrollModeHandler","assignedSegment","scrollHandler","currentPercent","action","find","_ref2","visibility","frames","frameToGo","Math","ceil","firstFrame","isPaused","document","cursorModeHandler","handleCursor","_x","_y","pos","_ref3","position","isNaN","xPercent","yPercent","mouseMoveHandler","ev","clientX","clientY","mouseOutHandler","useLottieInteractivity","_ref4","lottieObj","_excluded","Lottie","interactivity","lottieProps","_useLottie","get","factory","navigator","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","len","attr","prototype","getDescriptor","object","prop","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","this","audios","_volume","_isMuted","addAudio","audio","resume","setRate","rateValue","createAudio","assetPath","Howl","src","isPlaying","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","arr","Uint8ClampedArray","Float32Array","Int16Array","createSizedArray","_typeof$6","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","userAgent","_shouldRoundValues","bmPow","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","max","bmMin","min","BMMath","ProjectInterface$1","propertyNames","random","abs","val","absArr","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","bmRnd","round","styleDiv","element","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","totalFrames","BMDestroyEvent","target","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","h","v","g","b","p","q","RGBtoHSV","d","addSaturationToRGB","color","offset","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","path","data","_workerSelf","setupWorker","fn","Worker","Blob","blob","url","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","j","jLen","k","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","comp","findComp","__used","JSON","parse","stringify","ks","it","checkVersion","minimum","animVersionString","animVersion","split","minimumVersion","checkText","iterateLayers","textLayer","documentData","assets","checkChars","chars","charData","ip","op","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","c","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","indexOf","response","responseText","load","fullPath","errorCallback","XMLHttpRequest","err","onreadystatechange","readyState","status","open","join","error","send","completeData","payload","animation","event","process","createProcess","processId","location","origin","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","ctx","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","originalPath","imagePath","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","bind","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","append","appendChild","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","splice","markerParser","parsePayloadLines","line","lines","keysCount","trim","_markers","markers","_marker","markerData","time","tm","duration","dr","cm","_","__","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","key","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","frameRate","frameMult","playSpeed","playDirection","playCount","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","params","animType","RendererClass","globalData","defs","setProjectInterface","parseInt","autoloadSegments","setupAnimation","lastIndexOf","substr","fileName","trigger","setData","wrapperAttributes","attributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","setTimeout","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","marker","numValue","frameModifier","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","init","end","pendingFrame","setLoop","isLooping","getPath","getAssetData","hide","show","updateDocumentData","index","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","animItem","subtractPlayingCount","registerAnimation","elem","addPlayingCount","activate","nowTime","elapsedTime","requestAnimationFrame","first","searchAnimations","standalone","animElements","concat","getElementsByClassName","lenAnims","setAttribute","body","getElementsByTagName","innerText","div","freeze","unfreeze","getRegisteredAnimations","animations","BezierFactory","str","replace","beziers","bezEasing","BezierEasing","kSplineTableSize","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","C","calcBezier","aT","getSlope","points","_p","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","BezierData","segmentLength","PointData","partial","partialLength","storedData","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","to","ti","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","out","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","values","c1","cos","c2","c3","s1","s2","s3","getValueAtCurrentTime","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","getValue","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","clone","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","paths","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","reset","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","scale","sz","setTransform","translate","tx","tz","transform","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","setLocation","href","setSubframeRendering","setPrefix","prefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","useWebWorker","setIDPrefix","__getFactory","version","scripts","myScript","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","pop","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","box","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","depth","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","cur","prevIndex","nextIndex","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","center","radius","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","right","mid","flex","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","styles","fStyle","fWeight","toLowerCase","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","group","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","derivative","denom","tcusp","square","root","p10","p11","p20","p21","bounds","bottom","other","shapeSegmentInverted","pointsType","count","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","w","combinedCharacters","BLACK_FLAG_CODE_POINT","REGIONAL_CHARACTER_A_CODE_POINT","REGIONAL_CHARACTER_Z_CODE_POINT","surrogateModifiers","setUpNode","font","family","parentNode","fontFamily","node","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","parent","createHelper","def","helper","engine","fontProps","tHelper","fFamily","textContent","fClass","tCanvasHelper","OffscreenCanvas","measureText","getComputedTextLength","getCodePoint","string","codePoint","charCodeAt","second","isRegionalCode","Font","typekitLoaded","_warned","Date","now","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","found","ch","list","cache","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","querySelectorAll","rel","sc","getCharData","_char","console","warn","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","removeChild","SlotManager","slotFactory","RenderableElement","slots","assign","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","content","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","getType","prepareProperties","isVisible","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","getElementById","pathValue","setupGlobalData","fontsContainer","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","localTransforms","renderLocalTransform","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","source","createFilter","filters","Effect","effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","level","caches","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","_i","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","render","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","update","updated","obj","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","charAt","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","add","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","indexes","fh","fs","fb","rn","totalChars","newInd","currentInd","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getMult","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","svgElement","ariaLabel","title","titleElement","titleId","description","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","className","focusable","filterSize","runExpressions","destroyed","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","fromCharCode","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","insertBefore","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","loadLuma","_svg","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","fill","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","stack","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","buffer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","rule","actionFlag","containerStyle","mozTransformOrigin","setContext","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","backgroundColor","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","item","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","children","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","overflow","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","nodecrypto","global","rngname","startdenom","significance","ARC4","keylen","me","S","copy","flatten","result","typ","mixkey","seed","smear","stringseed","tostring","options","shortseed","entropy","randomBytes","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","screen","autoseed","arc4","prng","int32","quick","pass","is_math_call","state","initialize$2","propTypes","SHAPE","_typeof$1","ExpressionManager","fetch","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","noOp","_value","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","_name","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_data","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","anchor_point","startTime","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","enabled","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","view","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","start","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","_typeof","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","module","toPascalCase","camelCase","match","toUpperCase","toCamelCase","mergeClasses","classes","array","Boolean","hasA11yProp","startsWith","defaultAttributes","xmlns","viewBox","strokeLinecap","strokeLinejoin","Icon","forwardRef","absoluteStrokeWidth","iconNode","tag","attrs","Check","iconName","Component","displayName","createLucideIcon","PACKET_TYPES","create","PACKET_TYPES_REVERSE","ERROR_PACKET","withNativeBlob","withNativeArrayBuffer","ArrayBuffer","isView","encodePacket","supportsBinary","encodeBlobAsBase64","fileReader","FileReader","onload","readAsDataURL","toArray","byteOffset","byteLength","TEXT_ENCODER","lookup","decodePacket","encodedPacket","binaryType","mapBinary","decodeBase64Packet","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","arraybuffer","bytes","decode","SEPARATOR","createPacketEncoderStream","TransformStream","packet","controller","arrayBuffer","encoded","TextEncoder","encode","encodePacketToBinary","payloadLength","header","DataView","setUint8","setUint16","setBigUint64","BigInt","enqueue","TEXT_DECODER","chunks","reduce","acc","chunk","concatChunks","Emitter","mixin","on","_callbacks","once","off","removeListener","removeAllListeners","emit","emitReserved","hasListeners","nextTick","Promise","resolve","setTimeoutFn","globalThisShim","self","Function","pick","NATIVE_SET_TIMEOUT","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","clearTimeoutFn","randomString","TransportError","reason","super","Transport","query","socket","forceBase64","doOpen","close","doClose","onClose","packets","write","onOpen","onData","onPacket","details","onPause","createUri","schema","_hostname","_port","_query","hostname","port","secure","encodedQuery","encodeURIComponent","_polling","_poll","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","encodePayload","doWrite","uri","timestampRequests","timestampParam","b64","hasCORS","empty","BaseXHR","isSSL","protocol","xd","req","request","method","xhrStatus","pollXhr","Request","createRequest","_opts","_method","_uri","xdomain","_xhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","cookieJar","addCookies","withCredentials","requestTimeout","timeout","parseCookies","_onLoad","_onError","_index","requestsCount","requests","_cleanup","fromError","abort","attachEvent","unloadHandler","hasXHR2","newRequest","isReactNative","product","BaseWS","protocols","headers","ws","createSocket","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onerror","lastPacket","WebSocketCtor","WebSocket","MozWebSocket","transports","websocket","_packet","webtransport","_transport","WebTransport","transportOptions","catch","ready","createBidirectionalStream","stream","decoderStream","maxPayload","TextDecoder","expectedLength","isBinary","headerArray","getUint16","getUint32","createPacketDecoderStream","MAX_SAFE_INTEGER","reader","readable","pipeThrough","getReader","encoderStream","pipeTo","_writer","getWriter","read","polling","re","parts","exec","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","withEventListeners","OFFLINE_EVENT_LISTENERS","SocketWithoutUpgrade","writeBuffer","_prevBufferLen","_pingInterval","_pingTimeout","_maxPayload","_pingTimeoutTime","Infinity","parsedUri","_transportsByName","transportName","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","closeOnBeforeunload","qs","qry","pairs","_beforeunloadEventListener","transport","_offlineEventListener","_onClose","_cookieJar","createCookieJar","_open","createTransport","EIO","priorWebsocketSuccess","setTransport","_onDrain","_onPacket","flush","onHandshake","_sendPacket","_resetPingTimeout","code","pingInterval","pingTimeout","_pingTimeoutTimer","delay","upgrading","_getWritablePackets","payloadSize","utf8Length","_hasPingExpired","hasExpired","msg","compress","cleanupAndClose","waitForUpgrade","tryAllTransports","SocketWithUpgrade","_upgrades","_probe","failed","onTransportOpen","cleanup","freezeTransport","onTransportClose","onupgrade","_filterUpgrades","upgrades","filteredUpgrades","Socket","withNativeFile","File","hasBinary","toJSON","deconstructPacket","packetData","pack","_deconstructPacket","attachments","placeholder","reconstructPacket","_reconstructPacket","RESERVED_EVENTS","PacketType","Encoder","replacer","EVENT","ACK","encodeAsString","encodeAsBinary","BINARY_EVENT","BINARY_ACK","nsp","deconstruction","isObject","Decoder","reviver","reconstructor","decodeString","isBinaryEvent","BinaryReconstructor","takeBinaryData","buf","tryParse","isPayloadValid","CONNECT","DISCONNECT","CONNECT_ERROR","finishedReconstruction","reconPack","binData","connect","connect_error","disconnect","disconnecting","newListener","io","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","flags","auth","_autoConnect","disconnected","subEvents","subs","onpacket","_readyState","retries","fromQueue","volatile","_addToQueue","ack","_registerAckCallback","isTransportWritable","isConnected","notifyOutgoingListeners","ackTimeout","timer","withError","emitWithAck","reject","arg1","arg2","tryCount","pending","responseArgs","_drainQueue","force","_sendConnectPacket","_pid","pid","_lastOffset","_clearAcks","some","onconnect","onevent","onack","ondisconnect","message","emitEvent","_anyListeners","sent","emitBuffered","subDestroy","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","Backoff","factor","jitter","attempts","rand","deviation","setMin","setMax","setJitter","Manager","nsps","reconnection","reconnectionAttempts","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","decoder","autoConnect","_reconnection","skipReconnect","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","maybeReconnectOnOpen","_reconnecting","reconnect","openSubDestroy","errorSub","onping","ondata","ondecoded","_destroy","_close","onreconnect","attempt","parsed","loc","sameNamespace","forceNew","multiplex"],"sourceRoot":""}
|