{"version":3,"file":"static/chunks/511-aeb186d335fea141.js","mappings":"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","sources":["webpack://_N_E/./node_modules/lodash/_baseTrim.js","webpack://_N_E/./node_modules/lodash/_trimmedEndIndex.js","webpack://_N_E/./node_modules/lodash/debounce.js","webpack://_N_E/./node_modules/lodash/isObject.js","webpack://_N_E/./node_modules/lodash/isSymbol.js","webpack://_N_E/./node_modules/lodash/now.js","webpack://_N_E/./node_modules/lodash/toNumber.js","webpack://_N_E/./node_modules/lottie-react/build/index.umd.js","webpack://_N_E/./node_modules/lottie-web/build/player/lottie.js","webpack://_N_E/./node_modules/next/dist/client/image-component.js","webpack://_N_E/./node_modules/next/dist/shared/lib/amp-context.js","webpack://_N_E/./node_modules/next/dist/shared/lib/amp-mode.js","webpack://_N_E/./node_modules/next/dist/shared/lib/get-img-props.js","webpack://_N_E/./node_modules/next/dist/shared/lib/head.js","webpack://_N_E/./node_modules/next/dist/shared/lib/image-blur-svg.js","webpack://_N_E/./node_modules/next/dist/shared/lib/image-config-context.js","webpack://_N_E/./node_modules/next/dist/shared/lib/image-config.js","webpack://_N_E/./node_modules/next/dist/shared/lib/image-external.js","webpack://_N_E/./node_modules/next/dist/shared/lib/image-loader.js","webpack://_N_E/./node_modules/next/dist/shared/lib/side-effect.js","webpack://_N_E/./node_modules/next/dist/shared/lib/utils/warn-once.js","webpack://_N_E/./node_modules/next/image.js","webpack://_N_E/./node_modules/react-device-detect/dist/lib.js","webpack://_N_E/./node_modules/ua-parser-js/dist/ua-parser.min.js"],"sourcesContent":["var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\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 _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n }\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n }\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n }\n function _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n }\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n }\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n }\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\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 _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n }\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\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 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\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\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\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\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\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\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\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\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\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\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\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\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\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\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\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\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\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\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\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\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\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\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\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\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\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\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\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\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\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\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(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\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\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 }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\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\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\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\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\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\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\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\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); // 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\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\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\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\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\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\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\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\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\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\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\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\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\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\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\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\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\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\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\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\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\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\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\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\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\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\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\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\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\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\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\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\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\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\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\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\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\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\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\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\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\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\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\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\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\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\n _workerSelf.dataManager.completeData(animation);\n\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\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\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\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\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\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\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\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\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\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\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\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\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\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\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\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\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\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\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\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\n this._cbs[eventName].push(callback);\n\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\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\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\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\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\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\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\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\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\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\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\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\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\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\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\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\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\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\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\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\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\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\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\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\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\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\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\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\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\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\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\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\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\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\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\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\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\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\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\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\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\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\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\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\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\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\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\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // 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\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\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\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\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\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\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\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\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\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\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\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\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\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\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\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\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\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) {// TODO: decide how to handle catch case\n }\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\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\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\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\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\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\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\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\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\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\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\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; // moduleOb.start = start;\n\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 /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\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\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\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\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\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\n return currentT;\n }\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\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\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\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\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 _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\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\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\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\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\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\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\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\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\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\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\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\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\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\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\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\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\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\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\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\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\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\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\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\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\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\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\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\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\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\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\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\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\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\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\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\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\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\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\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\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\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\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\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\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\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\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\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\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\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\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\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\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\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\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\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\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\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\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\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\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\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\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\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\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\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\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\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\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\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\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\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\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\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\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\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\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\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\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\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\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\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\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\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\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\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\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\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\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\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\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\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\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\n var p;\n\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\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\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\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\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\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\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\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\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\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\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\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\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\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\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\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\n return newPath;\n };\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\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\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\n shapePath._length = 0;\n shapePath.c = false;\n }\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\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\n return cloned;\n }\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\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\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\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\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\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\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){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\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\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\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\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\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\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\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\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\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\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\n return true;\n }\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\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\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\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\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\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\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\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\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\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\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\n var _cw = this.d !== 3;\n\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\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\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\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\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\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;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\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\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 /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\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\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\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\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\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\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\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\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\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\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\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\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\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\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\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\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); // 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\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\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\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\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\n return this;\n }\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\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\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 /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\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\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\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\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\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 {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\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\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\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\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\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\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\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\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\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\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\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\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\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\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\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(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\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; // lottie.start = start;\n\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.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\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\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\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 var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\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\n if (this._isAnimated) {\n data.setAsAnimated();\n }\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\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\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\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\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\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\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\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\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\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\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\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\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\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\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\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\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\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\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\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\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\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\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\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\n this.addPaths(newShapesData, localShapeCollection);\n }\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\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\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\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\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\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\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\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\n shapes.push(shapePath);\n\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\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\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); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\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); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\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\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\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\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\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\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\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\n return clonedPath;\n };\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\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\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\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\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\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\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\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\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\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\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\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\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\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\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\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\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\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\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\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(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\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\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\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\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\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\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\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\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); // 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\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\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\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\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\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\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\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\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\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\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\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\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\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\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\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\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\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\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\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\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\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\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\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\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\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\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\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\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\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\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\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\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\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\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\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\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;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\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\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\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\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\n return clonedPath;\n };\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\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\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\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\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\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\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\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\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\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\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\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\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\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\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\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\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\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\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\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\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\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\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\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\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\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\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\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\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\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\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\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\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\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\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\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\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\n return direction;\n }\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\n if (!path.c) {\n count -= 1;\n }\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\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\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\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\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\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\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\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\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\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 } // Miter\n\n\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\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\n return p0;\n }\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\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\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\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\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\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\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\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\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\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\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\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\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\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\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\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\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\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\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\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\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\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\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\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\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\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\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 = []; // Hindi characters\n\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\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\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\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\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); // Remember width with no applied web font\n\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\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\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\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\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\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\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\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\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\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\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\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\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\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\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\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\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\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\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\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\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\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\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\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\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\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\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\n i += 1;\n }\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\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\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\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\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\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\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\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator†letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\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\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\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\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\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\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\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 /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\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\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\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\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\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\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\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\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\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\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\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\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(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\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 /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\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\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\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\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\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\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\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\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\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\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\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\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\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\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\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\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\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\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\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\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\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\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\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\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// 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\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\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\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\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\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\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\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\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\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\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\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\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\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\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\n path = createNS('path');\n\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\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 } // TODO move this to a factory or to a constructor\n\n\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\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\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\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\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\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\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\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\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\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\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\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\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\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\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\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\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\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 } // 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\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 } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\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\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\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\n return fil;\n }\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\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\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\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\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\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\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\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\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\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; // If this layer acts as a mask for the following layer\n\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\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\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\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\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\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\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\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\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\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\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\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\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\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\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\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\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\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\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\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\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\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\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\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\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\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // 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\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\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\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; // 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\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\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\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\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\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\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\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\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\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\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\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\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\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\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\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\n this._mdf = !forceRender;\n }\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\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\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\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\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\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\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\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\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\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\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\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\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\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\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\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\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\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\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\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\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\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\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\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\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\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\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\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\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\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\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\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\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\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (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\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\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\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\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\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\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // 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\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\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\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\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\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\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\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\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\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\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\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\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\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\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\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\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 = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\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\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\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\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\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\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\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\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); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\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\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\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\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\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\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\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\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\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\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\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\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\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\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\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\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\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // 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); // It's a surrogate pair (this is the Low surrogate)\n\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\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\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\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\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\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\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\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\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\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\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\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\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\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\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\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\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\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\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\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\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\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\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\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\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\n letterData.anIndexes[j] = newInd;\n }\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\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\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\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\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\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\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\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\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\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\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\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\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\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\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\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\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\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;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\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\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\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\n mult = easer(mult);\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\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\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\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\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\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\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\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\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\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\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\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\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\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\n i = len;\n\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\n this._pathData.pi = pathInfo;\n }\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\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\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 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\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\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\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\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\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\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\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\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\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\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\n flag = true; // Force alignment only works with a single line for now\n\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\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\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\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\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\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); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\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\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\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\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\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\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\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\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\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\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\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\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\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\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\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\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\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\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\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\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\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\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\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\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\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\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\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\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\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\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\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\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\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\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\n letterO = elemOpacity;\n }\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\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\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\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\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\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\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\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\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\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\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\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\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\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\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\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\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\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\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\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\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\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\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\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\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\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\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\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\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\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\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\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; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\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\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); // 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\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\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\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\n return this.bbox;\n };\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\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\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\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\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\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\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\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\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\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\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\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\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // 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\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\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\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\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\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\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\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\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\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\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\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\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\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\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\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\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\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\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\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\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\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 ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\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\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\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\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\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\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\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\n extendPrototype([SVGRendererBase], SVGRenderer);\n\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\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\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\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\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\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; // 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 /*\r\n var svgString = [\r\n '<svg xmlns=\"http://www.w3.org/2000/svg\">',\r\n '<filter id=\"' + id + '\">',\r\n '<feColorMatrix type=\"matrix\" color-interpolation-filters=\"sRGB\" values=\"',\r\n '0.3, 0.3, 0.3, 0, 0, ',\r\n '0.3, 0.3, 0.3, 0, 0, ',\r\n '0.3, 0.3, 0.3, 0, 0, ',\r\n '0.3, 0.3, 0.3, 0, 0',\r\n '\"/>',\r\n '</filter>',\r\n '</svg>',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\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\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\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\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\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\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\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\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\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\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\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\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\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\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\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\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\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); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // 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\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]; // 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\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // 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\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); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // 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\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\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\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\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\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\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\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\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\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\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\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\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\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\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\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\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\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\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\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\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\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\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\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\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\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\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\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\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\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\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\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\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\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\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // 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\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\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\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\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\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\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\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\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\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\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\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\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\n styledShape.trNodes = shapeNodes;\n }\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\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\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\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\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\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\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\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\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\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\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\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\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\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\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\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\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\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\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; // this.tHelper.font = this.values.fValue;\n\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\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\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\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\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\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\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\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\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'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\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\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\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\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\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\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\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\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\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\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\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\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\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\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\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\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\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\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\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\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\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\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\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\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\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\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\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\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\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\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;\r\n for(i=0;i<len;i+=1){\r\n if(this.elements[i] && this.elements[i].data.ty === 0){\r\n this.elements[i].resize(this.globalData.transformCanvas);\r\n }\r\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\n CanvasRendererBase.prototype.destroy = function () {\n if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n var i;\n var len = this.layers ? this.layers.length : 0;\n\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\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\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\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; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\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\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\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 if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\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){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\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\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\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\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\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\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\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\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\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\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\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\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\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\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\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\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\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\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\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\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\n this.nativeContext.fill(rule);\n };\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\n this.nativeContext.fillRect(x, y, w, h);\n };\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\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\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\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\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\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\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\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\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\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\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\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\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\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\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\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\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\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\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\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\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\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\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // 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\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\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\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\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\n if (len <= 1) {\n return;\n }\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\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\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\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\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\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\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\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\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\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\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\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\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\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\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\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\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; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\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\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\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\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\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\n this.checkParenting();\n };\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\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\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\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\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\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 } // tSpan.setAttribute('visibility', 'hidden');\n\n\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\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\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\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\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\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\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\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\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\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\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\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\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 } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\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\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\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\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\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\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; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\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\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\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\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\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\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\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\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\n if (this.a) {\n var diffVector;\n\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\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\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\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\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\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\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\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\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\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\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\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\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\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\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\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\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\n i += 1;\n }\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\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\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\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\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\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\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\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\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\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\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\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\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; // Mask animation\n\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\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\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\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\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\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\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\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\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\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\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\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\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\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\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\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\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\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\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\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(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\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 // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // 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\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\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\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 } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\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\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\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\n math['seed' + rngname] = seedrandom; //\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\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 = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\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 } // The \"g\" method returns the next (count) outputs as one number.\n\n\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\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\n me.i = i;\n me.j = j;\n return r; // 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 // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\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 // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\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\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\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\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\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 // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\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\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\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\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\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\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\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\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\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\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\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\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\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\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\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\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\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\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\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\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\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\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\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\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\n return [r, g, b, val[3]];\n }\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\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\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\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\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\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\n return path;\n }\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\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\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.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; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\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\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(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\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; // 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\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\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\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\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\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\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\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\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\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\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\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\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\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\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // 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\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\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\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\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\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\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\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\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\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\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\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\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\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\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\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\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\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\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\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\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\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\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\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\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\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\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\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\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\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\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\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\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\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\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\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\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\n if (val <= 0) {\n return interfaceFunction;\n }\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\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\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\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\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\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\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\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\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\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\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\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\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\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\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') {// 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\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\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\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\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\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\n default:\n return interfaceFunction.transform;\n }\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 }); // interfaceFunction.content = interfaceFunction;\n\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\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\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\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\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\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\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\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\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\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\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\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\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\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\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\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\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\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\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\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\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\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\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\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\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\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\n return this._cachingAtTime.value;\n }\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\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\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\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\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\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\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\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\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\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\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\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\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\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\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\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\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\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\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\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\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\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\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\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\n i += 1;\n }\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\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\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\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\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\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\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\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\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\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\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\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\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\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\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\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\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\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\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\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\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\n i += 1;\n }\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\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\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\n if (magnitude === 0) {\n return [0, 0];\n }\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\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\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\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\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\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\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\n return currentValue;\n };\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\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\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\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\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\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\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\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\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\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\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\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\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\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\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\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\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\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\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\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\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\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\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\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\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\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\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\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'); // Red\n\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 } // Green\n\n\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 } // Blue\n\n\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 } // Alpha\n\n\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 } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\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\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\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\n while (cnt <= 256) {\n perc = cnt / 256;\n\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\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\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\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\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\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\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\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\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\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\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\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\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\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\n _svgMatteSymbols.push(mask);\n\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\n elem.setMatte(mask.layerId);\n };\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\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\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\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; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\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\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\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\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\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\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); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\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","\"use client\";\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Image\", {\n enumerable: true,\n get: function() {\n return Image;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _interop_require_wildcard = require(\"@swc/helpers/_/_interop_require_wildcard\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(require(\"react\"));\nconst _head = /*#__PURE__*/ _interop_require_default._(require(\"../shared/lib/head\"));\nconst _getimgprops = require(\"../shared/lib/get-img-props\");\nconst _imageconfig = require(\"../shared/lib/image-config\");\nconst _imageconfigcontext = require(\"../shared/lib/image-config-context\");\nconst _warnonce = require(\"../shared/lib/utils/warn-once\");\nconst _imageloader = /*#__PURE__*/ _interop_require_default._(require(\"next/dist/shared/lib/image-loader\"));\n\n// This is replaced by webpack define plugin\nconst configEnv = process.env.__NEXT_IMAGE_OPTS;\nif (typeof window === \"undefined\") {\n globalThis.__NEXT_IMAGE_IMPORTED = true;\n}\n// See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\nfunction handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized) {\n const src = img == null ? void 0 : img.src;\n if (!img || img[\"data-loaded-src\"] === src) {\n return;\n }\n img[\"data-loaded-src\"] = src;\n const p = \"decode\" in img ? img.decode() : Promise.resolve();\n p.catch(()=>{}).then(()=>{\n if (!img.parentElement || !img.isConnected) {\n // Exit early in case of race condition:\n // - onload() is called\n // - decode() is called but incomplete\n // - unmount is called\n // - decode() completes\n return;\n }\n if (placeholder === \"blur\") {\n setBlurComplete(true);\n }\n if (onLoadRef == null ? void 0 : onLoadRef.current) {\n // Since we don't have the SyntheticEvent here,\n // we must create one with the same shape.\n // See https://reactjs.org/docs/events.html\n const event = new Event(\"load\");\n Object.defineProperty(event, \"target\", {\n writable: false,\n value: img\n });\n let prevented = false;\n let stopped = false;\n onLoadRef.current({\n ...event,\n nativeEvent: event,\n currentTarget: img,\n target: img,\n isDefaultPrevented: ()=>prevented,\n isPropagationStopped: ()=>stopped,\n persist: ()=>{},\n preventDefault: ()=>{\n prevented = true;\n event.preventDefault();\n },\n stopPropagation: ()=>{\n stopped = true;\n event.stopPropagation();\n }\n });\n }\n if (onLoadingCompleteRef == null ? void 0 : onLoadingCompleteRef.current) {\n onLoadingCompleteRef.current(img);\n }\n if (process.env.NODE_ENV !== \"production\") {\n const origSrc = new URL(src, \"http://n\").searchParams.get(\"url\") || src;\n if (img.getAttribute(\"data-nimg\") === \"fill\") {\n if (!unoptimized && (!img.getAttribute(\"sizes\") || img.getAttribute(\"sizes\") === \"100vw\")) {\n let widthViewportRatio = img.getBoundingClientRect().width / window.innerWidth;\n if (widthViewportRatio < 0.6) {\n (0, _warnonce.warnOnce)('Image with src \"' + origSrc + '\" has \"fill\" but is missing \"sizes\" prop. Please add it to improve page performance. Read more: https://nextjs.org/docs/api-reference/next/image#sizes');\n }\n }\n if (img.parentElement) {\n const { position } = window.getComputedStyle(img.parentElement);\n const valid = [\n \"absolute\",\n \"fixed\",\n \"relative\"\n ];\n if (!valid.includes(position)) {\n (0, _warnonce.warnOnce)('Image with src \"' + origSrc + '\" has \"fill\" and parent element with invalid \"position\". Provided \"' + position + '\" should be one of ' + valid.map(String).join(\",\") + \".\");\n }\n }\n if (img.height === 0) {\n (0, _warnonce.warnOnce)('Image with src \"' + origSrc + '\" has \"fill\" and a height value of 0. This is likely because the parent element of the image has not been styled to have a set height.');\n }\n }\n const heightModified = img.height.toString() !== img.getAttribute(\"height\");\n const widthModified = img.width.toString() !== img.getAttribute(\"width\");\n if (heightModified && !widthModified || !heightModified && widthModified) {\n (0, _warnonce.warnOnce)('Image with src \"' + origSrc + '\" has either width or height modified, but not the other. If you use CSS to change the size of your image, also include the styles \\'width: \"auto\"\\' or \\'height: \"auto\"\\' to maintain the aspect ratio.');\n }\n }\n });\n}\nfunction getDynamicProps(fetchPriority) {\n const [majorStr, minorStr] = _react.version.split(\".\");\n const major = parseInt(majorStr, 10);\n const minor = parseInt(minorStr, 10);\n if (major > 18 || major === 18 && minor >= 3) {\n // In React 18.3.0 or newer, we must use camelCase\n // prop to avoid \"Warning: Invalid DOM property\".\n // See https://github.com/facebook/react/pull/25927\n return {\n fetchPriority\n };\n }\n // In React 18.2.0 or older, we must use lowercase prop\n // to avoid \"Warning: Invalid DOM property\".\n return {\n fetchpriority: fetchPriority\n };\n}\nconst ImageElement = /*#__PURE__*/ (0, _react.forwardRef)((param, forwardedRef)=>{\n let { src , srcSet , sizes , height , width , decoding , className , style , fetchPriority , placeholder , loading , unoptimized , fill , onLoadRef , onLoadingCompleteRef , setBlurComplete , setShowAltText , onLoad , onError , ...rest } = param;\n return /*#__PURE__*/ _react.default.createElement(\"img\", {\n ...rest,\n ...getDynamicProps(fetchPriority),\n // It's intended to keep `loading` before `src` because React updates\n // props in order which causes Safari/Firefox to not lazy load properly.\n // See https://github.com/facebook/react/issues/25883\n loading: loading,\n width: width,\n height: height,\n decoding: decoding,\n \"data-nimg\": fill ? \"fill\" : \"1\",\n className: className,\n style: style,\n // It's intended to keep `src` the last attribute because React updates\n // attributes in order. If we keep `src` the first one, Safari will\n // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n // updated by React. That causes multiple unnecessary requests if `srcSet`\n // and `sizes` are defined.\n // This bug cannot be reproduced in Chrome or Firefox.\n sizes: sizes,\n srcSet: srcSet,\n src: src,\n ref: (0, _react.useCallback)((img)=>{\n if (forwardedRef) {\n if (typeof forwardedRef === \"function\") forwardedRef(img);\n else if (typeof forwardedRef === \"object\") {\n // @ts-ignore - .current is read only it's usually assigned by react internally\n forwardedRef.current = img;\n }\n }\n if (!img) {\n return;\n }\n if (onError) {\n // If the image has an error before react hydrates, then the error is lost.\n // The workaround is to wait until the image is mounted which is after hydration,\n // then we set the src again to trigger the error handler (if there was an error).\n // eslint-disable-next-line no-self-assign\n img.src = img.src;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!src) {\n console.error('Image is missing required \"src\" property:', img);\n }\n if (img.getAttribute(\"alt\") === null) {\n console.error('Image is missing required \"alt\" property. Please add Alternative Text to describe the image for screen readers and search engines.');\n }\n }\n if (img.complete) {\n handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized);\n }\n }, [\n src,\n placeholder,\n onLoadRef,\n onLoadingCompleteRef,\n setBlurComplete,\n onError,\n unoptimized,\n forwardedRef\n ]),\n onLoad: (event)=>{\n const img = event.currentTarget;\n handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized);\n },\n onError: (event)=>{\n // if the real image fails to load, this will ensure \"alt\" is visible\n setShowAltText(true);\n if (placeholder === \"blur\") {\n // If the real image fails to load, this will still remove the placeholder.\n setBlurComplete(true);\n }\n if (onError) {\n onError(event);\n }\n }\n });\n});\nconst Image = /*#__PURE__*/ (0, _react.forwardRef)((props, forwardedRef)=>{\n const configContext = (0, _react.useContext)(_imageconfigcontext.ImageConfigContext);\n const config = (0, _react.useMemo)(()=>{\n const c = configEnv || configContext || _imageconfig.imageConfigDefault;\n const allSizes = [\n ...c.deviceSizes,\n ...c.imageSizes\n ].sort((a, b)=>a - b);\n const deviceSizes = c.deviceSizes.sort((a, b)=>a - b);\n return {\n ...c,\n allSizes,\n deviceSizes\n };\n }, [\n configContext\n ]);\n const { onLoad , onLoadingComplete } = props;\n const onLoadRef = (0, _react.useRef)(onLoad);\n (0, _react.useEffect)(()=>{\n onLoadRef.current = onLoad;\n }, [\n onLoad\n ]);\n const onLoadingCompleteRef = (0, _react.useRef)(onLoadingComplete);\n (0, _react.useEffect)(()=>{\n onLoadingCompleteRef.current = onLoadingComplete;\n }, [\n onLoadingComplete\n ]);\n const [blurComplete, setBlurComplete] = (0, _react.useState)(false);\n const [showAltText, setShowAltText] = (0, _react.useState)(false);\n const { props: imgAttributes , meta: imgMeta } = (0, _getimgprops.getImgProps)(props, {\n defaultLoader: _imageloader.default,\n imgConf: config,\n blurComplete,\n showAltText\n });\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(ImageElement, {\n ...imgAttributes,\n unoptimized: imgMeta.unoptimized,\n placeholder: imgMeta.placeholder,\n fill: imgMeta.fill,\n onLoadRef: onLoadRef,\n onLoadingCompleteRef: onLoadingCompleteRef,\n setBlurComplete: setBlurComplete,\n setShowAltText: setShowAltText,\n ref: forwardedRef\n }), imgMeta.priority ? // Note how we omit the `href` attribute, as it would only be relevant\n // for browsers that do not support `imagesrcset`, and in those cases\n // it would likely cause the incorrect image to be preloaded.\n //\n // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset\n /*#__PURE__*/ _react.default.createElement(_head.default, null, /*#__PURE__*/ _react.default.createElement(\"link\", {\n key: \"__nimg-\" + imgAttributes.src + imgAttributes.srcSet + imgAttributes.sizes,\n rel: \"preload\",\n as: \"image\",\n href: imgAttributes.srcSet ? undefined : imgAttributes.src,\n imageSrcSet: imgAttributes.srcSet,\n imageSizes: imgAttributes.sizes,\n crossOrigin: imgAttributes.crossOrigin,\n referrerPolicy: imgAttributes.referrerPolicy,\n ...getDynamicProps(imgAttributes.fetchPriority)\n })) : null);\n});\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=image-component.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"AmpStateContext\", {\n enumerable: true,\n get: function() {\n return AmpStateContext;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _react = /*#__PURE__*/ _interop_require_default._(require(\"react\"));\nconst AmpStateContext = _react.default.createContext({});\nif (process.env.NODE_ENV !== \"production\") {\n AmpStateContext.displayName = \"AmpStateContext\";\n}\n\n//# sourceMappingURL=amp-context.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isInAmpMode\", {\n enumerable: true,\n get: function() {\n return isInAmpMode;\n }\n});\nfunction isInAmpMode(param) {\n let { ampFirst =false , hybrid =false , hasQuery =false } = param === void 0 ? {} : param;\n return ampFirst || hybrid && hasQuery;\n}\n\n//# sourceMappingURL=amp-mode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getImgProps\", {\n enumerable: true,\n get: function() {\n return getImgProps;\n }\n});\nconst _warnonce = require(\"./utils/warn-once\");\nconst _imageblursvg = require(\"./image-blur-svg\");\nconst _imageconfig = require(\"./image-config\");\nconst VALID_LOADING_VALUES = [\n \"lazy\",\n \"eager\",\n undefined\n];\nfunction isStaticRequire(src) {\n return src.default !== undefined;\n}\nfunction isStaticImageData(src) {\n return src.src !== undefined;\n}\nfunction isStaticImport(src) {\n return typeof src === \"object\" && (isStaticRequire(src) || isStaticImageData(src));\n}\nconst allImgs = new Map();\nlet perfObserver;\nfunction getInt(x) {\n if (typeof x === \"undefined\") {\n return x;\n }\n if (typeof x === \"number\") {\n return Number.isFinite(x) ? x : NaN;\n }\n if (typeof x === \"string\" && /^[0-9]+$/.test(x)) {\n return parseInt(x, 10);\n }\n return NaN;\n}\nfunction getWidths(param, width, sizes) {\n let { deviceSizes , allSizes } = param;\n if (sizes) {\n // Find all the \"vw\" percent sizes used in the sizes prop\n const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g;\n const percentSizes = [];\n for(let match; match = viewportWidthRe.exec(sizes); match){\n percentSizes.push(parseInt(match[2]));\n }\n if (percentSizes.length) {\n const smallestRatio = Math.min(...percentSizes) * 0.01;\n return {\n widths: allSizes.filter((s)=>s >= deviceSizes[0] * smallestRatio),\n kind: \"w\"\n };\n }\n return {\n widths: allSizes,\n kind: \"w\"\n };\n }\n if (typeof width !== \"number\") {\n return {\n widths: deviceSizes,\n kind: \"w\"\n };\n }\n const widths = [\n ...new Set(// > This means that most OLED screens that say they are 3x resolution,\n // > are actually 3x in the green color, but only 1.5x in the red and\n // > blue colors. Showing a 3x resolution image in the app vs a 2x\n // > resolution image will be visually the same, though the 3x image\n // > takes significantly more data. Even true 3x resolution screens are\n // > wasteful as the human eye cannot see that level of detail without\n // > something like a magnifying glass.\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [\n width,\n width * 2 /*, width * 3*/ \n ].map((w)=>allSizes.find((p)=>p >= w) || allSizes[allSizes.length - 1]))\n ];\n return {\n widths,\n kind: \"x\"\n };\n}\nfunction generateImgAttrs(param) {\n let { config , src , unoptimized , width , quality , sizes , loader } = param;\n if (unoptimized) {\n return {\n src,\n srcSet: undefined,\n sizes: undefined\n };\n }\n const { widths , kind } = getWidths(config, width, sizes);\n const last = widths.length - 1;\n return {\n sizes: !sizes && kind === \"w\" ? \"100vw\" : sizes,\n srcSet: widths.map((w, i)=>loader({\n config,\n src,\n quality,\n width: w\n }) + \" \" + (kind === \"w\" ? w : i + 1) + kind).join(\", \"),\n // It's intended to keep `src` the last attribute because React updates\n // attributes in order. If we keep `src` the first one, Safari will\n // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n // updated by React. That causes multiple unnecessary requests if `srcSet`\n // and `sizes` are defined.\n // This bug cannot be reproduced in Chrome or Firefox.\n src: loader({\n config,\n src,\n quality,\n width: widths[last]\n })\n };\n}\nfunction getImgProps(param, _state) {\n let { src , sizes , unoptimized =false , priority =false , loading , className , quality , width , height , fill =false , style , onLoad , onLoadingComplete , placeholder =\"empty\" , blurDataURL , fetchPriority , layout , objectFit , objectPosition , lazyBoundary , lazyRoot , ...rest } = param;\n const { imgConf , showAltText , blurComplete , defaultLoader } = _state;\n let config;\n let c = imgConf || _imageconfig.imageConfigDefault;\n if (\"allSizes\" in c) {\n config = c;\n } else {\n const allSizes = [\n ...c.deviceSizes,\n ...c.imageSizes\n ].sort((a, b)=>a - b);\n const deviceSizes = c.deviceSizes.sort((a, b)=>a - b);\n config = {\n ...c,\n allSizes,\n deviceSizes\n };\n }\n let loader = rest.loader || defaultLoader;\n // Remove property so it's not spread on <img> element\n delete rest.loader;\n delete rest.srcSet;\n // This special value indicates that the user\n // didn't define a \"loader\" prop or \"loader\" config.\n const isDefaultLoader = \"__next_img_default\" in loader;\n if (isDefaultLoader) {\n if (config.loader === \"custom\") {\n throw new Error('Image with src \"' + src + '\" is missing \"loader\" prop.' + \"\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader\");\n }\n } else {\n // The user defined a \"loader\" prop or config.\n // Since the config object is internal only, we\n // must not pass it to the user-defined \"loader\".\n const customImageLoader = loader;\n loader = (obj)=>{\n const { config: _ , ...opts } = obj;\n return customImageLoader(opts);\n };\n }\n if (layout) {\n if (layout === \"fill\") {\n fill = true;\n }\n const layoutToStyle = {\n intrinsic: {\n maxWidth: \"100%\",\n height: \"auto\"\n },\n responsive: {\n width: \"100%\",\n height: \"auto\"\n }\n };\n const layoutToSizes = {\n responsive: \"100vw\",\n fill: \"100vw\"\n };\n const layoutStyle = layoutToStyle[layout];\n if (layoutStyle) {\n style = {\n ...style,\n ...layoutStyle\n };\n }\n const layoutSizes = layoutToSizes[layout];\n if (layoutSizes && !sizes) {\n sizes = layoutSizes;\n }\n }\n let staticSrc = \"\";\n let widthInt = getInt(width);\n let heightInt = getInt(height);\n let blurWidth;\n let blurHeight;\n if (isStaticImport(src)) {\n const staticImageData = isStaticRequire(src) ? src.default : src;\n if (!staticImageData.src) {\n throw new Error(\"An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received \" + JSON.stringify(staticImageData));\n }\n if (!staticImageData.height || !staticImageData.width) {\n throw new Error(\"An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received \" + JSON.stringify(staticImageData));\n }\n blurWidth = staticImageData.blurWidth;\n blurHeight = staticImageData.blurHeight;\n blurDataURL = blurDataURL || staticImageData.blurDataURL;\n staticSrc = staticImageData.src;\n if (!fill) {\n if (!widthInt && !heightInt) {\n widthInt = staticImageData.width;\n heightInt = staticImageData.height;\n } else if (widthInt && !heightInt) {\n const ratio = widthInt / staticImageData.width;\n heightInt = Math.round(staticImageData.height * ratio);\n } else if (!widthInt && heightInt) {\n const ratio = heightInt / staticImageData.height;\n widthInt = Math.round(staticImageData.width * ratio);\n }\n }\n }\n src = typeof src === \"string\" ? src : staticSrc;\n let isLazy = !priority && (loading === \"lazy\" || typeof loading === \"undefined\");\n if (!src || src.startsWith(\"data:\") || src.startsWith(\"blob:\")) {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n unoptimized = true;\n isLazy = false;\n }\n if (config.unoptimized) {\n unoptimized = true;\n }\n if (isDefaultLoader && src.endsWith(\".svg\") && !config.dangerouslyAllowSVG) {\n // Special case to make svg serve as-is to avoid proxying\n // through the built-in Image Optimization API.\n unoptimized = true;\n }\n if (priority) {\n fetchPriority = \"high\";\n }\n const qualityInt = getInt(quality);\n if (process.env.NODE_ENV !== \"production\") {\n if (config.output === \"export\" && isDefaultLoader && !unoptimized) {\n throw new Error(\"Image Optimization using the default loader is not compatible with `{ output: 'export' }`.\\n Possible solutions:\\n - Remove `{ output: 'export' }` and run \\\"next start\\\" to run server mode including the Image Optimization API.\\n - Configure `{ images: { unoptimized: true } }` in `next.config.js` to disable the Image Optimization API.\\n Read more: https://nextjs.org/docs/messages/export-image-api\");\n }\n if (!src) {\n // React doesn't show the stack trace and there's\n // no `src` to help identify which image, so we\n // instead console.error(ref) during mount.\n unoptimized = true;\n } else {\n if (fill) {\n if (width) {\n throw new Error('Image with src \"' + src + '\" has both \"width\" and \"fill\" properties. Only one should be used.');\n }\n if (height) {\n throw new Error('Image with src \"' + src + '\" has both \"height\" and \"fill\" properties. Only one should be used.');\n }\n if ((style == null ? void 0 : style.position) && style.position !== \"absolute\") {\n throw new Error('Image with src \"' + src + '\" has both \"fill\" and \"style.position\" properties. Images with \"fill\" always use position absolute - it cannot be modified.');\n }\n if ((style == null ? void 0 : style.width) && style.width !== \"100%\") {\n throw new Error('Image with src \"' + src + '\" has both \"fill\" and \"style.width\" properties. Images with \"fill\" always use width 100% - it cannot be modified.');\n }\n if ((style == null ? void 0 : style.height) && style.height !== \"100%\") {\n throw new Error('Image with src \"' + src + '\" has both \"fill\" and \"style.height\" properties. Images with \"fill\" always use height 100% - it cannot be modified.');\n }\n } else {\n if (typeof widthInt === \"undefined\") {\n throw new Error('Image with src \"' + src + '\" is missing required \"width\" property.');\n } else if (isNaN(widthInt)) {\n throw new Error('Image with src \"' + src + '\" has invalid \"width\" property. Expected a numeric value in pixels but received \"' + width + '\".');\n }\n if (typeof heightInt === \"undefined\") {\n throw new Error('Image with src \"' + src + '\" is missing required \"height\" property.');\n } else if (isNaN(heightInt)) {\n throw new Error('Image with src \"' + src + '\" has invalid \"height\" property. Expected a numeric value in pixels but received \"' + height + '\".');\n }\n }\n }\n if (!VALID_LOADING_VALUES.includes(loading)) {\n throw new Error('Image with src \"' + src + '\" has invalid \"loading\" property. Provided \"' + loading + '\" should be one of ' + VALID_LOADING_VALUES.map(String).join(\",\") + \".\");\n }\n if (priority && loading === \"lazy\") {\n throw new Error('Image with src \"' + src + '\" has both \"priority\" and \"loading=\\'lazy\\'\" properties. Only one should be used.');\n }\n if (placeholder === \"blur\") {\n if (widthInt && heightInt && widthInt * heightInt < 1600) {\n (0, _warnonce.warnOnce)('Image with src \"' + src + '\" is smaller than 40x40. Consider removing the \"placeholder=\\'blur\\'\" property to improve performance.');\n }\n if (!blurDataURL) {\n const VALID_BLUR_EXT = [\n \"jpeg\",\n \"png\",\n \"webp\",\n \"avif\"\n ] // should match next-image-loader\n ;\n throw new Error('Image with src \"' + src + '\" has \"placeholder=\\'blur\\'\" property but is missing the \"blurDataURL\" property.\\n Possible solutions:\\n - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\\n - Change the \"src\" property to a static import with one of the supported file types: ' + VALID_BLUR_EXT.join(\",\") + '\\n - Remove the \"placeholder\" property, effectively no blur effect\\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url');\n }\n }\n if (\"ref\" in rest) {\n (0, _warnonce.warnOnce)('Image with src \"' + src + '\" is using unsupported \"ref\" property. Consider using the \"onLoadingComplete\" property instead.');\n }\n if (!unoptimized && !isDefaultLoader) {\n const urlStr = loader({\n config,\n src,\n width: widthInt || 400,\n quality: qualityInt || 75\n });\n let url;\n try {\n url = new URL(urlStr);\n } catch (err) {}\n if (urlStr === src || url && url.pathname === src && !url.search) {\n (0, _warnonce.warnOnce)('Image with src \"' + src + '\" has a \"loader\" property that does not implement width. Please implement it or use the \"unoptimized\" property instead.' + \"\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader-width\");\n }\n }\n for (const [legacyKey, legacyValue] of Object.entries({\n layout,\n objectFit,\n objectPosition,\n lazyBoundary,\n lazyRoot\n })){\n if (legacyValue) {\n (0, _warnonce.warnOnce)('Image with src \"' + src + '\" has legacy prop \"' + legacyKey + '\". Did you forget to run the codemod?' + \"\\nRead more: https://nextjs.org/docs/messages/next-image-upgrade-to-13\");\n }\n }\n if (typeof window !== \"undefined\" && !perfObserver && window.PerformanceObserver) {\n perfObserver = new PerformanceObserver((entryList)=>{\n for (const entry of entryList.getEntries()){\n var _entry_element;\n // @ts-ignore - missing \"LargestContentfulPaint\" class with \"element\" prop\n const imgSrc = (entry == null ? void 0 : (_entry_element = entry.element) == null ? void 0 : _entry_element.src) || \"\";\n const lcpImage = allImgs.get(imgSrc);\n if (lcpImage && !lcpImage.priority && lcpImage.placeholder !== \"blur\" && !lcpImage.src.startsWith(\"data:\") && !lcpImage.src.startsWith(\"blob:\")) {\n // https://web.dev/lcp/#measure-lcp-in-javascript\n (0, _warnonce.warnOnce)('Image with src \"' + lcpImage.src + '\" was detected as the Largest Contentful Paint (LCP). Please add the \"priority\" property if this image is above the fold.' + \"\\nRead more: https://nextjs.org/docs/api-reference/next/image#priority\");\n }\n }\n });\n try {\n perfObserver.observe({\n type: \"largest-contentful-paint\",\n buffered: true\n });\n } catch (err) {\n // Log error but don't crash the app\n console.error(err);\n }\n }\n }\n const imgStyle = Object.assign(fill ? {\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n objectFit,\n objectPosition\n } : {}, showAltText ? {} : {\n color: \"transparent\"\n }, style);\n const blurStyle = placeholder === \"blur\" && blurDataURL && !blurComplete ? {\n backgroundSize: imgStyle.objectFit || \"cover\",\n backgroundPosition: imgStyle.objectPosition || \"50% 50%\",\n backgroundRepeat: \"no-repeat\",\n backgroundImage: 'url(\"data:image/svg+xml;charset=utf-8,' + (0, _imageblursvg.getImageBlurSvg)({\n widthInt,\n heightInt,\n blurWidth,\n blurHeight,\n blurDataURL,\n objectFit: imgStyle.objectFit\n }) + '\")'\n } : {};\n if (process.env.NODE_ENV === \"development\") {\n if (blurStyle.backgroundImage && (blurDataURL == null ? void 0 : blurDataURL.startsWith(\"/\"))) {\n // During `next dev`, we don't want to generate blur placeholders with webpack\n // because it can delay starting the dev server. Instead, `next-image-loader.js`\n // will inline a special url to lazily generate the blur placeholder at request time.\n blurStyle.backgroundImage = 'url(\"' + blurDataURL + '\")';\n }\n }\n const imgAttributes = generateImgAttrs({\n config,\n src,\n unoptimized,\n width: widthInt,\n quality: qualityInt,\n sizes,\n loader\n });\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== \"undefined\") {\n let fullUrl;\n try {\n fullUrl = new URL(imgAttributes.src);\n } catch (e) {\n fullUrl = new URL(imgAttributes.src, window.location.href);\n }\n allImgs.set(fullUrl.href, {\n src,\n priority,\n placeholder\n });\n }\n }\n const props = {\n ...rest,\n loading: isLazy ? \"lazy\" : loading,\n fetchPriority,\n width: widthInt,\n height: heightInt,\n decoding: \"async\",\n className,\n style: {\n ...imgStyle,\n ...blurStyle\n },\n sizes: imgAttributes.sizes,\n srcSet: imgAttributes.srcSet,\n src: imgAttributes.src\n };\n const meta = {\n unoptimized,\n priority,\n placeholder,\n fill\n };\n return {\n props,\n meta\n };\n}\n\n//# sourceMappingURL=get-img-props.js.map","\"use client\";\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n defaultHead: null,\n default: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n defaultHead: function() {\n return defaultHead;\n },\n default: function() {\n return _default;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _interop_require_wildcard = require(\"@swc/helpers/_/_interop_require_wildcard\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(require(\"react\"));\nconst _sideeffect = /*#__PURE__*/ _interop_require_default._(require(\"./side-effect\"));\nconst _ampcontext = require(\"./amp-context\");\nconst _headmanagercontext = require(\"./head-manager-context\");\nconst _ampmode = require(\"./amp-mode\");\nconst _warnonce = require(\"./utils/warn-once\");\n\nfunction defaultHead(inAmpMode) {\n if (inAmpMode === void 0) inAmpMode = false;\n const head = [\n /*#__PURE__*/ _react.default.createElement(\"meta\", {\n charSet: \"utf-8\"\n })\n ];\n if (!inAmpMode) {\n head.push(/*#__PURE__*/ _react.default.createElement(\"meta\", {\n name: \"viewport\",\n content: \"width=device-width\"\n }));\n }\n return head;\n}\nfunction onlyReactElement(list, child) {\n // React children can be \"string\" or \"number\" in this case we ignore them for backwards compat\n if (typeof child === \"string\" || typeof child === \"number\") {\n return list;\n }\n // Adds support for React.Fragment\n if (child.type === _react.default.Fragment) {\n return list.concat(// @ts-expect-error @types/react does not remove fragments but this could also return ReactPortal[]\n _react.default.Children.toArray(child.props.children).reduce(// @ts-expect-error @types/react does not remove fragments but this could also return ReactPortal[]\n (fragmentList, fragmentChild)=>{\n if (typeof fragmentChild === \"string\" || typeof fragmentChild === \"number\") {\n return fragmentList;\n }\n return fragmentList.concat(fragmentChild);\n }, []));\n }\n return list.concat(child);\n}\nconst METATYPES = [\n \"name\",\n \"httpEquiv\",\n \"charSet\",\n \"itemProp\"\n];\n/*\n returns a function for filtering head child elements\n which shouldn't be duplicated, like <title/>\n Also adds support for deduplicated `key` properties\n*/ function unique() {\n const keys = new Set();\n const tags = new Set();\n const metaTypes = new Set();\n const metaCategories = {};\n return (h)=>{\n let isUnique = true;\n let hasKey = false;\n if (h.key && typeof h.key !== \"number\" && h.key.indexOf(\"$\") > 0) {\n hasKey = true;\n const key = h.key.slice(h.key.indexOf(\"$\") + 1);\n if (keys.has(key)) {\n isUnique = false;\n } else {\n keys.add(key);\n }\n }\n // eslint-disable-next-line default-case\n switch(h.type){\n case \"title\":\n case \"base\":\n if (tags.has(h.type)) {\n isUnique = false;\n } else {\n tags.add(h.type);\n }\n break;\n case \"meta\":\n for(let i = 0, len = METATYPES.length; i < len; i++){\n const metatype = METATYPES[i];\n if (!h.props.hasOwnProperty(metatype)) continue;\n if (metatype === \"charSet\") {\n if (metaTypes.has(metatype)) {\n isUnique = false;\n } else {\n metaTypes.add(metatype);\n }\n } else {\n const category = h.props[metatype];\n const categories = metaCategories[metatype] || new Set();\n if ((metatype !== \"name\" || !hasKey) && categories.has(category)) {\n isUnique = false;\n } else {\n categories.add(category);\n metaCategories[metatype] = categories;\n }\n }\n }\n break;\n }\n return isUnique;\n };\n}\n/**\n *\n * @param headChildrenElements List of children of <Head>\n */ function reduceComponents(headChildrenElements, props) {\n const { inAmpMode } = props;\n return headChildrenElements.reduce(onlyReactElement, []).reverse().concat(defaultHead(inAmpMode).reverse()).filter(unique()).reverse().map((c, i)=>{\n const key = c.key || i;\n if (process.env.NODE_ENV !== \"development\" && process.env.__NEXT_OPTIMIZE_FONTS && !inAmpMode) {\n if (c.type === \"link\" && c.props[\"href\"] && // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.\n [\n \"https://fonts.googleapis.com/css\",\n \"https://use.typekit.net/\"\n ].some((url)=>c.props[\"href\"].startsWith(url))) {\n const newProps = {\n ...c.props || {}\n };\n newProps[\"data-href\"] = newProps[\"href\"];\n newProps[\"href\"] = undefined;\n // Add this attribute to make it easy to identify optimized tags\n newProps[\"data-optimized-fonts\"] = true;\n return /*#__PURE__*/ _react.default.cloneElement(c, newProps);\n }\n }\n if (process.env.NODE_ENV === \"development\") {\n // omit JSON-LD structured data snippets from the warning\n if (c.type === \"script\" && c.props[\"type\"] !== \"application/ld+json\") {\n const srcMessage = c.props[\"src\"] ? '<script> tag with src=\"' + c.props[\"src\"] + '\"' : \"inline <script>\";\n (0, _warnonce.warnOnce)(\"Do not add <script> tags using next/head (see \" + srcMessage + \"). Use next/script instead. \\nSee more info here: https://nextjs.org/docs/messages/no-script-tags-in-head-component\");\n } else if (c.type === \"link\" && c.props[\"rel\"] === \"stylesheet\") {\n (0, _warnonce.warnOnce)('Do not add stylesheets using next/head (see <link rel=\"stylesheet\"> tag with href=\"' + c.props[\"href\"] + '\"). Use Document instead. \\nSee more info here: https://nextjs.org/docs/messages/no-stylesheets-in-head-component');\n }\n }\n return /*#__PURE__*/ _react.default.cloneElement(c, {\n key\n });\n });\n}\n/**\n * This component injects elements to `<head>` of your page.\n * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.\n */ function Head(param) {\n let { children } = param;\n const ampState = (0, _react.useContext)(_ampcontext.AmpStateContext);\n const headManager = (0, _react.useContext)(_headmanagercontext.HeadManagerContext);\n return /*#__PURE__*/ _react.default.createElement(_sideeffect.default, {\n reduceComponentsToState: reduceComponents,\n headManager: headManager,\n inAmpMode: (0, _ampmode.isInAmpMode)(ampState)\n }, children);\n}\nconst _default = Head;\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=head.js.map","/**\n * A shared function, used on both client and server, to generate a SVG blur placeholder.\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getImageBlurSvg\", {\n enumerable: true,\n get: function() {\n return getImageBlurSvg;\n }\n});\nfunction getImageBlurSvg(param) {\n let { widthInt , heightInt , blurWidth , blurHeight , blurDataURL , objectFit } = param;\n const std = blurWidth && blurHeight ? \"1\" : \"20\";\n const svgWidth = blurWidth || widthInt;\n const svgHeight = blurHeight || heightInt;\n const feComponentTransfer = blurDataURL.startsWith(\"data:image/jpeg\") ? \"%3CfeComponentTransfer%3E%3CfeFuncA type='discrete' tableValues='1 1'/%3E%3C/feComponentTransfer%3E%\" : \"\";\n if (svgWidth && svgHeight) {\n return \"%3Csvg xmlns='http%3A//www.w3.org/2000/svg' viewBox='0 0 \" + svgWidth + \" \" + svgHeight + \"'%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='\" + std + \"'/%3E\" + feComponentTransfer + \"%3C/filter%3E%3Cimage preserveAspectRatio='none' filter='url(%23b)' x='0' y='0' height='100%25' width='100%25' href='\" + blurDataURL + \"'/%3E%3C/svg%3E\";\n }\n const preserveAspectRatio = objectFit === \"contain\" ? \"xMidYMid\" : objectFit === \"cover\" ? \"xMidYMid slice\" : \"none\";\n return \"%3Csvg xmlns='http%3A//www.w3.org/2000/svg'%3E%3Cimage style='filter:blur(20px)' preserveAspectRatio='\" + preserveAspectRatio + \"' x='0' y='0' height='100%25' width='100%25' href='\" + blurDataURL + \"'/%3E%3C/svg%3E\";\n}\n\n//# sourceMappingURL=image-blur-svg.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ImageConfigContext\", {\n enumerable: true,\n get: function() {\n return ImageConfigContext;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _react = /*#__PURE__*/ _interop_require_default._(require(\"react\"));\nconst _imageconfig = require(\"./image-config\");\nconst ImageConfigContext = _react.default.createContext(_imageconfig.imageConfigDefault);\nif (process.env.NODE_ENV !== \"production\") {\n ImageConfigContext.displayName = \"ImageConfigContext\";\n}\n\n//# sourceMappingURL=image-config-context.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n VALID_LOADERS: null,\n imageConfigDefault: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n VALID_LOADERS: function() {\n return VALID_LOADERS;\n },\n imageConfigDefault: function() {\n return imageConfigDefault;\n }\n});\nconst VALID_LOADERS = [\n \"default\",\n \"imgix\",\n \"cloudinary\",\n \"akamai\",\n \"custom\"\n];\nconst imageConfigDefault = {\n deviceSizes: [\n 640,\n 750,\n 828,\n 1080,\n 1200,\n 1920,\n 2048,\n 3840\n ],\n imageSizes: [\n 16,\n 32,\n 48,\n 64,\n 96,\n 128,\n 256,\n 384\n ],\n path: \"/_next/image\",\n loader: \"default\",\n loaderFile: \"\",\n domains: [],\n disableStaticImages: false,\n minimumCacheTTL: 60,\n formats: [\n \"image/webp\"\n ],\n dangerouslyAllowSVG: false,\n contentSecurityPolicy: \"script-src 'none'; frame-src 'none'; sandbox;\",\n contentDispositionType: \"inline\",\n remotePatterns: [],\n unoptimized: false\n};\n\n//# sourceMappingURL=image-config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n default: null,\n unstable_getImgProps: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n default: function() {\n return _default;\n },\n unstable_getImgProps: function() {\n return unstable_getImgProps;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _getimgprops = require(\"./get-img-props\");\nconst _warnonce = require(\"./utils/warn-once\");\nconst _imagecomponent = require(\"../../client/image-component\");\nconst _imageloader = /*#__PURE__*/ _interop_require_default._(require(\"next/dist/shared/lib/image-loader\"));\nconst unstable_getImgProps = (imgProps)=>{\n (0, _warnonce.warnOnce)(\"Warning: unstable_getImgProps() is experimental and may change or be removed at any time. Use at your own risk.\");\n const { props } = (0, _getimgprops.getImgProps)(imgProps, {\n defaultLoader: _imageloader.default,\n // This is replaced by webpack define plugin\n imgConf: process.env.__NEXT_IMAGE_OPTS\n });\n for (const [key, value] of Object.entries(props)){\n if (value === undefined) {\n delete props[key];\n }\n }\n return {\n props\n };\n};\nconst _default = _imagecomponent.Image;\n\n//# sourceMappingURL=image-external.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction defaultLoader(param) {\n let { config , src , width , quality } = param;\n if (process.env.NODE_ENV !== \"production\") {\n const missingValues = [];\n // these should always be provided but make sure they are\n if (!src) missingValues.push(\"src\");\n if (!width) missingValues.push(\"width\");\n if (missingValues.length > 0) {\n throw new Error(\"Next Image Optimization requires \" + missingValues.join(\", \") + \" to be provided. Make sure you pass them as props to the `next/image` component. Received: \" + JSON.stringify({\n src,\n width,\n quality\n }));\n }\n if (src.startsWith(\"//\")) {\n throw new Error('Failed to parse src \"' + src + '\" on `next/image`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)');\n }\n if (!src.startsWith(\"/\") && (config.domains || config.remotePatterns)) {\n let parsedSrc;\n try {\n parsedSrc = new URL(src);\n } catch (err) {\n console.error(err);\n throw new Error('Failed to parse src \"' + src + '\" on `next/image`, if using relative image it must start with a leading slash \"/\" or be an absolute URL (http:// or https://)');\n }\n if (process.env.NODE_ENV !== \"test\" && // micromatch isn't compatible with edge runtime\n process.env.NEXT_RUNTIME !== \"edge\") {\n // We use dynamic require because this should only error in development\n const { hasMatch } = require(\"./match-remote-pattern\");\n if (!hasMatch(config.domains, config.remotePatterns, parsedSrc)) {\n throw new Error(\"Invalid src prop (\" + src + ') on `next/image`, hostname \"' + parsedSrc.hostname + '\" is not configured under images in your `next.config.js`\\n' + \"See more info: https://nextjs.org/docs/messages/next-image-unconfigured-host\");\n }\n }\n }\n }\n return config.path + \"?url=\" + encodeURIComponent(src) + \"&w=\" + width + \"&q=\" + (quality || 75) + (process.env.NEXT_DEPLOYMENT_ID ? \"&dpl=\" + process.env.NEXT_DEPLOYMENT_ID : \"\");\n}\n// We use this to determine if the import is the default loader\n// or a custom loader defined by the user in next.config.js\ndefaultLoader.__next_img_default = true;\nconst _default = defaultLoader;\n\n//# sourceMappingURL=image-loader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return SideEffect;\n }\n});\nconst _interop_require_wildcard = require(\"@swc/helpers/_/_interop_require_wildcard\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(require(\"react\"));\nconst isServer = typeof window === \"undefined\";\nconst useClientOnlyLayoutEffect = isServer ? ()=>{} : _react.useLayoutEffect;\nconst useClientOnlyEffect = isServer ? ()=>{} : _react.useEffect;\nfunction SideEffect(props) {\n const { headManager , reduceComponentsToState } = props;\n function emitChange() {\n if (headManager && headManager.mountedInstances) {\n const headElements = _react.Children.toArray(Array.from(headManager.mountedInstances).filter(Boolean));\n headManager.updateHead(reduceComponentsToState(headElements, props));\n }\n }\n if (isServer) {\n var _headManager_mountedInstances;\n headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.add(props.children);\n emitChange();\n }\n useClientOnlyLayoutEffect(()=>{\n var _headManager_mountedInstances;\n headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.add(props.children);\n return ()=>{\n var _headManager_mountedInstances;\n headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.delete(props.children);\n };\n });\n // We need to call `updateHead` method whenever the `SideEffect` is trigger in all\n // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s\n // being rendered, we only trigger the method from the last one.\n // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`\n // singleton in the layout effect pass, and actually trigger it in the effect pass.\n useClientOnlyLayoutEffect(()=>{\n if (headManager) {\n headManager._pendingUpdate = emitChange;\n }\n return ()=>{\n if (headManager) {\n headManager._pendingUpdate = emitChange;\n }\n };\n });\n useClientOnlyEffect(()=>{\n if (headManager && headManager._pendingUpdate) {\n headManager._pendingUpdate();\n headManager._pendingUpdate = null;\n }\n return ()=>{\n if (headManager && headManager._pendingUpdate) {\n headManager._pendingUpdate();\n headManager._pendingUpdate = null;\n }\n };\n });\n return null;\n}\n\n//# sourceMappingURL=side-effect.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"warnOnce\", {\n enumerable: true,\n get: function() {\n return warnOnce;\n }\n});\nlet warnOnce = (_)=>{};\nif (process.env.NODE_ENV !== \"production\") {\n const warnings = new Set();\n warnOnce = (msg)=>{\n if (!warnings.has(msg)) {\n console.warn(msg);\n }\n warnings.add(msg);\n };\n}\n\n//# sourceMappingURL=warn-once.js.map","module.exports = require('./dist/shared/lib/image-external')\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n if (!userAgent) {\n console.error('No userAgent string was provided');\n return;\n }\n\n var UserAgentInstance = new UAParser(userAgent);\n return {\n UA: UserAgentInstance,\n browser: UserAgentInstance.getBrowser(),\n cpu: UserAgentInstance.getCPU(),\n device: UserAgentInstance.getDevice(),\n engine: UserAgentInstance.getEngine(),\n os: UserAgentInstance.getOS(),\n ua: UserAgentInstance.getUA(),\n setUserAgent: function setUserAgent(userAgentString) {\n return UserAgentInstance.setUA(userAgentString);\n }\n };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n ClientUAInstance: ClientUAInstance,\n browser: browser,\n cpu: cpu,\n device: device,\n engine: engine,\n os: os,\n ua: ua,\n setUa: setUa,\n parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _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\nvar DeviceTypes = {\n Mobile: 'mobile',\n Tablet: 'tablet',\n SmartTv: 'smarttv',\n Console: 'console',\n Wearable: 'wearable',\n Embedded: 'embedded',\n Browser: undefined\n};\nvar BrowserTypes = {\n Chrome: 'Chrome',\n Firefox: 'Firefox',\n Opera: 'Opera',\n Yandex: 'Yandex',\n Safari: 'Safari',\n InternetExplorer: 'Internet Explorer',\n Edge: 'Edge',\n Chromium: 'Chromium',\n Ie: 'IE',\n MobileSafari: 'Mobile Safari',\n EdgeChromium: 'Edge Chromium',\n MIUI: 'MIUI Browser',\n SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n IOS: 'iOS',\n Android: 'Android',\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n switch (type) {\n case DeviceTypes.Mobile:\n return {\n isMobile: true\n };\n\n case DeviceTypes.Tablet:\n return {\n isTablet: true\n };\n\n case DeviceTypes.SmartTv:\n return {\n isSmartTV: true\n };\n\n case DeviceTypes.Console:\n return {\n isConsole: true\n };\n\n case DeviceTypes.Wearable:\n return {\n isWearable: true\n };\n\n case DeviceTypes.Browser:\n return {\n isBrowser: true\n };\n\n case DeviceTypes.Embedded:\n return {\n isEmbedded: true\n };\n\n default:\n return InitialDeviceTypes;\n }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n return {\n isEmbedded: isEmbedded,\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nfunction deviceDetect(userAgent) {\n var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n engine = _ref.engine,\n os = _ref.os,\n ua = _ref.ua;\n\n var type = checkDeviceType(device.type);\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable,\n isEmbedded = type.isEmbedded;\n\n if (isBrowser) {\n return browserPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return smartTvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearablePayload(isWearable, engine, os, ua);\n }\n\n if (isEmbedded) {\n return embeddedPayload(isEmbedded, device, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n var type = _ref.type;\n return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n var type = _ref2.type;\n return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n var type = _ref3.type;\n return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n var type = _ref4.type;\n return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n var type = _ref5.type;\n return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n var type = _ref6.type;\n return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n var type = _ref7.type;\n return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n var type = _ref8.type;\n return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n var vendor = _ref9.vendor;\n return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n var model = _ref10.model;\n return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n var type = _ref11.type;\n return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n var name = _ref12.name;\n return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n var name = _ref13.name;\n return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n var name = _ref14.name;\n return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n var name = _ref15.name;\n return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n var name = _ref16.name;\n return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n var version = _ref17.version;\n return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n var name = _ref18.name;\n return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n var name = _ref19.name;\n return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n var name = _ref20.name;\n return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n var name = _ref21.name;\n return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n var name = _ref22.name;\n return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n var name = _ref23.name;\n return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n var name = _ref24.name;\n return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n var name = _ref25.name;\n return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n var name = _ref26.name;\n return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n var name = _ref27.name;\n return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n var name = _ref28.name;\n return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n var name = _ref29.name;\n return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n var version = _ref30.version;\n return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n var major = _ref31.major;\n return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n var name = _ref32.name;\n return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n var name = _ref33.name;\n return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n var version = _ref34.version;\n return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n var _ref = options ? options : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n os = _ref.os,\n engine = _ref.engine,\n ua = _ref.ua;\n\n return {\n isSmartTV: isSmartTVType(device),\n isConsole: isConsoleType(device),\n isWearable: isWearableType(device),\n isEmbedded: isEmbeddedType(device),\n isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n isChromium: isChromiumType(browser),\n isMobile: isMobileAndTabletType(device) || getIPad13(),\n isMobileOnly: isMobileType(device),\n isTablet: isTabletType(device) || getIPad13(),\n isBrowser: isBrowserType(device),\n isDesktop: isBrowserType(device),\n isAndroid: isAndroidType(os),\n isWinPhone: isWinPhoneType(os),\n isIOS: isIOSType(os) || getIPad13(),\n isChrome: isChromeType(browser),\n isFirefox: isFirefoxType(browser),\n isSafari: isSafariType(browser),\n isOpera: isOperaType(browser),\n isIE: isIEType(browser),\n osVersion: getOsVersion(os),\n osName: getOsName(os),\n fullBrowserVersion: getBrowserFullVersion(browser),\n browserVersion: getBrowserVersion(browser),\n browserName: getBrowserName(browser),\n mobileVendor: getMobileVendor(device),\n mobileModel: getMobileModel(device),\n engineName: getEngineName(engine),\n engineVersion: getEngineVersion(engine),\n getUA: getUseragent(ua),\n isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n isYandex: isYandexType(browser),\n deviceType: getDeviceType(device),\n isIOS13: getIOS13(),\n isIPad13: getIPad13(),\n isIPhone13: getIphone13(),\n isIPod13: getIPod13(),\n isElectron: isElectronType(),\n isEdgeChromium: isEdgeChromiumType(ua),\n isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n isWindows: isWindowsType(os),\n isMacOs: isMacOsType(os),\n isMIUI: isMIUIType(browser),\n isSamsungBrowser: isSamsungBrowserType(browser)\n };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n if (!userAgent || typeof userAgent !== 'string') {\n console.error('No valid user agent string was provided');\n return;\n }\n\n var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n device = _UAHelper$parseUserAg.device,\n browser = _UAHelper$parseUserAg.browser,\n os = _UAHelper$parseUserAg.os,\n engine = _UAHelper$parseUserAg.engine,\n ua = _UAHelper$parseUserAg.ua;\n\n return buildSelectorsObject({\n device: device,\n browser: browser,\n os: os,\n engine: engine,\n ua: ua\n });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style,\n props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition,\n props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return /*#__PURE__*/function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n var _useState = React.useState(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n return {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n var handleOrientationChange = React.useCallback(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n var next = {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n state.orientation !== next.orientation && setState(next);\n }, [state.orientation]);\n React.useEffect(function () {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n handleOrientationChange();\n window.addEventListener(\"load\", handleOrientationChange, false);\n window.addEventListener(\"resize\", handleOrientationChange, false);\n }\n\n return function () {\n window.removeEventListener(\"resize\", handleOrientationChange, false);\n window.removeEventListener(\"load\", handleOrientationChange, false);\n };\n }, [handleOrientationChange]);\n return state;\n}\n\nfunction useDeviceData(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n var deviceData = useDeviceData(hookUserAgent);\n var selectors = buildSelectorsObject(deviceData);\n return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\n","/* UAParser.js v1.0.35\n Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\n MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.35\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=350;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HUAWEI=\"Huawei\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",OPERA=\"Opera\",SAMSUNG=\"Samsung\",SHARP=\"Sharp\",SONY=\"Sony\",VIERA=\"Viera\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\",CHROMIUM_OS=\"Chromium OS\",MAC_OS=\"Mac OS\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i<arr.length;i++){enums[arr[i].toUpperCase()]=arr[i]}return enums},has=function(str1,str2){return typeof str1===STR_TYPE?lowerize(str2).indexOf(lowerize(str1))!==-1:false},lowerize=function(str){return str.toLowerCase()},majorize=function(version){return typeof version===STR_TYPE?version.replace(/[^\\d\\.]/g,EMPTY).split(\".\")[0]:undefined},trim=function(str,len){if(typeof str===STR_TYPE){str=str.replace(/^\\s\\s*/,EMPTY);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){if(!regex[j]){break}matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(has(map[i][j],str)){return i===UNKNOWN?undefined:i}}}else if(has(map[i],str)){return i===UNKNOWN?undefined:i}}return str};var oldSafariMap={\"1.0\":\"/8\",1.2:\"/1\",1.3:\"/3\",\"2.0\":\"/412\",\"2.0.2\":\"/416\",\"2.0.3\":\"/417\",\"2.0.4\":\"/419\",\"?\":\"/\"},windowsVersionMap={ME:\"4.90\",\"NT 3.11\":\"NT3.51\",\"NT 4.0\":\"NT4.0\",2e3:\"NT 5.0\",XP:[\"NT 5.1\",\"NT 5.2\"],Vista:\"NT 6.0\",7:\"NT 6.1\",8:\"NT 6.2\",8.1:\"NT 6.3\",10:[\"NT 6.4\",\"NT 10.0\"],RT:\"ARM\"};var regexes={browser:[[/\\b(?:crmo|crios)\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Chrome\"]],[/edg(?:e|ios|a)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Edge\"]],[/(opera mini)\\/([-\\w\\.]+)/i,/(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,/(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i],[NAME,VERSION],[/opios[\\/ ]+([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Mini\"]],[/\\bopr\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA]],[/(kindle)\\/([\\w\\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i,/(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i,/(?:ms|\\()(ie) ([\\w\\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,/(heytap|ovi)browser\\/([\\d\\.]+)/i,/(weibo)__([\\d\\.]+)/i],[NAME,VERSION],[/(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"UC\"+BROWSER]],[/microm.+\\bqbcore\\/([\\w\\.]+)/i,/\\bqbcore\\/([\\w\\.]+).+microm/i],[VERSION,[NAME,\"WeChat(Win) Desktop\"]],[/micromessenger\\/([\\w\\.]+)/i],[VERSION,[NAME,\"WeChat\"]],[/konqueror\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Konqueror\"]],[/trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i],[VERSION,[NAME,\"IE\"]],[/ya(?:search)?browser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Yandex\"]],[/(avast|avg)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1 Secure \"+BROWSER],VERSION],[/\\bfocus\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" Focus\"]],[/\\bopt\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Touch\"]],[/coc_coc\\w+\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Coc Coc\"]],[/dolfin\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Dolphin\"]],[/coast\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Coast\"]],[/miuibrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"MIUI \"+BROWSER]],[/fxios\\/([-\\w\\.]+)/i],[VERSION,[NAME,FIREFOX]],[/\\bqihu|(qi?ho?o?|360)browser/i],[[NAME,\"360 \"+BROWSER]],[/(oculus|samsung|sailfish|huawei)browser\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1 \"+BROWSER],VERSION],[/(comodo_dragon)\\/([\\w\\.]+)/i],[[NAME,/_/g,\" \"],VERSION],[/(electron)\\/([\\w\\.]+) safari/i,/(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i],[NAME,VERSION],[/(metasr)[\\/ ]?([\\w\\.]+)/i,/(lbbrowser)/i,/\\[(linkedin)app\\]/i],[NAME],[/((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i],[[NAME,FACEBOOK],VERSION],[/(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,/(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,/safari (line)\\/([\\w\\.]+)/i,/\\b(line)\\/([\\w\\.]+)\\/iab/i,/(chromium|instagram)[\\/ ]([-\\w\\.]+)/i],[NAME,VERSION],[/\\bgsa\\/([\\w\\.]+) .*safari\\//i],[VERSION,[NAME,\"GSA\"]],[/musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i],[VERSION,[NAME,\"TikTok\"]],[/headlesschrome(?:\\/([\\w\\.]+)| )/i],[VERSION,[NAME,CHROME+\" Headless\"]],[/ wv\\).+(chrome)\\/([\\w\\.]+)/i],[[NAME,CHROME+\" WebView\"],VERSION],[/droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,\"Android \"+BROWSER]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i],[NAME,VERSION],[/version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i],[VERSION,[NAME,\"Mobile Safari\"]],[/version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i],[NAME,[VERSION,strMapper,oldSafariMap]],[/(webkit|khtml)\\/([\\w\\.]+)/i],[NAME,VERSION],[/(navigator|netscape\\d?)\\/([-\\w\\.]+)/i],[[NAME,\"Netscape\"],VERSION],[/mobile vr; rv:([\\w\\.]+)\\).+firefox/i],[VERSION,[NAME,FIREFOX+\" Reality\"]],[/ekiohf.+(flow)\\/([\\w\\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,/(firefox)\\/([\\w\\.]+)/i,/(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,/(links) \\(([\\w\\.]+)/i,/panasonic;(viera)/i],[NAME,VERSION],[/(cobalt)\\/([\\w\\.]+)/i],[NAME,[VERSION,/master.|lts./,\"\"]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i],[[ARCHITECTURE,\"amd64\"]],[/(ia32(?=;))/i],[[ARCHITECTURE,lowerize]],[/((?:i[346]|x)86)[;\\)]/i],[[ARCHITECTURE,\"ia32\"]],[/\\b(aarch64|arm(v?8e?l?|_?64))\\b/i],[[ARCHITECTURE,\"arm64\"]],[/\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i],[[ARCHITECTURE,\"armhf\"]],[/windows (ce|mobile); ppc;/i],[[ARCHITECTURE,\"arm\"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/(sun4\\w)[;\\)]/i],[[ARCHITECTURE,\"sparc\"]],[/((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i],[[ARCHITECTURE,lowerize]]],device:[[/\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,/samsung[- ]([-\\w]+)/i,/sec-(sgh\\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\\((ipad);[-\\w\\),; ]+apple/i,/applecoremedia\\/[\\w\\.]+ \\((ipad)/i,/\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/(macintosh);/i],[MODEL,[VENDOR,APPLE]],[/\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei|honor)([-\\w ]+)[;\\)]/i,/\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/\\b(poco[\\w ]+)(?: bui|\\))/i,/\\b; (\\w+) build\\/hm\\1/i,/\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,/\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,/\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,TABLET]],[/; (\\w+) bui.+ oppo/i,/\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i],[MODEL,[VENDOR,\"OPPO\"],[TYPE,MOBILE]],[/vivo (\\w+)(?: bui|\\))/i,/\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,\"Vivo\"],[TYPE,MOBILE]],[/\\b(rmx[12]\\d{3})(?: bui|;|\\))/i],[MODEL,[VENDOR,\"Realme\"],[TYPE,MOBILE]],[/\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,/\\bmot(?:orola)?[- ](\\w*)/i,/((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,/\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,/\\blg-?([\\d\\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(ideatab[-\\w ]+)/i,/lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i],[MODEL,[VENDOR,\"Lenovo\"],[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \\d+)/i,/nokia[-_ ]?([-\\w\\.]*)/i],[[MODEL,/_/g,\" \"],[VENDOR,\"Nokia\"],[TYPE,MOBILE]],[/(pixel c)\\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\\b(?:sony)?sgp\\w+(?: bui|\\))/i],[[MODEL,\"Xperia Tablet\"],[VENDOR,SONY],[TYPE,TABLET]],[/ (kb2005|in20[12]5|be20[12][59])\\b/i,/(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i],[MODEL,[VENDOR,\"OnePlus\"],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i,/(kf[a-z]+)( bui|\\)).+silk\\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i],[[MODEL,/(.+)/g,\"Fire Phone $1\"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\\w\\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\\b((?:bb[a-f]|st[hv])100-\\d)/i,/\\(bb10; (\\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,\"HTC\"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,/(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i],[VENDOR,[MODEL,/_/g,\" \"],[TYPE,MOBILE]],[/droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i],[MODEL,[VENDOR,\"Acer\"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\\bmz-([-\\w]{2,})/i],[MODEL,[VENDOR,\"Meizu\"],[TYPE,MOBILE]],[/(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,/(hp) ([\\w ]+\\w)/i,/(asus)-?(\\w+)/i,/(microsoft); (lumia[\\w ]+)/i,/(lenovo)[-_ ]?([-\\w]+)/i,/(jolla)/i,/(oppo) ?([\\w ]+) bui/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kobo)\\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\\/([\\w\\.]+)/i,/(nook)[\\w ]+build\\/(\\w+)/i,/(dell) (strea[kpr\\d ]*[\\dko])/i,/(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,/(trinity)[- ]*(t\\d{3}) bui/i,/(gigaset)[- ]+(q\\w{1,9}) bui/i,/(vodafone) ([\\w ]+)(?:\\)| bui)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i],[MODEL,[VENDOR,\"Fairphone\"],[TYPE,MOBILE]],[/(u304aa)/i],[MODEL,[VENDOR,\"AT&T\"],[TYPE,MOBILE]],[/\\bsie-(\\w*)/i],[MODEL,[VENDOR,\"Siemens\"],[TYPE,MOBILE]],[/\\b(rct\\w+) b/i],[MODEL,[VENDOR,\"RCA\"],[TYPE,TABLET]],[/\\b(venue[\\d ]{2,7}) b/i],[MODEL,[VENDOR,\"Dell\"],[TYPE,TABLET]],[/\\b(q(?:mv|ta)\\w+) b/i],[MODEL,[VENDOR,\"Verizon\"],[TYPE,TABLET]],[/\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i],[MODEL,[VENDOR,\"Barnes & Noble\"],[TYPE,TABLET]],[/\\b(tm\\d{3}\\w+) b/i],[MODEL,[VENDOR,\"NuVision\"],[TYPE,TABLET]],[/\\b(k88) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,TABLET]],[/\\b(nx\\d{3}j) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,MOBILE]],[/\\b(gen\\d{3}) b.+49h/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,MOBILE]],[/\\b(zur\\d{3}) b/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,TABLET]],[/\\b((zeki)?tb.*\\b) b/i],[MODEL,[VENDOR,\"Zeki\"],[TYPE,TABLET]],[/\\b([yr]\\d{2}) b/i,/\\b(dragon[- ]+touch |dt)(\\w{5}) b/i],[[VENDOR,\"Dragon Touch\"],MODEL,[TYPE,TABLET]],[/\\b(ns-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"Insignia\"],[TYPE,TABLET]],[/\\b((nxa|next)-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"NextBook\"],[TYPE,TABLET]],[/\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[VENDOR,\"Voice\"],MODEL,[TYPE,MOBILE]],[/\\b(lvtel\\-)?(v1[12]) b/i],[[VENDOR,\"LvTel\"],MODEL,[TYPE,MOBILE]],[/\\b(ph-1) /i],[MODEL,[VENDOR,\"Essential\"],[TYPE,MOBILE]],[/\\b(v(100md|700na|7011|917g).*\\b) b/i],[MODEL,[VENDOR,\"Envizen\"],[TYPE,TABLET]],[/\\b(trio[-\\w\\. ]+) b/i],[MODEL,[VENDOR,\"MachSpeed\"],[TYPE,TABLET]],[/\\btu_(1491) b/i],[MODEL,[VENDOR,\"Rotor\"],[TYPE,TABLET]],[/(shield[\\w ]+) b/i],[MODEL,[VENDOR,\"Nvidia\"],[TYPE,TABLET]],[/(sprint) (\\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\\.[onetw]{3})/i],[[MODEL,/\\./g,\" \"],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\\d+)/i],[[MODEL,/^/,\"SmartTV\"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+\" TV\"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROME+\"cast\"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/droid.+aft(\\w)( bui|\\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/\\(dtv[\\);].+(aquos)/i,/(aquos-tv[\\w ]+)\\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\\w ]+)( bui|\\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mitv-\\w{5}) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/Hbbtv.*(technisat) (.*);/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,/hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i],[[VENDOR,trim],[MODEL,trim],[TYPE,SMARTTV]],[/\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i],[[TYPE,SMARTTV]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+; (shield) bui/i],[MODEL,[VENDOR,\"Nvidia\"],[TYPE,CONSOLE]],[/(playstation [345portablevi]+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\\b(xbox(?: one)?(?!; xbox))[\\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/((pebble))app/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i],[MODEL,[VENDOR,APPLE],[TYPE,WEARABLE]],[/droid.+; (glass) \\d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/(quest( 2| pro)?)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,WEARABLE]],[/(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/(aeobc)\\b/i],[MODEL,[VENDOR,AMAZON],[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/(android[-\\w\\. ]{0,9});.+buil/i],[MODEL,[VENDOR,\"Generic\"]]],engine:[[/windows.+ edge\\/([\\w\\.]+)/i],[VERSION,[NAME,EDGE+\"HTML\"]],[/webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i],[VERSION,[NAME,\"Blink\"]],[/(presto)\\/([\\w\\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i,/ekioh(flow)\\/([\\w\\.]+)/i,/(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,/(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,/\\b(libweb)/i],[NAME,VERSION],[/rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft (windows) (vista|xp)/i],[NAME,VERSION],[/(windows) nt 6\\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i,/(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i],[NAME,[VERSION,strMapper,windowsVersionMap]],[/(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i],[[NAME,\"Windows\"],[VERSION,strMapper,windowsVersionMap]],[/ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i,/ios;fbsv\\/([\\d\\.]+)/i,/cfnetwork\\/.+darwin/i],[[VERSION,/_/g,\".\"],[NAME,\"iOS\"]],[/(mac os x) ?([\\w\\. ]*)/i,/(macintosh|mac_powerpc\\b)(?!.+haiku)/i],[[NAME,MAC_OS],[VERSION,/_/g,\".\"]],[/droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i],[VERSION,NAME],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,/(blackberry)\\w*\\/([\\w\\.]*)/i,/(tizen|kaios)[\\/ ]([\\w\\.]+)/i,/\\((series40);/i],[NAME,VERSION],[/\\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i],[VERSION,[NAME,\"Symbian\"]],[/mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" OS\"]],[/web0s;.+rt(tv)/i,/\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"webOS\"]],[/watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i],[VERSION,[NAME,\"watchOS\"]],[/crkey\\/([\\d\\.]+)/i],[VERSION,[NAME,CHROME+\"cast\"]],[/(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i],[[NAME,CHROMIUM_OS],VERSION],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\\/(\\d+\\.[\\w\\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\\);]+)/i,/\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,/(mint)[\\/\\(\\) ]?(\\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,/(hurd|linux) ?([\\w\\.]*)/i,/(gnu) ?([\\w\\.]*)/i,/\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i,/(haiku) (\\w+)/i],[NAME,VERSION],[/(sunos) ?([\\w\\.\\d]*)/i],[[NAME,\"Solaris\"],VERSION],[/((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,/(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,/\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\\w\\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua===OBJ_TYPE){extensions=ua;ua=undefined}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _navigator=typeof window!==UNDEF_TYPE&&window.navigator?window.navigator:undefined;var _ua=ua||(_navigator&&_navigator.userAgent?_navigator.userAgent:EMPTY);var _uach=_navigator&&_navigator.userAgentData?_navigator.userAgentData:undefined;var _rgxmap=extensions?extend(regexes,extensions):regexes;var _isSelfNav=_navigator&&_navigator.userAgent==_ua;this.getBrowser=function(){var _browser={};_browser[NAME]=undefined;_browser[VERSION]=undefined;rgxMapper.call(_browser,_ua,_rgxmap.browser);_browser[MAJOR]=majorize(_browser[VERSION]);if(_isSelfNav&&_navigator&&_navigator.brave&&typeof _navigator.brave.isBrave==FUNC_TYPE){_browser[NAME]=\"Brave\"}return _browser};this.getCPU=function(){var _cpu={};_cpu[ARCHITECTURE]=undefined;rgxMapper.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={};_device[VENDOR]=undefined;_device[MODEL]=undefined;_device[TYPE]=undefined;rgxMapper.call(_device,_ua,_rgxmap.device);if(_isSelfNav&&!_device[TYPE]&&_uach&&_uach.mobile){_device[TYPE]=MOBILE}if(_isSelfNav&&_device[MODEL]==\"Macintosh\"&&_navigator&&typeof _navigator.standalone!==UNDEF_TYPE&&_navigator.maxTouchPoints&&_navigator.maxTouchPoints>2){_device[MODEL]=\"iPad\";_device[TYPE]=TABLET}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);if(_isSelfNav&&!_os[NAME]&&_uach&&_uach.platform!=\"Unknown\"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS)}return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);"],"names":["trimmedEndIndex","reTrimStart","module","exports","string","slice","replace","reWhitespace","index","length","test","charAt","isObject","now","toNumber","nativeMax","Math","max","nativeMin","min","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","clearTimeout","cancel","flush","value","type","baseGetTag","isObjectLike","root","Date","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","lottie","React","_interopDefaultLegacy","e","lottie__default","React__default","_iterableToArrayLimit","arr","i","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","call","next","Object","done","push","err","return","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","_objectSpread2","target","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","_toPropertyKey","configurable","writable","_objectWithoutPropertiesLoose","excluded","sourceKeys","indexOf","_objectWithoutProperties","sourceSymbolKeys","prototype","propertyIsEnumerable","_slicedToArray","_arrayWithHoles","_unsupportedIterableToArray","_nonIterableRest","Array","isArray","o","minLen","_arrayLikeToArray","n","toString","constructor","name","from","len","arr2","_toPrimitive","input","hint","prim","toPrimitive","res","String","Number","arg","_excluded$1","useLottie","props","style","animationData","loop","autoplay","initialSegment","onComplete","onLoopComplete","onEnterFrame","onSegmentStart","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","onDestroy","lottieRef","renderer","assetsPath","rendererSettings","rest","_useState2","useState","animationLoaded","setAnimationLoaded","animationInstanceRef","useRef","animationContainer","play","_a","current","stop","pause","setSpeed","speed","goToAndPlay","isFrame","goToAndStop","setDirection","direction","playSegments","segments","forceFlag","setSubframe","useSubFrames","getDuration","inFrames","destroy","loadAnimation","forcedConfigs","config","container","useEffect","onUnmount","currentRawFrame","setSegment","resetSegments","listeners","handler","listener","deregisterList","map","addEventListener","removeEventListener","deregister","View","createElement","ref","animationContainerRef","animationItem","getContainerVisibility","_container$getBoundin","getBoundingClientRect","top","height","window","innerHeight","getContainerCursorPosition","cursorX","cursorY","_container$getBoundin2","x","left","width","y","useInitInteractivity","_ref","wrapperRef","mode","actions","wrapper","scrollModeHandler","assignedSegment","scrollHandler","currentPercent","action","find","_ref2","visibility","frames","frameToGo","ceil","firstFrame","isPaused","document","cursorModeHandler","handleCursor","_y","pos","_ref3","position","isNaN","xPercent","yPercent","mouseMoveHandler","ev","clientX","clientY","mouseOutHandler","useLottieInteractivity","_ref4","lottieObj","_excluded","Lottie","_b","_c","interactivity","lottieProps","_useLottie","get","factory","navigator","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","attr","hasOwnProperty","getDescriptor","prop","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","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","Uint8ClampedArray","Float32Array","Int16Array","createSizedArray","_typeof$6","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","userAgent","_shouldRoundValues","bmPow","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","bmMin","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","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","h","s","v","r","g","b","f","p","q","t","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","id","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","a","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","c","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","response","responseText","load","fullPath","callback","errorCallback","XMLHttpRequest","onreadystatechange","readyState","status","open","join","error","send","completeData","payload","animation","event","process","onError","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","u","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","_cbs","callbacks","splice","markerParser","parsePayloadLines","line","lines","keysCount","trim","Error","_markers","markers","_marker","markerData","tm","duration","dr","cm","_","__","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","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","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","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","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","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","shape","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","l","m","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","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","p10","p11","p20","p21","bounds","bottom","shapeSegmentInverted","pointsType","count","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","w","size","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","text","getComputedTextLength","getCodePoint","codePoint","charCodeAt","second","isRegionalCode","Font","typekitLoaded","_warned","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","renderLocalTransform","localTransforms","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","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","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","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","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","context","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","typ","mixkey","seed","smear","stringseed","tostring","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","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","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","_name","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","initialize","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","_interop_require_default","require","_react","_head","_getimgprops","_imageconfig","_imageconfigcontext","_imageloader","configEnv","handleLoading","placeholder","onLoadRef","onLoadingCompleteRef","setBlurComplete","unoptimized","decode","Promise","resolve","catch","then","parentElement","isConnected","Event","prevented","stopped","nativeEvent","currentTarget","isDefaultPrevented","isPropagationStopped","persist","preventDefault","stopPropagation","getDynamicProps","fetchPriority","majorStr","minorStr","major","minor","fetchpriority","ImageElement","forwardRef","param","forwardedRef","srcSet","sizes","decoding","loading","setShowAltText","onLoad","default","useCallback","complete","configContext","useContext","ImageConfigContext","useMemo","imageConfigDefault","allSizes","deviceSizes","imageSizes","sort","onLoadingComplete","blurComplete","showAltText","imgAttributes","meta","imgMeta","getImgProps","defaultLoader","imgConf","Fragment","priority","as","imageSrcSet","referrerPolicy","__esModule","AmpStateContext","createContext","isInAmpMode","ampFirst","hybrid","hasQuery","_imageblursvg","isStaticRequire","Map","getInt","isFinite","NaN","generateImgAttrs","quality","loader","widths","kind","viewportWidthRe","percentSizes","match","exec","smallestRatio","Set","getWidths","last","_state","blurDataURL","layout","objectFit","objectPosition","lazyBoundary","lazyRoot","isDefaultLoader","customImageLoader","opts","layoutToSizes","responsive","layoutStyle","intrinsic","maxWidth","layoutSizes","blurWidth","blurHeight","staticSrc","widthInt","heightInt","isStaticImageData","isStaticImport","staticImageData","ratio","isLazy","startsWith","endsWith","dangerouslyAllowSVG","qualityInt","imgStyle","blurStyle","backgroundSize","backgroundPosition","backgroundRepeat","backgroundImage","getImageBlurSvg","all","_export","defaultHead","_default","_sideeffect","_ampcontext","_headmanagercontext","_ampmode","inAmpMode","head","charSet","onlyReactElement","child","Children","toArray","reduce","fragmentList","fragmentChild","METATYPES","reduceComponents","headChildrenElements","tags","metaTypes","metaCategories","isUnique","hasKey","has","metatype","category","categories","unique","some","newProps","cloneElement","ampState","headManager","HeadManagerContext","reduceComponentsToState","std","svgWidth","svgHeight","VALID_LOADERS","loaderFile","domains","disableStaticImages","minimumCacheTTL","formats","contentSecurityPolicy","contentDispositionType","remotePatterns","unstable_getImgProps","_warnonce","_imagecomponent","imgProps","warnOnce","entries","encodeURIComponent","__next_img_default","SideEffect","isServer","useClientOnlyLayoutEffect","useLayoutEffect","useClientOnlyEffect","emitChange","mountedInstances","headElements","Boolean","updateHead","_headManager_mountedInstances","delete","_pendingUpdate","ex","UAParser","ClientUAInstance","getBrowser","cpu","getCPU","device","getDevice","getEngine","getOS","ua","getUA","setUa","userAgentString","setUA","parseUserAgent","UserAgentInstance","UA","setUserAgent","UAHelper","_defineProperties","descriptor","_extends","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_assertThisInitialized","self","ReferenceError","DeviceTypes","BrowserTypes","Chrome","Firefox","Opera","Yandex","Safari","InternetExplorer","Edge","Chromium","Ie","MobileSafari","EdgeChromium","MIUI","SamsungBrowser","OsTypes","IOS","Android","WindowsPhone","Windows","MAC_OS","InitialDeviceTypes","isMobile","isTablet","isBrowser","isSmartTV","isConsole","isWearable","setDefaults","getNavigatorInstance","isIOS13Check","nav","platform","maxTouchPoints","MSStream","mobilePayload","vendor","model","osVersion","isMobileType","isTabletType","isMobileAndTabletType","isSmartTVType","isBrowserType","_ref5","isWearableType","_ref6","isConsoleType","_ref7","isEmbeddedType","_ref8","getMobileVendor","_ref9","getMobileModel","_ref10","getDeviceType","_ref11","isAndroidType","_ref12","isWindowsType","_ref13","isMacOsType","_ref14","isWinPhoneType","_ref15","isIOSType","_ref16","getOsVersion","_ref17","getOsName","_ref18","isChromeType","_ref19","isFirefoxType","_ref20","isChromiumType","_ref21","isEdgeType","_ref22","isYandexType","_ref23","isSafariType","_ref24","isMobileSafariType","_ref25","isOperaType","_ref26","isIEType","_ref27","isMIUIType","_ref28","isSamsungBrowserType","_ref29","getBrowserFullVersion","_ref30","getBrowserVersion","_ref31","getBrowserName","_ref32","getEngineName","_ref33","getEngineVersion","_ref34","isElectronType","isEdgeChromiumType","getIOS13","getIPad13","getIphone13","getIPod13","getUseragent","userAg","buildSelectorsObject","isEmbedded","isMobileSafari","isChromium","isMobileOnly","isDesktop","isAndroid","isWinPhone","isIOS","isChrome","isFirefox","isOpera","isIE","osName","fullBrowserVersion","browserVersion","browserName","mobileVendor","mobileModel","engineName","engineVersion","isEdge","isYandex","deviceType","isIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","isMIUI","isSamsungBrowser","useDeviceData","hookUserAgent","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","enumerize","enums","toUpperCase","str1","str2","lowerize","rgxMapper","arrays","matches","regex","strMapper","windowsVersionMap","ME","XP","Vista","RT","regexes","EDGE","extensions","getResult","_navigator","_ua","_uach","userAgentData","_rgxmap","mergedRegexes","extend","_isSelfNav","_browser","brave","isBrave","_cpu","_device","mobile","_engine","_os","CPU","DEVICE","ENGINE","OS","$","jQuery","Zepto","parser","set"],"sourceRoot":""}