{"version":3,"sources":["webpack:///./app/javascript/images/logo/logo-wh.png","webpack:///./node_modules/gsap/gsap-core.js","webpack:///./node_modules/gsap/CSSPlugin.js","webpack:///./node_modules/gsap/index.js","webpack:///./node_modules/gsap/Observer.js","webpack:///./node_modules/gsap/ScrollTrigger.js","webpack:///./app/javascript/i18n/views/lp/en.js","webpack:///./app/javascript/i18n/views/lp/th.js","webpack:///./app/javascript/images/logo/logo.png","webpack:///./node_modules/v-click-outside/dist/v-click-outside.umd.js","webpack:///./app/javascript/components/layouts/lp/Footer.vue?9525","webpack:///app/javascript/components/layouts/lp/Footer.vue","webpack:///./app/javascript/components/layouts/lp/Footer.vue?94b0","webpack:///./app/javascript/components/layouts/lp/Footer.vue","webpack:///./app/javascript/i18n/i18n.js","webpack:///./node_modules/@egjs/axes/node_modules/@cfcs/core/dist/cfcs.esm.js","webpack:///./node_modules/@egjs/flicking-plugins/dist/plugins.esm.js","webpack:///./app/javascript/components/layouts/lp/Footer.vue?9f84","webpack:///./node_modules/vue-body-scroll-lock/dist/vue-body-scroll-lock.common.js","webpack:///./app/javascript/consts/settings.js.erb","webpack:///./app/javascript/components/layouts/LandingPage.vue?bc0b","webpack:///app/javascript/components/layouts/lp/Header.vue","webpack:///./app/javascript/components/layouts/lp/Header.vue?661e","webpack:///./app/javascript/components/layouts/LandingPage.vue?cb16","webpack:///app/javascript/components/layouts/LandingPage.vue","webpack:///./app/javascript/components/layouts/lp/Header.vue","webpack:///./app/javascript/components/layouts/lp/Header.vue?5341","webpack:///./app/javascript/components/layouts/LandingPage.vue","webpack:///./node_modules/lottie-web/build/player/lottie.js","webpack:///./node_modules/vue-lottie/src/lottie.vue?0608","webpack:///./node_modules/vue-lottie/src/lottie.vue?2c8a","webpack:///./node_modules/vue-lottie/src/lottie.vue?cb75","webpack:///./node_modules/vue-lottie/src/lottie.vue","webpack:///./node_modules/@egjs/axes/dist/axes.esm.js","webpack:///./app/javascript/images/views/lp/recruiter/profile/profile-f.png","webpack:///./app/javascript/components/layouts/lp/Header.vue?a404","webpack:///./node_modules/@egjs/agent/dist/agent.esm.js","webpack:///./node_modules/@egjs/list-differ/dist/list-differ.esm.js","webpack:///./node_modules/@egjs/vue-flicking/dist/flicking.esm.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./app/javascript/images/views/lp/home/banner-home.jpg","webpack:///./app/javascript/images/views/lp/recruiter/profile/profile-m.png","webpack:///./node_modules/@egjs/imready/dist/imready.esm.js","webpack:///./node_modules/@egjs/flicking/dist/flicking.esm.js","webpack:///./app/javascript/mixins/helpers.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/index.es.js","webpack:///./node_modules/@egjs/component/dist/component.esm.js","webpack:///./app/javascript/mixins/i18n.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./app/javascript/views/lp/home/Index.vue?e396","webpack:///app/javascript/views/lp/home/Index.vue","webpack:///./app/javascript/views/lp/home/Index.vue?7678","webpack:///./app/javascript/views/lp/home/Index.vue","webpack:///./app/javascript/views/lp/home/Index.vue?d5ee","webpack:///./app/javascript/packs/lp/home/index.js"],"names":["module","exports","_assertThisInitialized","self","ReferenceError","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","__proto__","_suppressOverwrites","_reverting","_context","_globalTimeline","_win","_coreInitted","_doc","_coreReady","_lastRenderedFrame","_quickTween","_tickerActive","n","c","n1","easeOut","_config","autoSleep","force3D","nullTargetWarn","units","lineHeight","_defaults","duration","overwrite","delay","_bigNum","_tinyNum","_2PI","Math","PI","_HALF_PI","_gsID","_sqrt","sqrt","_cos","cos","_sin","sin","_isString","value","_isFunction","_isNumber","_isUndefined","_isObject","_isNotFalse","_windowExists","window","_isFuncOrString","_isTypedArray","ArrayBuffer","isView","_isArray","Array","isArray","_strictNumExp","_numExp","_numWithUnitExp","_complexStringNumExp","_relExp","_delimitedValueExp","_unitExp","_globals","_installScope","_install","scope","_merge","gsap","_missingPlugin","property","console","warn","_warn","message","suppress","_addGlobal","name","obj","_emptyFunc","_startAtRevertConfig","suppressEvents","isStart","kill","_revertConfigNoKill","_revertConfig","_reservedProps","_lazyTweens","_lazyLookup","_plugins","_effects","_nextGCFrame","_harnessPlugins","_callbackNames","_harness","targets","harnessPlugin","i","target","_gsap","harness","length","targetTest","GSCache","splice","_getCache","toArray","_getProperty","v","getAttribute","_forEachName","names","func","split","forEach","_round","round","_roundPrecise","_parseRelative","start","operator","charAt","end","parseFloat","substr","_arrayContainsAny","toSearch","toFind","l","indexOf","_lazyRender","tween","a","slice","_lazy","render","_lazySafeRender","animation","time","force","_initted","_startAt","_numericIfPossible","match","trim","_passThrough","p","_setDefaults","defaults","base","toMerge","_mergeDeep","_copyExcluding","excluding","copy","_inheritDefaults","vars","excludeDuration","parent","keyframes","inherit","_dp","_addLinkedListItem","child","firstProp","lastProp","sortBy","t","prev","_prev","_next","_removeLinkedListItem","next","_removeFromParent","onlyIfParentHasAutoRemove","autoRemoveChildren","remove","_act","_uncache","_end","_dur","_start","_dirty","_recacheAncestors","totalDuration","_rewindStartAt","totalTime","revert","immediateRender","autoRevert","_hasNoPausedAncestors","_ts","_elapsedCycleDuration","_repeat","_animationCycle","_tTime","_rDelay","tTime","cycleDuration","whole","floor","_parentToChildTotalTime","parentTime","_tDur","_setEnd","abs","_rts","_alignPlayhead","smoothChildTiming","_time","_postAddChecks","timeline","add","rawTime","_clamp","_zTime","_addToTimeline","position","skipChecks","_parsePosition","_delay","timeScale","_sort","_isFromOrFromStart","_recent","_scrollTrigger","trigger","ScrollTrigger","_attemptInitTween","_initTween","_pt","lazy","_ticker","frame","push","_parentPlayheadIsBeforeStart","_ref","_lock","_ref2","data","_setDuration","skipUncache","leavePlayhead","repeat","dur","totalProgress","_onUpdateTotalDuration","Timeline","_zeroPosition","endTime","percentAnimation","offset","isPercent","labels","recent","clippedDuration","isNaN","replace","_createTweenType","type","params","irVars","isLegacy","varsIndex","runBackwards","startAt","Tween","_conditionalReturn","min","max","getUnit","exec","_slice","_isArrayLike","nonEmpty","nodeType","_flatten","ar","leaveStrings","accumulator","_accumulator","apply","selector","_wake","call","querySelectorAll","el","current","nativeElement","createElement","shuffle","sort","random","distribute","each","ease","_parseEase","from","cache","isDecimal","ratios","axis","ratioX","ratioY","center","edges","originX","originY","x","y","d","j","wrapAt","distances","grid","getBoundingClientRect","left","amount","b","u","_invertEase","_roundModifier","pow","raw","snap","snapTo","radius","is2D","values","increment","dx","dy","closest","roundingIncrement","returnFunction","_wrapArray","wrapper","index","_replaceRandom","nums","s","mapRange","inMin","inMax","outMin","outMax","inRange","outRange","_getLabelInDirection","fromTime","backward","distance","label","_callback","executeLazyFirst","result","callback","prevContext","context","_ctx","callbackScope","_interrupt","scrollTrigger","progress","_registerPluginQueue","_createPlugin","config","isFunc","Plugin","init","this","_props","instanceDefaults","_renderPropTweens","_addPropTween","_killPropTweensOf","modifier","_addPluginModifier","rawVars","statics","get","getSetter","_getSetter","aliases","register","prop","toUpperCase","PropTween","_255","_colorLookup","aqua","lime","silver","black","maroon","teal","blue","navy","white","olive","yellow","orange","gray","purple","green","red","pink","cyan","transparent","_hue","h","m1","m2","splitColor","toHSL","forceAlpha","r","g","wasHSL","parseInt","map","Number","_colorOrderData","_colorExp","_formatColors","orderMatchData","shell","colors","color","join","shift","RegExp","_hslExp","_colorStringFilter","combined","lastIndex","test","_id","_req","_raf","_self","_delta","_i","_getTime","Date","now","_lagThreshold","_adjustedLag","_startTime","_lastUpdate","_gap","_nextTime","_listeners","_tick","overlap","dispatch","elapsed","manual","tick","deltaRatio","fps","wake","document","gsapVersions","version","GreenSockGlobals","requestAnimationFrame","sleep","f","setTimeout","cancelAnimationFrame","clearTimeout","lagSmoothing","threshold","adjustedLag","Infinity","_fps","once","prioritize","_easeMap","_customEaseExp","_quotesExp","_parseObjectInString","val","parsedVal","key","lastIndexOf","_propagateYoyoEase","isYoyo","_first","yoyoEase","_yoyo","_ease","_yEase","defaultEase","open","close","nested","substring","_CE","_configEaseFromString","_insertEase","easeIn","easeInOut","lowercaseName","toLowerCase","_easeInOutFromOut","_configElastic","amplitude","period","p1","p2","p3","asin","_configBack","overshoot","power","Linear","easeNone","none","SteppedEase","steps","immediateStart","id","set","Animation","repeatDelay","yoyo","_proto","startTime","arguments","_totalTime","_ptLookup","_pTime","iteration","_ps","paused","includeRepeats","wrapRepeats","prevIsReverting","globalTime","_sat","seek","restart","includeDelay","play","reversed","reverse","pause","atTime","resume","invalidate","isActive","eventCallback","_onUpdate","then","onFulfilled","Promise","resolve","_resolve","_then","_prom","ratio","_Animation","_this","sortChildren","_proto2","to","fromTo","fromVars","toVars","delayedCall","staggerTo","stagger","onCompleteAll","onCompleteAllParams","onComplete","onCompleteParams","staggerFrom","staggerFromTo","prevPaused","pauseTween","prevStart","prevIteration","prevTime","tDur","crossingStart","rewinding","doesWrap","repeatRefresh","onRepeat","_hasPause","_forcing","_last","_findNextPauseTween","onUpdate","adjustedTime","_this2","addLabel","getChildren","tweens","timelines","ignoreBeforeTime","getById","animations","removeLabel","killTweensOf","_totalTime2","addPause","removePause","props","onlyActive","getTweensOf","_overwritingTween","children","parsedTargets","isGlobalTime","_targets","tweenTo","initted","tl","_vars","_onStart","onStart","onStartParams","tweenFromTo","fromPosition","toPosition","nextLabel","afterTime","previousLabel","beforeTime","currentLabel","shiftChildren","adjustLabels","soft","clear","includeLabels","updateRoot","_forceAllPropTweens","_addComplexStringPropTween","setter","stringFilter","funcParam","startNums","endNum","chunk","startNum","hasRandom","pt","_renderComplexString","matchIndex","e","m","fp","optional","currentValue","parsedStart","_setterFuncWithParam","_setterFunc","_setterPlain","_renderBoolean","_renderPlain","_checkPlugin","plugin","ptLookup","_parseFuncOrString","style","_processVars","priority","cleanVars","hasPriority","gsData","harnessVars","overwritten","prevStartAt","fullTargets","autoOverwrite","_overwrite","_from","_ptCache","_op","_sortPropTweensByPriority","_onInit","_parseKeyframe","allProps","easeEach","_staggerTweenProps","_staggerPropsToSkip","_Animation2","skipInherit","_this3","curTarget","staggerFunc","staggerVarsToMerge","_this3$vars","kf","_proto3","isNegative","prevRatio","_renderZeroDurationTween","resetTo","startIsRelative","skipRecursion","rootPT","lookup","ptCache","_updatePropTweens","overwrittenProps","curLookup","curOverwriteProps","killingTargets","propTweenLookup","firstPT","a1","a2","_arraysMatch","propertyAliases","_addAliasesToVars","onReverseComplete","onReverseCompleteParams","_setterAttribute","setAttribute","hasNonDependentRemaining","op","dep","_setterWithModifier","mSet","mt","pt2","first","last","pr","change","renderer","TweenMax","TweenLite","TimelineLite","TimelineMax","_media","_emptyArray","_lastMediaTime","_contextID","_dispatch","_onMediaChange","matches","anyMatch","toggled","queries","conditions","matchMedia","onMatch","Context","_r","isReverted","_proto5","prevSelector","ignore","getTweens","_this4","o","MatchMedia","contexts","_proto6","mq","active","cond","addListener","addEventListener","registerPlugin","_len2","args","_key2","getProperty","unit","uncache","getter","format","quickSetter","setters","quickTo","_merge2","isTweening","registerEffect","_ref3","effect","plugins","extendTimeline","pluginName","registerEase","parseEase","exportRoot","includeDelayedCalls","matchMediaRefresh","found","removeEventListener","utils","wrap","range","wrapYoyo","total","normalize","clamp","pipe","_len","functions","_key","reduce","unitize","interpolate","mutate","interpolators","il","isString","master","install","effects","ticker","globalTimeline","core","globals","getCache","reverting","toAdd","suppressOverwrites","_getPluginPropTween","_buildModifierPlugin","temp","modifiers","_addModifiers","Power0","Power1","Power2","Power3","Power4","Quad","Cubic","Quart","Quint","Strong","Elastic","Back","Bounce","Sine","Expo","Circ","_docElement","_pluginInitted","_tempDiv","_recentSetterPlugin","_supports3D","_transformProps","_RAD2DEG","_DEG2RAD","_atan2","atan2","_capsExp","_horizontalExp","_complexExp","_propertyAliases","autoAlpha","scale","alpha","_renderCSSProp","_renderPropWithEnd","_renderCSSPropWithBeginning","_renderRoundedCSSProp","_renderNonTweeningValue","_renderNonTweeningValueOnlyAtEnd","_setterCSSStyle","_setterCSSProp","setProperty","_setterTransform","_setterScale","scaleX","scaleY","_setterScaleWithRender","renderTransform","_setterTransformWithRender","_transformProp","_transformOriginProp","_saveStyle","isNotCSS","tfm","transform","zOrigin","svg","svgo","_removeIndependentTransforms","translate","removeProperty","_revertStyle","properties","saver","save","_createElement","ns","createElementNS","_getComputedProperty","skipPrefixFallback","cs","getComputedStyle","getPropertyValue","_checkPropPrefix","_prefixes","element","preferPrefix","documentElement","cssText","_getBBoxHack","swapIfPossible","bbox","ownerSVGElement","oldParent","parentNode","oldSibling","nextSibling","oldCSS","appendChild","display","getBBox","_gsapBBox","insertBefore","removeChild","_getAttributeFallbacks","attributesArray","hasAttribute","_getBBox","bounds","error","width","height","_isSVG","getCTM","_removeProperty","first2Chars","removeAttribute","beginning","onlySetAtEnd","_nonConvertibleUnits","deg","rad","turn","_nonStandardLayouts","flex","_convertToUnit","px","isSVG","curValue","curUnit","horizontal","isRootSVG","tagName","measureProperty","toPixels","toPercent","body","origin","_firstTwoOnly","_specialProps","startValues","startValue","endValue","endUnit","startUnit","_keywordToPercent","top","bottom","right","_renderClearProps","clearTransforms","clearProps","_identity2DMatrix","_rotationalProperties","_isNullTransform","matrixString","force2D","addedToDOM","matrix","baseVal","consolidate","offsetParent","nextElementSibling","_applySVGOrigin","originIsAbsolute","smooth","matrixArray","pluginToAddPropTweensTo","determinant","xOriginOld","xOrigin","yOriginOld","yOrigin","xOffsetOld","xOffset","yOffsetOld","yOffset","tx","ty","originSplit","z","rotation","rotationX","rotationY","skewX","skewY","perspective","angle","a12","a22","t1","t2","t3","a13","a23","a33","a42","a43","a32","invertedScaleX","rotate","forceCSS","xPercent","offsetWidth","yPercent","offsetHeight","transformPerspective","_renderCSSTransforms","_renderNon3DTransforms","_zeroDeg","_zeroPx","_endParenthesis","transforms","use3D","a11","a21","tan","direction","cap","finalValue","_assign","source","endCache","startCache","side","positionAndScale","all","CSSPlugin","specialProp","relative","isTransformRelated","transformPropTween","inlineProps","styles","visibility","parseTransform","smoothOrigin","autoRound","_getMatrix","checkPrefix","getStyleSaver","gsapWithCSS","_defineProperties","descriptor","enumerable","configurable","writable","defineProperty","_docEl","_body","_isTouch","_pointerType","_root","_normalizer","_eventTypes","_getGSAP","_startup","_observers","_scrollers","_proxies","_bridge","_getProxyProp","_isViewport","_addListener","nonPassive","capture","passive","_removeListener","_scrollLeft","_scrollTop","isPressed","_scrollCacheFunc","doNotCache","cachingFunc","history","scrollRestoration","isNormalizing","iOS","cacheID","_horizontal","os","os2","d2","sc","scrollTo","_vertical","pageXOffset","pageYOffset","_getTarget","_getScrollFunc","scrollingElement","_getVelocityProp","minTimeRefresh","useDelta","v1","v2","dropToZeroTime","update","reset","getVelocity","latestValue","tOld","vOld","_getEvent","preventDefault","_gsapAllow","changedTouches","_getAbsoluteMax","_setScrollTrigger","scrollers","proxies","bridge","_initCore","Observer","isTouch","navigator","maxTouchPoints","msMaxTouchPoints","eventTypes","Constructor","protoProps","staticProps","tolerance","dragMinimum","debounce","onStop","onStopDelay","wheelSpeed","event","onDragStart","onDragEnd","onDrag","onPress","onRelease","onRight","onLeft","onUp","onDown","onChangeX","onChangeY","onChange","onToggleX","onToggleY","onHover","onHoverEnd","onMove","ignoreCheck","isNormalizer","onGestureStart","onGestureEnd","onWheel","onEnable","onDisable","onClick","scrollSpeed","allowClicks","lockAxis","onLockAxis","onStopDelayedCall","dragged","moved","wheeled","locked","prevDeltaX","prevDeltaY","scrollFuncX","scrollFuncY","scrollX","scrollY","limitToTouch","isViewport","ownerDoc","ownerDocument","deltaX","deltaY","onClickTime","clickCapture","_ignoreCheck","isPointerOrTouch","pointerType","changedX","changedY","onDelta","_vx","_vy","onTouchOrPointerDelta","_onDrag","clientX","clientY","isDragging","startX","startY","_onPress","button","_onRelease","isTrackingDrag","wasDragging","isDragNotClick","eventData","defaultPrevented","click","createEvent","syntheticEvent","initMouseEvent","screenX","screenY","dispatchEvent","isGesturing","_onGestureStart","touches","_onGestureEnd","onScroll","_onWheel","multiplier","deltaMode","innerHeight","_onMove","_onHover","_onHoverEnd","_onClick","_dc","enable","isEnabled","disable","filter","getAll","_resizeDelay","_toArray","_time2","_syncInterval","_refreshing","_pointerIsDown","_prevWidth","_prevHeight","_autoRefresh","_ignoreResize","_ignoreMobileResize","_baseScreenHeight","_baseScreenWidth","_fixIOSBug","_scrollRestoration","_div100vh","_100vh","_isReverted","_clampingMax","_limitCallbacks","_rafID","_refreshingAll","_queueRefreshID","_primary","_time1","_lastScrollTime","_enabled","_parseClamp","_keepClamp","_rafBugFix","_pointerDownHandler","_pointerUpHandler","_getViewportDimension","dimensionProperty","_winOffsets","innerWidth","_getBounds","_iterateAutoRefresh","events","_endAnimation","enabled","callbackAnimation","_abs","_left","_right","_bottom","_width","_height","_padding","_margin","_Width","_px","_getComputedStyle","withoutTransforms","_getSize","_getLabelRatioArray","_snapDirectional","snapIncrementOrArray","snapped","_multiListener","types","_wheelListener","scrollFunc","wheelHandler","_markerDefaults","startColor","endColor","indent","fontSize","fontWeight","toggleActions","anticipatePin","_keywords","_offsetToPx","size","eqIndex","container","_ref4","matchWidthEl","containerAnimation","useFixedPosition","isScroller","css","_isStart","innerText","_offset","_positionMarker","marker","flipped","oppositeSide","_isFlipped","_triggers","_ids","_sync","_updateAll","clientWidth","_setBaseDimensions","fullscreenElement","webkitFullscreenElement","_softRefresh","_savedStyles","_revertRecorded","media","query","_revertAll","rec","_refreshID","_refresh100vh","_hideAllMarkers","hide","skipRevert","isRefreshing","refreshInits","scrollBehavior","refresh","_subPinOffset","pin","original","adjustPinSpacing","scroller","_dir","endClamp","_endClamp","startClamp","_startClamp","setPositions","onRefresh","_lastScroll","_direction","isUpdating","recordVelocity","scroll","_propNamesToCopy","_stateProps","concat","spacer","spacerState","swappedIn","spacerStyle","pinStyle","flexBasis","overflow","boxSizing","_setState","state","_getState","scrollerSize","markerScroller","scrollerBounds","borderWidth","scrollerMax","clampZeroProp","localOffset","globalOffset","offsets","_caScrollDist","_prefixExp","_reparent","_stOrig","_interruptionTracker","getValueFunc","initialValue","onInterrupt","last1","last2","_shiftMarker","getScroll","getTween","change1","change2","checkForInterruption","pinCache","snapFunc","scroll1","scroll2","markerStart","markerEnd","markerStartTrigger","markerEndTrigger","markerVars","executingOnRefresh","pinOriginalState","pinActiveState","pinState","pinGetter","pinSetter","pinStart","pinChange","spacingStart","markerStartSetter","pinMoves","markerEndSetter","snap1","snap2","scrubTween","scrubSmooth","snapDurClamp","snapDelayedCall","prevScroll","prevAnimProgress","caMarkerSetter","customRevertReturn","toggleClass","onToggle","scrub","pinSpacing","invalidateOnRefresh","onScrubComplete","onSnapComplete","pinReparent","pinSpacer","fastScrollEnd","preventOverlaps","isToggle","scrollerCache","pinType","callbacks","onEnter","onLeave","onEnterBack","onLeaveBack","markers","onRefreshInit","getScrollerSize","getScrollerOffsets","lastSnap","lastRefresh","prevProgress","bind","refreshPriority","tweenScroll","scrubDuration","_getClosestLabel","st","directional","refreshedRecently","velocity","naturalEnd","inertia","endScroll","_snap","_onInterrupt","_onComplete","stRevert","className","spacerIsNative","classList","content","oldOnUpdate","oldParams","onUpdateParams","previous","prevRefreshing","_swapPinOut","pinOffset","isVertical","override","curTrigger","curPin","oppositeScroll","revertedPins","forcedOverflow","markerStartOffset","markerEndOffset","isFirstRefresh","otherPinOffset","parsedEnd","parsedEndTrigger","endTrigger","pinnedContainer","triggerIndex","unshift","_pinPush","_pinOffset","ceil","omitOffsets","_copyState","endAnimation","labelToScroll","getTrailing","forceFake","toggleState","action","stateChanged","isAtMax","isTakingAction","clipped","newStart","newEnd","keepClamp","_change","allowAnimation","onKill","updateFunc","_queueRefreshAll","clearInterval","userAgent","mm","bodyStyle","border","borderTopStyle","AnimationProto","setInterval","w","hidden","limitCallbacks","ms","syncInterval","ignoreMobileResize","autoRefreshEvents","scrollerProxy","clearMatchMedia","isInViewport","positionInViewport","referencePoint","killAll","allowListeners","listeners","saveStyles","safe","clearScrollMemory","maxScroll","getScrollFunc","isScrolling","snapDirectional","batch","varsCopy","interval","batchMax","proxyCallback","elements","triggers","_inputIsFocused","_clampScrollAndGetDurationMultiplier","_allowNativePanning","touchAction","_overflow","auto","_nestedScroll","_ref5","node","_isScrollT","scrollHeight","clientHeight","scrollWidth","overflowY","overflowX","_isScroll","stopPropagation","inputs","_captureInputs","_inputExp","isInput","maxY","lastRefreshID","skipTouchMove","startScrollX","startScrollY","_vars2","normalizeScrollX","momentum","allowNestedScroll","smoother","ScrollSmoother","smootherInstance","initialScale","visualViewport","outerWidth","wheelRefresh","resolveMomentumDuration","inputObserver","resumeTouchMove","scrollClampX","scrollClampY","updateClamps","removeContentOffset","onResize","ignoreDrag","prevScale","currentScroll","velocityX","velocityY","xArray","yArray","yClamped","observe","normalizeScroll","normalizer","_inputObserver","ss","ref","I18n","translations","extend","handler","middleware","Error","detectIframe","srcTarget","composedPath","path","contains","activeElement","oldValue","JSON","stringify","unbind","directive","library","components","FontAwesomeIcon","mixins","reeracoenWebsite","url","facebookUrl","linkedinUrl","lineUrl","youtubeUrl","tiktokUrl","mailAddress","googleMapUrl","telNo","paths","language","en","th","aboutUs","recruiter","client","talents","currentYear","component","_vm","_h","$createElement","_c","staticClass","attrs","_v","prefix","iconName","telNoToHref","_s","root","define","global","padding","number","toString","toFixed","precision","decimalAdjust","isObject","isFunction","isSet","isNumber","isBoolean","isNull","exp","NaN","lazyEvaluate","merge","dest","hasOwnProperty","DATE","day_names","abbr_day_names","month_names","abbr_month_names","meridian","NUMBER_FORMAT","separator","delimiter","strip_insignificant_zeros","CURRENCY_FORMAT","sign_first","PERCENTAGE_FORMAT","SIZE_UNITS","DEFAULT_OPTIONS","defaultLocale","locale","$","attr","defaultSeparator","placeholder","fallbacks","missingBehaviour","missingTranslationPrefix","initializeOptions","locales","list","localeParts","firstFallback","secondFallback","nullableFallbackLocale","pluralization","count","currentLocale","options","scopes","fullScope","getFullScope","undefined","defaultValue","pluralizationLookupWithoutFallback","pluralizerKey","pluralizerKeys","pluralizer","pluralizationLookup","date","am","pm","prepareOptions","subject","createTranslationOptions","translationOptions","translation","usedScope","optionsWithoutDefault","some","translationOption","pluralize","missingTranslation","regex","nullPlaceholder","missingPlaceholder","String","fullScopeWithLocale","toNumber","formattedNumber","negative","parts","buffer","sign","toCurrency","localize","toPercentage","localizedValue","toTime","parseDate","convertedDate","fraction","UTC","setTime","parse","$1","$2","$3","$6","$4","$5","strftime","meridianOptions","getTime","weekDay","getDay","day","getDate","year","getFullYear","month","getMonth","hour","getHours","hour12","secs","getSeconds","mins","getMinutes","getTimezoneOffset","absOffsetHours","absOffsetMinutes","timezoneoffset","dateString","date_string","toHumanSize","kb","iterations","obj1","obj2","factory","keys","OBSERVERS_PATH","CFCS_DETECTED_DEPENDENCIES","extendStatics","setPrototypeOf","getDetectedStack","versionList","_emitter","_current","__proto","stack","currentDetected","_setCurrent","subscribe","on","unsubscribe","off","prevValue","isUpdate","valueOf","ComputedObserver","_super","_computedCallback","_registered","_onCheckUpdate","TypeError","__","__extends","host","observers","detected","observer","results","pop","injectObserve","memberName","publicName","nextAttributes","getObserver","Observe","injectReactiveSubscribe","object","getObservers","observerName","ReactiveSubscribe","defineObservers","instance","isComputed","_a","_b","computedList","Computed","attributes","computedCallback","AutoPlay","_d","animationDuration","_e","NEXT","_f","stopOnHover","delayAfterHover","_flicking","_timerId","_mouseEntered","_playing","_movePanel","_duration","stop","_onMouseEnter","_onMouseLeave","_delayAfterHover","_animationDuration","_stopOnHover","flicking","destroy","MOVE_START","HOLD_START","MOVE_END","SELECT","targetEl","animating","moveType","FREE_SCROLL","camera","cameraPosition","currentPanel","prevPanel","nextPanel","currentPosition","nextPosition","prevPosition","restSize","catch","BROWSER","CLICK","MOUSE_DOWN","TOUCH_START","ARROW","PAGINATION","BULLET","FRACTION","SCROLL","addClass","removeClass","classRegex","getElement","querySelector","Arrow","parentEl","prevElSelector","nextElSelector","disabledClass","_g","moveCount","moveByViewportSize","_preventInputPropagation","_onPrevClick","anchorPoints","firstAnchor","_moveCount","_moveByViewportSize","control","moveToPosition","_onCatch","circularEnabled","targetPanel","focus","panel","moveTo","_onNextClick","lastAnchor","_onAnimation","controller","holding","_updateClass","animatingContext","err","_parentEl","_prevElSelector","_nextElSelector","_disabledClass","_prevEl","_nextEl","MOVE","prevEl","nextEl","evt","pos","cameraRange","stopAtPrevEdge","stopAtNextEdge","__spreadArray","pack","Renderer","pagination","_pagination","_wrapper","_createBulletFromString","html","bullet","createRange","createContextualFragment","firstChild","_addBulletEvents","panelIndex","BulletRenderer","_bullets","_prevIndex","classPrefix","bulletClass","_bulletClass","activeClass","_activeClass","renderBullet","renderActiveBullet","bulletWrapperClass","innerHTML","anchorPoint","bullets","prevIndex","activeBulletIndex","prevBullet","newBullet","parentElement","replaceChild","activeBullet","newActiveBullet","FractionRenderer","_prevTotal","fractionWrapperClass","fractionCurrentClass","fractionTotalClass","renderFraction","currentIndex","anchorCount","fractionCurrentSelector","fractionTotalSelector","currentWrapper","totalWrapper","fractionCurrentFormat","fractionTotalFormat","ScrollBulletRenderer","_bulletSize","_previousIndex","_sliderIndex","sliderEl","firstElementChild","bulletSize","wrapperSize","bulletCount","dynamicWrapperClass","sliderClass","uninitClass","_","bulletStyle","marginLeft","marginRight","activeIndex","bulletActiveClass","prevClassPrefix","nextClassPrefix","prevClassRegex","nextClassRegex","idx","indexOffset","classList_1","bulletPrevClass","scrollOnChange","sliderIndex","PREV","Pagination","_j","_k","currentClass","totalClass","_l","_m","_o","ctx","_removeAllChilds","_renderer","_onIndexChange","_selector","_type","_classPrefix","_bulletCount","_renderBullet","_renderActiveBullet","_renderFraction","_fractionCurrentFormat","_fractionTotalFormat","_scrollOnChange","_createRenderer","WILL_CHANGE","WILL_RESTORE","PANEL_CHANGE","modules","installedModules","__webpack_require__","moduleId","Symbol","toStringTag","mode","__esModule","aFunction","fn","that","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPrimitive","has","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","getOwnPropertyDescriptor","O","P","fails","it","wellKnownSymbol","V8_VERSION","SPECIES","METHOD_NAME","array","foo","Boolean","toInteger","integer","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","sham","internalObjectKeys","hiddenKeys","getOwnPropertyNames","process","versions","v8","__webpack_exports__","argumentAsArray","argument","isElement","Node","eachNode","nodeList","NodeList","isElementList","throwError","arrayAsSelector","nodeListAsArray","nodes","findParentBySelector","$el","$root","elementHasSelector","elementHasOverflowHidden","elementScrollTopOnStart","scrollTop","elementScrollTopOnEnd","elementScrollLeftOnStart","scrollLeft","elementScrollLeftOnEnd","elementIsScrollableField","elementIsInputRange","_defineProperty","disablePageScroll","enablePageScroll","getScrollState","clearQueueScrollLocks","scroll_lock_getTargetScrollBarWidth","scroll_lock_getCurrentTargetScrollBarWidth","getPageScrollBarWidth","getCurrentPageScrollBarWidth","scroll_lock_addScrollableTarget","scroll_lock_removeScrollableTarget","scroll_lock_addScrollableSelector","scroll_lock_removeScrollableSelector","scroll_lock_addLockableTarget","scroll_lock_addLockableSelector","scroll_lock_setFillGapMethod","scroll_lock_addFillGapTarget","scroll_lock_removeFillGapTarget","scroll_lock_addFillGapSelector","scroll_lock_removeFillGapSelector","refillGaps","FILL_GAP_AVAILABLE_METHODS","queue","scrollableSelectors","lockableSelectors","fillGapSelectors","fillGapMethod","startTouchY","startTouchX","scroll_lock_hideLockableOverflow","fillGaps","scroll_lock_showLockableOverflow","unfillGaps","$target","onlyExists","currentOverflowYProperty","documentWidth","borderLeftWidthCurrentProperty","borderLeftWidth","borderRightWidthCurrentProperty","borderRightWidth","_currentWidth","$targets","sSelector","method","methods","scroll_lock_fillGapTarget","scroll_lock_unfillGapTarget","scroll_lock_fillGapSelector","fSelector","scroll_lock_unfillGapSelector","scroll_lock_hideLockableOverflowSelector","scroll_lock_showLockableOverflowSelector","scroll_lock_hideLockableOverflowTarget","scroll_lock_showLockableOverflowTarget","computedStyle","isLockable","scrollBarWidth","$lockableParent","currentMargin","maxWidth","currentPadding","paddingRight","currentFillGapMethod","currentClientY","currentClientX","up","down","directionWithOffset","handle","skip","parentScrollableEl","prevent","cancelable","deprecatedMethods","show","toggle","getState","getWidth","getCurrentWidth","setScrollableTargets","setFillGapSelectors","setFillGapTargets","clearQueue","scrollLock","ownKeys","getOwnPropertySymbols","sym","_objectSpread","getTargetScrollBarWidth","getCurrentTargetScrollBarWidth","addScrollableSelector","removeScrollableSelector","addScrollableTarget","removeScrollableTarget","addLockableSelector","addLockableTarget","addFillGapSelector","removeFillGapSelector","addFillGapTarget","removeFillGapTarget","setFillGapMethod","_state","getBuiltIn","classof","propertyIsEnumerable","toLength","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","fromIndex","includes","$filter","proto","arrayMethodHasSpeciesSupport","callbackfn","toObject","IS_PURE","store","copyright","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","anObject","bitmap","originalArray","C","NATIVE_WEAK_MAP","objectHas","shared","sharedKey","OBJECT_ALREADY_INITIALIZED","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","TYPE","inspectSource","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","Function","requireObjectCoercible","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","getCurrentScript","currentScript","pageSource","inlineScriptSourceRegExp","inlineScriptSource","ffStackRegExp","stackDetails","scriptLocation","line","currentLocation","location","href","hash","scripts","getElementsByTagName","outerHTML","readyState","src","functionToString","postfix","definePropertyModule","replacement","feature","detection","POLYFILL","NATIVE","string","$defineProperty","Attributes","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","IndexedObject","arraySpeciesCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","specificCreate","boundFunction","every","find","findIndex","filterOut","input","PREFERRED_STRING","SHARED","EXISTS","variable","namespace","$propertyIsEnumerable","NASHORN_BUG","1","V","check","globalThis","getOwnPropertyDescriptorModule","arg","scroll_lock","locks","lib_scroll_lock","gapMethod","_el","inserted","componentUpdated","lib_directive","Vue","iterator","freeze","directives","isBlue","required","drawer","lockScroll","lang","mounted","setLocale","lang_param","toggleMenu","onClickOutside","Header","class","home","rawName","expression","$event","signUpChoice","Footer","pageColor","_t","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","len","getDescriptor","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","arr","Uint8ClampedArray","Float32Array","Int16Array","createSizedArray","_typeof$6","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","_shouldRoundValues","bmPow","bmSqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface$1","propertyNames","absArr","defaultCurveSegments","degToRads","roundCorner","roundValues","bmRnd","styleDiv","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","q","RGBtoHSV","addSaturationToRGB","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","_workerSelf","setupWorker","Worker","Blob","blob","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","jLen","k","kLen","completed","hasMask","maskProps","masksProperties","convertPathsToAbsoluteValues","findCompLayers","refId","completeShapes","shapes","completeText","comp","findComp","__used","ks","checkVersion","minimum","animVersionString","animVersion","minimumVersion","checkText","iterateLayers","textLayer","documentData","animationData","assets","checkChars","chars","charData","ip","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","response","responseText","load","fullPath","errorCallback","XMLHttpRequest","onreadystatechange","status","send","completeData","payload","onError","createProcess","loadAnimation","processId","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","testImageLoaded","img","intervalId","_imageLoaded","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","append","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","_cbs","markerParser","parsePayloadLines","lines","keysCount","_markers","_marker","markerData","tm","dr","cm","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","autoplay","loop","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","autoloadSegments","initialSegment","setupAnimation","fileName","setData","wrapperAttributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","rendererType","initItems","gotoFrame","resize","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","goToAndStop","isFrame","numValue","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getPath","getAssetData","getDuration","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","elem","addPlayingCount","activate","nowTime","elapsedTime","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","div","unfreeze","getRegisteredAnimations","BezierFactory","str","beziers","bezEasing","BezierEasing","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","calcBezier","aT","getSlope","points","_p","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","kSplineTableSize","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","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","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","keyframesMetadata","nextKeyTime","keyTime","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","quat","qx","qy","qz","qw","heading","attitude","bank","c1","c2","c3","s1","s2","s3","getValueAtCurrentTime","renderedFrame","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","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","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","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","s0","_cw","StarShapeProperty","StarShapePropertyFactory","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","roundness","perimSegment","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","Matrix","_tan","_rnd","mCos","mSin","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","sz","setTransform","tz","b2","e2","f2","g2","h2","i2","j2","k2","l2","n2","o2","_identityCalculated","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","o1","multiply","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","applyToX","applyToY","applyToZ","getInverseMatrix","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","lottie","setLocation","setSubframeRendering","setPrefix","setQuality","inBrowser","installPlugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","queryString","pair","decodeURIComponent","useWebWorker","setIDPrefix","__getFactory","myScript","bodymovin","ShapeModifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","totalShapeLength","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","box","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","depth","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","cur","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","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","mid","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","fStyle","fWeight","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","elemsData","_currentCopies","_elements","_groups","resetElements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","group","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","mProps","rd","currentV","currentI","currentO","closerV","newPosPerc","derivative","denom","tcusp","square","p10","p11","p20","p21","other","shapeSegmentInverted","pointsType","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","combinedCharacters","BLACK_FLAG_CODE_POINT","surrogateModifiers","setUpNode","font","family","fontFamily","fontVariant","fontStyle","letterSpacing","familyArray","enabledFamilies","trimFontOptions","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","ch","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","rel","getCharData","_char","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","SlotManager","slotFactory","RenderableElement","slots","assign","initRenderable","isInRange","isTransparent","renderableComponents","addRenderableComponent","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","0","2","3","4","5","6","7","8","9","10","11","12","13","14","15","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","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","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","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","rect","expansor","feMorph","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","finalMat","renderLocalTransform","localTransforms","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","createFilter","filters","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","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","ost","buildShapeString","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","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","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","currentTransform","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","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","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","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","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","loadLuma","_svg","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","lineTo","bezierCurveTo","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","fill","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","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","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","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","textPath","margin","svgTransform","setup","perspectiveStyle","perspectiveElem","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","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","startdenom","significance","ARC4","keylen","me","S","flatten","typ","mixkey","seed","smear","stringseed","tostring","shortseed","entropy","Uint8Array","crypto","msCrypto","getRandomValues","browser","screen","autoseed","arc4","prng","int32","quick","pass","is_math_call","initialize$2","propTypes","SHAPE","_typeof$1","ExpressionManager","fetch","frames","_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","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","noOp","_value","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","val1","val2","applyEase","iKey","lenKey","nearestKey","obKey","framesToTime","timeToFrames","seedrandom","randSeed","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","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","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","defineProperties","anchor_point","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","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","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","_typeof","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","speed","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","firstKeyFrame","ret","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","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","pathMasker","dasharrayValue","getTotalLength","lineLength","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","$refs","lavContainer","$emit","win","__assign","__decorate","decorators","desc","Reflect","decorate","DIRECTION_VERTICAL","MOUSE_LEFT","MOUSE_RIGHT","MOUSE_MIDDLE","MOUSE_BUTTON_CODE_MAP","ANY","IS_IOS_SAFARI","TRANSFORM","head","PREVENT_DRAG_CSSPROPS","param","multi","dummy","nodeName","jQuery","jquery","raf","webkitRequestAnimationFrame","caf","webkitCancelAnimationFrame","keyInfo_1","oldraf_1","timestamp","performance","tranformed","filtered","equal","roundNumFunc","roundNumber","roundUnit","getRoundFunc","roundNumbers","getDecimalPlace","isFinite","getAngle","posX","posY","isCssPropsFromAxes","originalCssProps","same","getDirection","useHorizontal","useVertical","useDirection","checkType","userDirection","setCssProps","option","touchActionMap","oldCssProps","newCssProps_1","revertCssProps","EventManager","_axes","holdingCount","hold","roundPos","_getRoundPos","inputEvent","isTrusted","triggerRelease","destPos","depaPos","roundDepa","setTo","_createUserControll","bounceRatio","_getBounceRatio","triggerChange","axisManager","eventInfo","getEventInfo","isCanceled","triggerAnimationStart","triggerAnimationEnd","triggerFinish","setAnimationManager","userControl","toPos","userDuration","opt","bounce","InterruptManager","_options","_prevented","isInterrupting","interruptable","isInterrupted","setInterrupt","prevented","getInsidePosition","circular","toDestPos","targetRange","isOutside","isCircularable","getCirculatedPos","AxisManager","_axis","_complementOptions","_pos","getDelta","fullDepaPos","axes","acc","axisOptions","getAxisOptions","setAxis","axisOption","SUPPORT_TOUCH","SUPPORT_POINTER","SUPPORT_POINTER_EVENTS","isValidKey","inputKey","shiftKey","ctrlKey","altKey","metaKey","EventInput","_stopContextMenu","extendEvent","prevEvent","_getCenter","movement","_getMovement","_getScale","offsetX","offsetY","latestInterval","_latestInterval","timeStamp","deltaTime","srcEvent","preventSystemEvent","_getDistance","_getButton","buttonCodeMap","_isTouchEvent","buttons","_isValidButton","inputButton","_isValidEvent","_preventMouseButton","MouseEventInput","move","onEventStart","onEventMove","onEventEnd","getTouches","which","TouchEventInput","_baseTouches","identifier","PointerEventInput","_firstInputs","_recentInputs","_updatePointerEvent","_removePointerEvent","pointerId","addFlag","TouchMouseEventInput","nextSpot","prevSpot","toAxis","convertInputType","inputType","hasTouch","hasMouse","hasPointer","getAddEventOptions","InputObserver","interruptManager","eventManager","_isOutside","_moveDistance","_isStopped","_interruptManager","_eventManager","_axisManager","_animationManager","changeOption","stopAnimation","useAnimation","nativeEvent","__childrenAxesAlreadyChanged","_atOutside","_isEndofAxis","animateTo","finish","inputDuration","__childrenAxesAlreadyReleased","displacement","getDisplacement","userWish","getUserControl","isEqual","tn","EasingManager","_useDuration","initSlope","_easing","updateAnimation","animateParam","_animateParam","diffTime","_initialEasingPer","_prevEasingPer","_durationOffset","_initState","info","easingPer","finished","_getNextState","prevState","prevPos","directions","nextPos","circulatedPos","rangeOffset","easing","AnimationManager","animationEnd","wishDuration","durations_1","deceleration","minimumDuration","maximumDuration","totalVelocity","orgPos_1","beforeParam","circularTargets","_createAnimationParam","retTrigger","_animateLoop","orgPos","movedPos","setBy","setOptions","done","complete","originalIntendedPos_1","state_1","loop_1","nextState","_getFinalPos","originalIntendedPos","ERROR_LIMIT","_getRoundUnit","minRoundUnit","Axes","_inputs","connect","mapped","disconnect","mapAxes","isBounceArea","VERSION","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_ALL","PanInput","_activeEvent","_atRightEdge","_rightEdgeTimer","_dragged","_isOverThreshold","_preventClickWhenDragged","_voidFunction","thresholdAngle","preventClickOnDrag","preventDefaultOnDrag","iOSEdgeSwipeThreshold","releaseOnScroll","_onPanstart","_onPanmove","_onPanend","_detachElementEvent","_detachWindowEvent","_attachElementEvent","_originalCssProps","activeEvent","_observer","panEvent","edgeThreshold","_attachWindowEvent","toAngle","getDirectionByAngle","_getOffset","getUserAgentString","agent","execRegExp","pattern","hasUserAgentData","userAgentData","brands","uaList","convertVersion","findPreset","presets","userPreset","preset","brand","versionAlias","versionTest","findVersion","findPresetBrand","brandInfo","findBrand","BROWSER_PRESETS","CHROMIUM_PRESETS","WEBKIT_PRESETS","WEBVIEW_PRESETS","OS_PRESETS","isWebView","getClientHintsAgent","osData","fullVersionList","isMobile","mobile","firstBrand","platform","majorVersion","webkit","webkitVersion","chromium","chromiumVersion","webview","chromiumBrand","webkitBrand","platfomResult","platformVersion","browserBrandByFullVersionList","browserBrand","uaFullVersion","isHints","nextAgent","browserPreset","browserVersion","osPreset","osVersion","chromiumPreset","webkitPreset","getLegacyAgent","PolyMap","HashMap","SUPPORT_MAP","Map","Link","prevLink","nextLink","getIndex","link","Result","prevList","added","removed","maintained","changedBeforeAdded","fixed","cacheOrdered","caculateOrdered","cachePureChanged","ordered","fromLinks","toLinks","fromLink","toLink","orderChanged","pureChanged","fromBefore","toBefore","ListDiffer","findKeyCallback","mapClass","prevKeys","prevKeyMap","keyMap","removedMap","addedCount","removedCount","prevListIndex","listIndex","diff","__awaiter","thisArg","_arguments","generator","reject","fulfilled","step","rejected","__generator","sent","trys","ops","verb","__read","VueRenderer","_vueFlicking","vueFlicking","strategy","_strategy","updateRenderingPanels","renderPanels","$once","_afterRender","$forceUpdate","forceRenderAllPanels","_collectPanels","vuePanels","$children","_panels","collectPanels","_createPanel","externalComponent","createPanel","VuePanel","$slots","default","VueElementProvider","FlickingProps","viewportTag","cameraTag","cameraClass","hideBeforeInit","firstPanelSize","getSlots","slot","tag","fillKeys","Flicking","Panel","created","diffResult","viewportEl","rendererOptions","align","virtual","panelsPerView","providerCtor","externalRenderer","vanillaFlicking","READY","slotDiffer","vnode","pluginsDiffer","_bindEvents","_checkPlugins","setStatus","beforeDestroy","beforeMount","beforeUpdate","viewportData","cameraData","panels","_getVirtualPanels","_getPanels","viewport","_getSlots","_fillKeys","currentTarget","addPlugins","removePlugins","panelClass","renderingIndexes","getRenderingIndexesByOrder","firstPanel","domProps","watch","newOptions","__rest","deep","immediate","__webpack_amd_options__","__spreadArrays","jl","isWindow","ua","SUPPORT_COMPUTEDSTYLE","IS_IE","SUPPORT_ADDEVENTLISTENER","WIDTH","HEIGHT","hasLoadingAttribute","addEvent","attachEvent","removeEvent","detachEvent","getSize","getStyles","addAutoSizer","resizeAllAutoSizers","__PREFIX__","elementPrefix","dataWidth","dataHeight","Loader","isReady","isPreReady","hasDataSize","hasLoading","isSkip","onCheck","checkElement","withPreReady","onReady","hasSizeAttribute","hasSkipAttribute","onAlreadyReady","onAlreadyPreReady","addEvents","EVENTS","removeAutoSizer","onPreReady","onAlreadyError","ElementLoader","setHasLoading","ImReadyManager","readyCount","preReadyCount","totalCount","totalErrorCount","isPreReadyOver","elementInfos","loaders","loader","getLoader","checkPreReady","onPreReadyElement","onReadyElement","hasError","getTotalCount","tags","childrenImReady","contentElements","skipElements","getContentElements","errorCount","getErrorCount","ImageLoader","naturalWidth","VideoLoader","ImReady","video","__values","__spread","STATE_TYPE","CODE","MESSAGE","wrongVal","correctTypes","optionName","BEFORE_RESIZE","AFTER_RESIZE","HOLD_END","CHANGED","RESTORED","NEED_PANEL","VISIBLE_CHANGE","REACH_EDGE","ALIGN","DIRECTION","NONE","MOVE_TYPE","SNAP","STRICT","CLASS","CIRCULAR_FALLBACK","ORDER","getFlickingAttached","FlickingError","iterable","parseAlign$1","alignPoint","parseArithmeticSize","parsed","parseArithmeticExpression","percentage","absolute","cssRegex","matchResult","parsedValue","signMultiplier","parsePanelAlign","parseElement","tempDiv","ELEMENT_NODE","getMinusCompensatedIndex","e_1","array_1","array_1_1","e_1_1","return","circulatePosition","checker","getProgress","getStyle","setSize","isBetween","circulateIndex","getElementSize","useFractionalSize","useOffset","baseSize","isBorderBoxSizing","borderTopWidth","borderBottomWidth","paddingLeft","paddingTop","paddingBottom","sizeStr","code","Viewport","_isBorderBoxSizing","newWidth","newHeight","elStyle","AutoResizer","isFirstResize","_onResize","resizeDebounce","maxResizeDebounce","_maxResizeDebounceTimer","_doScheduledResize","_resizeTimer","_skipFirstResize","_resizeObserver","useResizeObserver","ResizeObserver","resizeObserver","VanillaElementProvider","_element","_rendered","cameraEl","VirtualElementProvider","_virtualElement","visible","elIndex","_panel","VirtualManager","_renderPanel","renderPanel","_initialPanelCount","initialPanelCount","_cache","_panelClass","uncacheRenderResult","virtualEnabled","renderExternal","_initVirtualElements","virtualElements","nativeEl","insert","prepend","batchInsert","hasDOMInElements","batchRemove","deleteCount","cameraElement","fragment","createDocumentFragment","panelEl","dataset","EVENT","HOLD","CHANGE","RELEASE","ANIMATION_END","FINISH","POSITION_KEY","State","_targetPanel","onHold","onAnimationEnd","onFinish","_moveToChangedPosition","axesEvent","transitTo","newPosition","moveEvent","DISABLED","IdleState","panelCount","holdStartEvent","HOLDING","moveStartEvent","ANIMATING","HoldingState","_releaseEvent","DRAGGING","flick","IDLE","clickedElement","touch","elementFromPoint","clickedPanel","panels_1","panels_1_1","clickedPanelPosition","DraggingState","AnimatingState","updateInput","changeOnHold","setActive","activePanel","DisabledState","StateMachine","nextStateType","fire","eventType","externalCtx","currentState","AxesController","_onAxesHold","_onAxesChange","_panInput","_resetInternalValues","_stateMachine","_animatingContext","panelOrder","_loop_1","removePreventClickHandler","controlParams","parsedBounce","parseBounce","addPreventClickHandler","animationFinishHandler","interruptionHandler","animate","updateDirection","panInput","Control","_controller","_activePanel","_getPosition","updatePosition","progressInPanel","clampToReachablePosition","resetActive","moveToPanel","_triggerIndexChangeEvent","_animateToPosition","newActivePanel","prevActivePanel","updateAdaptiveHeight","triggeringEvent","nearestAnchor","findNearestAnchor","canReach","camPos_1","camRangeDiff","rangeDiff","possiblePositions","nearestPosition","AnchorPoint","_index","SnapControl","activeAnchor","findActiveAnchor","anchorAtCamera","targetAnchor","snapThreshold","_calcSnapThreshold","posDelta","absPosDelta","snapDelta","_findSnappedAnchor","_findAdjacentAnchor","clampedPosition","anchorAtPosition","findAnchorIncludePosition","anchors","loopCount","circularIndexOffset","anchorAtPositionIndex","anchorIncludePosition","getNextAnchor","getPrevAnchor","isNextDirection","panelSize","alignPos","alignPosition","FreeControl","stopAtEdge","_stopAtEdge","panelRange","targetPos","StrictControl","_resetIndexRange","prevPanelIndex","nextPanelIndex","_indexRange","axesRange","indexRange","isOverThreshold","adjacentAnchor","shouldBounceToFirst","shouldBounceToLast","isAdjacent","CameraMode","getAnchors","includePosition","nearest","anchorIdx","getCircularOffset","panelPos","canSee","visibleRange","isVisibleOnRange","LinearCameraMode","checkAvailability","getRange","getPanel","lastPanel","CircularCameraMode","firstPanelPrev","lastPanelNext","visibleSize","panelSizeSum","camRange","minDist","minDistIndex","positionInRange","anchorInRange","possibleAnchors","toggledPrev","toggleDirection","toggledNext","_calcPanelAreaSum","visibleInCurrentRange","sizeIncludingMargin","BoundCameraMode","viewportSize","firstPos","lastPos","alignVal","reachablePanels","shouldPrependBoundAnchor","shouldAppendBoundAnchor","indexOffset_1","newAnchors","nearestPanelAtMin","_findNearestPanel","panelAtMin","panelAtMax","panelIdx","Camera","_checkTranslateSupport","supportedStyle","transformName","transforms_1","transforms_1_1","prefixedTransform","_transform","_align","_position","_alignPos","_circularOffset","_circularEnabled","_mode","_range","_visiblePanels","_anchors","nearestPanel","bounceSize","prevRange","nextRange","_panelOrder","nameOnErrMsg","checkExistence","_updateMode","updatePanelOrder","_togglePanels","_refreshVisiblePanels","_checkNeedPanel","_checkReachEnd","updateOffset","applyTransform","getProgressInPanel","e_2","array_2","array_2_1","e_2_1","updateRange","updateCircularToggleDirection","updateAlignPos","updateAnchors","adaptive","unRenderedPanels","rendered","resetNeedPanelHistory","_needPanelTriggered","rendering","actualPosition","newVisiblePanels","prevVisiblePanels","visiblePanels","needPanelTriggered","cameraSize","needPanelThreshold","cameraPrev","cameraNext","newPos","wasBetweenRange","isBetweenRange","circularMode","canSetCircularMode","fallbackMode","circularFallback","bound","isToggled","_rendering","panelAlign","markForShow","updatePanelSize","_updatePanelSizeByGrid","allPanelsInserted","batchInsertDefer","updateAfterPanelChange","prevFirstPanel","addedPanels","insertingIdx","panelsPushed","panelsInserted","_insertPanelElements","increaseIndex","allPanelsRemoved","batchRemoveDefer","removingIdx","panelsPulled","panelsRemoved","decreaseIndex","_removePanelElements","panelsAdded","_updateCameraAndControl","targetIndex","checkPanelContentsReady","checkingPanels","resizeOnContentsReady","hasContents","contentsReadyChecker","loading","prevProgressInPanel","panelBehind","_showOnlyVisiblePanels","visibleIndexes","visibles","markForHide","referencePanel","panelSizeObj","firstPanelSizeObj","noPanelStyleOverride","updatePanelSizes","_removeAllChildsFromCamera","nextSiblingElement","VanillaRenderer","_resetPanelElementOrder","_removeAllTextNodes","reversedElements","getRenderingElementsByOrder","TEXT_NODE","ExternalRenderer","elementProvider","_elProvider","_removed","_loading","_resetInternalStates","_size","_toggled","_toggleDirection","cameraRangeDiff","camPos","disappearPosNext","disappearPosPrev","checkingRange","_updateAlignPos","cached","marginTop","marginBottom","includeMargin","includeRange","togglePosition","_togglePosition","prevToggled","camAlignPosition","camVisibleRange","camVisibleSize","minimumVisible","maximumVisible","shouldBeVisibleAtMin","shouldBeVisibleAtMax","NormalRenderingStrategy","_providerCtor","renderedPanels","renderOnlyVisible","VirtualPanel","_cachedInnerHTML","virtualElCount","cacheRenderResult","newInnerHTML","VirtualRenderingStrategy","virtualManager","invisibleIndexes","panel1","panel2","defaultIndex","_q","preventEventsBeforeInit","_u","_w","_x","_y","_z","_0","_1","_2","disableOnInit","_3","_4","_5","_6","autoInit","_7","autoResize","_8","_9","_10","_11","_12","_13","_initialized","_defaultIndex","_circular","_circularFallback","_bound","_adaptive","_panelsPerView","_noPanelStyleOverride","_resizeOnContentsReady","_nested","_virtual","_needPanelThreshold","_preventEventsBeforeInit","_deceleration","_inputType","_moveType","_threshold","_interruptable","_bounce","_iOSEdgeSwipeThreshold","_preventClickOnDrag","_preventDefaultOnDrag","_disableOnInit","_changeOnHold","_renderOnlyVisible","_autoInit","_autoResize","_useResizeObserver","_resizeDebounce","_maxResizeDebounce","_useFractionalSize","_externalRenderer","_renderExternal","_viewport","queryResult","_autoResizer","_camera","_createCamera","_control","_createControl","_virtualManager","prevControl","newControl","originalTrigger","_initialResize","_moveToInitialPanel","disableInput","enableInput","getStatus","includePanelHTML","visiblePanelsOnly","panelInfo","visibleOffset","newCameraPos","foundIndex","prevWidth","prevHeight","sizeChanged","moveTypes","moveTypeStr","moveTypeOptions","_createExternalRenderer","_createVanillaRenderer","defaultPanel","initialPanel","withFlickingMethods","flickingName","getterDescriptor","sync","endIdx_1","prevIdx_1","removedIdx","indexDiff","startIdx_1","prevIdx_2","addedElements_1","addedIdx","addedElements","startIdx","endIdx","elIdx","getRenderingPanels","removedPanels","maintainedMap","getDefaultCameraTransform","cameraAlign","getCameraAlign","getPanelAlign","camPosition","parseAlign","computed","statusClass","Employed","Reviewing","Offering","Refused","closedStatus","no","yes","faFacebookF","icon","faLine","faLinkedinIn","faTiktok","faYoutube","isUndefined","ComponentEvent","_canceled","Component","_eventHandler","handlers","handlerToAttach","eventHash","listener_1","hasOn","handlerList","handlerToDetach","ComponentEvent$1","i18n","noGlobal","getProto","getPrototypeOf","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","preservedScriptAttributes","nonce","noModule","DOMEval","doc","script","toType","rhtmlSuffix","isArrayLike","pushStack","prevObject","eq","even","grep","odd","copyIsArray","isPlainObject","expando","msg","noop","Ctor","isEmptyObject","globalEval","nodeValue","makeArray","inArray","isXMLDoc","namespaceURI","docElem","invert","callbackExpect","guid","whitespace","rtrimCSS","bup","compareDocumentPosition","rcssescape","fcssescape","asCodePoint","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","els","nid","groups","newSelector","newContext","testContext","tokenize","toSelector","qsaError","select","cacheLength","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","getElementsByName","disconnectedMatch","cssHas","attrId","getAttributeNode","compare","sortDetached","expr","matchesSelector","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","what","_argument","forward","ofType","xml","outerCache","nodeIndex","useCache","lastChild","pseudo","setFilters","matched","not","matcher","compile","unmatched","elemLang","safeActiveElement","hasFocus","tabIndex","checked","selected","selectedIndex","empty","header","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","image","submit","parseOnly","tokens","soFar","preFilters","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","setMatcher","postFilter","postFinder","postSelector","matcherOut","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","unique","getText","isXML","selectors","until","truncate","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","promise","fail","Callbacks","createOptions","firing","memory","fired","firingIndex","stopOnFalse","fireWith","Deferred","tuples","always","deferred","fns","newDefer","tuple","returned","notify","onRejected","onProgress","maxDepth","special","mightThrow","notifyWith","resolveWith","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","rerrorNames","asyncError","readyException","readyList","readyWait","wait","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","removeData","_removeData","dequeue","startLength","hooks","_queueHooks","tmp","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","adjusted","maxIterations","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","checkClone","cloneNode","noCloneChecked","wrapMap","thead","_default","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","optgroup","rhtml","buildFragment","selection","ignored","attached","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","one","origFn","leverageNative","isSetup","saved","isTrigger","delegateType","stopImmediatePropagation","isImmediatePropagationStopped","handleObjIn","eventHandle","handleObj","namespaces","origType","elemData","triggered","bindType","delegateCount","mappedTypes","origCount","teardown","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","originalEvent","noBubble","beforeunload","returnValue","isDefaultPrevented","relatedTarget","isSimulated","bubbles","detail","eventPhase","pageX","pageY","keyCode","targetTouches","toElement","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","before","after","replaceWith","appendTo","prependTo","insertAfter","replaceAll","rnumnonpx","rcustomProp","opener","swap","old","rboxStyle","curCSS","minWidth","isCustomProp","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","cssNormalTransform","setPositiveNumber","subtract","boxModelAdjustment","dimension","isBorderBox","computedVal","marginDelta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","cssHooks","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","scrollboxSizeBuggy","suffix","expand","expanded","propHooks","run","eased","fx","swing","fxNow","inProgress","rfxtypes","rrun","schedule","createFxNow","genFx","includeWidth","createTween","tweeners","stopped","prefilters","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","prefilter","speeds","fadeTo","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classNames","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","abort","statusText","crossDomain","hasContent","ifModified","headers","beforeSend","success","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","wrapInner","htmlIsFunction","unwrap","xhrSuccessStatus","1223","xhrSupported","cors","username","xhrFields","onload","onerror","onabort","ontimeout","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","parentOffset","Height","Width","defaultExtra","funcName","delegate","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","parseJSON","isNumeric","_jQuery","_$","noConflict","LandingPageLayout","recruiterOptions","clientOptions","talentOptions","animationSpeed","plugins_blog","plugins_review","scrolling","features","about_us","review","join_us","faq","handleAnimation","app","App","$mount"],"mappings":"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tB,IAAQA,IAAIA,KACZA,IAAQA,IAAIA,KAUZljD,IAAKA,eAAeA,KAOpBpB,OAAOA,KAAPA,IAEc,IC9gBmM,ED8gBnM,CACd6B,YAEA0iD,YACA43J,sBACAh9C,aACA36G,oBACA8/C,YAEA7/C,aAEA14C,KAXA,WAYA,OACAqwM,mCACAC,gCACAC,gCACAC,iBACAC,cACA,wDACA,0BAEAC,gBACA,QACA,wDACA,0BAEAzyJ,SACA87B,aAGA1gC,kBACAs3J,eAIA5pI,QAnCA,WAoCA1xE,WACA,uBACA,+BACA,6BAEAA,WACA,qBACA,oBACA,mBAEAA,WACA,yBACA,8BACA,4BAEAA,WACA,0BACA,yBACA,0BAEAA,WACA,kCACA,uBACA,wBAEAA,WACA,mCACA,uBACA,wBAGA,qBAEA+J,YACAD,4BACA3G,gBACAG,iBACAe,YACA2pC,sCAGAutK,EACAn8L,OACA,mBACA,8BACA,6BAEAA,OACA,mBACA,8BACA,6BAEAA,OACA,qBACA,8BACA,6BAGA,qBAEArV,YACAD,4BACA3G,gBACAG,iBACAe,YACA2pC,sCAGAwtK,EACAp8L,OACA,0BACA,+BACA,4BACA,IAEAA,OACA,iBACA,+BACA,4BACA,IAEAA,OACA,yBACA,8BACA,4BACA,IAGA,qBAEArV,YACAD,0BACA3G,gBACAG,iBACAe,YACA2pC,sCAGAytK,SACA,kBACA,+BACA,8BAGA,qBAEA1xM,YACAD,2BACA3G,gBACAG,iBACAe,YACA2pC,sCAGA0tK,EACAt8L,OACA,uBACA,8BACA,6BAEAA,OACA,uBACA,8BACA,6BAEAA,OACA,yBACA,8BACA,6BAGA,qBAEArV,YACAD,uBACA3G,gBACAG,iBACAe,YACA2pC,sCAGA2tK,EACAv8L,OACA,oBACA,8BACA,4BACA,IAEAA,OACA,yBACA,8BACA,4BACA,KAIAwmD,SACAg2I,4BACA,e,iBE7rBe,EAXC,YACd,GCTW,WAAa,IAAIl3J,EAAI5xC,KAAS6xC,EAAGD,EAAIE,eAAmBC,EAAGH,EAAIttC,MAAMytC,IAAIF,EAAG,OAAOE,EAAG,oBAAoB,CAACE,MAAM,CA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","file":"js/lp/home/index-0c6212a8871a2aa78a8d.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"media/images/logo/logo-wh-56dc9306073c7ef93e1076196c9c4f5c.png\";","function _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 _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n/*!\n * GSAP 3.12.4\n * https://gsap.com\n *\n * @license Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\n\n\nvar _config = {\n autoSleep: 120,\n force3D: \"auto\",\n nullTargetWarn: 1,\n units: {\n lineHeight: \"\"\n }\n},\n _defaults = {\n duration: .5,\n overwrite: false,\n delay: 0\n},\n _suppressOverwrites,\n _reverting,\n _context,\n _bigNum = 1e8,\n _tinyNum = 1 / _bigNum,\n _2PI = Math.PI * 2,\n _HALF_PI = _2PI / 4,\n _gsID = 0,\n _sqrt = Math.sqrt,\n _cos = Math.cos,\n _sin = Math.sin,\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isUndefined = function _isUndefined(value) {\n return typeof value === \"undefined\";\n},\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n},\n _isNotFalse = function _isNotFalse(value) {\n return value !== false;\n},\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _isFuncOrString = function _isFuncOrString(value) {\n return _isFunction(value) || _isString(value);\n},\n _isTypedArray = typeof ArrayBuffer === \"function\" && ArrayBuffer.isView || function () {},\n // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().\n_isArray = Array.isArray,\n _strictNumExp = /(?:-?\\.?\\d|\\.)+/gi,\n //only numbers (including negatives and decimals) but NOT relative values.\n_numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-+]*\\d*/g,\n //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n_numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n _complexStringNumExp = /[-+=.]*\\d+\\.?\\d*(?:e-|e\\+)?\\d*/gi,\n //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.\n_relExp = /[+-]=-?[.\\d]+/,\n _delimitedValueExp = /[^,'\"\\[\\]\\s]+/gi,\n // previously /[#\\-+.]*\\b[a-z\\d\\-=+%.]+/gi but didn't catch special characters.\n_unitExp = /^[+\\-=e\\s\\d]*\\d+[.\\d]*([a-z]*|%)\\s*$/i,\n _globalTimeline,\n _win,\n _coreInitted,\n _doc,\n _globals = {},\n _installScope = {},\n _coreReady,\n _install = function _install(scope) {\n return (_installScope = _merge(scope, _globals)) && gsap;\n},\n _missingPlugin = function _missingPlugin(property, value) {\n return console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\");\n},\n _warn = function _warn(message, suppress) {\n return !suppress && console.warn(message);\n},\n _addGlobal = function _addGlobal(name, obj) {\n return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;\n},\n _emptyFunc = function _emptyFunc() {\n return 0;\n},\n _startAtRevertConfig = {\n suppressEvents: true,\n isStart: true,\n kill: false\n},\n _revertConfigNoKill = {\n suppressEvents: true,\n kill: false\n},\n _revertConfig = {\n suppressEvents: true\n},\n _reservedProps = {},\n _lazyTweens = [],\n _lazyLookup = {},\n _lastRenderedFrame,\n _plugins = {},\n _effects = {},\n _nextGCFrame = 30,\n _harnessPlugins = [],\n _callbackNames = \"\",\n _harness = function _harness(targets) {\n var target = targets[0],\n harnessPlugin,\n i;\n _isObject(target) || _isFunction(target) || (targets = [targets]);\n\n if (!(harnessPlugin = (target._gsap || {}).harness)) {\n // find the first target with a harness. We assume targets passed into an animation will be of similar type, meaning the same kind of harness can be used for them all (performance optimization)\n i = _harnessPlugins.length;\n\n while (i-- && !_harnessPlugins[i].targetTest(target)) {}\n\n harnessPlugin = _harnessPlugins[i];\n }\n\n i = targets.length;\n\n while (i--) {\n targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);\n }\n\n return targets;\n},\n _getCache = function _getCache(target) {\n return target._gsap || _harness(toArray(target))[0]._gsap;\n},\n _getProperty = function _getProperty(target, property, v) {\n return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;\n},\n _forEachName = function _forEachName(names, func) {\n return (names = names.split(\",\")).forEach(func) || names;\n},\n //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).\n_round = function _round(value) {\n return Math.round(value * 100000) / 100000 || 0;\n},\n _roundPrecise = function _roundPrecise(value) {\n return Math.round(value * 10000000) / 10000000 || 0;\n},\n // increased precision mostly for timing values.\n_parseRelative = function _parseRelative(start, value) {\n var operator = value.charAt(0),\n end = parseFloat(value.substr(2));\n start = parseFloat(start);\n return operator === \"+\" ? start + end : operator === \"-\" ? start - end : operator === \"*\" ? start * end : start / end;\n},\n _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {\n //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.\n var l = toFind.length,\n i = 0;\n\n for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}\n\n return i < l;\n},\n _lazyRender = function _lazyRender() {\n var l = _lazyTweens.length,\n a = _lazyTweens.slice(0),\n i,\n tween;\n\n _lazyLookup = {};\n _lazyTweens.length = 0;\n\n for (i = 0; i < l; i++) {\n tween = a[i];\n tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n }\n},\n _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {\n _lazyTweens.length && !_reverting && _lazyRender();\n animation.render(time, suppressEvents, force || _reverting && time < 0 && (animation._initted || animation._startAt));\n _lazyTweens.length && !_reverting && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n},\n _numericIfPossible = function _numericIfPossible(value) {\n var n = parseFloat(value);\n return (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n},\n _passThrough = function _passThrough(p) {\n return p;\n},\n _setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n},\n _setKeyframeDefaults = function _setKeyframeDefaults(excludeDuration) {\n return function (obj, defaults) {\n for (var p in defaults) {\n p in obj || p === \"duration\" && excludeDuration || p === \"ease\" || (obj[p] = defaults[p]);\n }\n };\n},\n _merge = function _merge(base, toMerge) {\n for (var p in toMerge) {\n base[p] = toMerge[p];\n }\n\n return base;\n},\n _mergeDeep = function _mergeDeep(base, toMerge) {\n for (var p in toMerge) {\n p !== \"__proto__\" && p !== \"constructor\" && p !== \"prototype\" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);\n }\n\n return base;\n},\n _copyExcluding = function _copyExcluding(obj, excluding) {\n var copy = {},\n p;\n\n for (p in obj) {\n p in excluding || (copy[p] = obj[p]);\n }\n\n return copy;\n},\n _inheritDefaults = function _inheritDefaults(vars) {\n var parent = vars.parent || _globalTimeline,\n func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults;\n\n if (_isNotFalse(vars.inherit)) {\n while (parent) {\n func(vars, parent.vars.defaults);\n parent = parent.parent || parent._dp;\n }\n }\n\n return vars;\n},\n _arraysMatch = function _arraysMatch(a1, a2) {\n var i = a1.length,\n match = i === a2.length;\n\n while (match && i-- && a1[i] === a2[i]) {}\n\n return i < 0;\n},\n _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = parent[lastProp],\n t;\n\n if (sortBy) {\n t = child[sortBy];\n\n while (prev && prev[sortBy] > t) {\n prev = prev._prev;\n }\n }\n\n if (prev) {\n child._next = prev._next;\n prev._next = child;\n } else {\n child._next = parent[firstProp];\n parent[firstProp] = child;\n }\n\n if (child._next) {\n child._next._prev = child;\n } else {\n parent[lastProp] = child;\n }\n\n child._prev = prev;\n child.parent = child._dp = parent;\n return child;\n},\n _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = child._prev,\n next = child._next;\n\n if (prev) {\n prev._next = next;\n } else if (parent[firstProp] === child) {\n parent[firstProp] = next;\n }\n\n if (next) {\n next._prev = prev;\n } else if (parent[lastProp] === child) {\n parent[lastProp] = prev;\n }\n\n child._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.\n},\n _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {\n child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove && child.parent.remove(child);\n child._act = 0;\n},\n _uncache = function _uncache(animation, child) {\n if (animation && (!child || child._end > animation._dur || child._start < 0)) {\n // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)\n var a = animation;\n\n while (a) {\n a._dirty = 1;\n a = a.parent;\n }\n }\n\n return animation;\n},\n _recacheAncestors = function _recacheAncestors(animation) {\n var parent = animation.parent;\n\n while (parent && parent.parent) {\n //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n parent._dirty = 1;\n parent.totalDuration();\n parent = parent.parent;\n }\n\n return animation;\n},\n _rewindStartAt = function _rewindStartAt(tween, totalTime, suppressEvents, force) {\n return tween._startAt && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween.vars.immediateRender && !tween.vars.autoRevert || tween._startAt.render(totalTime, true, force));\n},\n _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {\n return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);\n},\n _elapsedCycleDuration = function _elapsedCycleDuration(animation) {\n return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;\n},\n // feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.\n_animationCycle = function _animationCycle(tTime, cycleDuration) {\n var whole = Math.floor(tTime /= cycleDuration);\n return tTime && whole === tTime ? whole - 1 : whole;\n},\n _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {\n return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);\n},\n _setEnd = function _setEnd(animation) {\n return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));\n},\n _alignPlayhead = function _alignPlayhead(animation, totalTime) {\n // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.\n var parent = animation._dp;\n\n if (parent && parent.smoothChildTiming && animation._ts) {\n animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n\n _setEnd(animation);\n\n parent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n }\n\n return animation;\n},\n\n/*\n_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {\n\tlet cycleDuration = duration + repeatDelay,\n\t\ttime = _round(clampedTotalTime % cycleDuration);\n\tif (time > duration) {\n\t\ttime = duration;\n\t}\n\treturn (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;\n},\n*/\n_postAddChecks = function _postAddChecks(timeline, child) {\n var t;\n\n if (child._time || !child._dur && child._initted || child._start < timeline._time && (child._dur || !child.add)) {\n // in case, for example, the _start is moved on a tween that has already rendered, or if it's being inserted into a timeline BEFORE where the playhead is currently. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning. Special case: if it's a timeline (has .add() method) and no duration, we can skip rendering because the user may be populating it AFTER adding it to a parent timeline (unconventional, but possible, and we wouldn't want it to get removed if the parent's autoRemoveChildren is true).\n t = _parentToChildTotalTime(timeline.rawTime(), child);\n\n if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n child.render(t, true);\n }\n } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.\n\n\n if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n //in case any of the ancestors had completed but should now be enabled...\n if (timeline._dur < timeline.duration()) {\n t = timeline;\n\n while (t._dp) {\n t.rawTime() >= 0 && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.\n\n t = t._dp;\n }\n }\n\n timeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.\n }\n},\n _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {\n child.parent && _removeFromParent(child);\n child._start = _roundPrecise((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);\n child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n\n _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\n _isFromOrFromStart(child) || (timeline._recent = child);\n skipChecks || _postAddChecks(timeline, child);\n timeline._ts < 0 && _alignPlayhead(timeline, timeline._tTime); // if the timeline is reversed and the new child makes it longer, we may need to adjust the parent's _start (push it back)\n\n return timeline;\n},\n _scrollTrigger = function _scrollTrigger(animation, trigger) {\n return (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation);\n},\n _attemptInitTween = function _attemptInitTween(tween, time, force, suppressEvents, tTime) {\n _initTween(tween, time, tTime);\n\n if (!tween._initted) {\n return 1;\n }\n\n if (!force && tween._pt && !_reverting && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n _lazyTweens.push(tween);\n\n tween._lazy = [tTime, suppressEvents];\n return 1;\n }\n},\n _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {\n var parent = _ref.parent;\n return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));\n},\n // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0\n_isFromOrFromStart = function _isFromOrFromStart(_ref2) {\n var data = _ref2.data;\n return data === \"isFromStart\" || data === \"isStart\";\n},\n _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n var prevRatio = tween.ratio,\n ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,\n // if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0. Edge case: if a from() or fromTo() stagger tween is placed later in a timeline, the \"startAt\" zero-duration tween could initially render at a time when the parent timeline's playhead is technically BEFORE where this tween is, so make sure that any \"from\" and \"fromTo\" startAt tweens are rendered the first time at a ratio of 1.\n repeatDelay = tween._rDelay,\n tTime = 0,\n pt,\n iteration,\n prevIteration;\n\n if (repeatDelay && tween._repeat) {\n // in case there's a zero-duration tween that has a repeat with a repeatDelay\n tTime = _clamp(0, tween._tDur, totalTime);\n iteration = _animationCycle(tTime, repeatDelay);\n tween._yoyo && iteration & 1 && (ratio = 1 - ratio);\n\n if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {\n // if iteration changed\n prevRatio = 1 - ratio;\n tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n }\n }\n\n if (ratio !== prevRatio || _reverting || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents, tTime)) {\n // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.\n return;\n }\n\n prevIteration = tween._zTime;\n tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n suppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.\n\n tween.ratio = ratio;\n tween._from && (ratio = 1 - ratio);\n tween._time = 0;\n tween._tTime = tTime;\n pt = tween._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n totalTime < 0 && _rewindStartAt(tween, totalTime, suppressEvents, true);\n tween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n\n if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n ratio && _removeFromParent(tween, 1);\n\n if (!suppressEvents && !_reverting) {\n _callback(tween, ratio ? \"onComplete\" : \"onReverseComplete\", true);\n\n tween._prom && tween._prom();\n }\n }\n } else if (!tween._zTime) {\n tween._zTime = totalTime;\n }\n},\n _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {\n var child;\n\n if (time > prevTime) {\n child = animation._first;\n\n while (child && child._start <= time) {\n if (child.data === \"isPause\" && child._start > prevTime) {\n return child;\n }\n\n child = child._next;\n }\n } else {\n child = animation._last;\n\n while (child && child._start >= time) {\n if (child.data === \"isPause\" && child._start < prevTime) {\n return child;\n }\n\n child = child._prev;\n }\n }\n},\n _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {\n var repeat = animation._repeat,\n dur = _roundPrecise(duration) || 0,\n totalProgress = animation._tTime / animation._tDur;\n totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n animation._dur = dur;\n animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);\n totalProgress > 0 && !leavePlayhead && _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress);\n animation.parent && _setEnd(animation);\n skipUncache || _uncache(animation.parent, animation);\n return animation;\n},\n _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {\n return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);\n},\n _zeroPosition = {\n _start: 0,\n endTime: _emptyFunc,\n totalDuration: _emptyFunc\n},\n _parsePosition = function _parsePosition(animation, position, percentAnimation) {\n var labels = animation.labels,\n recent = animation._recent || _zeroPosition,\n clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,\n //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.\n i,\n offset,\n isPercent;\n\n if (_isString(position) && (isNaN(position) || position in labels)) {\n //if the string is a number like \"1\", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).\n offset = position.charAt(0);\n isPercent = position.substr(-1) === \"%\";\n i = position.indexOf(\"=\");\n\n if (offset === \"<\" || offset === \">\") {\n i >= 0 && (position = position.replace(/=/, \"\"));\n return (offset === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);\n }\n\n if (i < 0) {\n position in labels || (labels[position] = clippedDuration);\n return labels[position];\n }\n\n offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));\n\n if (isPercent && percentAnimation) {\n offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();\n }\n\n return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;\n }\n\n return position == null ? clippedDuration : +position;\n},\n _createTweenType = function _createTweenType(type, params, timeline) {\n var isLegacy = _isNumber(params[1]),\n varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n vars = params[varsIndex],\n irVars,\n parent;\n\n isLegacy && (vars.duration = params[1]);\n vars.parent = timeline;\n\n if (type) {\n irVars = vars;\n parent = timeline;\n\n while (parent && !(\"immediateRender\" in irVars)) {\n // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.\n irVars = parent.vars.defaults || {};\n parent = _isNotFalse(parent.vars.inherit) && parent.parent;\n }\n\n vars.immediateRender = _isNotFalse(irVars.immediateRender);\n type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; // \"from\" vars\n }\n\n return new Tween(params[0], vars, params[varsIndex + 1]);\n},\n _conditionalReturn = function _conditionalReturn(value, func) {\n return value || value === 0 ? func(value) : func;\n},\n _clamp = function _clamp(min, max, value) {\n return value < min ? min : value > max ? max : value;\n},\n getUnit = function getUnit(value, v) {\n return !_isString(value) || !(v = _unitExp.exec(value)) ? \"\" : v[1];\n},\n // note: protect against padded numbers as strings, like \"100.100\". That shouldn't return \"00\" as the unit. If it's numeric, return no unit.\nclamp = function clamp(min, max, value) {\n return _conditionalReturn(value, function (v) {\n return _clamp(min, max, v);\n });\n},\n _slice = [].slice,\n _isArrayLike = function _isArrayLike(value, nonEmpty) {\n return value && _isObject(value) && \"length\" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;\n},\n _flatten = function _flatten(ar, leaveStrings, accumulator) {\n if (accumulator === void 0) {\n accumulator = [];\n }\n\n return ar.forEach(function (value) {\n var _accumulator;\n\n return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);\n }) || accumulator;\n},\n //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\ntoArray = function toArray(value, scope, leaveStrings) {\n return _context && !scope && _context.selector ? _context.selector(value) : _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\n},\n selector = function selector(value) {\n value = toArray(value)[0] || _warn(\"Invalid scope\") || {};\n return function (v) {\n var el = value.current || value.nativeElement || value;\n return toArray(v, el.querySelectorAll ? el : el === value ? _warn(\"Invalid scope\") || _doc.createElement(\"div\") : value);\n };\n},\n shuffle = function shuffle(a) {\n return a.sort(function () {\n return .5 - Math.random();\n });\n},\n // alternative that's a bit faster and more reliably diverse but bigger: for (let j, v, i = a.length; i; j = Math.floor(Math.random() * i), v = a[--i], a[i] = a[j], a[j] = v); return a;\n//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\ndistribute = function distribute(v) {\n if (_isFunction(v)) {\n return v;\n }\n\n var vars = _isObject(v) ? v : {\n each: v\n },\n //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n ease = _parseEase(vars.ease),\n from = vars.from || 0,\n base = parseFloat(vars.base) || 0,\n cache = {},\n isDecimal = from > 0 && from < 1,\n ratios = isNaN(from) || isDecimal,\n axis = vars.axis,\n ratioX = from,\n ratioY = from;\n\n if (_isString(from)) {\n ratioX = ratioY = {\n center: .5,\n edges: .5,\n end: 1\n }[from] || 0;\n } else if (!isDecimal && ratios) {\n ratioX = from[0];\n ratioY = from[1];\n }\n\n return function (i, target, a) {\n var l = (a || vars).length,\n distances = cache[l],\n originX,\n originY,\n x,\n y,\n d,\n j,\n max,\n min,\n wrapAt;\n\n if (!distances) {\n wrapAt = vars.grid === \"auto\" ? 0 : (vars.grid || [1, _bigNum])[1];\n\n if (!wrapAt) {\n max = -_bigNum;\n\n while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}\n\n wrapAt < l && wrapAt--;\n }\n\n distances = cache[l] = [];\n originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;\n originY = wrapAt === _bigNum ? 0 : ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;\n max = 0;\n min = _bigNum;\n\n for (j = 0; j < l; j++) {\n x = j % wrapAt - originX;\n y = originY - (j / wrapAt | 0);\n distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n d > max && (max = d);\n d < min && (min = d);\n }\n\n from === \"random\" && shuffle(distances);\n distances.max = max - min;\n distances.min = min;\n distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === \"y\" ? l / wrapAt : wrapAt) || 0) * (from === \"edges\" ? -1 : 1);\n distances.b = l < 0 ? base - l : base;\n distances.u = getUnit(vars.amount || vars.each) || 0; //unit\n\n ease = ease && l < 0 ? _invertEase(ease) : ease;\n }\n\n l = (distances[i] - distances.min) / distances.max || 0;\n return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors\n };\n},\n _roundModifier = function _roundModifier(v) {\n //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.\n var p = Math.pow(10, ((v + \"\").split(\".\")[1] || \"\").length); //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed())\n\n return function (raw) {\n var n = _roundPrecise(Math.round(parseFloat(raw) / v) * v * p);\n\n return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); // n - n % 1 replaces Math.floor() in order to handle negative values properly. For example, Math.floor(-150.00000000000003) is 151!\n };\n},\n snap = function snap(snapTo, value) {\n var isArray = _isArray(snapTo),\n radius,\n is2D;\n\n if (!isArray && _isObject(snapTo)) {\n radius = isArray = snapTo.radius || _bigNum;\n\n if (snapTo.values) {\n snapTo = toArray(snapTo.values);\n\n if (is2D = !_isNumber(snapTo[0])) {\n radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.\n }\n } else {\n snapTo = _roundModifier(snapTo.increment);\n }\n }\n\n return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {\n is2D = snapTo(raw);\n return Math.abs(is2D - raw) <= radius ? is2D : raw;\n } : function (raw) {\n var x = parseFloat(is2D ? raw.x : raw),\n y = parseFloat(is2D ? raw.y : 0),\n min = _bigNum,\n closest = 0,\n i = snapTo.length,\n dx,\n dy;\n\n while (i--) {\n if (is2D) {\n dx = snapTo[i].x - x;\n dy = snapTo[i].y - y;\n dx = dx * dx + dy * dy;\n } else {\n dx = Math.abs(snapTo[i] - x);\n }\n\n if (dx < min) {\n min = dx;\n closest = i;\n }\n }\n\n closest = !radius || min <= radius ? snapTo[closest] : raw;\n return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);\n });\n},\n random = function random(min, max, roundingIncrement, returnFunction) {\n return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {\n return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + \"\").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;\n });\n},\n pipe = function pipe() {\n for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n functions[_key] = arguments[_key];\n }\n\n return function (value) {\n return functions.reduce(function (v, f) {\n return f(v);\n }, value);\n };\n},\n unitize = function unitize(func, unit) {\n return function (value) {\n return func(parseFloat(value)) + (unit || getUnit(value));\n };\n},\n normalize = function normalize(min, max, value) {\n return mapRange(min, max, 0, 1, value);\n},\n _wrapArray = function _wrapArray(a, wrapper, value) {\n return _conditionalReturn(value, function (index) {\n return a[~~wrapper(index)];\n });\n},\n wrap = function wrap(min, max, value) {\n // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).\n var range = max - min;\n return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {\n return (range + (value - min) % range) % range + min;\n });\n},\n wrapYoyo = function wrapYoyo(min, max, value) {\n var range = max - min,\n total = range * 2;\n return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {\n value = (total + (value - min) % total) % total || 0;\n return min + (value > range ? total - value : value);\n });\n},\n _replaceRandom = function _replaceRandom(value) {\n //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])\n var prev = 0,\n s = \"\",\n i,\n nums,\n end,\n isArray;\n\n while (~(i = value.indexOf(\"random(\", prev))) {\n end = value.indexOf(\")\", i);\n isArray = value.charAt(i + 7) === \"[\";\n nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n prev = end + 1;\n }\n\n return s + value.substr(prev, value.length - prev);\n},\n mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {\n var inRange = inMax - inMin,\n outRange = outMax - outMin;\n return _conditionalReturn(value, function (value) {\n return outMin + ((value - inMin) / inRange * outRange || 0);\n });\n},\n interpolate = function interpolate(start, end, progress, mutate) {\n var func = isNaN(start + end) ? 0 : function (p) {\n return (1 - p) * start + p * end;\n };\n\n if (!func) {\n var isString = _isString(start),\n master = {},\n p,\n i,\n interpolators,\n l,\n il;\n\n progress === true && (mutate = 1) && (progress = null);\n\n if (isString) {\n start = {\n p: start\n };\n end = {\n p: end\n };\n } else if (_isArray(start) && !_isArray(end)) {\n interpolators = [];\n l = start.length;\n il = l - 2;\n\n for (i = 1; i < l; i++) {\n interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.\n }\n\n l--;\n\n func = function func(p) {\n p *= l;\n var i = Math.min(il, ~~p);\n return interpolators[i](p - i);\n };\n\n progress = end;\n } else if (!mutate) {\n start = _merge(_isArray(start) ? [] : {}, start);\n }\n\n if (!interpolators) {\n for (p in end) {\n _addPropTween.call(master, start, p, \"get\", end[p]);\n }\n\n func = function func(p) {\n return _renderPropTweens(p, master) || (isString ? start.p : start);\n };\n }\n }\n\n return _conditionalReturn(progress, func);\n},\n _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {\n //used for nextLabel() and previousLabel()\n var labels = timeline.labels,\n min = _bigNum,\n p,\n distance,\n label;\n\n for (p in labels) {\n distance = labels[p] - fromTime;\n\n if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {\n label = p;\n min = distance;\n }\n }\n\n return label;\n},\n _callback = function _callback(animation, type, executeLazyFirst) {\n var v = animation.vars,\n callback = v[type],\n prevContext = _context,\n context = animation._ctx,\n params,\n scope,\n result;\n\n if (!callback) {\n return;\n }\n\n params = v[type + \"Params\"];\n scope = v.callbackScope || animation;\n executeLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n\n context && (_context = context);\n result = params ? callback.apply(scope, params) : callback.call(scope);\n _context = prevContext;\n return result;\n},\n _interrupt = function _interrupt(animation) {\n _removeFromParent(animation);\n\n animation.scrollTrigger && animation.scrollTrigger.kill(!!_reverting);\n animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n return animation;\n},\n _quickTween,\n _registerPluginQueue = [],\n _createPlugin = function _createPlugin(config) {\n if (_windowExists() && config) {\n // edge case: some build tools may pass in a null/undefined value\n config = !config.name && config[\"default\"] || config; //UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.\n\n var name = config.name,\n isFunc = _isFunction(config),\n Plugin = name && !isFunc && config.init ? function () {\n this._props = [];\n } : config,\n //in case someone passes in an object that's not a plugin, like CustomEase\n instanceDefaults = {\n init: _emptyFunc,\n render: _renderPropTweens,\n add: _addPropTween,\n kill: _killPropTweensOf,\n modifier: _addPluginModifier,\n rawVars: 0\n },\n statics = {\n targetTest: 0,\n get: 0,\n getSetter: _getSetter,\n aliases: {},\n register: 0\n };\n\n _wake();\n\n if (config !== Plugin) {\n if (_plugins[name]) {\n return;\n }\n\n _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods\n\n\n _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods\n\n\n _plugins[Plugin.prop = name] = Plugin;\n\n if (config.targetTest) {\n _harnessPlugins.push(Plugin);\n\n _reservedProps[name] = 1;\n }\n\n name = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\"; //for the global name. \"motionPath\" should become MotionPathPlugin\n }\n\n _addGlobal(name, Plugin);\n\n config.register && config.register(gsap, Plugin, PropTween);\n } else {\n config && _registerPluginQueue.push(config);\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * COLORS\n * --------------------------------------------------------------------------------------\n */\n_255 = 255,\n _colorLookup = {\n aqua: [0, _255, _255],\n lime: [0, _255, 0],\n silver: [192, 192, 192],\n black: [0, 0, 0],\n maroon: [128, 0, 0],\n teal: [0, 128, 128],\n blue: [0, 0, _255],\n navy: [0, 0, 128],\n white: [_255, _255, _255],\n olive: [128, 128, 0],\n yellow: [_255, _255, 0],\n orange: [_255, 165, 0],\n gray: [128, 128, 128],\n purple: [128, 0, 128],\n green: [0, 128, 0],\n red: [_255, 0, 0],\n pink: [_255, 192, 203],\n cyan: [0, _255, _255],\n transparent: [_255, _255, _255, 0]\n},\n // possible future idea to replace the hard-coded color name values - put this in the ticker.wake() where we set the _doc:\n// let ctx = _doc.createElement(\"canvas\").getContext(\"2d\");\n// _forEachName(\"aqua,lime,silver,black,maroon,teal,blue,navy,white,olive,yellow,orange,gray,purple,green,red,pink,cyan\", color => {ctx.fillStyle = color; _colorLookup[color] = splitColor(ctx.fillStyle)});\n_hue = function _hue(h, m1, m2) {\n h += h < 0 ? 1 : h > 1 ? -1 : 0;\n return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;\n},\n splitColor = function splitColor(v, toHSL, forceAlpha) {\n var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,\n r,\n g,\n b,\n h,\n s,\n l,\n max,\n min,\n d,\n wasHSL;\n\n if (!a) {\n if (v.substr(-1) === \",\") {\n //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:\"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)\" - in this example \"blue,\" has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.\n v = v.substr(0, v.length - 1);\n }\n\n if (_colorLookup[v]) {\n a = _colorLookup[v];\n } else if (v.charAt(0) === \"#\") {\n if (v.length < 6) {\n //for shorthand like #9F0 or #9F0F (could have alpha)\n r = v.charAt(1);\n g = v.charAt(2);\n b = v.charAt(3);\n v = \"#\" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : \"\");\n }\n\n if (v.length === 9) {\n // hex with alpha, like #fd5e53ff\n a = parseInt(v.substr(1, 6), 16);\n return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];\n }\n\n v = parseInt(v.substr(1), 16);\n a = [v >> 16, v >> 8 & _255, v & _255];\n } else if (v.substr(0, 3) === \"hsl\") {\n a = wasHSL = v.match(_strictNumExp);\n\n if (!toHSL) {\n h = +a[0] % 360 / 360;\n s = +a[1] / 100;\n l = +a[2] / 100;\n g = l <= .5 ? l * (s + 1) : l + s - l * s;\n r = l * 2 - g;\n a.length > 3 && (a[3] *= 1); //cast as number\n\n a[0] = _hue(h + 1 / 3, r, g);\n a[1] = _hue(h, r, g);\n a[2] = _hue(h - 1 / 3, r, g);\n } else if (~v.indexOf(\"=\")) {\n //if relative values are found, just return the raw strings with the relative prefixes in place.\n a = v.match(_numExp);\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n }\n } else {\n a = v.match(_strictNumExp) || _colorLookup.transparent;\n }\n\n a = a.map(Number);\n }\n\n if (toHSL && !wasHSL) {\n r = a[0] / _255;\n g = a[1] / _255;\n b = a[2] / _255;\n max = Math.max(r, g, b);\n min = Math.min(r, g, b);\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h *= 60;\n }\n\n a[0] = ~~(h + .5);\n a[1] = ~~(s * 100 + .5);\n a[2] = ~~(l * 100 + .5);\n }\n\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n},\n _colorOrderData = function _colorOrderData(v) {\n // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a \"c\" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()\n var values = [],\n c = [],\n i = -1;\n v.split(_colorExp).forEach(function (v) {\n var a = v.match(_numWithUnitExp) || [];\n values.push.apply(values, a);\n c.push(i += a.length + 1);\n });\n values.c = c;\n return values;\n},\n _formatColors = function _formatColors(s, toHSL, orderMatchData) {\n var result = \"\",\n colors = (s + result).match(_colorExp),\n type = toHSL ? \"hsla(\" : \"rgba(\",\n i = 0,\n c,\n shell,\n d,\n l;\n\n if (!colors) {\n return s;\n }\n\n colors = colors.map(function (color) {\n return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\";\n });\n\n if (orderMatchData) {\n d = _colorOrderData(s);\n c = orderMatchData.c;\n\n if (c.join(result) !== d.c.join(result)) {\n shell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n }\n }\n }\n\n if (!shell) {\n shell = s.split(_colorExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + colors[i];\n }\n }\n\n return result + shell[l];\n},\n _colorExp = function () {\n var s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3,4}){1,2}\\\\b\",\n //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,\n p;\n\n for (p in _colorLookup) {\n s += \"|\" + p + \"\\\\b\";\n }\n\n return new RegExp(s + \")\", \"gi\");\n}(),\n _hslExp = /hsl[a]?\\(/,\n _colorStringFilter = function _colorStringFilter(a) {\n var combined = a.join(\" \"),\n toHSL;\n _colorExp.lastIndex = 0;\n\n if (_colorExp.test(combined)) {\n toHSL = _hslExp.test(combined);\n a[1] = _formatColors(a[1], toHSL);\n a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.\n\n return true;\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TICKER\n * --------------------------------------------------------------------------------------\n */\n_tickerActive,\n _ticker = function () {\n var _getTime = Date.now,\n _lagThreshold = 500,\n _adjustedLag = 33,\n _startTime = _getTime(),\n _lastUpdate = _startTime,\n _gap = 1000 / 240,\n _nextTime = _gap,\n _listeners = [],\n _id,\n _req,\n _raf,\n _self,\n _delta,\n _i,\n _tick = function _tick(v) {\n var elapsed = _getTime() - _lastUpdate,\n manual = v === true,\n overlap,\n dispatch,\n time,\n frame;\n\n elapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag);\n _lastUpdate += elapsed;\n time = _lastUpdate - _startTime;\n overlap = time - _nextTime;\n\n if (overlap > 0 || manual) {\n frame = ++_self.frame;\n _delta = time - _self.time * 1000;\n _self.time = time = time / 1000;\n _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n dispatch = 1;\n }\n\n manual || (_id = _req(_tick)); //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n\n if (dispatch) {\n for (_i = 0; _i < _listeners.length; _i++) {\n // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.\n _listeners[_i](time, _delta, frame, v);\n }\n }\n };\n\n _self = {\n time: 0,\n frame: 0,\n tick: function tick() {\n _tick(true);\n },\n deltaRatio: function deltaRatio(fps) {\n return _delta / (1000 / (fps || 60));\n },\n wake: function wake() {\n if (_coreReady) {\n if (!_coreInitted && _windowExists()) {\n _win = _coreInitted = window;\n _doc = _win.document || {};\n _globals.gsap = gsap;\n (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n\n _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});\n\n _raf = _win.requestAnimationFrame;\n\n _registerPluginQueue.forEach(_createPlugin);\n }\n\n _id && _self.sleep();\n\n _req = _raf || function (f) {\n return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);\n };\n\n _tickerActive = 1;\n\n _tick(2);\n }\n },\n sleep: function sleep() {\n (_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);\n _tickerActive = 0;\n _req = _emptyFunc;\n },\n lagSmoothing: function lagSmoothing(threshold, adjustedLag) {\n _lagThreshold = threshold || Infinity; // zero should be interpreted as basically unlimited\n\n _adjustedLag = Math.min(adjustedLag || 33, _lagThreshold);\n },\n fps: function fps(_fps) {\n _gap = 1000 / (_fps || 240);\n _nextTime = _self.time * 1000 + _gap;\n },\n add: function add(callback, once, prioritize) {\n var func = once ? function (t, d, f, v) {\n callback(t, d, f, v);\n\n _self.remove(func);\n } : callback;\n\n _self.remove(callback);\n\n _listeners[prioritize ? \"unshift\" : \"push\"](func);\n\n _wake();\n\n return func;\n },\n remove: function remove(callback, i) {\n ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n },\n _listeners: _listeners\n };\n return _self;\n}(),\n _wake = function _wake() {\n return !_tickerActive && _ticker.wake();\n},\n //also ensures the core classes are initialized.\n\n/*\n* -------------------------------------------------\n* EASING\n* -------------------------------------------------\n*/\n_easeMap = {},\n _customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n _quotesExp = /[\"']/g,\n _parseObjectInString = function _parseObjectInString(value) {\n //takes a string like \"{wiggles:10, type:anticipate})\" and turns it into a real object. Notice it ends in \")\" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.\n var obj = {},\n split = value.substr(1, value.length - 3).split(\":\"),\n key = split[0],\n i = 1,\n l = split.length,\n index,\n val,\n parsedVal;\n\n for (; i < l; i++) {\n val = split[i];\n index = i !== l - 1 ? val.lastIndexOf(\",\") : val.length;\n parsedVal = val.substr(0, index);\n obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n key = val.substr(index + 1).trim();\n }\n\n return obj;\n},\n _valueInParentheses = function _valueInParentheses(value) {\n var open = value.indexOf(\"(\") + 1,\n close = value.indexOf(\")\"),\n nested = value.indexOf(\"(\", open);\n return value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n},\n _configEaseFromString = function _configEaseFromString(name) {\n //name can be a string like \"elastic.out(1,0.5)\", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).\n var split = (name + \"\").split(\"(\"),\n ease = _easeMap[split[0]];\n return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE(\"\", name) : ease;\n},\n _invertEase = function _invertEase(ease) {\n return function (p) {\n return 1 - ease(1 - p);\n };\n},\n // allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.\n_propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {\n var child = timeline._first,\n ease;\n\n while (child) {\n if (child instanceof Timeline) {\n _propagateYoyoEase(child, isYoyo);\n } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n if (child.timeline) {\n _propagateYoyoEase(child.timeline, isYoyo);\n } else {\n ease = child._ease;\n child._ease = child._yEase;\n child._yEase = ease;\n child._yoyo = isYoyo;\n }\n }\n\n child = child._next;\n }\n},\n _parseEase = function _parseEase(ease, defaultEase) {\n return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;\n},\n _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {\n if (easeOut === void 0) {\n easeOut = function easeOut(p) {\n return 1 - easeIn(1 - p);\n };\n }\n\n if (easeInOut === void 0) {\n easeInOut = function easeInOut(p) {\n return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;\n };\n }\n\n var ease = {\n easeIn: easeIn,\n easeOut: easeOut,\n easeInOut: easeInOut\n },\n lowercaseName;\n\n _forEachName(names, function (name) {\n _easeMap[name] = _globals[name] = ease;\n _easeMap[lowercaseName = name.toLowerCase()] = easeOut;\n\n for (var p in ease) {\n _easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n }\n });\n\n return ease;\n},\n _easeInOutFromOut = function _easeInOutFromOut(easeOut) {\n return function (p) {\n return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;\n };\n},\n _configElastic = function _configElastic(type, amplitude, period) {\n var p1 = amplitude >= 1 ? amplitude : 1,\n //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.\n p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n easeOut = function easeOut(p) {\n return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n p2 = _2PI / p2; //precalculate to optimize\n\n ease.config = function (amplitude, period) {\n return _configElastic(type, amplitude, period);\n };\n\n return ease;\n},\n _configBack = function _configBack(type, overshoot) {\n if (overshoot === void 0) {\n overshoot = 1.70158;\n }\n\n var easeOut = function easeOut(p) {\n return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n ease.config = function (overshoot) {\n return _configBack(type, overshoot);\n };\n\n return ease;\n}; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEase = ratio => {\n// \tlet y = 0.5 + ratio / 2;\n// \treturn p => (2 * (1 - p) * p * y + p * p);\n// },\n// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEaseStrong = ratio => {\n// \tratio = .5 + ratio / 2;\n// \tlet o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),\n// \t\tb = ratio - o,\n// \t\tc = ratio + o;\n// \treturn p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;\n// };\n\n\n_forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", function (name, i) {\n var power = i < 5 ? i + 1 : i;\n\n _insertEase(name + \",Power\" + (power - 1), i ? function (p) {\n return Math.pow(p, power);\n } : function (p) {\n return p;\n }, function (p) {\n return 1 - Math.pow(1 - p, power);\n }, function (p) {\n return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;\n });\n});\n\n_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n\n_insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n\n(function (n, c) {\n var n1 = 1 / c,\n n2 = 2 * n1,\n n3 = 2.5 * n1,\n easeOut = function easeOut(p) {\n return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;\n };\n\n _insertEase(\"Bounce\", function (p) {\n return 1 - easeOut(1 - p);\n }, easeOut);\n})(7.5625, 2.75);\n\n_insertEase(\"Expo\", function (p) {\n return p ? Math.pow(2, 10 * (p - 1)) : 0;\n});\n\n_insertEase(\"Circ\", function (p) {\n return -(_sqrt(1 - p * p) - 1);\n});\n\n_insertEase(\"Sine\", function (p) {\n return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;\n});\n\n_insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n\n_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n config: function config(steps, immediateStart) {\n if (steps === void 0) {\n steps = 1;\n }\n\n var p1 = 1 / steps,\n p2 = steps + (immediateStart ? 0 : 1),\n p3 = immediateStart ? 1 : 0,\n max = 1 - _tinyNum;\n return function (p) {\n return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;\n };\n }\n};\n_defaults.ease = _easeMap[\"quad.out\"];\n\n_forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", function (name) {\n return _callbackNames += name + \",\" + name + \"Params,\";\n});\n/*\n * --------------------------------------------------------------------------------------\n * CACHE\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var GSCache = function GSCache(target, harness) {\n this.id = _gsID++;\n target._gsap = this;\n this.target = target;\n this.harness = harness;\n this.get = harness ? harness.get : _getProperty;\n this.set = harness ? harness.getSetter : _getSetter;\n};\n/*\n * --------------------------------------------------------------------------------------\n * ANIMATION\n * --------------------------------------------------------------------------------------\n */\n\nexport var Animation = /*#__PURE__*/function () {\n function Animation(vars) {\n this.vars = vars;\n this._delay = +vars.delay || 0;\n\n if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {\n // TODO: repeat: Infinity on a timeline's children must flag that timeline internally and affect its totalDuration, otherwise it'll stop in the negative direction when reaching the start.\n this._rDelay = vars.repeatDelay || 0;\n this._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n }\n\n this._ts = 1;\n\n _setDuration(this, +vars.duration, 1, 1);\n\n this.data = vars.data;\n\n if (_context) {\n this._ctx = _context;\n\n _context.data.push(this);\n }\n\n _tickerActive || _ticker.wake();\n }\n\n var _proto = Animation.prototype;\n\n _proto.delay = function delay(value) {\n if (value || value === 0) {\n this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);\n this._delay = value;\n return this;\n }\n\n return this._delay;\n };\n\n _proto.duration = function duration(value) {\n return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n };\n\n _proto.totalDuration = function totalDuration(value) {\n if (!arguments.length) {\n return this._tDur;\n }\n\n this._dirty = 0;\n return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));\n };\n\n _proto.totalTime = function totalTime(_totalTime, suppressEvents) {\n _wake();\n\n if (!arguments.length) {\n return this._tTime;\n }\n\n var parent = this._dp;\n\n if (parent && parent.smoothChildTiming && this._ts) {\n _alignPlayhead(this, _totalTime);\n\n !parent._dp || parent.parent || _postAddChecks(parent, this); // edge case: if this is a child of a timeline that already completed, for example, we must re-activate the parent.\n //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.\n\n while (parent && parent.parent) {\n if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n parent.totalTime(parent._tTime, true);\n }\n\n parent = parent.parent;\n }\n\n if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {\n //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.\n _addToTimeline(this._dp, this, this._start - this._delay);\n }\n }\n\n if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {\n // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)\n this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause\n //if (!this._lock) { // avoid endless recursion (not sure we need this yet or if it's worth the performance hit)\n // this._lock = 1;\n\n _lazySafeRender(this, _totalTime, suppressEvents); // this._lock = 0;\n //}\n\n }\n\n return this;\n };\n\n _proto.time = function time(value, suppressEvents) {\n return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!\n };\n\n _proto.totalProgress = function totalProgress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.rawTime() > 0 ? 1 : 0;\n };\n\n _proto.progress = function progress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.rawTime() > 0 ? 1 : 0;\n };\n\n _proto.iteration = function iteration(value, suppressEvents) {\n var cycleDuration = this.duration() + this._rDelay;\n\n return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n } // potential future addition:\n // isPlayingBackwards() {\n // \tlet animation = this,\n // \t\torientation = 1; // 1 = forward, -1 = backward\n // \twhile (animation) {\n // \t\torientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;\n // \t\tanimation = animation.parent;\n // \t}\n // \treturn orientation < 0;\n // }\n ;\n\n _proto.timeScale = function timeScale(value, suppressEvents) {\n if (!arguments.length) {\n return this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.\n }\n\n if (this._rts === value) {\n return this;\n }\n\n var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.\n // future addition? Up side: fast and minimal file size. Down side: only works on this animation; if a timeline is reversed, for example, its childrens' onReverse wouldn't get called.\n //(+value < 0 && this._rts >= 0) && _callback(this, \"onReverse\", true);\n // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.\n\n this._rts = +value || 0;\n this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.\n\n this.totalTime(_clamp(-Math.abs(this._delay), this._tDur, tTime), suppressEvents !== false);\n\n _setEnd(this); // if parent.smoothChildTiming was false, the end time didn't get updated in the _alignPlayhead() method, so do it here.\n\n\n return _recacheAncestors(this);\n };\n\n _proto.paused = function paused(value) {\n if (!arguments.length) {\n return this._ps;\n }\n\n if (this._ps !== value) {\n this._ps = value;\n\n if (value) {\n this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.\n\n this._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the \"real\" timeScale as _rts (recorded time scale)\n } else {\n _wake();\n\n this._ts = this._rts; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.\n\n this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum)); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.\n }\n }\n\n return this;\n };\n\n _proto.startTime = function startTime(value) {\n if (arguments.length) {\n this._start = value;\n var parent = this.parent || this._dp;\n parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n return this;\n }\n\n return this._start;\n };\n\n _proto.endTime = function endTime(includeRepeats) {\n return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);\n };\n\n _proto.rawTime = function rawTime(wrapRepeats) {\n var parent = this.parent || this._dp; // _dp = detached parent\n\n return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);\n };\n\n _proto.revert = function revert(config) {\n if (config === void 0) {\n config = _revertConfig;\n }\n\n var prevIsReverting = _reverting;\n _reverting = config;\n\n if (this._initted || this._startAt) {\n this.timeline && this.timeline.revert(config);\n this.totalTime(-0.01, config.suppressEvents);\n }\n\n this.data !== \"nested\" && config.kill !== false && this.kill();\n _reverting = prevIsReverting;\n return this;\n };\n\n _proto.globalTime = function globalTime(rawTime) {\n var animation = this,\n time = arguments.length ? rawTime : animation.rawTime();\n\n while (animation) {\n time = animation._start + time / (Math.abs(animation._ts) || 1);\n animation = animation._dp;\n }\n\n return !this.parent && this._sat ? this._sat.globalTime(rawTime) : time; // the _startAt tweens for .fromTo() and .from() that have immediateRender should always be FIRST in the timeline (important for context.revert()). \"_sat\" stands for _startAtTween, referring to the parent tween that created the _startAt. We must discern if that tween had immediateRender so that we can know whether or not to prioritize it in revert().\n };\n\n _proto.repeat = function repeat(value) {\n if (arguments.length) {\n this._repeat = value === Infinity ? -2 : value;\n return _onUpdateTotalDuration(this);\n }\n\n return this._repeat === -2 ? Infinity : this._repeat;\n };\n\n _proto.repeatDelay = function repeatDelay(value) {\n if (arguments.length) {\n var time = this._time;\n this._rDelay = value;\n\n _onUpdateTotalDuration(this);\n\n return time ? this.time(time) : this;\n }\n\n return this._rDelay;\n };\n\n _proto.yoyo = function yoyo(value) {\n if (arguments.length) {\n this._yoyo = value;\n return this;\n }\n\n return this._yoyo;\n };\n\n _proto.seek = function seek(position, suppressEvents) {\n return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n };\n\n _proto.restart = function restart(includeDelay, suppressEvents) {\n return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n };\n\n _proto.play = function play(from, suppressEvents) {\n from != null && this.seek(from, suppressEvents);\n return this.reversed(false).paused(false);\n };\n\n _proto.reverse = function reverse(from, suppressEvents) {\n from != null && this.seek(from || this.totalDuration(), suppressEvents);\n return this.reversed(true).paused(false);\n };\n\n _proto.pause = function pause(atTime, suppressEvents) {\n atTime != null && this.seek(atTime, suppressEvents);\n return this.paused(true);\n };\n\n _proto.resume = function resume() {\n return this.paused(false);\n };\n\n _proto.reversed = function reversed(value) {\n if (arguments.length) {\n !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.\n\n return this;\n }\n\n return this._rts < 0;\n };\n\n _proto.invalidate = function invalidate() {\n this._initted = this._act = 0;\n this._zTime = -_tinyNum;\n return this;\n };\n\n _proto.isActive = function isActive() {\n var parent = this.parent || this._dp,\n start = this._start,\n rawTime;\n return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);\n };\n\n _proto.eventCallback = function eventCallback(type, callback, params) {\n var vars = this.vars;\n\n if (arguments.length > 1) {\n if (!callback) {\n delete vars[type];\n } else {\n vars[type] = callback;\n params && (vars[type + \"Params\"] = params);\n type === \"onUpdate\" && (this._onUpdate = callback);\n }\n\n return this;\n }\n\n return vars[type];\n };\n\n _proto.then = function then(onFulfilled) {\n var self = this;\n return new Promise(function (resolve) {\n var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n _resolve = function _resolve() {\n var _then = self.then;\n self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)\n\n _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n resolve(f);\n self.then = _then;\n };\n\n if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {\n _resolve();\n } else {\n self._prom = _resolve;\n }\n });\n };\n\n _proto.kill = function kill() {\n _interrupt(this);\n };\n\n return Animation;\n}();\n\n_setDefaults(Animation.prototype, {\n _time: 0,\n _start: 0,\n _end: 0,\n _tTime: 0,\n _tDur: 0,\n _dirty: 0,\n _repeat: 0,\n _yoyo: false,\n parent: null,\n _initted: false,\n _rDelay: 0,\n _ts: 1,\n _dp: 0,\n ratio: 0,\n _zTime: -_tinyNum,\n _prom: 0,\n _ps: false,\n _rts: 1\n});\n/*\n * -------------------------------------------------\n * TIMELINE\n * -------------------------------------------------\n */\n\n\nexport var Timeline = /*#__PURE__*/function (_Animation) {\n _inheritsLoose(Timeline, _Animation);\n\n function Timeline(vars, position) {\n var _this;\n\n if (vars === void 0) {\n vars = {};\n }\n\n _this = _Animation.call(this, vars) || this;\n _this.labels = {};\n _this.smoothChildTiming = !!vars.smoothChildTiming;\n _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n _this._sort = _isNotFalse(vars.sortChildren);\n _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);\n vars.reversed && _this.reverse();\n vars.paused && _this.paused(true);\n vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);\n return _this;\n }\n\n var _proto2 = Timeline.prototype;\n\n _proto2.to = function to(targets, vars, position) {\n _createTweenType(0, arguments, this);\n\n return this;\n };\n\n _proto2.from = function from(targets, vars, position) {\n _createTweenType(1, arguments, this);\n\n return this;\n };\n\n _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n _createTweenType(2, arguments, this);\n\n return this;\n };\n\n _proto2.set = function set(targets, vars, position) {\n vars.duration = 0;\n vars.parent = this;\n _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n vars.immediateRender = !!vars.immediateRender;\n new Tween(targets, vars, _parsePosition(this, position), 1);\n return this;\n };\n\n _proto2.call = function call(callback, params, position) {\n return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);\n } //ONLY for backward compatibility! Maybe delete?\n ;\n\n _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.duration = duration;\n vars.stagger = vars.stagger || stagger;\n vars.onComplete = onCompleteAll;\n vars.onCompleteParams = onCompleteAllParams;\n vars.parent = this;\n new Tween(targets, vars, _parsePosition(this, position));\n return this;\n };\n\n _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.runBackwards = 1;\n _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n toVars.startAt = fromVars;\n _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._dirty ? this.totalDuration() : this._tDur,\n dur = this._dur,\n tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime),\n // if a paused timeline is resumed (or its _start is updated for another reason...which rounds it), that could result in the playhead shifting a **tiny** amount and a zero-duration child at that spot may get rendered at a different ratio, like its totalTime in render() may be 1e-17 instead of 0, for example.\n crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),\n time,\n child,\n next,\n iteration,\n cycleDuration,\n prevPaused,\n pauseTween,\n timeScale,\n prevStart,\n prevIteration,\n yoyo,\n isYoyo;\n this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);\n\n if (tTime !== this._tTime || force || crossingStart) {\n if (prevTime !== this._time && dur) {\n //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n tTime += this._time - prevTime;\n totalTime += this._time - prevTime;\n }\n\n time = tTime;\n prevStart = this._start;\n timeScale = this._ts;\n prevPaused = !timeScale;\n\n if (crossingStart) {\n dur || (prevTime = this._zTime); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n (totalTime || !suppressEvents) && (this._zTime = totalTime);\n }\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n yoyo = this._yoyo;\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && totalTime < 0) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n !prevTime && this._tTime && prevIteration !== iteration && this._tTime - prevIteration * cycleDuration - this._dur <= 0 && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://gsap.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005 also, this._tTime - prevIteration * cycleDuration - this._dur <= 0 just checks to make sure it wasn't previously in the \"repeatDelay\" portion\n\n if (yoyo && iteration & 1) {\n time = dur - time;\n isYoyo = 1;\n }\n /*\n make sure children at the end/beginning of the timeline are rendered properly. If, for example,\n a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which\n would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there\n could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So\n we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must\n ensure that zero-duration tweens at the very beginning or end of the Timeline work.\n */\n\n\n if (iteration !== prevIteration && !this._lock) {\n var rewinding = yoyo && prevIteration & 1,\n doesWrap = rewinding === (yoyo && iteration & 1);\n iteration < prevIteration && (rewinding = !rewinding);\n prevTime = rewinding ? 0 : tTime % dur ? dur : tTime; // if the playhead is landing exactly at the end of an iteration, use that totalTime rather than only the duration, otherwise it'll skip the 2nd render since it's effectively at the same time.\n\n this._lock = 1;\n this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n this._tTime = tTime; // if a user gets the iteration() inside the onRepeat, for example, it should be accurate.\n\n !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\n if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {\n // if prevTime is 0 and we render at the very end, _time will be the end, thus won't match. So in this edge case, prevTime won't match _time but that's okay. If it gets killed in the onRepeat, eject as well.\n return this;\n }\n\n dur = this._dur; // in case the duration changed in the onRepeat\n\n tDur = this._tDur;\n\n if (doesWrap) {\n this._lock = 2;\n prevTime = rewinding ? dur : -0.0001;\n this.render(prevTime, true);\n this.vars.repeatRefresh && !isYoyo && this.invalidate();\n }\n\n this._lock = 0;\n\n if (!this._ts && !prevPaused) {\n return this;\n } //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.\n\n\n _propagateYoyoEase(this, isYoyo);\n }\n }\n\n if (this._hasPause && !this._forcing && this._lock < 2) {\n pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));\n\n if (pauseTween) {\n tTime -= time - (time = pauseTween._start);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n if (!this._initted) {\n this._onUpdate = this.vars.onUpdate;\n this._initted = 1;\n this._zTime = totalTime;\n prevTime = 0; // upon init, the playhead should always go forward; someone could invalidate() a completed timeline and then if they restart(), that would make child tweens render in reverse order which could lock in the wrong starting values if they build on each other, like tl.to(obj, {x: 100}).to(obj, {x: 0}).\n }\n\n if (!prevTime && time && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n if (time >= prevTime && totalTime >= 0) {\n child = this._first;\n\n while (child) {\n next = child._next;\n\n if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = -_tinyNum); // it didn't finish rendering, so flag zTime as negative so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n } else {\n child = this._last;\n var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.\n\n while (child) {\n next = child._prev;\n\n if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force || _reverting && (child._initted || child._startAt)); // if reverting, we should always force renders of initted tweens (but remember that .fromTo() or .from() may have a _startAt but not _initted yet). If, for example, a .fromTo() tween with a stagger (which creates an internal timeline) gets reverted BEFORE some of its child tweens render for the first time, it may not properly trigger them to revert.\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n }\n\n if (pauseTween && !suppressEvents) {\n this.pause();\n pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n\n if (this._ts) {\n //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).\n this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.\n\n _setEnd(this);\n\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n // remember, a child's callback may alter this timeline's playhead or timeScale which is why we need to add some of these checks.\n (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {\n _callback(this, tTime === tDur && totalTime >= 0 ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto2.add = function add(child, position) {\n var _this2 = this;\n\n _isNumber(position) || (position = _parsePosition(this, position, child));\n\n if (!(child instanceof Animation)) {\n if (_isArray(child)) {\n child.forEach(function (obj) {\n return _this2.add(obj, position);\n });\n return this;\n }\n\n if (_isString(child)) {\n return this.addLabel(child, position);\n }\n\n if (_isFunction(child)) {\n child = Tween.delayedCall(0, child);\n } else {\n return this;\n }\n }\n\n return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!\n };\n\n _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {\n if (nested === void 0) {\n nested = true;\n }\n\n if (tweens === void 0) {\n tweens = true;\n }\n\n if (timelines === void 0) {\n timelines = true;\n }\n\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = -_bigNum;\n }\n\n var a = [],\n child = this._first;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n if (child instanceof Tween) {\n tweens && a.push(child);\n } else {\n timelines && a.push(child);\n nested && a.push.apply(a, child.getChildren(true, tweens, timelines));\n }\n }\n\n child = child._next;\n }\n\n return a;\n };\n\n _proto2.getById = function getById(id) {\n var animations = this.getChildren(1, 1, 1),\n i = animations.length;\n\n while (i--) {\n if (animations[i].vars.id === id) {\n return animations[i];\n }\n }\n };\n\n _proto2.remove = function remove(child) {\n if (_isString(child)) {\n return this.removeLabel(child);\n }\n\n if (_isFunction(child)) {\n return this.killTweensOf(child);\n }\n\n _removeLinkedListItem(this, child);\n\n if (child === this._recent) {\n this._recent = this._last;\n }\n\n return _uncache(this);\n };\n\n _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {\n if (!arguments.length) {\n return this._tTime;\n }\n\n this._forcing = 1;\n\n if (!this._dp && this._ts) {\n //special case for the global timeline (or any other that has no parent or detached parent).\n this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));\n }\n\n _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);\n\n this._forcing = 0;\n return this;\n };\n\n _proto2.addLabel = function addLabel(label, position) {\n this.labels[label] = _parsePosition(this, position);\n return this;\n };\n\n _proto2.removeLabel = function removeLabel(label) {\n delete this.labels[label];\n return this;\n };\n\n _proto2.addPause = function addPause(position, callback, params) {\n var t = Tween.delayedCall(0, callback || _emptyFunc, params);\n t.data = \"isPause\";\n this._hasPause = 1;\n return _addToTimeline(this, t, _parsePosition(this, position));\n };\n\n _proto2.removePause = function removePause(position) {\n var child = this._first;\n position = _parsePosition(this, position);\n\n while (child) {\n if (child._start === position && child.data === \"isPause\") {\n _removeFromParent(child);\n }\n\n child = child._next;\n }\n };\n\n _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n var tweens = this.getTweensOf(targets, onlyActive),\n i = tweens.length;\n\n while (i--) {\n _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);\n }\n\n return this;\n };\n\n _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {\n var a = [],\n parsedTargets = toArray(targets),\n child = this._first,\n isGlobalTime = _isNumber(onlyActive),\n // a number is interpreted as a global time. If the animation spans\n children;\n\n while (child) {\n if (child instanceof Tween) {\n if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {\n // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.\n a.push(child);\n }\n } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n a.push.apply(a, children);\n }\n\n child = child._next;\n }\n\n return a;\n } // potential future feature - targets() on timelines\n // targets() {\n // \tlet result = [];\n // \tthis.getChildren(true, true, false).forEach(t => result.push(...t.targets()));\n // \treturn result.filter((v, i) => result.indexOf(v) === i);\n // }\n ;\n\n _proto2.tweenTo = function tweenTo(position, vars) {\n vars = vars || {};\n\n var tl = this,\n endTime = _parsePosition(tl, position),\n _vars = vars,\n startAt = _vars.startAt,\n _onStart = _vars.onStart,\n onStartParams = _vars.onStartParams,\n immediateRender = _vars.immediateRender,\n initted,\n tween = Tween.to(tl, _setDefaults({\n ease: vars.ease || \"none\",\n lazy: false,\n immediateRender: false,\n time: endTime,\n overwrite: \"auto\",\n duration: vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,\n onStart: function onStart() {\n tl.pause();\n\n if (!initted) {\n var duration = vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale());\n tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n initted = 1;\n }\n\n _onStart && _onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.\n }\n }, vars));\n\n return immediateRender ? tween.render(0) : tween;\n };\n\n _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {\n return this.tweenTo(toPosition, _setDefaults({\n startAt: {\n time: _parsePosition(this, fromPosition)\n }\n }, vars));\n };\n\n _proto2.recent = function recent() {\n return this._recent;\n };\n\n _proto2.nextLabel = function nextLabel(afterTime) {\n if (afterTime === void 0) {\n afterTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, afterTime));\n };\n\n _proto2.previousLabel = function previousLabel(beforeTime) {\n if (beforeTime === void 0) {\n beforeTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n };\n\n _proto2.currentLabel = function currentLabel(value) {\n return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n };\n\n _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = 0;\n }\n\n var child = this._first,\n labels = this.labels,\n p;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n child._start += amount;\n child._end += amount;\n }\n\n child = child._next;\n }\n\n if (adjustLabels) {\n for (p in labels) {\n if (labels[p] >= ignoreBeforeTime) {\n labels[p] += amount;\n }\n }\n }\n\n return _uncache(this);\n };\n\n _proto2.invalidate = function invalidate(soft) {\n var child = this._first;\n this._lock = 0;\n\n while (child) {\n child.invalidate(soft);\n child = child._next;\n }\n\n return _Animation.prototype.invalidate.call(this, soft);\n };\n\n _proto2.clear = function clear(includeLabels) {\n if (includeLabels === void 0) {\n includeLabels = true;\n }\n\n var child = this._first,\n next;\n\n while (child) {\n next = child._next;\n this.remove(child);\n child = next;\n }\n\n this._dp && (this._time = this._tTime = this._pTime = 0);\n includeLabels && (this.labels = {});\n return _uncache(this);\n };\n\n _proto2.totalDuration = function totalDuration(value) {\n var max = 0,\n self = this,\n child = self._last,\n prevStart = _bigNum,\n prev,\n start,\n parent;\n\n if (arguments.length) {\n return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n }\n\n if (self._dirty) {\n parent = self.parent;\n\n while (child) {\n prev = child._prev; //record it here in case the tween changes position in the sequence...\n\n child._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.\n\n start = child._start;\n\n if (start > prevStart && self._sort && child._ts && !self._lock) {\n //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence\n self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().\n\n _addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n } else {\n prevStart = start;\n }\n\n if (start < 0 && child._ts) {\n //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.\n max -= start;\n\n if (!parent && !self._dp || parent && parent.smoothChildTiming) {\n self._start += start / self._ts;\n self._time -= start;\n self._tTime -= start;\n }\n\n self.shiftChildren(-start, false, -1e999);\n prevStart = 0;\n }\n\n child._end > max && child._ts && (max = child._end);\n child = prev;\n }\n\n _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);\n\n self._dirty = 0;\n }\n\n return self._tDur;\n };\n\n Timeline.updateRoot = function updateRoot(time) {\n if (_globalTimeline._ts) {\n _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n\n _lastRenderedFrame = _ticker.frame;\n }\n\n if (_ticker.frame >= _nextGCFrame) {\n _nextGCFrame += _config.autoSleep || 120;\n var child = _globalTimeline._first;\n if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n while (child && !child._ts) {\n child = child._next;\n }\n\n child || _ticker.sleep();\n }\n }\n };\n\n return Timeline;\n}(Animation);\n\n_setDefaults(Timeline.prototype, {\n _lock: 0,\n _hasPause: 0,\n _forcing: 0\n});\n\nvar _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {\n //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n index = 0,\n matchIndex = 0,\n result,\n startNums,\n color,\n endNum,\n chunk,\n startNum,\n hasRandom,\n a;\n pt.b = start;\n pt.e = end;\n start += \"\"; //ensure values are strings\n\n end += \"\";\n\n if (hasRandom = ~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (stringFilter) {\n a = [start, end];\n stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.\n\n start = a[0];\n end = a[1];\n }\n\n startNums = start.match(_complexStringNumExp) || [];\n\n while (result = _complexStringNumExp.exec(end)) {\n endNum = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\") {\n color = 1;\n }\n\n if (endNum !== startNums[matchIndex++]) {\n startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum.charAt(1) === \"=\" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum,\n m: color && color < 4 ? Math.round : 0\n };\n index = _complexStringNumExp.lastIndex;\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n\n pt.fp = funcParam;\n\n if (_relExp.test(end) || hasRandom) {\n pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n }\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam, optional) {\n _isFunction(end) && (end = end(index || 0, target, targets));\n var currentValue = target[prop],\n parsedStart = start !== \"get\" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)]) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop](),\n setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n pt;\n\n if (_isString(end)) {\n if (~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (end.charAt(1) === \"=\") {\n pt = _parseRelative(parsedStart, end) + (getUnit(parsedStart) || 0);\n\n if (pt || pt === 0) {\n // to avoid isNaN, like if someone passes in a value like \"!= whatever\"\n end = pt;\n }\n }\n }\n\n if (!optional || parsedStart !== end || _forceAllPropTweens) {\n if (!isNaN(parsedStart * end) && end !== \"\") {\n // fun fact: any number multiplied by \"\" is evaluated as the number 0!\n pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n funcParam && (pt.fp = funcParam);\n modifier && pt.modifier(modifier, this, target);\n return this._pt = pt;\n }\n\n !currentValue && !(prop in target) && _missingPlugin(prop, end);\n return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n }\n},\n //creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with \"random()\" in them. It does NOT process relative values.\n_processVars = function _processVars(vars, index, target, targets, tween) {\n _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n\n if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {\n return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n }\n\n var copy = {},\n p;\n\n for (p in vars) {\n copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n }\n\n return copy;\n},\n _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {\n var plugin, pt, ptLookup, i;\n\n if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n if (tween !== _quickTween) {\n ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.\n\n i = plugin._props.length;\n\n while (i--) {\n ptLookup[plugin._props[i]] = pt;\n }\n }\n }\n\n return plugin;\n},\n _overwritingTween,\n //store a reference temporarily so we can avoid overwriting itself.\n_forceAllPropTweens,\n _initTween = function _initTween(tween, time, tTime) {\n var vars = tween.vars,\n ease = vars.ease,\n startAt = vars.startAt,\n immediateRender = vars.immediateRender,\n lazy = vars.lazy,\n onUpdate = vars.onUpdate,\n runBackwards = vars.runBackwards,\n yoyoEase = vars.yoyoEase,\n keyframes = vars.keyframes,\n autoRevert = vars.autoRevert,\n dur = tween._dur,\n prevStartAt = tween._startAt,\n targets = tween._targets,\n parent = tween.parent,\n fullTargets = parent && parent.data === \"nested\" ? parent.vars.targets : targets,\n autoOverwrite = tween._overwrite === \"auto\" && !_suppressOverwrites,\n tl = tween.timeline,\n cleanVars,\n i,\n p,\n pt,\n target,\n hasPriority,\n gsData,\n harness,\n plugin,\n ptLookup,\n index,\n harnessVars,\n overwritten;\n tl && (!keyframes || !ease) && (ease = \"none\");\n tween._ease = _parseEase(ease, _defaults.ease);\n tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n\n if (yoyoEase && tween._yoyo && !tween._repeat) {\n //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.\n yoyoEase = tween._yEase;\n tween._yEase = tween._ease;\n tween._ease = yoyoEase;\n }\n\n tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.\n\n if (!tl || keyframes && !vars.stagger) {\n //if there's an internal timeline, skip all the parsing because we passed that task down the chain.\n harness = targets[0] ? _getCache(targets[0]).harness : 0;\n harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an \"x\" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.\n\n cleanVars = _copyExcluding(vars, _reservedProps);\n\n if (prevStartAt) {\n prevStartAt._zTime < 0 && prevStartAt.progress(1); // in case it's a lazy startAt that hasn't rendered yet.\n\n time < 0 && runBackwards && immediateRender && !autoRevert ? prevStartAt.render(-1, true) : prevStartAt.revert(runBackwards && dur ? _revertConfigNoKill : _startAtRevertConfig); // if it's a \"startAt\" (not \"from()\" or runBackwards: true), we only need to do a shallow revert (keep transforms cached in CSSPlugin)\n // don't just _removeFromParent(prevStartAt.render(-1, true)) because that'll leave inline styles. We're creating a new _startAt for \"startAt\" tweens that re-capture things to ensure that if the pre-tween values changed since the tween was created, they're recorded.\n\n prevStartAt._lazy = 0;\n }\n\n if (startAt) {\n _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({\n data: \"isStart\",\n overwrite: false,\n parent: parent,\n immediateRender: true,\n lazy: !prevStartAt && _isNotFalse(lazy),\n startAt: null,\n delay: 0,\n onUpdate: onUpdate && function () {\n return _callback(tween, \"onUpdate\");\n },\n stagger: 0\n }, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);\n\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline! Like when revert() is called and totalTime() gets set.\n\n tween._startAt._sat = tween; // used in globalTime(). _sat stands for _startAtTween\n\n time < 0 && (_reverting || !immediateRender && !autoRevert) && tween._startAt.revert(_revertConfigNoKill); // rare edge case, like if a render is forced in the negative direction of a non-initted tween.\n\n if (immediateRender) {\n if (dur && time <= 0 && tTime <= 0) {\n // check tTime here because in the case of a yoyo tween whose playhead gets pushed to the end like tween.progress(1), we should allow it through so that the onComplete gets fired properly.\n time && (tween._zTime = time);\n return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n }\n }\n } else if (runBackwards && dur) {\n //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)\n if (!prevStartAt) {\n time && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0\n\n p = _setDefaults({\n overwrite: false,\n data: \"isFromStart\",\n //we tag the tween with as \"isFromStart\" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a \"from()\" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.\n lazy: immediateRender && !prevStartAt && _isNotFalse(lazy),\n immediateRender: immediateRender,\n //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)\n stagger: 0,\n parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(\".class\", {y: gsap.utils.wrap([-100,100]), stagger: 0.5})\n\n }, cleanVars);\n harnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})\n\n _removeFromParent(tween._startAt = Tween.set(targets, p));\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline!\n\n tween._startAt._sat = tween; // used in globalTime()\n\n time < 0 && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween._startAt.render(-1, true));\n tween._zTime = time;\n\n if (!immediateRender) {\n _initTween(tween._startAt, _tinyNum, _tinyNum); //ensures that the initial values are recorded\n\n } else if (!time) {\n return;\n }\n }\n }\n\n tween._pt = tween._ptCache = 0;\n lazy = dur && _isNotFalse(lazy) || lazy && !dur;\n\n for (i = 0; i < targets.length; i++) {\n target = targets[i];\n gsData = target._gsap || _harness(targets)[i]._gsap;\n tween._ptLookup[i] = ptLookup = {};\n _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)\n\n index = fullTargets === targets ? i : fullTargets.indexOf(target);\n\n if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n plugin._props.forEach(function (name) {\n ptLookup[name] = pt;\n });\n\n plugin.priority && (hasPriority = 1);\n }\n\n if (!harness || harnessVars) {\n for (p in cleanVars) {\n if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n plugin.priority && (hasPriority = 1);\n } else {\n ptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n }\n }\n }\n\n tween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n\n if (autoOverwrite && tween._pt) {\n _overwritingTween = tween;\n\n _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time)); // make sure the overwriting doesn't overwrite THIS tween!!!\n\n\n overwritten = !tween.parent;\n _overwritingTween = 0;\n }\n\n tween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n }\n\n hasPriority && _sortPropTweensByPriority(tween);\n tween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.\n }\n\n tween._onUpdate = onUpdate;\n tween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.\n\n keyframes && time <= 0 && tl.render(_bigNum, true, true); // if there's a 0% keyframe, it'll render in the \"before\" state for any staggered/delayed animations thus when the following tween initializes, it'll use the \"before\" state instead of the \"after\" state as the initial values.\n},\n _updatePropTweens = function _updatePropTweens(tween, property, value, start, startIsRelative, ratio, time, skipRecursion) {\n var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property],\n pt,\n rootPT,\n lookup,\n i;\n\n if (!ptCache) {\n ptCache = tween._ptCache[property] = [];\n lookup = tween._ptLookup;\n i = tween._targets.length;\n\n while (i--) {\n pt = lookup[i][property];\n\n if (pt && pt.d && pt.d._pt) {\n // it's a plugin, so find the nested PropTween\n pt = pt.d._pt;\n\n while (pt && pt.p !== property && pt.fp !== property) {\n // \"fp\" is functionParam for things like setting CSS variables which require .setProperty(\"--var-name\", value)\n pt = pt._next;\n }\n }\n\n if (!pt) {\n // there is no PropTween associated with that property, so we must FORCE one to be created and ditch out of this\n // if the tween has other properties that already rendered at new positions, we'd normally have to rewind to put them back like tween.render(0, true) before forcing an _initTween(), but that can create another edge case like tweening a timeline's progress would trigger onUpdates to fire which could move other things around. It's better to just inform users that .resetTo() should ONLY be used for tweens that already have that property. For example, you can't gsap.to(...{ y: 0 }) and then tween.restTo(\"x\", 200) for example.\n _forceAllPropTweens = 1; // otherwise, when we _addPropTween() and it finds no change between the start and end values, it skips creating a PropTween (for efficiency...why tween when there's no difference?) but in this case we NEED that PropTween created so we can edit it.\n\n tween.vars[property] = \"+=0\";\n\n _initTween(tween, time);\n\n _forceAllPropTweens = 0;\n return skipRecursion ? _warn(property + \" not eligible for reset\") : 1; // if someone tries to do a quickTo() on a special property like borderRadius which must get split into 4 different properties, that's not eligible for .resetTo().\n }\n\n ptCache.push(pt);\n }\n }\n\n i = ptCache.length;\n\n while (i--) {\n rootPT = ptCache[i];\n pt = rootPT._pt || rootPT; // complex values may have nested PropTweens. We only accommodate the FIRST value.\n\n pt.s = (start || start === 0) && !startIsRelative ? start : pt.s + (start || 0) + ratio * pt.c;\n pt.c = value - pt.s;\n rootPT.e && (rootPT.e = _round(value) + getUnit(rootPT.e)); // mainly for CSSPlugin (end value)\n\n rootPT.b && (rootPT.b = pt.s + getUnit(rootPT.b)); // (beginning value)\n }\n},\n _addAliasesToVars = function _addAliasesToVars(targets, vars) {\n var harness = targets[0] ? _getCache(targets[0]).harness : 0,\n propertyAliases = harness && harness.aliases,\n copy,\n p,\n i,\n aliases;\n\n if (!propertyAliases) {\n return vars;\n }\n\n copy = _merge({}, vars);\n\n for (p in propertyAliases) {\n if (p in copy) {\n aliases = propertyAliases[p].split(\",\");\n i = aliases.length;\n\n while (i--) {\n copy[aliases[i]] = copy[p];\n }\n }\n }\n\n return copy;\n},\n // parses multiple formats, like {\"0%\": {x: 100}, {\"50%\": {x: -20}} and { x: {\"0%\": 100, \"50%\": -20} }, and an \"ease\" can be set on any object. We populate an \"allProps\" object with an Array for each property, like {x: [{}, {}], y:[{}, {}]} with data for each property tween. The objects have a \"t\" (time), \"v\", (value), and \"e\" (ease) property. This allows us to piece together a timeline later.\n_parseKeyframe = function _parseKeyframe(prop, obj, allProps, easeEach) {\n var ease = obj.ease || easeEach || \"power1.inOut\",\n p,\n a;\n\n if (_isArray(obj)) {\n a = allProps[prop] || (allProps[prop] = []); // t = time (out of 100), v = value, e = ease\n\n obj.forEach(function (value, i) {\n return a.push({\n t: i / (obj.length - 1) * 100,\n v: value,\n e: ease\n });\n });\n } else {\n for (p in obj) {\n a = allProps[p] || (allProps[p] = []);\n p === \"ease\" || a.push({\n t: parseFloat(prop),\n v: obj[p],\n e: ease\n });\n }\n }\n},\n _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {\n return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf(\"random(\") ? _replaceRandom(value) : value;\n},\n _staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert\",\n _staggerPropsToSkip = {};\n\n_forEachName(_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\", function (name) {\n return _staggerPropsToSkip[name] = 1;\n});\n/*\n * --------------------------------------------------------------------------------------\n * TWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var Tween = /*#__PURE__*/function (_Animation2) {\n _inheritsLoose(Tween, _Animation2);\n\n function Tween(targets, vars, position, skipInherit) {\n var _this3;\n\n if (typeof vars === \"number\") {\n position.duration = vars;\n vars = position;\n position = null;\n }\n\n _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;\n var _this3$vars = _this3.vars,\n duration = _this3$vars.duration,\n delay = _this3$vars.delay,\n immediateRender = _this3$vars.immediateRender,\n stagger = _this3$vars.stagger,\n overwrite = _this3$vars.overwrite,\n keyframes = _this3$vars.keyframes,\n defaults = _this3$vars.defaults,\n scrollTrigger = _this3$vars.scrollTrigger,\n yoyoEase = _this3$vars.yoyoEase,\n parent = vars.parent || _globalTimeline,\n parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : \"length\" in vars) ? [targets] : toArray(targets),\n tl,\n i,\n copy,\n l,\n p,\n curTarget,\n staggerFunc,\n staggerVarsToMerge;\n _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://gsap.com\", !_config.nullTargetWarn) || [];\n _this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property\n\n _this3._overwrite = overwrite;\n\n if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n vars = _this3.vars;\n tl = _this3.timeline = new Timeline({\n data: \"nested\",\n defaults: defaults || {},\n targets: parent && parent.data === \"nested\" ? parent.vars.targets : parsedTargets\n }); // we need to store the targets because for staggers and keyframes, we end up creating an individual tween for each but function-based values need to know the index and the whole Array of targets.\n\n tl.kill();\n tl.parent = tl._dp = _assertThisInitialized(_this3);\n tl._start = 0;\n\n if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n l = parsedTargets.length;\n staggerFunc = stagger && distribute(stagger);\n\n if (_isObject(stagger)) {\n //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.\n for (p in stagger) {\n if (~_staggerTweenProps.indexOf(p)) {\n staggerVarsToMerge || (staggerVarsToMerge = {});\n staggerVarsToMerge[p] = stagger[p];\n }\n }\n }\n\n for (i = 0; i < l; i++) {\n copy = _copyExcluding(vars, _staggerPropsToSkip);\n copy.stagger = 0;\n yoyoEase && (copy.yoyoEase = yoyoEase);\n staggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.\n\n copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);\n copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;\n\n if (!stagger && l === 1 && copy.delay) {\n // if someone does delay:\"random(1, 5)\", repeat:-1, for example, the delay shouldn't be inside the repeat.\n _this3._delay = delay = copy.delay;\n _this3._start += delay;\n copy.delay = 0;\n }\n\n tl.to(curTarget, copy, staggerFunc ? staggerFunc(i, curTarget, parsedTargets) : 0);\n tl._ease = _easeMap.none;\n }\n\n tl.duration() ? duration = delay = 0 : _this3.timeline = 0; // if the timeline's duration is 0, we don't need a timeline internally!\n } else if (keyframes) {\n _inheritDefaults(_setDefaults(tl.vars.defaults, {\n ease: \"none\"\n }));\n\n tl._ease = _parseEase(keyframes.ease || vars.ease || \"none\");\n var time = 0,\n a,\n kf,\n v;\n\n if (_isArray(keyframes)) {\n keyframes.forEach(function (frame) {\n return tl.to(parsedTargets, frame, \">\");\n });\n tl.duration(); // to ensure tl._dur is cached because we tap into it for performance purposes in the render() method.\n } else {\n copy = {};\n\n for (p in keyframes) {\n p === \"ease\" || p === \"easeEach\" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);\n }\n\n for (p in copy) {\n a = copy[p].sort(function (a, b) {\n return a.t - b.t;\n });\n time = 0;\n\n for (i = 0; i < a.length; i++) {\n kf = a[i];\n v = {\n ease: kf.e,\n duration: (kf.t - (i ? a[i - 1].t : 0)) / 100 * duration\n };\n v[p] = kf.v;\n tl.to(parsedTargets, v, time);\n time += v.duration;\n }\n }\n\n tl.duration() < duration && tl.to({}, {\n duration: duration - tl.duration()\n }); // in case keyframes didn't go to 100%\n }\n }\n\n duration || _this3.duration(duration = tl.duration());\n } else {\n _this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)\n }\n\n if (overwrite === true && !_suppressOverwrites) {\n _overwritingTween = _assertThisInitialized(_this3);\n\n _globalTimeline.killTweensOf(parsedTargets);\n\n _overwritingTween = 0;\n }\n\n _addToTimeline(parent, _assertThisInitialized(_this3), position);\n\n vars.reversed && _this3.reverse();\n vars.paused && _this3.paused(true);\n\n if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== \"nested\") {\n _this3._tTime = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\n _this3.render(Math.max(0, -delay) || 0); //in case delay is negative\n\n }\n\n scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);\n return _this3;\n }\n\n var _proto3 = Tween.prototype;\n\n _proto3.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._tDur,\n dur = this._dur,\n isNegative = totalTime < 0,\n tTime = totalTime > tDur - _tinyNum && !isNegative ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n time,\n pt,\n iteration,\n cycleDuration,\n prevIteration,\n isYoyo,\n ratio,\n timeline,\n yoyoEase;\n\n if (!dur) {\n _renderZeroDurationTween(this, totalTime, suppressEvents, force);\n } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== isNegative) {\n //this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)\n time = tTime;\n timeline = this.timeline;\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && isNegative) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === _roundPrecise(tTime / cycleDuration)) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n isYoyo = this._yoyo && iteration & 1;\n\n if (isYoyo) {\n yoyoEase = this._yEase;\n time = dur - time;\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n\n if (time === prevTime && !force && this._initted && iteration === prevIteration) {\n //could be during the repeatDelay part. No need to render and fire callbacks.\n this._tTime = tTime;\n return this;\n }\n\n if (iteration !== prevIteration) {\n timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); //repeatRefresh functionality\n\n if (this.vars.repeatRefresh && !isYoyo && !this._lock && this._time !== dur && this._initted) {\n // this._time will === dur when we render at EXACTLY the end of an iteration. Without this condition, it'd often do the repeatRefresh render TWICE (again on the very next tick).\n this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.\n\n this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;\n }\n }\n }\n\n if (!this._initted) {\n if (_attemptInitTween(this, isNegative ? totalTime : time, force, suppressEvents, tTime)) {\n this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.\n\n return this;\n }\n\n if (prevTime !== this._time && !(force && this.vars.repeatRefresh && iteration !== prevIteration)) {\n // rare edge case - during initialization, an onUpdate in the _startAt (.fromTo()) might force this tween to render at a different spot in which case we should ditch this render() call so that it doesn't revert the values. But we also don't want to dump if we're doing a repeatRefresh render!\n return this;\n }\n\n if (dur !== this._dur) {\n // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n\n if (!this._act && this._ts) {\n this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n this._lazy = 0;\n }\n\n this.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n\n if (this._from) {\n this.ratio = ratio = 1 - ratio;\n }\n\n if (time && !prevTime && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n pt = this._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n\n if (this._onUpdate && !suppressEvents) {\n isNegative && _rewindStartAt(this, totalTime, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\n _callback(this, \"onUpdate\");\n }\n\n this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\n if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n isNegative && !this._onUpdate && _rewindStartAt(this, totalTime, true, true);\n (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(isNegative && !prevTime) && (tTime || prevTime || isYoyo)) {\n // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();\n _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto3.targets = function targets() {\n return this._targets;\n };\n\n _proto3.invalidate = function invalidate(soft) {\n // \"soft\" gives us a way to clear out everything EXCEPT the recorded pre-\"from\" portion of from() tweens. Otherwise, for example, if you tween.progress(1).render(0, true true).invalidate(), the \"from\" values would persist and then on the next render, the from() tweens would initialize and the current value would match the \"from\" values, thus animate from the same value to the same value (no animation). We tap into this in ScrollTrigger's refresh() where we must push a tween to completion and then back again but honor its init state in case the tween is dependent on another tween further up on the page.\n (!soft || !this.vars.runBackwards) && (this._startAt = 0);\n this._pt = this._op = this._onUpdate = this._lazy = this.ratio = 0;\n this._ptLookup = [];\n this.timeline && this.timeline.invalidate(soft);\n return _Animation2.prototype.invalidate.call(this, soft);\n };\n\n _proto3.resetTo = function resetTo(property, value, start, startIsRelative, skipRecursion) {\n _tickerActive || _ticker.wake();\n this._ts || this.play();\n var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts),\n ratio;\n this._initted || _initTween(this, time);\n ratio = this._ease(time / this._dur); // don't just get tween.ratio because it may not have rendered yet.\n // possible future addition to allow an object with multiple values to update, like tween.resetTo({x: 100, y: 200}); At this point, it doesn't seem worth the added kb given the fact that most users will likely opt for the convenient gsap.quickTo() way of interacting with this method.\n // if (_isObject(property)) { // performance optimization\n // \tfor (p in property) {\n // \t\tif (_updatePropTweens(this, p, property[p], value ? value[p] : null, start, ratio, time)) {\n // \t\t\treturn this.resetTo(property, value, start, startIsRelative); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n // \t\t}\n // \t}\n // } else {\n\n if (_updatePropTweens(this, property, value, start, startIsRelative, ratio, time, skipRecursion)) {\n return this.resetTo(property, value, start, startIsRelative, 1); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n } //}\n\n\n _alignPlayhead(this, 0);\n\n this.parent || _addLinkedListItem(this._dp, this, \"_first\", \"_last\", this._dp._sort ? \"_start\" : 0);\n return this.render(0);\n };\n\n _proto3.kill = function kill(targets, vars) {\n if (vars === void 0) {\n vars = \"all\";\n }\n\n if (!targets && (!vars || vars === \"all\")) {\n this._lazy = this._pt = 0;\n return this.parent ? _interrupt(this) : this;\n }\n\n if (this.timeline) {\n var tDur = this.timeline.totalDuration();\n this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweening, interrupt.\n\n this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.\n\n return this;\n }\n\n var parsedTargets = this._targets,\n killingTargets = targets ? toArray(targets) : parsedTargets,\n propTweenLookup = this._ptLookup,\n firstPT = this._pt,\n overwrittenProps,\n curLookup,\n curOverwriteProps,\n props,\n p,\n pt,\n i;\n\n if ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n vars === \"all\" && (this._pt = 0);\n return _interrupt(this);\n }\n\n overwrittenProps = this._op = this._op || [];\n\n if (vars !== \"all\") {\n //so people can pass in a comma-delimited list of property names\n if (_isString(vars)) {\n p = {};\n\n _forEachName(vars, function (name) {\n return p[name] = 1;\n });\n\n vars = p;\n }\n\n vars = _addAliasesToVars(parsedTargets, vars);\n }\n\n i = parsedTargets.length;\n\n while (i--) {\n if (~killingTargets.indexOf(parsedTargets[i])) {\n curLookup = propTweenLookup[i];\n\n if (vars === \"all\") {\n overwrittenProps[i] = vars;\n props = curLookup;\n curOverwriteProps = {};\n } else {\n curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n props = vars;\n }\n\n for (p in props) {\n pt = curLookup && curLookup[p];\n\n if (pt) {\n if (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n _removeLinkedListItem(this, pt, \"_pt\");\n }\n\n delete curLookup[p];\n }\n\n if (curOverwriteProps !== \"all\") {\n curOverwriteProps[p] = 1;\n }\n }\n }\n }\n\n this._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.\n\n return this;\n };\n\n Tween.to = function to(targets, vars) {\n return new Tween(targets, vars, arguments[2]);\n };\n\n Tween.from = function from(targets, vars) {\n return _createTweenType(1, arguments);\n };\n\n Tween.delayedCall = function delayedCall(delay, callback, params, scope) {\n return new Tween(callback, 0, {\n immediateRender: false,\n lazy: false,\n overwrite: false,\n delay: delay,\n onComplete: callback,\n onReverseComplete: callback,\n onCompleteParams: params,\n onReverseCompleteParams: params,\n callbackScope: scope\n }); // we must use onReverseComplete too for things like timeline.add(() => {...}) which should be triggered in BOTH directions (forward and reverse)\n };\n\n Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n return _createTweenType(2, arguments);\n };\n\n Tween.set = function set(targets, vars) {\n vars.duration = 0;\n vars.repeatDelay || (vars.repeat = 0);\n return new Tween(targets, vars);\n };\n\n Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n return _globalTimeline.killTweensOf(targets, props, onlyActive);\n };\n\n return Tween;\n}(Animation);\n\n_setDefaults(Tween.prototype, {\n _targets: [],\n _lazy: 0,\n _startAt: 0,\n _op: 0,\n _onInit: 0\n}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)\n// _forEachName(\"to,from,fromTo,set,call,add,addLabel,addPause\", name => {\n// \tTween.prototype[name] = function() {\n// \t\tlet tl = new Timeline();\n// \t\treturn _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));\n// \t}\n// });\n//for backward compatibility. Leverage the timeline calls.\n\n\n_forEachName(\"staggerTo,staggerFrom,staggerFromTo\", function (name) {\n Tween[name] = function () {\n var tl = new Timeline(),\n params = _slice.call(arguments, 0);\n\n params.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n return tl[name].apply(tl, params);\n };\n});\n/*\n * --------------------------------------------------------------------------------------\n * PROPTWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _setterPlain = function _setterPlain(target, property, value) {\n return target[property] = value;\n},\n _setterFunc = function _setterFunc(target, property, value) {\n return target[property](value);\n},\n _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {\n return target[property](data.fp, value);\n},\n _setterAttribute = function _setterAttribute(target, property, value) {\n return target.setAttribute(property, value);\n},\n _getSetter = function _getSetter(target, property) {\n return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;\n},\n _renderPlain = function _renderPlain(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);\n},\n _renderBoolean = function _renderBoolean(ratio, data) {\n return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);\n},\n _renderComplexString = function _renderComplexString(ratio, data) {\n var pt = data._pt,\n s = \"\";\n\n if (!ratio && data.b) {\n //b = beginning string\n s = data.b;\n } else if (ratio === 1 && data.e) {\n //e = ending string\n s = data.e;\n } else {\n while (pt) {\n s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the \"p\" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.\n\n pt = pt._next;\n }\n\n s += data.c; //we use the \"c\" of the PropTween to store the final chunk of non-numeric text.\n }\n\n data.set(data.t, data.p, s, data);\n},\n _renderPropTweens = function _renderPropTweens(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n},\n _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {\n var pt = this._pt,\n next;\n\n while (pt) {\n next = pt._next;\n pt.p === property && pt.modifier(modifier, tween, target);\n pt = next;\n }\n},\n _killPropTweensOf = function _killPropTweensOf(property) {\n var pt = this._pt,\n hasNonDependentRemaining,\n next;\n\n while (pt) {\n next = pt._next;\n\n if (pt.p === property && !pt.op || pt.op === property) {\n _removeLinkedListItem(this, pt, \"_pt\");\n } else if (!pt.dep) {\n hasNonDependentRemaining = 1;\n }\n\n pt = next;\n }\n\n return !hasNonDependentRemaining;\n},\n _setterWithModifier = function _setterWithModifier(target, property, value, data) {\n data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n},\n _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {\n var pt = parent._pt,\n next,\n pt2,\n first,\n last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)\n\n while (pt) {\n next = pt._next;\n pt2 = first;\n\n while (pt2 && pt2.pr > pt.pr) {\n pt2 = pt2._next;\n }\n\n if (pt._prev = pt2 ? pt2._prev : last) {\n pt._prev._next = pt;\n } else {\n first = pt;\n }\n\n if (pt._next = pt2) {\n pt2._prev = pt;\n } else {\n last = pt;\n }\n\n pt = next;\n }\n\n parent._pt = first;\n}; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)\n\n\nexport var PropTween = /*#__PURE__*/function () {\n function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {\n this.t = target;\n this.s = start;\n this.c = change;\n this.p = prop;\n this.r = renderer || _renderPlain;\n this.d = data || this;\n this.set = setter || _setterPlain;\n this.pr = priority || 0;\n this._next = next;\n\n if (next) {\n next._prev = this;\n }\n }\n\n var _proto4 = PropTween.prototype;\n\n _proto4.modifier = function modifier(func, tween, target) {\n this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)\n\n this.set = _setterWithModifier;\n this.m = func;\n this.mt = target; //modifier target\n\n this.tween = tween;\n };\n\n return PropTween;\n}(); //Initialization tasks\n\n_forEachName(_callbackNames + \"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger\", function (name) {\n return _reservedProps[name] = 1;\n});\n\n_globals.TweenMax = _globals.TweenLite = Tween;\n_globals.TimelineLite = _globals.TimelineMax = Timeline;\n_globalTimeline = new Timeline({\n sortChildren: false,\n defaults: _defaults,\n autoRemoveChildren: true,\n id: \"root\",\n smoothChildTiming: true\n});\n_config.stringFilter = _colorStringFilter;\n\nvar _media = [],\n _listeners = {},\n _emptyArray = [],\n _lastMediaTime = 0,\n _contextID = 0,\n _dispatch = function _dispatch(type) {\n return (_listeners[type] || _emptyArray).map(function (f) {\n return f();\n });\n},\n _onMediaChange = function _onMediaChange() {\n var time = Date.now(),\n matches = [];\n\n if (time - _lastMediaTime > 2) {\n _dispatch(\"matchMediaInit\");\n\n _media.forEach(function (c) {\n var queries = c.queries,\n conditions = c.conditions,\n match,\n p,\n anyMatch,\n toggled;\n\n for (p in queries) {\n match = _win.matchMedia(queries[p]).matches; // Firefox doesn't update the \"matches\" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.\n\n match && (anyMatch = 1);\n\n if (match !== conditions[p]) {\n conditions[p] = match;\n toggled = 1;\n }\n }\n\n if (toggled) {\n c.revert();\n anyMatch && matches.push(c);\n }\n });\n\n _dispatch(\"matchMediaRevert\");\n\n matches.forEach(function (c) {\n return c.onMatch(c, function (func) {\n return c.add(null, func);\n });\n });\n _lastMediaTime = time;\n\n _dispatch(\"matchMedia\");\n }\n};\n\nvar Context = /*#__PURE__*/function () {\n function Context(func, scope) {\n this.selector = scope && selector(scope);\n this.data = [];\n this._r = []; // returned/cleanup functions\n\n this.isReverted = false;\n this.id = _contextID++; // to work around issues that frameworks like Vue cause by making things into Proxies which make it impossible to do something like _media.indexOf(this) because \"this\" would no longer refer to the Context instance itself - it'd refer to a Proxy! We needed a way to identify the context uniquely\n\n func && this.add(func);\n }\n\n var _proto5 = Context.prototype;\n\n _proto5.add = function add(name, func, scope) {\n // possible future addition if we need the ability to add() an animation to a context and for whatever reason cannot create that animation inside of a context.add(() => {...}) function.\n // if (name && _isFunction(name.revert)) {\n // \tthis.data.push(name);\n // \treturn (name._ctx = this);\n // }\n if (_isFunction(name)) {\n scope = func;\n func = name;\n name = _isFunction;\n }\n\n var self = this,\n f = function f() {\n var prev = _context,\n prevSelector = self.selector,\n result;\n prev && prev !== self && prev.data.push(self);\n scope && (self.selector = selector(scope));\n _context = self;\n result = func.apply(self, arguments);\n _isFunction(result) && self._r.push(result);\n _context = prev;\n self.selector = prevSelector;\n self.isReverted = false;\n return result;\n };\n\n self.last = f;\n return name === _isFunction ? f(self, function (func) {\n return self.add(null, func);\n }) : name ? self[name] = f : f;\n };\n\n _proto5.ignore = function ignore(func) {\n var prev = _context;\n _context = null;\n func(this);\n _context = prev;\n };\n\n _proto5.getTweens = function getTweens() {\n var a = [];\n this.data.forEach(function (e) {\n return e instanceof Context ? a.push.apply(a, e.getTweens()) : e instanceof Tween && !(e.parent && e.parent.data === \"nested\") && a.push(e);\n });\n return a;\n };\n\n _proto5.clear = function clear() {\n this._r.length = this.data.length = 0;\n };\n\n _proto5.kill = function kill(revert, matchMedia) {\n var _this4 = this;\n\n if (revert) {\n (function () {\n var tweens = _this4.getTweens(),\n i = _this4.data.length,\n t;\n\n while (i--) {\n // Flip plugin tweens are very different in that they should actually be pushed to their end. The plugin replaces the timeline's .revert() method to do exactly that. But we also need to remove any of those nested tweens inside the flip timeline so that they don't get individually reverted.\n t = _this4.data[i];\n\n if (t.data === \"isFlip\") {\n t.revert();\n t.getChildren(true, true, false).forEach(function (tween) {\n return tweens.splice(tweens.indexOf(tween), 1);\n });\n }\n } // save as an object so that we can cache the globalTime for each tween to optimize performance during the sort\n\n\n tweens.map(function (t) {\n return {\n g: t._dur || t._delay || t._sat && !t._sat.vars.immediateRender ? t.globalTime(0) : -Infinity,\n t: t\n };\n }).sort(function (a, b) {\n return b.g - a.g || -Infinity;\n }).forEach(function (o) {\n return o.t.revert(revert);\n }); // note: all of the _startAt tweens should be reverted in reverse order that they were created, and they'll all have the same globalTime (-1) so the \" || -1\" in the sort keeps the order properly.\n\n i = _this4.data.length;\n\n while (i--) {\n // make sure we loop backwards so that, for example, SplitTexts that were created later on the same element get reverted first\n t = _this4.data[i];\n\n if (t instanceof Timeline) {\n if (t.data !== \"nested\") {\n t.scrollTrigger && t.scrollTrigger.revert();\n t.kill(); // don't revert() the timeline because that's duplicating efforts since we already reverted all the tweens\n }\n } else {\n !(t instanceof Tween) && t.revert && t.revert(revert);\n }\n }\n\n _this4._r.forEach(function (f) {\n return f(revert, _this4);\n });\n\n _this4.isReverted = true;\n })();\n } else {\n this.data.forEach(function (e) {\n return e.kill && e.kill();\n });\n }\n\n this.clear();\n\n if (matchMedia) {\n var i = _media.length;\n\n while (i--) {\n // previously, we checked _media.indexOf(this), but some frameworks like Vue enforce Proxy objects that make it impossible to get the proper result that way, so we must use a unique ID number instead.\n _media[i].id === this.id && _media.splice(i, 1);\n }\n }\n };\n\n _proto5.revert = function revert(config) {\n this.kill(config || {});\n };\n\n return Context;\n}();\n\nvar MatchMedia = /*#__PURE__*/function () {\n function MatchMedia(scope) {\n this.contexts = [];\n this.scope = scope;\n }\n\n var _proto6 = MatchMedia.prototype;\n\n _proto6.add = function add(conditions, func, scope) {\n _isObject(conditions) || (conditions = {\n matches: conditions\n });\n var context = new Context(0, scope || this.scope),\n cond = context.conditions = {},\n mq,\n p,\n active;\n _context && !context.selector && (context.selector = _context.selector); // in case a context is created inside a context. Like a gsap.matchMedia() that's inside a scoped gsap.context()\n\n this.contexts.push(context);\n func = context.add(\"onMatch\", func);\n context.queries = conditions;\n\n for (p in conditions) {\n if (p === \"all\") {\n active = 1;\n } else {\n mq = _win.matchMedia(conditions[p]);\n\n if (mq) {\n _media.indexOf(context) < 0 && _media.push(context);\n (cond[p] = mq.matches) && (active = 1);\n mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n }\n }\n }\n\n active && func(context, function (f) {\n return context.add(null, f);\n });\n return this;\n } // refresh() {\n // \tlet time = _lastMediaTime,\n // \t\tmedia = _media;\n // \t_lastMediaTime = -1;\n // \t_media = this.contexts;\n // \t_onMediaChange();\n // \t_lastMediaTime = time;\n // \t_media = media;\n // }\n ;\n\n _proto6.revert = function revert(config) {\n this.kill(config || {});\n };\n\n _proto6.kill = function kill(revert) {\n this.contexts.forEach(function (c) {\n return c.kill(revert, true);\n });\n };\n\n return MatchMedia;\n}();\n/*\n * --------------------------------------------------------------------------------------\n * GSAP\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _gsap = {\n registerPlugin: function registerPlugin() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n args.forEach(function (config) {\n return _createPlugin(config);\n });\n },\n timeline: function timeline(vars) {\n return new Timeline(vars);\n },\n getTweensOf: function getTweensOf(targets, onlyActive) {\n return _globalTimeline.getTweensOf(targets, onlyActive);\n },\n getProperty: function getProperty(target, property, unit, uncache) {\n _isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in\n\n var getter = _getCache(target || {}).get,\n format = unit ? _passThrough : _numericIfPossible;\n\n unit === \"native\" && (unit = \"\");\n return !target ? target : !property ? function (property, unit, uncache) {\n return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n },\n quickSetter: function quickSetter(target, property, unit) {\n target = toArray(target);\n\n if (target.length > 1) {\n var setters = target.map(function (t) {\n return gsap.quickSetter(t, property, unit);\n }),\n l = setters.length;\n return function (value) {\n var i = l;\n\n while (i--) {\n setters[i](value);\n }\n };\n }\n\n target = target[0] || {};\n\n var Plugin = _plugins[property],\n cache = _getCache(target),\n p = cache.harness && (cache.harness.aliases || {})[property] || property,\n // in case it's an alias, like \"rotate\" for \"rotation\".\n setter = Plugin ? function (value) {\n var p = new Plugin();\n _quickTween._pt = 0;\n p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n p.render(1, p);\n _quickTween._pt && _renderPropTweens(1, _quickTween);\n } : cache.set(target, p);\n\n return Plugin ? setter : function (value) {\n return setter(target, p, unit ? value + unit : value, cache, 1);\n };\n },\n quickTo: function quickTo(target, property, vars) {\n var _merge2;\n\n var tween = gsap.to(target, _merge((_merge2 = {}, _merge2[property] = \"+=0.1\", _merge2.paused = true, _merge2), vars || {})),\n func = function func(value, start, startIsRelative) {\n return tween.resetTo(property, value, start, startIsRelative);\n };\n\n func.tween = tween;\n return func;\n },\n isTweening: function isTweening(targets) {\n return _globalTimeline.getTweensOf(targets, true).length > 0;\n },\n defaults: function defaults(value) {\n value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n return _mergeDeep(_defaults, value || {});\n },\n config: function config(value) {\n return _mergeDeep(_config, value || {});\n },\n registerEffect: function registerEffect(_ref3) {\n var name = _ref3.name,\n effect = _ref3.effect,\n plugins = _ref3.plugins,\n defaults = _ref3.defaults,\n extendTimeline = _ref3.extendTimeline;\n (plugins || \"\").split(\",\").forEach(function (pluginName) {\n return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\");\n });\n\n _effects[name] = function (targets, vars, tl) {\n return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n };\n\n if (extendTimeline) {\n Timeline.prototype[name] = function (targets, vars, position) {\n return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n };\n }\n },\n registerEase: function registerEase(name, ease) {\n _easeMap[name] = _parseEase(ease);\n },\n parseEase: function parseEase(ease, defaultEase) {\n return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n },\n getById: function getById(id) {\n return _globalTimeline.getById(id);\n },\n exportRoot: function exportRoot(vars, includeDelayedCalls) {\n if (vars === void 0) {\n vars = {};\n }\n\n var tl = new Timeline(vars),\n child,\n next;\n tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n\n _globalTimeline.remove(tl);\n\n tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).\n\n tl._time = tl._tTime = _globalTimeline._time;\n child = _globalTimeline._first;\n\n while (child) {\n next = child._next;\n\n if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n _addToTimeline(tl, child, child._start - child._delay);\n }\n\n child = next;\n }\n\n _addToTimeline(_globalTimeline, tl, 0);\n\n return tl;\n },\n context: function context(func, scope) {\n return func ? new Context(func, scope) : _context;\n },\n matchMedia: function matchMedia(scope) {\n return new MatchMedia(scope);\n },\n matchMediaRefresh: function matchMediaRefresh() {\n return _media.forEach(function (c) {\n var cond = c.conditions,\n found,\n p;\n\n for (p in cond) {\n if (cond[p]) {\n cond[p] = false;\n found = 1;\n }\n }\n\n found && c.revert();\n }) || _onMediaChange();\n },\n addEventListener: function addEventListener(type, callback) {\n var a = _listeners[type] || (_listeners[type] = []);\n ~a.indexOf(callback) || a.push(callback);\n },\n removeEventListener: function removeEventListener(type, callback) {\n var a = _listeners[type],\n i = a && a.indexOf(callback);\n i >= 0 && a.splice(i, 1);\n },\n utils: {\n wrap: wrap,\n wrapYoyo: wrapYoyo,\n distribute: distribute,\n random: random,\n snap: snap,\n normalize: normalize,\n getUnit: getUnit,\n clamp: clamp,\n splitColor: splitColor,\n toArray: toArray,\n selector: selector,\n mapRange: mapRange,\n pipe: pipe,\n unitize: unitize,\n interpolate: interpolate,\n shuffle: shuffle\n },\n install: _install,\n effects: _effects,\n ticker: _ticker,\n updateRoot: Timeline.updateRoot,\n plugins: _plugins,\n globalTimeline: _globalTimeline,\n core: {\n PropTween: PropTween,\n globals: _addGlobal,\n Tween: Tween,\n Timeline: Timeline,\n Animation: Animation,\n getCache: _getCache,\n _removeLinkedListItem: _removeLinkedListItem,\n reverting: function reverting() {\n return _reverting;\n },\n context: function context(toAdd) {\n if (toAdd && _context) {\n _context.data.push(toAdd);\n\n toAdd._ctx = _context;\n }\n\n return _context;\n },\n suppressOverwrites: function suppressOverwrites(value) {\n return _suppressOverwrites = value;\n }\n }\n};\n\n_forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", function (name) {\n return _gsap[name] = Tween[name];\n});\n\n_ticker.add(Timeline.updateRoot);\n\n_quickTween = _gsap.to({}, {\n duration: 0\n}); // ---- EXTRA PLUGINS --------------------------------------------------------\n\nvar _getPluginPropTween = function _getPluginPropTween(plugin, prop) {\n var pt = plugin._pt;\n\n while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n pt = pt._next;\n }\n\n return pt;\n},\n _addModifiers = function _addModifiers(tween, modifiers) {\n var targets = tween._targets,\n p,\n i,\n pt;\n\n for (p in modifiers) {\n i = targets.length;\n\n while (i--) {\n pt = tween._ptLookup[i][p];\n\n if (pt && (pt = pt.d)) {\n if (pt._pt) {\n // is a plugin\n pt = _getPluginPropTween(pt, p);\n }\n\n pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n }\n }\n }\n},\n _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {\n return {\n name: name,\n rawVars: 1,\n //don't pre-process function-based values or \"random()\" strings.\n init: function init(target, vars, tween) {\n tween._onInit = function (tween) {\n var temp, p;\n\n if (_isString(vars)) {\n temp = {};\n\n _forEachName(vars, function (name) {\n return temp[name] = 1;\n }); //if the user passes in a comma-delimited list of property names to roundProps, like \"x,y\", we round to whole numbers.\n\n\n vars = temp;\n }\n\n if (modifier) {\n temp = {};\n\n for (p in vars) {\n temp[p] = modifier(vars[p]);\n }\n\n vars = temp;\n }\n\n _addModifiers(tween, vars);\n };\n }\n };\n}; //register core plugins\n\n\nexport var gsap = _gsap.registerPlugin({\n name: \"attr\",\n init: function init(target, vars, tween, index, targets) {\n var p, pt, v;\n this.tween = tween;\n\n for (p in vars) {\n v = target.getAttribute(p) || \"\";\n pt = this.add(target, \"setAttribute\", (v || 0) + \"\", vars[p], index, targets, 0, 0, p);\n pt.op = p;\n pt.b = v; // record the beginning value so we can revert()\n\n this._props.push(p);\n }\n },\n render: function render(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n _reverting ? pt.set(pt.t, pt.p, pt.b, pt) : pt.r(ratio, pt.d); // if reverting, go back to the original (pt.b)\n\n pt = pt._next;\n }\n }\n}, {\n name: \"endArray\",\n init: function init(target, value) {\n var i = value.length;\n\n while (i--) {\n this.add(target, i, target[i] || 0, value[i], 0, 0, 0, 0, 0, 1);\n }\n }\n}, _buildModifierPlugin(\"roundProps\", _roundModifier), _buildModifierPlugin(\"modifiers\"), _buildModifierPlugin(\"snap\", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.\n\nTween.version = Timeline.version = gsap.version = \"3.12.4\";\n_coreReady = 1;\n_windowExists() && _wake();\nvar Power0 = _easeMap.Power0,\n Power1 = _easeMap.Power1,\n Power2 = _easeMap.Power2,\n Power3 = _easeMap.Power3,\n Power4 = _easeMap.Power4,\n Linear = _easeMap.Linear,\n Quad = _easeMap.Quad,\n Cubic = _easeMap.Cubic,\n Quart = _easeMap.Quart,\n Quint = _easeMap.Quint,\n Strong = _easeMap.Strong,\n Elastic = _easeMap.Elastic,\n Back = _easeMap.Back,\n SteppedEase = _easeMap.SteppedEase,\n Bounce = _easeMap.Bounce,\n Sine = _easeMap.Sine,\n Expo = _easeMap.Expo,\n Circ = _easeMap.Circ;\nexport { Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };\nexport { Tween as TweenMax, Tween as TweenLite, Timeline as TimelineMax, Timeline as TimelineLite, gsap as default, wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, selector, mapRange, pipe, unitize, interpolate, shuffle }; //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.\n\nexport { _getProperty, _numExp, _numWithUnitExp, _isString, _isUndefined, _renderComplexString, _relExp, _setDefaults, _removeLinkedListItem, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _replaceRandom, _checkPlugin, _plugins, _ticker, _config, _roundModifier, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative };","/*!\n * CSSPlugin 3.12.4\n * https://gsap.com\n *\n * Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { gsap, _getProperty, _numExp, _numWithUnitExp, getUnit, _isString, _isUndefined, _renderComplexString, _relExp, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _checkPlugin, _replaceRandom, _plugins, GSCache, PropTween, _config, _ticker, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative, _setDefaults, _removeLinkedListItem //for the commented-out className feature.\n} from \"./gsap-core.js\";\n\nvar _win,\n _doc,\n _docElement,\n _pluginInitted,\n _tempDiv,\n _tempDivStyler,\n _recentSetterPlugin,\n _reverting,\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _transformProps = {},\n _RAD2DEG = 180 / Math.PI,\n _DEG2RAD = Math.PI / 180,\n _atan2 = Math.atan2,\n _bigNum = 1e8,\n _capsExp = /([A-Z])/g,\n _horizontalExp = /(left|right|width|margin|padding|x)/i,\n _complexExp = /[\\s,\\(]\\S/,\n _propertyAliases = {\n autoAlpha: \"opacity,visibility\",\n scale: \"scaleX,scaleY\",\n alpha: \"opacity\"\n},\n _renderCSSProp = function _renderCSSProp(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {\n return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {\n return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);\n},\n //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)\n_renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {\n var value = data.s + data.c * ratio;\n data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\n},\n _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {\n return data.set(data.t, data.p, ratio ? data.e : data.b, data);\n},\n _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {\n return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);\n},\n _setterCSSStyle = function _setterCSSStyle(target, property, value) {\n return target.style[property] = value;\n},\n _setterCSSProp = function _setterCSSProp(target, property, value) {\n return target.style.setProperty(property, value);\n},\n _setterTransform = function _setterTransform(target, property, value) {\n return target._gsap[property] = value;\n},\n _setterScale = function _setterScale(target, property, value) {\n return target._gsap.scaleX = target._gsap.scaleY = value;\n},\n _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache.scaleX = cache.scaleY = value;\n cache.renderTransform(ratio, cache);\n},\n _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache[property] = value;\n cache.renderTransform(ratio, cache);\n},\n _transformProp = \"transform\",\n _transformOriginProp = _transformProp + \"Origin\",\n _saveStyle = function _saveStyle(property, isNotCSS) {\n var _this = this;\n\n var target = this.target,\n style = target.style,\n cache = target._gsap;\n\n if (property in _transformProps && style) {\n this.tfm = this.tfm || {};\n\n if (property !== \"transform\") {\n property = _propertyAliases[property] || property;\n ~property.indexOf(\",\") ? property.split(\",\").forEach(function (a) {\n return _this.tfm[a] = _get(target, a);\n }) : this.tfm[property] = cache.x ? cache[property] : _get(target, property); // note: scale would map to \"scaleX,scaleY\", thus we loop and apply them both.\n\n property === _transformOriginProp && (this.tfm.zOrigin = cache.zOrigin);\n } else {\n return _propertyAliases.transform.split(\",\").forEach(function (p) {\n return _saveStyle.call(_this, p, isNotCSS);\n });\n }\n\n if (this.props.indexOf(_transformProp) >= 0) {\n return;\n }\n\n if (cache.svg) {\n this.svgo = target.getAttribute(\"data-svg-origin\");\n this.props.push(_transformOriginProp, isNotCSS, \"\");\n }\n\n property = _transformProp;\n }\n\n (style || isNotCSS) && this.props.push(property, isNotCSS, style[property]);\n},\n _removeIndependentTransforms = function _removeIndependentTransforms(style) {\n if (style.translate) {\n style.removeProperty(\"translate\");\n style.removeProperty(\"scale\");\n style.removeProperty(\"rotate\");\n }\n},\n _revertStyle = function _revertStyle() {\n var props = this.props,\n target = this.target,\n style = target.style,\n cache = target._gsap,\n i,\n p;\n\n for (i = 0; i < props.length; i += 3) {\n // stored like this: property, isNotCSS, value\n props[i + 1] ? target[props[i]] = props[i + 2] : props[i + 2] ? style[props[i]] = props[i + 2] : style.removeProperty(props[i].substr(0, 2) === \"--\" ? props[i] : props[i].replace(_capsExp, \"-$1\").toLowerCase());\n }\n\n if (this.tfm) {\n for (p in this.tfm) {\n cache[p] = this.tfm[p];\n }\n\n if (cache.svg) {\n cache.renderTransform();\n target.setAttribute(\"data-svg-origin\", this.svgo || \"\");\n }\n\n i = _reverting();\n\n if ((!i || !i.isStart) && !style[_transformProp]) {\n _removeIndependentTransforms(style);\n\n if (cache.zOrigin && style[_transformOriginProp]) {\n style[_transformOriginProp] += \" \" + cache.zOrigin + \"px\"; // since we're uncaching, we must put the zOrigin back into the transformOrigin so that we can pull it out accurately when we parse again. Otherwise, we'd lose the z portion of the origin since we extract it to protect from Safari bugs.\n\n cache.zOrigin = 0;\n cache.renderTransform();\n }\n\n cache.uncache = 1; // if it's a startAt that's being reverted in the _initTween() of the core, we don't need to uncache transforms. This is purely a performance optimization.\n }\n }\n},\n _getStyleSaver = function _getStyleSaver(target, properties) {\n var saver = {\n target: target,\n props: [],\n revert: _revertStyle,\n save: _saveStyle\n };\n target._gsap || gsap.core.getCache(target); // just make sure there's a _gsap cache defined because we read from it in _saveStyle() and it's more efficient to just check it here once.\n\n properties && properties.split(\",\").forEach(function (p) {\n return saver.save(p);\n });\n return saver;\n},\n _supports3D,\n _createElement = function _createElement(type, ns) {\n var e = _doc.createElementNS ? _doc.createElementNS((ns || \"http://www.w3.org/1999/xhtml\").replace(/^https/, \"http\"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making \"style\" inaccessible.\n\n return e && e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://gsap.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\n},\n _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {\n var cs = getComputedStyle(target);\n return cs[property] || cs.getPropertyValue(property.replace(_capsExp, \"-$1\").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || \"\"; //css variables may not need caps swapped out for dashes and lowercase.\n},\n _prefixes = \"O,Moz,ms,Ms,Webkit\".split(\",\"),\n _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {\n var e = element || _tempDiv,\n s = e.style,\n i = 5;\n\n if (property in s && !preferPrefix) {\n return property;\n }\n\n property = property.charAt(0).toUpperCase() + property.substr(1);\n\n while (i-- && !(_prefixes[i] + property in s)) {}\n\n return i < 0 ? null : (i === 3 ? \"ms\" : i >= 0 ? _prefixes[i] : \"\") + property;\n},\n _initCore = function _initCore() {\n if (_windowExists() && window.document) {\n _win = window;\n _doc = _win.document;\n _docElement = _doc.documentElement;\n _tempDiv = _createElement(\"div\") || {\n style: {}\n };\n _tempDivStyler = _createElement(\"div\");\n _transformProp = _checkPropPrefix(_transformProp);\n _transformOriginProp = _transformProp + \"Origin\";\n _tempDiv.style.cssText = \"border-width:0;line-height:0;position:absolute;padding:0\"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.\n\n _supports3D = !!_checkPropPrefix(\"perspective\");\n _reverting = gsap.core.reverting;\n _pluginInitted = 1;\n }\n},\n _getBBoxHack = function _getBBoxHack(swapIfPossible) {\n //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a element and/or . We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).\n var svg = _createElement(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n oldParent = this.parentNode,\n oldSibling = this.nextSibling,\n oldCSS = this.style.cssText,\n bbox;\n\n _docElement.appendChild(svg);\n\n svg.appendChild(this);\n this.style.display = \"block\";\n\n if (swapIfPossible) {\n try {\n bbox = this.getBBox();\n this._gsapBBox = this.getBBox; //store the original\n\n this.getBBox = _getBBoxHack;\n } catch (e) {}\n } else if (this._gsapBBox) {\n bbox = this._gsapBBox();\n }\n\n if (oldParent) {\n if (oldSibling) {\n oldParent.insertBefore(this, oldSibling);\n } else {\n oldParent.appendChild(this);\n }\n }\n\n _docElement.removeChild(svg);\n\n this.style.cssText = oldCSS;\n return bbox;\n},\n _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {\n var i = attributesArray.length;\n\n while (i--) {\n if (target.hasAttribute(attributesArray[i])) {\n return target.getAttribute(attributesArray[i]);\n }\n }\n},\n _getBBox = function _getBBox(target) {\n var bounds;\n\n try {\n bounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a or ). https://bugzilla.mozilla.org/show_bug.cgi?id=612118\n } catch (error) {\n bounds = _getBBoxHack.call(target, true);\n }\n\n bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.\n\n return bounds && !bounds.width && !bounds.x && !bounds.y ? {\n x: +_getAttributeFallbacks(target, [\"x\", \"cx\", \"x1\"]) || 0,\n y: +_getAttributeFallbacks(target, [\"y\", \"cy\", \"y1\"]) || 0,\n width: 0,\n height: 0\n } : bounds;\n},\n _isSVG = function _isSVG(e) {\n return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));\n},\n //reports if the element is an SVG on which getBBox() actually works\n_removeProperty = function _removeProperty(target, property) {\n if (property) {\n var style = target.style,\n first2Chars;\n\n if (property in _transformProps && property !== _transformOriginProp) {\n property = _transformProp;\n }\n\n if (style.removeProperty) {\n first2Chars = property.substr(0, 2);\n\n if (first2Chars === \"ms\" || property.substr(0, 6) === \"webkit\") {\n //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be \"ms-transform\" instead of \"-ms-transform\" for IE9, for example)\n property = \"-\" + property;\n }\n\n style.removeProperty(first2Chars === \"--\" ? property : property.replace(_capsExp, \"-$1\").toLowerCase());\n } else {\n //note: old versions of IE use \"removeAttribute()\" instead of \"removeProperty()\"\n style.removeAttribute(property);\n }\n }\n},\n _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {\n var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\n plugin._pt = pt;\n pt.b = beginning;\n pt.e = end;\n\n plugin._props.push(property);\n\n return pt;\n},\n _nonConvertibleUnits = {\n deg: 1,\n rad: 1,\n turn: 1\n},\n _nonStandardLayouts = {\n grid: 1,\n flex: 1\n},\n //takes a single value like 20px and converts it to the unit specified, like \"%\", returning only the numeric amount.\n_convertToUnit = function _convertToUnit(target, property, value, unit) {\n var curValue = parseFloat(value) || 0,\n curUnit = (value + \"\").trim().substr((curValue + \"\").length) || \"px\",\n // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()\n style = _tempDiv.style,\n horizontal = _horizontalExp.test(property),\n isRootSVG = target.tagName.toLowerCase() === \"svg\",\n measureProperty = (isRootSVG ? \"client\" : \"offset\") + (horizontal ? \"Width\" : \"Height\"),\n amount = 100,\n toPixels = unit === \"px\",\n toPercent = unit === \"%\",\n px,\n parent,\n cache,\n isSVG;\n\n if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\n return curValue;\n }\n\n curUnit !== \"px\" && !toPixels && (curValue = _convertToUnit(target, property, value, \"px\"));\n isSVG = target.getCTM && _isSVG(target);\n\n if ((toPercent || curUnit === \"%\") && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n px = isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty];\n return _round(toPercent ? curValue / px * amount : curValue / 100 * px);\n }\n\n style[horizontal ? \"width\" : \"height\"] = amount + (toPixels ? curUnit : unit);\n parent = ~property.indexOf(\"adius\") || unit === \"em\" && target.appendChild && !isRootSVG ? target : target.parentNode;\n\n if (isSVG) {\n parent = (target.ownerSVGElement || {}).parentNode;\n }\n\n if (!parent || parent === _doc || !parent.appendChild) {\n parent = _doc.body;\n }\n\n cache = parent._gsap;\n\n if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time && !cache.uncache) {\n return _round(curValue / cache.width * amount);\n } else {\n if (toPercent && (property === \"height\" || property === \"width\")) {\n // if we're dealing with width/height that's inside a container with padding and/or it's a flexbox/grid container, we must apply it to the target itself rather than the _tempDiv in order to ensure complete accuracy, factoring in the parent's padding.\n var v = target.style[property];\n target.style[property] = amount + unit;\n px = target[measureProperty];\n v ? target.style[property] = v : _removeProperty(target, property);\n } else {\n (toPercent || curUnit === \"%\") && !_nonStandardLayouts[_getComputedProperty(parent, \"display\")] && (style.position = _getComputedProperty(target, \"position\"));\n parent === target && (style.position = \"static\"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.\n\n parent.appendChild(_tempDiv);\n px = _tempDiv[measureProperty];\n parent.removeChild(_tempDiv);\n style.position = \"absolute\";\n }\n\n if (horizontal && toPercent) {\n cache = _getCache(parent);\n cache.time = _ticker.time;\n cache.width = parent[measureProperty];\n }\n }\n\n return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\n},\n _get = function _get(target, property, unit, uncache) {\n var value;\n _pluginInitted || _initCore();\n\n if (property in _propertyAliases && property !== \"transform\") {\n property = _propertyAliases[property];\n\n if (~property.indexOf(\",\")) {\n property = property.split(\",\")[0];\n }\n }\n\n if (_transformProps[property] && property !== \"transform\") {\n value = _parseTransform(target, uncache);\n value = property !== \"transformOrigin\" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \" \" + value.zOrigin + \"px\";\n } else {\n value = target.style[property];\n\n if (!value || value === \"auto\" || uncache || ~(value + \"\").indexOf(\"calc(\")) {\n value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === \"opacity\" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like borderTopLeftRadius\n }\n }\n\n return unit && !~(value + \"\").trim().indexOf(\" \") ? _convertToUnit(target, property, value, unit) + unit : value;\n},\n _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {\n // note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n if (!start || start === \"none\") {\n // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style (\"clipPath\" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as \"none\" whereas WebkitClipPath reports accurately like \"ellipse(100% 0% at 50% 0%)\", so in this case we must SWITCH to using the prefixed property instead. See https://gsap.com/forums/topic/18310-clippath-doesnt-work-on-ios/\n var p = _checkPropPrefix(prop, target, 1),\n s = p && _getComputedProperty(target, p, 1);\n\n if (s && s !== start) {\n prop = p;\n start = s;\n } else if (prop === \"borderColor\") {\n start = _getComputedProperty(target, \"borderTopColor\"); // Firefox bug: always reports \"borderColor\" as \"\", so we must fall back to borderTopColor. See https://gsap.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/\n }\n }\n\n var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),\n index = 0,\n matchIndex = 0,\n a,\n result,\n startValues,\n startNum,\n color,\n startValue,\n endValue,\n endNum,\n chunk,\n endUnit,\n startUnit,\n endValues;\n pt.b = start;\n pt.e = end;\n start += \"\"; // ensure values are strings\n\n end += \"\";\n\n if (end === \"auto\") {\n startValue = target.style[prop];\n target.style[prop] = end;\n end = _getComputedProperty(target, prop) || end;\n startValue ? target.style[prop] = startValue : _removeProperty(target, prop);\n }\n\n a = [start, end];\n\n _colorStringFilter(a); // pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().\n\n\n start = a[0];\n end = a[1];\n startValues = start.match(_numWithUnitExp) || [];\n endValues = end.match(_numWithUnitExp) || [];\n\n if (endValues.length) {\n while (result = _numWithUnitExp.exec(end)) {\n endValue = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\" || chunk.substr(-5) === \"hsla(\") {\n color = 1;\n }\n\n if (endValue !== (startValue = startValues[matchIndex++] || \"\")) {\n startNum = parseFloat(startValue) || 0;\n startUnit = startValue.substr((startNum + \"\").length);\n endValue.charAt(1) === \"=\" && (endValue = _parseRelative(startNum, endValue) + startUnit);\n endNum = parseFloat(endValue);\n endUnit = endValue.substr((endNum + \"\").length);\n index = _numWithUnitExp.lastIndex - endUnit.length;\n\n if (!endUnit) {\n //if something like \"perspective:300\" is passed in and we must add a unit to the end\n endUnit = endUnit || _config.units[prop] || startUnit;\n\n if (index === end.length) {\n end += endUnit;\n pt.e += endUnit;\n }\n }\n\n if (startUnit !== endUnit) {\n startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\n } // these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum - startNum,\n m: color && color < 4 || prop === \"zIndex\" ? Math.round : 0\n };\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n } else {\n pt.r = prop === \"display\" && end === \"none\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\n }\n\n _relExp.test(end) && (pt.e = 0); //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _keywordToPercent = {\n top: \"0%\",\n bottom: \"100%\",\n left: \"0%\",\n right: \"100%\",\n center: \"50%\"\n},\n _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {\n var split = value.split(\" \"),\n x = split[0],\n y = split[1] || \"50%\";\n\n if (x === \"top\" || x === \"bottom\" || y === \"left\" || y === \"right\") {\n //the user provided them in the wrong order, so flip them\n value = x;\n x = y;\n y = value;\n }\n\n split[0] = _keywordToPercent[x] || x;\n split[1] = _keywordToPercent[y] || y;\n return split.join(\" \");\n},\n _renderClearProps = function _renderClearProps(ratio, data) {\n if (data.tween && data.tween._time === data.tween._dur) {\n var target = data.t,\n style = target.style,\n props = data.u,\n cache = target._gsap,\n prop,\n clearTransforms,\n i;\n\n if (props === \"all\" || props === true) {\n style.cssText = \"\";\n clearTransforms = 1;\n } else {\n props = props.split(\",\");\n i = props.length;\n\n while (--i > -1) {\n prop = props[i];\n\n if (_transformProps[prop]) {\n clearTransforms = 1;\n prop = prop === \"transformOrigin\" ? _transformOriginProp : _transformProp;\n }\n\n _removeProperty(target, prop);\n }\n }\n\n if (clearTransforms) {\n _removeProperty(target, _transformProp);\n\n if (cache) {\n cache.svg && target.removeAttribute(\"transform\");\n\n _parseTransform(target, 1); // force all the cached values back to \"normal\"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.\n\n\n cache.uncache = 1;\n\n _removeIndependentTransforms(style);\n }\n }\n }\n},\n // note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.\n_specialProps = {\n clearProps: function clearProps(plugin, target, property, endValue, tween) {\n if (tween.data !== \"isFromStart\") {\n var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);\n pt.u = endValue;\n pt.pr = -10;\n pt.tween = tween;\n\n plugin._props.push(property);\n\n return 1;\n }\n }\n /* className feature (about 0.4kb gzipped).\n , className(plugin, target, property, endValue, tween) {\n \tlet _renderClassName = (ratio, data) => {\n \t\t\tdata.css.render(ratio, data.css);\n \t\t\tif (!ratio || ratio === 1) {\n \t\t\t\tlet inline = data.rmv,\n \t\t\t\t\ttarget = data.t,\n \t\t\t\t\tp;\n \t\t\t\ttarget.setAttribute(\"class\", ratio ? data.e : data.b);\n \t\t\t\tfor (p in inline) {\n \t\t\t\t\t_removeProperty(target, p);\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t_getAllStyles = (target) => {\n \t\t\tlet styles = {},\n \t\t\t\tcomputed = getComputedStyle(target),\n \t\t\t\tp;\n \t\t\tfor (p in computed) {\n \t\t\t\tif (isNaN(p) && p !== \"cssText\" && p !== \"length\") {\n \t\t\t\t\tstyles[p] = computed[p];\n \t\t\t\t}\n \t\t\t}\n \t\t\t_setDefaults(styles, _parseTransform(target, 1));\n \t\t\treturn styles;\n \t\t},\n \t\tstartClassList = target.getAttribute(\"class\"),\n \t\tstyle = target.style,\n \t\tcssText = style.cssText,\n \t\tcache = target._gsap,\n \t\tclassPT = cache.classPT,\n \t\tinlineToRemoveAtEnd = {},\n \t\tdata = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== \"=\") ? endValue : startClassList.replace(new RegExp(\"(?:\\\\s|^)\" + endValue.substr(2) + \"(?![\\\\w-])\"), \"\") + ((endValue.charAt(0) === \"+\") ? \" \" + endValue.substr(2) : \"\")},\n \t\tchangingVars = {},\n \t\tstartVars = _getAllStyles(target),\n \t\ttransformRelated = /(transform|perspective)/i,\n \t\tendVars, p;\n \tif (classPT) {\n \t\tclassPT.r(1, classPT.d);\n \t\t_removeLinkedListItem(classPT.d.plugin, classPT, \"_pt\");\n \t}\n \ttarget.setAttribute(\"class\", data.e);\n \tendVars = _getAllStyles(target, true);\n \ttarget.setAttribute(\"class\", startClassList);\n \tfor (p in endVars) {\n \t\tif (endVars[p] !== startVars[p] && !transformRelated.test(p)) {\n \t\t\tchangingVars[p] = endVars[p];\n \t\t\tif (!style[p] && style[p] !== \"0\") {\n \t\t\t\tinlineToRemoveAtEnd[p] = 1;\n \t\t\t}\n \t\t}\n \t}\n \tcache.classPT = plugin._pt = new PropTween(plugin._pt, target, \"className\", 0, 0, _renderClassName, data, 0, -11);\n \tif (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://gsap.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.\n \t\tstyle.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).\n \t}\n \t_parseTransform(target, true); //to clear the caching of transforms\n \tdata.css = new gsap.plugins.css();\n \tdata.css.init(target, changingVars, tween);\n \tplugin._props.push(...data.css._props);\n \treturn 1;\n }\n */\n\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TRANSFORMS\n * --------------------------------------------------------------------------------------\n */\n_identity2DMatrix = [1, 0, 0, 1, 0, 0],\n _rotationalProperties = {},\n _isNullTransform = function _isNullTransform(value) {\n return value === \"matrix(1, 0, 0, 1, 0, 0)\" || value === \"none\" || !value;\n},\n _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {\n var matrixString = _getComputedProperty(target, _transformProp);\n\n return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);\n},\n _getMatrix = function _getMatrix(target, force2D) {\n var cache = target._gsap || _getCache(target),\n style = target.style,\n matrix = _getComputedTransformMatrixAsArray(target),\n parent,\n nextSibling,\n temp,\n addedToDOM;\n\n if (cache.svg && target.getAttribute(\"transform\")) {\n temp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like \"translate(50,60) rotate(135,0,0)\" are parsed because it mashes it into a matrix.\n\n matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\n return matrix.join(\",\") === \"1,0,0,1,0,0\" ? _identity2DMatrix : matrix;\n } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {\n //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not \"none\". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).\n temp = style.display;\n style.display = \"block\";\n parent = target.parentNode;\n\n if (!parent || !target.offsetParent) {\n // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375\n addedToDOM = 1; //flag\n\n nextSibling = target.nextElementSibling;\n\n _docElement.appendChild(target); //we must add it to the DOM in order to get values properly\n\n }\n\n matrix = _getComputedTransformMatrixAsArray(target);\n temp ? style.display = temp : _removeProperty(target, \"display\");\n\n if (addedToDOM) {\n nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\n }\n }\n\n return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\n},\n _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {\n var cache = target._gsap,\n matrix = matrixArray || _getMatrix(target, true),\n xOriginOld = cache.xOrigin || 0,\n yOriginOld = cache.yOrigin || 0,\n xOffsetOld = cache.xOffset || 0,\n yOffsetOld = cache.yOffset || 0,\n a = matrix[0],\n b = matrix[1],\n c = matrix[2],\n d = matrix[3],\n tx = matrix[4],\n ty = matrix[5],\n originSplit = origin.split(\" \"),\n xOrigin = parseFloat(originSplit[0]) || 0,\n yOrigin = parseFloat(originSplit[1]) || 0,\n bounds,\n determinant,\n x,\n y;\n\n if (!originIsAbsolute) {\n bounds = _getBBox(target);\n xOrigin = bounds.x + (~originSplit[0].indexOf(\"%\") ? xOrigin / 100 * bounds.width : xOrigin);\n yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf(\"%\") ? yOrigin / 100 * bounds.height : yOrigin); // if (!(\"xOrigin\" in cache) && (xOrigin || yOrigin)) { // added in 3.12.3, reverted in 3.12.4; requires more exploration\n // \txOrigin -= bounds.x;\n // \tyOrigin -= bounds.y;\n // }\n } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {\n //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.\n x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;\n y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;\n xOrigin = x;\n yOrigin = y; // theory: we only had to do this for smoothing and it assumes that the previous one was not originIsAbsolute.\n }\n\n if (smooth || smooth !== false && cache.smooth) {\n tx = xOrigin - xOriginOld;\n ty = yOrigin - yOriginOld;\n cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\n cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\n } else {\n cache.xOffset = cache.yOffset = 0;\n }\n\n cache.xOrigin = xOrigin;\n cache.yOrigin = yOrigin;\n cache.smooth = !!smooth;\n cache.origin = origin;\n cache.originIsAbsolute = !!originIsAbsolute;\n target.style[_transformOriginProp] = \"0px 0px\"; //otherwise, if someone sets an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).\n\n if (pluginToAddPropTweensTo) {\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOrigin\", xOriginOld, xOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOrigin\", yOriginOld, yOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOffset\", xOffsetOld, cache.xOffset);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOffset\", yOffsetOld, cache.yOffset);\n }\n\n target.setAttribute(\"data-svg-origin\", xOrigin + \" \" + yOrigin);\n},\n _parseTransform = function _parseTransform(target, uncache) {\n var cache = target._gsap || new GSCache(target);\n\n if (\"x\" in cache && !uncache && !cache.uncache) {\n return cache;\n }\n\n var style = target.style,\n invertedScaleX = cache.scaleX < 0,\n px = \"px\",\n deg = \"deg\",\n cs = getComputedStyle(target),\n origin = _getComputedProperty(target, _transformOriginProp) || \"0\",\n x,\n y,\n z,\n scaleX,\n scaleY,\n rotation,\n rotationX,\n rotationY,\n skewX,\n skewY,\n perspective,\n xOrigin,\n yOrigin,\n matrix,\n angle,\n cos,\n sin,\n a,\n b,\n c,\n d,\n a12,\n a22,\n t1,\n t2,\n t3,\n a13,\n a23,\n a33,\n a42,\n a43,\n a32;\n x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\n scaleX = scaleY = 1;\n cache.svg = !!(target.getCTM && _isSVG(target));\n\n if (cs.translate) {\n // accommodate independent transforms by combining them into normal ones.\n if (cs.translate !== \"none\" || cs.scale !== \"none\" || cs.rotate !== \"none\") {\n style[_transformProp] = (cs.translate !== \"none\" ? \"translate3d(\" + (cs.translate + \" 0 0\").split(\" \").slice(0, 3).join(\", \") + \") \" : \"\") + (cs.rotate !== \"none\" ? \"rotate(\" + cs.rotate + \") \" : \"\") + (cs.scale !== \"none\" ? \"scale(\" + cs.scale.split(\" \").join(\",\") + \") \" : \"\") + (cs[_transformProp] !== \"none\" ? cs[_transformProp] : \"\");\n }\n\n style.scale = style.rotate = style.translate = \"none\";\n }\n\n matrix = _getMatrix(target, cache.svg);\n\n if (cache.svg) {\n if (cache.uncache) {\n // if cache.uncache is true (and maybe if origin is 0,0), we need to set element.style.transformOrigin = (cache.xOrigin - bbox.x) + \"px \" + (cache.yOrigin - bbox.y) + \"px\". Previously we let the data-svg-origin stay instead, but when introducing revert(), it complicated things.\n t2 = target.getBBox();\n origin = cache.xOrigin - t2.x + \"px \" + (cache.yOrigin - t2.y) + \"px\";\n t1 = \"\";\n } else {\n t1 = !uncache && target.getAttribute(\"data-svg-origin\"); // Remember, to work around browser inconsistencies we always force SVG elements' transformOrigin to 0,0 and offset the translation accordingly.\n }\n\n _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\n }\n\n xOrigin = cache.xOrigin || 0;\n yOrigin = cache.yOrigin || 0;\n\n if (matrix !== _identity2DMatrix) {\n a = matrix[0]; //a11\n\n b = matrix[1]; //a21\n\n c = matrix[2]; //a31\n\n d = matrix[3]; //a41\n\n x = a12 = matrix[4];\n y = a22 = matrix[5]; //2D matrix\n\n if (matrix.length === 6) {\n scaleX = Math.sqrt(a * a + b * b);\n scaleY = Math.sqrt(d * d + c * c);\n rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).\n\n skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;\n skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));\n\n if (cache.svg) {\n x -= xOrigin - (xOrigin * a + yOrigin * c);\n y -= yOrigin - (xOrigin * b + yOrigin * d);\n } //3D matrix\n\n } else {\n a32 = matrix[6];\n a42 = matrix[7];\n a13 = matrix[8];\n a23 = matrix[9];\n a33 = matrix[10];\n a43 = matrix[11];\n x = matrix[12];\n y = matrix[13];\n z = matrix[14];\n angle = _atan2(a32, a33);\n rotationX = angle * _RAD2DEG; //rotationX\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a12 * cos + a13 * sin;\n t2 = a22 * cos + a23 * sin;\n t3 = a32 * cos + a33 * sin;\n a13 = a12 * -sin + a13 * cos;\n a23 = a22 * -sin + a23 * cos;\n a33 = a32 * -sin + a33 * cos;\n a43 = a42 * -sin + a43 * cos;\n a12 = t1;\n a22 = t2;\n a32 = t3;\n } //rotationY\n\n\n angle = _atan2(-c, a33);\n rotationY = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a * cos - a13 * sin;\n t2 = b * cos - a23 * sin;\n t3 = c * cos - a33 * sin;\n a43 = d * sin + a43 * cos;\n a = t1;\n b = t2;\n c = t3;\n } //rotationZ\n\n\n angle = _atan2(b, a);\n rotation = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n t1 = a * cos + b * sin;\n t2 = a12 * cos + a22 * sin;\n b = b * cos - a * sin;\n a22 = a22 * cos - a12 * sin;\n a = t1;\n a12 = t2;\n }\n\n if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {\n //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.\n rotationX = rotation = 0;\n rotationY = 180 - rotationY;\n }\n\n scaleX = _round(Math.sqrt(a * a + b * b + c * c));\n scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));\n angle = _atan2(a12, a22);\n skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;\n perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;\n }\n\n if (cache.svg) {\n //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).\n t1 = target.getAttribute(\"transform\");\n cache.forceCSS = target.setAttribute(\"transform\", \"\") || !_isNullTransform(_getComputedProperty(target, _transformProp));\n t1 && target.setAttribute(\"transform\", t1);\n }\n }\n\n if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\n if (invertedScaleX) {\n scaleX *= -1;\n skewX += rotation <= 0 ? 180 : -180;\n rotation += rotation <= 0 ? 180 : -180;\n } else {\n scaleY *= -1;\n skewX += skewX <= 0 ? 180 : -180;\n }\n }\n\n uncache = uncache || cache.uncache;\n cache.x = x - ((cache.xPercent = x && (!uncache && cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;\n cache.y = y - ((cache.yPercent = y && (!uncache && cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;\n cache.z = z + px;\n cache.scaleX = _round(scaleX);\n cache.scaleY = _round(scaleY);\n cache.rotation = _round(rotation) + deg;\n cache.rotationX = _round(rotationX) + deg;\n cache.rotationY = _round(rotationY) + deg;\n cache.skewX = skewX + deg;\n cache.skewY = skewY + deg;\n cache.transformPerspective = perspective + px;\n\n if (cache.zOrigin = parseFloat(origin.split(\" \")[2]) || !uncache && cache.zOrigin || 0) {\n style[_transformOriginProp] = _firstTwoOnly(origin);\n }\n\n cache.xOffset = cache.yOffset = 0;\n cache.force3D = _config.force3D;\n cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\n cache.uncache = 0;\n return cache;\n},\n _firstTwoOnly = function _firstTwoOnly(value) {\n return (value = value.split(\" \"))[0] + \" \" + value[1];\n},\n //for handling transformOrigin values, stripping out the 3rd dimension\n_addPxTranslate = function _addPxTranslate(target, start, value) {\n var unit = getUnit(start);\n return _round(parseFloat(start) + parseFloat(_convertToUnit(target, \"x\", value + \"px\", unit))) + unit;\n},\n _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {\n cache.z = \"0px\";\n cache.rotationY = cache.rotationX = \"0deg\";\n cache.force3D = 0;\n\n _renderCSSTransforms(ratio, cache);\n},\n _zeroDeg = \"0deg\",\n _zeroPx = \"0px\",\n _endParenthesis = \") \",\n _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {\n var _ref = cache || this,\n xPercent = _ref.xPercent,\n yPercent = _ref.yPercent,\n x = _ref.x,\n y = _ref.y,\n z = _ref.z,\n rotation = _ref.rotation,\n rotationY = _ref.rotationY,\n rotationX = _ref.rotationX,\n skewX = _ref.skewX,\n skewY = _ref.skewY,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n transformPerspective = _ref.transformPerspective,\n force3D = _ref.force3D,\n target = _ref.target,\n zOrigin = _ref.zOrigin,\n transforms = \"\",\n use3D = force3D === \"auto\" && ratio && ratio !== 1 || force3D === true; // Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)\n\n\n if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\n var angle = parseFloat(rotationY) * _DEG2RAD,\n a13 = Math.sin(angle),\n a33 = Math.cos(angle),\n cos;\n\n angle = parseFloat(rotationX) * _DEG2RAD;\n cos = Math.cos(angle);\n x = _addPxTranslate(target, x, a13 * cos * -zOrigin);\n y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\n z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\n }\n\n if (transformPerspective !== _zeroPx) {\n transforms += \"perspective(\" + transformPerspective + _endParenthesis;\n }\n\n if (xPercent || yPercent) {\n transforms += \"translate(\" + xPercent + \"%, \" + yPercent + \"%) \";\n }\n\n if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\n transforms += z !== _zeroPx || use3D ? \"translate3d(\" + x + \", \" + y + \", \" + z + \") \" : \"translate(\" + x + \", \" + y + _endParenthesis;\n }\n\n if (rotation !== _zeroDeg) {\n transforms += \"rotate(\" + rotation + _endParenthesis;\n }\n\n if (rotationY !== _zeroDeg) {\n transforms += \"rotateY(\" + rotationY + _endParenthesis;\n }\n\n if (rotationX !== _zeroDeg) {\n transforms += \"rotateX(\" + rotationX + _endParenthesis;\n }\n\n if (skewX !== _zeroDeg || skewY !== _zeroDeg) {\n transforms += \"skew(\" + skewX + \", \" + skewY + _endParenthesis;\n }\n\n if (scaleX !== 1 || scaleY !== 1) {\n transforms += \"scale(\" + scaleX + \", \" + scaleY + _endParenthesis;\n }\n\n target.style[_transformProp] = transforms || \"translate(0, 0)\";\n},\n _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {\n var _ref2 = cache || this,\n xPercent = _ref2.xPercent,\n yPercent = _ref2.yPercent,\n x = _ref2.x,\n y = _ref2.y,\n rotation = _ref2.rotation,\n skewX = _ref2.skewX,\n skewY = _ref2.skewY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n target = _ref2.target,\n xOrigin = _ref2.xOrigin,\n yOrigin = _ref2.yOrigin,\n xOffset = _ref2.xOffset,\n yOffset = _ref2.yOffset,\n forceCSS = _ref2.forceCSS,\n tx = parseFloat(x),\n ty = parseFloat(y),\n a11,\n a21,\n a12,\n a22,\n temp;\n\n rotation = parseFloat(rotation);\n skewX = parseFloat(skewX);\n skewY = parseFloat(skewY);\n\n if (skewY) {\n //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.\n skewY = parseFloat(skewY);\n skewX += skewY;\n rotation += skewY;\n }\n\n if (rotation || skewX) {\n rotation *= _DEG2RAD;\n skewX *= _DEG2RAD;\n a11 = Math.cos(rotation) * scaleX;\n a21 = Math.sin(rotation) * scaleX;\n a12 = Math.sin(rotation - skewX) * -scaleY;\n a22 = Math.cos(rotation - skewX) * scaleY;\n\n if (skewX) {\n skewY *= _DEG2RAD;\n temp = Math.tan(skewX - skewY);\n temp = Math.sqrt(1 + temp * temp);\n a12 *= temp;\n a22 *= temp;\n\n if (skewY) {\n temp = Math.tan(skewY);\n temp = Math.sqrt(1 + temp * temp);\n a11 *= temp;\n a21 *= temp;\n }\n }\n\n a11 = _round(a11);\n a21 = _round(a21);\n a12 = _round(a12);\n a22 = _round(a22);\n } else {\n a11 = scaleX;\n a22 = scaleY;\n a21 = a12 = 0;\n }\n\n if (tx && !~(x + \"\").indexOf(\"px\") || ty && !~(y + \"\").indexOf(\"px\")) {\n tx = _convertToUnit(target, \"x\", x, \"px\");\n ty = _convertToUnit(target, \"y\", y, \"px\");\n }\n\n if (xOrigin || yOrigin || xOffset || yOffset) {\n tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\n ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\n }\n\n if (xPercent || yPercent) {\n //The SVG spec doesn't support percentage-based translation in the \"transform\" attribute, so we merge it into the translation to simulate it.\n temp = target.getBBox();\n tx = _round(tx + xPercent / 100 * temp.width);\n ty = _round(ty + yPercent / 100 * temp.height);\n }\n\n temp = \"matrix(\" + a11 + \",\" + a21 + \",\" + a12 + \",\" + a22 + \",\" + tx + \",\" + ty + \")\";\n target.setAttribute(\"transform\", temp);\n forceCSS && (target.style[_transformProp] = temp); //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)\n},\n _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue) {\n var cap = 360,\n isString = _isString(endValue),\n endNum = parseFloat(endValue) * (isString && ~endValue.indexOf(\"rad\") ? _RAD2DEG : 1),\n change = endNum - startNum,\n finalValue = startNum + change + \"deg\",\n direction,\n pt;\n\n if (isString) {\n direction = endValue.split(\"_\")[1];\n\n if (direction === \"short\") {\n change %= cap;\n\n if (change !== change % (cap / 2)) {\n change += change < 0 ? cap : -cap;\n }\n }\n\n if (direction === \"cw\" && change < 0) {\n change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap;\n } else if (direction === \"ccw\" && change > 0) {\n change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap;\n }\n }\n\n plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);\n pt.e = finalValue;\n pt.u = \"deg\";\n\n plugin._props.push(property);\n\n return pt;\n},\n _assign = function _assign(target, source) {\n // Internet Explorer doesn't have Object.assign(), so we recreate it here.\n for (var p in source) {\n target[p] = source[p];\n }\n\n return target;\n},\n _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {\n //for handling cases where someone passes in a whole transform string, like transform: \"scale(2, 3) rotate(20deg) translateY(30em)\"\n var startCache = _assign({}, target._gsap),\n exclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n style = target.style,\n endCache,\n p,\n startValue,\n endValue,\n startNum,\n endNum,\n startUnit,\n endUnit;\n\n if (startCache.svg) {\n startValue = target.getAttribute(\"transform\");\n target.setAttribute(\"transform\", \"\");\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n\n _removeProperty(target, _transformProp);\n\n target.setAttribute(\"transform\", startValue);\n } else {\n startValue = getComputedStyle(target)[_transformProp];\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n style[_transformProp] = startValue;\n }\n\n for (p in _transformProps) {\n startValue = startCache[p];\n endValue = endCache[p];\n\n if (startValue !== endValue && exclude.indexOf(p) < 0) {\n //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\n endNum = parseFloat(endValue);\n plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);\n plugin._pt.u = endUnit || 0;\n\n plugin._props.push(p);\n }\n }\n\n _assign(endCache, startCache);\n}; // handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.\n\n\n_forEachName(\"padding,margin,Width,Radius\", function (name, index) {\n var t = \"Top\",\n r = \"Right\",\n b = \"Bottom\",\n l = \"Left\",\n props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {\n return index < 2 ? name + side : \"border\" + side + name;\n });\n\n _specialProps[index > 1 ? \"border\" + name : name] = function (plugin, target, property, endValue, tween) {\n var a, vars;\n\n if (arguments.length < 4) {\n // getter, passed target, property, and unit (from _get())\n a = props.map(function (prop) {\n return _get(plugin, prop, property);\n });\n vars = a.join(\" \");\n return vars.split(a[0]).length === 5 ? a[0] : vars;\n }\n\n a = (endValue + \"\").split(\" \");\n vars = {};\n props.forEach(function (prop, i) {\n return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];\n });\n plugin.init(target, vars, tween);\n };\n});\n\nexport var CSSPlugin = {\n name: \"css\",\n register: _initCore,\n targetTest: function targetTest(target) {\n return target.style && target.nodeType;\n },\n init: function init(target, vars, tween, index, targets) {\n var props = this._props,\n style = target.style,\n startAt = tween.vars.startAt,\n startValue,\n endValue,\n endNum,\n startNum,\n type,\n specialProp,\n p,\n startUnit,\n endUnit,\n relative,\n isTransformRelated,\n transformPropTween,\n cache,\n smooth,\n hasPriority,\n inlineProps;\n _pluginInitted || _initCore(); // we may call init() multiple times on the same plugin instance, like when adding special properties, so make sure we don't overwrite the revert data or inlineProps\n\n this.styles = this.styles || _getStyleSaver(target);\n inlineProps = this.styles.props;\n this.tween = tween;\n\n for (p in vars) {\n if (p === \"autoRound\") {\n continue;\n }\n\n endValue = vars[p];\n\n if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {\n // plugins\n continue;\n }\n\n type = typeof endValue;\n specialProp = _specialProps[p];\n\n if (type === \"function\") {\n endValue = endValue.call(tween, index, target, targets);\n type = typeof endValue;\n }\n\n if (type === \"string\" && ~endValue.indexOf(\"random(\")) {\n endValue = _replaceRandom(endValue);\n }\n\n if (specialProp) {\n specialProp(this, target, p, endValue, tween) && (hasPriority = 1);\n } else if (p.substr(0, 2) === \"--\") {\n //CSS variable\n startValue = (getComputedStyle(target).getPropertyValue(p) + \"\").trim();\n endValue += \"\";\n _colorExp.lastIndex = 0;\n\n if (!_colorExp.test(startValue)) {\n // colors don't have units\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n }\n\n endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);\n this.add(style, \"setProperty\", startValue, endValue, index, targets, 0, 0, p);\n props.push(p);\n inlineProps.push(p, 0, style[p]);\n } else if (type !== \"undefined\") {\n if (startAt && p in startAt) {\n // in case someone hard-codes a complex value as the start, like top: \"calc(2vh / 2)\". Without this, it'd use the computed value (always in px)\n startValue = typeof startAt[p] === \"function\" ? startAt[p].call(tween, index, target, targets) : startAt[p];\n _isString(startValue) && ~startValue.indexOf(\"random(\") && (startValue = _replaceRandom(startValue));\n getUnit(startValue + \"\") || startValue === \"auto\" || (startValue += _config.units[p] || getUnit(_get(target, p)) || \"\"); // for cases when someone passes in a unitless value like {x: 100}; if we try setting translate(100, 0px) it won't work.\n\n (startValue + \"\").charAt(1) === \"=\" && (startValue = _get(target, p)); // can't work with relative values\n } else {\n startValue = _get(target, p);\n }\n\n startNum = parseFloat(startValue);\n relative = type === \"string\" && endValue.charAt(1) === \"=\" && endValue.substr(0, 2);\n relative && (endValue = endValue.substr(2));\n endNum = parseFloat(endValue);\n\n if (p in _propertyAliases) {\n if (p === \"autoAlpha\") {\n //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.\n if (startNum === 1 && _get(target, \"visibility\") === \"hidden\" && endNum) {\n //if visibility is initially set to \"hidden\", we should interpret that as intent to make opacity 0 (a convenience)\n startNum = 0;\n }\n\n inlineProps.push(\"visibility\", 0, style.visibility);\n\n _addNonTweeningPT(this, style, \"visibility\", startNum ? \"inherit\" : \"hidden\", endNum ? \"inherit\" : \"hidden\", !endNum);\n }\n\n if (p !== \"scale\" && p !== \"transform\") {\n p = _propertyAliases[p];\n ~p.indexOf(\",\") && (p = p.split(\",\")[0]);\n }\n }\n\n isTransformRelated = p in _transformProps; //--- TRANSFORM-RELATED ---\n\n if (isTransformRelated) {\n this.styles.save(p);\n\n if (!transformPropTween) {\n cache = target._gsap;\n cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform); // if, for example, gsap.set(... {transform:\"translateX(50vw)\"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.\n\n smooth = vars.smoothOrigin !== false && cache.smooth;\n transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)\n\n transformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.\n }\n\n if (p === \"scale\") {\n this._pt = new PropTween(this._pt, cache, \"scaleY\", cache.scaleY, (relative ? _parseRelative(cache.scaleY, relative + endNum) : endNum) - cache.scaleY || 0, _renderCSSProp);\n this._pt.u = 0;\n props.push(\"scaleY\", p);\n p += \"X\";\n } else if (p === \"transformOrigin\") {\n inlineProps.push(_transformOriginProp, 0, style[_transformOriginProp]);\n endValue = _convertKeywordsToPercentages(endValue); //in case something like \"left top\" or \"bottom right\" is passed in. Convert to percentages.\n\n if (cache.svg) {\n _applySVGOrigin(target, endValue, 0, smooth, 0, this);\n } else {\n endUnit = parseFloat(endValue.split(\" \")[2]) || 0; //handle the zOrigin separately!\n\n endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \"zOrigin\", cache.zOrigin, endUnit);\n\n _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\n }\n\n continue;\n } else if (p === \"svgOrigin\") {\n _applySVGOrigin(target, endValue, 1, smooth, 0, this);\n\n continue;\n } else if (p in _rotationalProperties) {\n _addRotationalPropTween(this, cache, p, startNum, relative ? _parseRelative(startNum, relative + endValue) : endValue);\n\n continue;\n } else if (p === \"smoothOrigin\") {\n _addNonTweeningPT(this, cache, \"smooth\", cache.smooth, endValue);\n\n continue;\n } else if (p === \"force3D\") {\n cache[p] = endValue;\n continue;\n } else if (p === \"transform\") {\n _addRawTransformPTs(this, endValue, target);\n\n continue;\n }\n } else if (!(p in style)) {\n p = _checkPropPrefix(p) || p;\n }\n\n if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {\n startUnit = (startValue + \"\").substr((startNum + \"\").length);\n endNum || (endNum = 0); // protect against NaN\n\n endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);\n startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\n this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, (relative ? _parseRelative(startNum, relative + endNum) : endNum) - startNum, !isTransformRelated && (endUnit === \"px\" || p === \"zIndex\") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);\n this._pt.u = endUnit || 0;\n\n if (startUnit !== endUnit && endUnit !== \"%\") {\n //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a \"b\" (beginning) property and point to a render method that handles that. (performance optimization)\n this._pt.b = startValue;\n this._pt.r = _renderCSSPropWithBeginning;\n }\n } else if (!(p in style)) {\n if (p in target) {\n //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.\n this.add(target, p, startValue || target[p], relative ? relative + endValue : endValue, index, targets);\n } else if (p !== \"parseTransform\") {\n _missingPlugin(p, endValue);\n\n continue;\n }\n } else {\n _tweenComplexCSSString.call(this, target, p, startValue, relative ? relative + endValue : endValue);\n }\n\n isTransformRelated || (p in style ? inlineProps.push(p, 0, style[p]) : inlineProps.push(p, 1, startValue || target[p]));\n props.push(p);\n }\n }\n\n hasPriority && _sortPropTweensByPriority(this);\n },\n render: function render(ratio, data) {\n if (data.tween._time || !_reverting()) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n } else {\n data.styles.revert();\n }\n },\n get: _get,\n aliases: _propertyAliases,\n getSetter: function getSetter(target, property, plugin) {\n //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like \"x\" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.\n var p = _propertyAliases[property];\n p && p.indexOf(\",\") < 0 && (property = p);\n return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, \"x\")) ? plugin && _recentSetterPlugin === plugin ? property === \"scale\" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === \"scale\" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf(\"-\") ? _setterCSSProp : _getSetter(target, property);\n },\n core: {\n _removeProperty: _removeProperty,\n _getMatrix: _getMatrix\n }\n};\ngsap.utils.checkPrefix = _checkPropPrefix;\ngsap.core.getStyleSaver = _getStyleSaver;\n\n(function (positionAndScale, rotation, others, aliases) {\n var all = _forEachName(positionAndScale + \",\" + rotation + \",\" + others, function (name) {\n _transformProps[name] = 1;\n });\n\n _forEachName(rotation, function (name) {\n _config.units[name] = \"deg\";\n _rotationalProperties[name] = 1;\n });\n\n _propertyAliases[all[13]] = positionAndScale + \",\" + rotation;\n\n _forEachName(aliases, function (name) {\n var split = name.split(\":\");\n _propertyAliases[split[1]] = all[split[0]];\n });\n})(\"x,y,z,scale,scaleX,scaleY,xPercent,yPercent\", \"rotation,rotationX,rotationY,skewX,skewY\", \"transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective\", \"0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY\");\n\n_forEachName(\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\", function (name) {\n _config.units[name] = \"px\";\n});\n\ngsap.registerPlugin(CSSPlugin);\nexport { CSSPlugin as default, _getBBox, _createElement, _checkPropPrefix as checkPrefix };","import { gsap, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ, TweenLite, TimelineLite, TimelineMax } from \"./gsap-core.js\";\nimport { CSSPlugin } from \"./CSSPlugin.js\";\nvar gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,\n // to protect from tree shaking\nTweenMaxWithCSS = gsapWithCSS.core.Tween;\nexport { gsapWithCSS as gsap, gsapWithCSS as default, CSSPlugin, TweenMaxWithCSS as TweenMax, TweenLite, TimelineMax, TimelineLite, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };","function _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/*!\n * Observer 3.12.4\n * https://gsap.com\n *\n * @license Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\n\n\nvar gsap,\n _coreInitted,\n _clamp,\n _win,\n _doc,\n _docEl,\n _body,\n _isTouch,\n _pointerType,\n ScrollTrigger,\n _root,\n _normalizer,\n _eventTypes,\n _context,\n _getGSAP = function _getGSAP() {\n return gsap || typeof window !== \"undefined\" && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n _startup = 1,\n _observers = [],\n _scrollers = [],\n _proxies = [],\n _getTime = Date.now,\n _bridge = function _bridge(name, value) {\n return value;\n},\n _integrate = function _integrate() {\n var core = ScrollTrigger.core,\n data = core.bridge || {},\n scrollers = core._scrollers,\n proxies = core._proxies;\n scrollers.push.apply(scrollers, _scrollers);\n proxies.push.apply(proxies, _proxies);\n _scrollers = scrollers;\n _proxies = proxies;\n\n _bridge = function _bridge(name, value) {\n return data[name](value);\n };\n},\n _getProxyProp = function _getProxyProp(element, property) {\n return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];\n},\n _isViewport = function _isViewport(el) {\n return !!~_root.indexOf(el);\n},\n _addListener = function _addListener(element, type, func, nonPassive, capture) {\n return element.addEventListener(type, func, {\n passive: !nonPassive,\n capture: !!capture\n });\n},\n _removeListener = function _removeListener(element, type, func, capture) {\n return element.removeEventListener(type, func, !!capture);\n},\n _scrollLeft = \"scrollLeft\",\n _scrollTop = \"scrollTop\",\n _onScroll = function _onScroll() {\n return _normalizer && _normalizer.isPressed || _scrollers.cache++;\n},\n _scrollCacheFunc = function _scrollCacheFunc(f, doNotCache) {\n var cachingFunc = function cachingFunc(value) {\n // since reading the scrollTop/scrollLeft/pageOffsetY/pageOffsetX can trigger a layout, this function allows us to cache the value so it only gets read fresh after a \"scroll\" event fires (or while we're refreshing because that can lengthen the page and alter the scroll position). when \"soft\" is true, that means don't actually set the scroll, but cache the new value instead (useful in ScrollSmoother)\n if (value || value === 0) {\n _startup && (_win.history.scrollRestoration = \"manual\"); // otherwise the new position will get overwritten by the browser onload.\n\n var isNormalizing = _normalizer && _normalizer.isPressed;\n value = cachingFunc.v = Math.round(value) || (_normalizer && _normalizer.iOS ? 1 : 0); //TODO: iOS Bug: if you allow it to go to 0, Safari can start to report super strange (wildly inaccurate) touch positions!\n\n f(value);\n cachingFunc.cacheID = _scrollers.cache;\n isNormalizing && _bridge(\"ss\", value); // set scroll (notify ScrollTrigger so it can dispatch a \"scrollStart\" event if necessary\n } else if (doNotCache || _scrollers.cache !== cachingFunc.cacheID || _bridge(\"ref\")) {\n cachingFunc.cacheID = _scrollers.cache;\n cachingFunc.v = f();\n }\n\n return cachingFunc.v + cachingFunc.offset;\n };\n\n cachingFunc.offset = 0;\n return f && cachingFunc;\n},\n _horizontal = {\n s: _scrollLeft,\n p: \"left\",\n p2: \"Left\",\n os: \"right\",\n os2: \"Right\",\n d: \"width\",\n d2: \"Width\",\n a: \"x\",\n sc: _scrollCacheFunc(function (value) {\n return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;\n })\n},\n _vertical = {\n s: _scrollTop,\n p: \"top\",\n p2: \"Top\",\n os: \"bottom\",\n os2: \"Bottom\",\n d: \"height\",\n d2: \"Height\",\n a: \"y\",\n op: _horizontal,\n sc: _scrollCacheFunc(function (value) {\n return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;\n })\n},\n _getTarget = function _getTarget(t, self) {\n return (self && self._ctx && self._ctx.selector || gsap.utils.toArray)(t)[0] || (typeof t === \"string\" && gsap.config().nullTargetWarn !== false ? console.warn(\"Element not found:\", t) : null);\n},\n _getScrollFunc = function _getScrollFunc(element, _ref) {\n var s = _ref.s,\n sc = _ref.sc; // we store the scroller functions in an alternating sequenced Array like [element, verticalScrollFunc, horizontalScrollFunc, ...] so that we can minimize memory, maximize performance, and we also record the last position as a \".rec\" property in order to revert to that after refreshing to ensure things don't shift around.\n\n _isViewport(element) && (element = _doc.scrollingElement || _docEl);\n\n var i = _scrollers.indexOf(element),\n offset = sc === _vertical.sc ? 1 : 2;\n\n !~i && (i = _scrollers.push(element) - 1);\n _scrollers[i + offset] || _addListener(element, \"scroll\", _onScroll); // clear the cache when a scroll occurs\n\n var prev = _scrollers[i + offset],\n func = prev || (_scrollers[i + offset] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport(element) ? sc : _scrollCacheFunc(function (value) {\n return arguments.length ? element[s] = value : element[s];\n })));\n func.target = element;\n prev || (func.smooth = gsap.getProperty(element, \"scrollBehavior\") === \"smooth\"); // only set it the first time (don't reset every time a scrollFunc is requested because perhaps it happens during a refresh() when it's disabled in ScrollTrigger.\n\n return func;\n},\n _getVelocityProp = function _getVelocityProp(value, minTimeRefresh, useDelta) {\n var v1 = value,\n v2 = value,\n t1 = _getTime(),\n t2 = t1,\n min = minTimeRefresh || 50,\n dropToZeroTime = Math.max(500, min * 3),\n update = function update(value, force) {\n var t = _getTime();\n\n if (force || t - t1 > min) {\n v2 = v1;\n v1 = value;\n t2 = t1;\n t1 = t;\n } else if (useDelta) {\n v1 += value;\n } else {\n // not totally necessary, but makes it a bit more accurate by adjusting the v1 value according to the new slope. This way we're not just ignoring the incoming data. Removing for now because it doesn't seem to make much practical difference and it's probably not worth the kb.\n v1 = v2 + (value - v2) / (t - t2) * (t1 - t2);\n }\n },\n reset = function reset() {\n v2 = v1 = useDelta ? 0 : v1;\n t2 = t1 = 0;\n },\n getVelocity = function getVelocity(latestValue) {\n var tOld = t2,\n vOld = v2,\n t = _getTime();\n\n (latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);\n return t1 === t2 || t - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t : t1) - tOld) * 1000;\n };\n\n return {\n update: update,\n reset: reset,\n getVelocity: getVelocity\n };\n},\n _getEvent = function _getEvent(e, preventDefault) {\n preventDefault && !e._gsapAllow && e.preventDefault();\n return e.changedTouches ? e.changedTouches[0] : e;\n},\n _getAbsoluteMax = function _getAbsoluteMax(a) {\n var max = Math.max.apply(Math, a),\n min = Math.min.apply(Math, a);\n return Math.abs(max) >= Math.abs(min) ? max : min;\n},\n _setScrollTrigger = function _setScrollTrigger() {\n ScrollTrigger = gsap.core.globals().ScrollTrigger;\n ScrollTrigger && ScrollTrigger.core && _integrate();\n},\n _initCore = function _initCore(core) {\n gsap = core || _getGSAP();\n\n if (!_coreInitted && gsap && typeof document !== \"undefined\" && document.body) {\n _win = window;\n _doc = document;\n _docEl = _doc.documentElement;\n _body = _doc.body;\n _root = [_win, _doc, _docEl, _body];\n _clamp = gsap.utils.clamp;\n\n _context = gsap.core.context || function () {};\n\n _pointerType = \"onpointerenter\" in _body ? \"pointer\" : \"mouse\"; // isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.\n\n _isTouch = Observer.isTouch = _win.matchMedia && _win.matchMedia(\"(hover: none), (pointer: coarse)\").matches ? 1 : \"ontouchstart\" in _win || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0;\n _eventTypes = Observer.eventTypes = (\"ontouchstart\" in _docEl ? \"touchstart,touchmove,touchcancel,touchend\" : !(\"onpointerdown\" in _docEl) ? \"mousedown,mousemove,mouseup,mouseup\" : \"pointerdown,pointermove,pointercancel,pointerup\").split(\",\");\n setTimeout(function () {\n return _startup = 0;\n }, 500);\n\n _setScrollTrigger();\n\n _coreInitted = 1;\n }\n\n return _coreInitted;\n};\n\n_horizontal.op = _vertical;\n_scrollers.cache = 0;\nexport var Observer = /*#__PURE__*/function () {\n function Observer(vars) {\n this.init(vars);\n }\n\n var _proto = Observer.prototype;\n\n _proto.init = function init(vars) {\n _coreInitted || _initCore(gsap) || console.warn(\"Please gsap.registerPlugin(Observer)\");\n ScrollTrigger || _setScrollTrigger();\n var tolerance = vars.tolerance,\n dragMinimum = vars.dragMinimum,\n type = vars.type,\n target = vars.target,\n lineHeight = vars.lineHeight,\n debounce = vars.debounce,\n preventDefault = vars.preventDefault,\n onStop = vars.onStop,\n onStopDelay = vars.onStopDelay,\n ignore = vars.ignore,\n wheelSpeed = vars.wheelSpeed,\n event = vars.event,\n onDragStart = vars.onDragStart,\n onDragEnd = vars.onDragEnd,\n onDrag = vars.onDrag,\n onPress = vars.onPress,\n onRelease = vars.onRelease,\n onRight = vars.onRight,\n onLeft = vars.onLeft,\n onUp = vars.onUp,\n onDown = vars.onDown,\n onChangeX = vars.onChangeX,\n onChangeY = vars.onChangeY,\n onChange = vars.onChange,\n onToggleX = vars.onToggleX,\n onToggleY = vars.onToggleY,\n onHover = vars.onHover,\n onHoverEnd = vars.onHoverEnd,\n onMove = vars.onMove,\n ignoreCheck = vars.ignoreCheck,\n isNormalizer = vars.isNormalizer,\n onGestureStart = vars.onGestureStart,\n onGestureEnd = vars.onGestureEnd,\n onWheel = vars.onWheel,\n onEnable = vars.onEnable,\n onDisable = vars.onDisable,\n onClick = vars.onClick,\n scrollSpeed = vars.scrollSpeed,\n capture = vars.capture,\n allowClicks = vars.allowClicks,\n lockAxis = vars.lockAxis,\n onLockAxis = vars.onLockAxis;\n this.target = target = _getTarget(target) || _docEl;\n this.vars = vars;\n ignore && (ignore = gsap.utils.toArray(ignore));\n tolerance = tolerance || 1e-9;\n dragMinimum = dragMinimum || 0;\n wheelSpeed = wheelSpeed || 1;\n scrollSpeed = scrollSpeed || 1;\n type = type || \"wheel,touch,pointer\";\n debounce = debounce !== false;\n lineHeight || (lineHeight = parseFloat(_win.getComputedStyle(_body).lineHeight) || 22); // note: browser may report \"normal\", so default to 22.\n\n var id,\n onStopDelayedCall,\n dragged,\n moved,\n wheeled,\n locked,\n axis,\n self = this,\n prevDeltaX = 0,\n prevDeltaY = 0,\n scrollFuncX = _getScrollFunc(target, _horizontal),\n scrollFuncY = _getScrollFunc(target, _vertical),\n scrollX = scrollFuncX(),\n scrollY = scrollFuncY(),\n limitToTouch = ~type.indexOf(\"touch\") && !~type.indexOf(\"pointer\") && _eventTypes[0] === \"pointerdown\",\n // for devices that accommodate mouse events and touch events, we need to distinguish.\n isViewport = _isViewport(target),\n ownerDoc = target.ownerDocument || _doc,\n deltaX = [0, 0, 0],\n // wheel, scroll, pointer/touch\n deltaY = [0, 0, 0],\n onClickTime = 0,\n clickCapture = function clickCapture() {\n return onClickTime = _getTime();\n },\n _ignoreCheck = function _ignoreCheck(e, isPointerOrTouch) {\n return (self.event = e) && ignore && ~ignore.indexOf(e.target) || isPointerOrTouch && limitToTouch && e.pointerType !== \"touch\" || ignoreCheck && ignoreCheck(e, isPointerOrTouch);\n },\n onStopFunc = function onStopFunc() {\n self._vx.reset();\n\n self._vy.reset();\n\n onStopDelayedCall.pause();\n onStop && onStop(self);\n },\n update = function update() {\n var dx = self.deltaX = _getAbsoluteMax(deltaX),\n dy = self.deltaY = _getAbsoluteMax(deltaY),\n changedX = Math.abs(dx) >= tolerance,\n changedY = Math.abs(dy) >= tolerance;\n\n onChange && (changedX || changedY) && onChange(self, dx, dy, deltaX, deltaY); // in ScrollTrigger.normalizeScroll(), we need to know if it was touch/pointer so we need access to the deltaX/deltaY Arrays before we clear them out.\n\n if (changedX) {\n onRight && self.deltaX > 0 && onRight(self);\n onLeft && self.deltaX < 0 && onLeft(self);\n onChangeX && onChangeX(self);\n onToggleX && self.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self);\n prevDeltaX = self.deltaX;\n deltaX[0] = deltaX[1] = deltaX[2] = 0;\n }\n\n if (changedY) {\n onDown && self.deltaY > 0 && onDown(self);\n onUp && self.deltaY < 0 && onUp(self);\n onChangeY && onChangeY(self);\n onToggleY && self.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self);\n prevDeltaY = self.deltaY;\n deltaY[0] = deltaY[1] = deltaY[2] = 0;\n }\n\n if (moved || dragged) {\n onMove && onMove(self);\n\n if (dragged) {\n onDrag(self);\n dragged = false;\n }\n\n moved = false;\n }\n\n locked && !(locked = false) && onLockAxis && onLockAxis(self);\n\n if (wheeled) {\n onWheel(self);\n wheeled = false;\n }\n\n id = 0;\n },\n onDelta = function onDelta(x, y, index) {\n deltaX[index] += x;\n deltaY[index] += y;\n\n self._vx.update(x);\n\n self._vy.update(y);\n\n debounce ? id || (id = requestAnimationFrame(update)) : update();\n },\n onTouchOrPointerDelta = function onTouchOrPointerDelta(x, y) {\n if (lockAxis && !axis) {\n self.axis = axis = Math.abs(x) > Math.abs(y) ? \"x\" : \"y\";\n locked = true;\n }\n\n if (axis !== \"y\") {\n deltaX[2] += x;\n\n self._vx.update(x, true); // update the velocity as frequently as possible instead of in the debounced function so that very quick touch-scrolls (flicks) feel natural. If it's the mouse/touch/pointer, force it so that we get snappy/accurate momentum scroll.\n\n }\n\n if (axis !== \"x\") {\n deltaY[2] += y;\n\n self._vy.update(y, true);\n }\n\n debounce ? id || (id = requestAnimationFrame(update)) : update();\n },\n _onDrag = function _onDrag(e) {\n if (_ignoreCheck(e, 1)) {\n return;\n }\n\n e = _getEvent(e, preventDefault);\n var x = e.clientX,\n y = e.clientY,\n dx = x - self.x,\n dy = y - self.y,\n isDragging = self.isDragging;\n self.x = x;\n self.y = y;\n\n if (isDragging || Math.abs(self.startX - x) >= dragMinimum || Math.abs(self.startY - y) >= dragMinimum) {\n onDrag && (dragged = true);\n isDragging || (self.isDragging = true);\n onTouchOrPointerDelta(dx, dy);\n isDragging || onDragStart && onDragStart(self);\n }\n },\n _onPress = self.onPress = function (e) {\n if (_ignoreCheck(e, 1) || e && e.button) {\n return;\n }\n\n self.axis = axis = null;\n onStopDelayedCall.pause();\n self.isPressed = true;\n e = _getEvent(e); // note: may need to preventDefault(?) Won't side-scroll on iOS Safari if we do, though.\n\n prevDeltaX = prevDeltaY = 0;\n self.startX = self.x = e.clientX;\n self.startY = self.y = e.clientY;\n\n self._vx.reset(); // otherwise the t2 may be stale if the user touches and flicks super fast and releases in less than 2 requestAnimationFrame ticks, causing velocity to be 0.\n\n\n self._vy.reset();\n\n _addListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, preventDefault, true);\n\n self.deltaX = self.deltaY = 0;\n onPress && onPress(self);\n },\n _onRelease = self.onRelease = function (e) {\n if (_ignoreCheck(e, 1)) {\n return;\n }\n\n _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n\n var isTrackingDrag = !isNaN(self.y - self.startY),\n wasDragging = self.isDragging,\n isDragNotClick = wasDragging && (Math.abs(self.x - self.startX) > 3 || Math.abs(self.y - self.startY) > 3),\n // some touch devices need some wiggle room in terms of sensing clicks - the finger may move a few pixels.\n eventData = _getEvent(e);\n\n if (!isDragNotClick && isTrackingDrag) {\n self._vx.reset();\n\n self._vy.reset(); //if (preventDefault && allowClicks && self.isPressed) { // check isPressed because in a rare edge case, the inputObserver in ScrollTrigger may stopPropagation() on the press/drag, so the onRelease may get fired without the onPress/onDrag ever getting called, thus it could trigger a click to occur on a link after scroll-dragging it.\n\n\n if (preventDefault && allowClicks) {\n // check isPressed because in a rare edge case, the inputObserver in ScrollTrigger may stopPropagation() on the press/drag, so the onRelease may get fired without the onPress/onDrag ever getting called, thus it could trigger a click to occur on a link after scroll-dragging it.\n gsap.delayedCall(0.08, function () {\n // some browsers (like Firefox) won't trust script-generated clicks, so if the user tries to click on a video to play it, for example, it simply won't work. Since a regular \"click\" event will most likely be generated anyway (one that has its isTrusted flag set to true), we must slightly delay our script-generated click so that the \"real\"/trusted one is prioritized. Remember, when there are duplicate events in quick succession, we suppress all but the first one. Some browsers don't even trigger the \"real\" one at all, so our synthetic one is a safety valve that ensures that no matter what, a click event does get dispatched.\n if (_getTime() - onClickTime > 300 && !e.defaultPrevented) {\n if (e.target.click) {\n //some browsers (like mobile Safari) don't properly trigger the click event\n e.target.click();\n } else if (ownerDoc.createEvent) {\n var syntheticEvent = ownerDoc.createEvent(\"MouseEvents\");\n syntheticEvent.initMouseEvent(\"click\", true, true, _win, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);\n e.target.dispatchEvent(syntheticEvent);\n }\n }\n });\n }\n }\n\n self.isDragging = self.isGesturing = self.isPressed = false;\n onStop && wasDragging && !isNormalizer && onStopDelayedCall.restart(true);\n onDragEnd && wasDragging && onDragEnd(self);\n onRelease && onRelease(self, isDragNotClick);\n },\n _onGestureStart = function _onGestureStart(e) {\n return e.touches && e.touches.length > 1 && (self.isGesturing = true) && onGestureStart(e, self.isDragging);\n },\n _onGestureEnd = function _onGestureEnd() {\n return (self.isGesturing = false) || onGestureEnd(self);\n },\n onScroll = function onScroll(e) {\n if (_ignoreCheck(e)) {\n return;\n }\n\n var x = scrollFuncX(),\n y = scrollFuncY();\n onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);\n scrollX = x;\n scrollY = y;\n onStop && onStopDelayedCall.restart(true);\n },\n _onWheel = function _onWheel(e) {\n if (_ignoreCheck(e)) {\n return;\n }\n\n e = _getEvent(e, preventDefault);\n onWheel && (wheeled = true);\n var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win.innerHeight : 1) * wheelSpeed;\n onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);\n onStop && !isNormalizer && onStopDelayedCall.restart(true);\n },\n _onMove = function _onMove(e) {\n if (_ignoreCheck(e)) {\n return;\n }\n\n var x = e.clientX,\n y = e.clientY,\n dx = x - self.x,\n dy = y - self.y;\n self.x = x;\n self.y = y;\n moved = true;\n onStop && onStopDelayedCall.restart(true);\n (dx || dy) && onTouchOrPointerDelta(dx, dy);\n },\n _onHover = function _onHover(e) {\n self.event = e;\n onHover(self);\n },\n _onHoverEnd = function _onHoverEnd(e) {\n self.event = e;\n onHoverEnd(self);\n },\n _onClick = function _onClick(e) {\n return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self);\n };\n\n onStopDelayedCall = self._dc = gsap.delayedCall(onStopDelay || 0.25, onStopFunc).pause();\n self.deltaX = self.deltaY = 0;\n self._vx = _getVelocityProp(0, 50, true);\n self._vy = _getVelocityProp(0, 50, true);\n self.scrollX = scrollFuncX;\n self.scrollY = scrollFuncY;\n self.isDragging = self.isGesturing = self.isPressed = false;\n\n _context(this);\n\n self.enable = function (e) {\n if (!self.isEnabled) {\n _addListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\n type.indexOf(\"scroll\") >= 0 && _addListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, preventDefault, capture);\n type.indexOf(\"wheel\") >= 0 && _addListener(target, \"wheel\", _onWheel, preventDefault, capture);\n\n if (type.indexOf(\"touch\") >= 0 && _isTouch || type.indexOf(\"pointer\") >= 0) {\n _addListener(target, _eventTypes[0], _onPress, preventDefault, capture);\n\n _addListener(ownerDoc, _eventTypes[2], _onRelease);\n\n _addListener(ownerDoc, _eventTypes[3], _onRelease);\n\n allowClicks && _addListener(target, \"click\", clickCapture, false, true);\n onClick && _addListener(target, \"click\", _onClick);\n onGestureStart && _addListener(ownerDoc, \"gesturestart\", _onGestureStart);\n onGestureEnd && _addListener(ownerDoc, \"gestureend\", _onGestureEnd);\n onHover && _addListener(target, _pointerType + \"enter\", _onHover);\n onHoverEnd && _addListener(target, _pointerType + \"leave\", _onHoverEnd);\n onMove && _addListener(target, _pointerType + \"move\", _onMove);\n }\n\n self.isEnabled = true;\n e && e.type && _onPress(e);\n onEnable && onEnable(self);\n }\n\n return self;\n };\n\n self.disable = function () {\n if (self.isEnabled) {\n // only remove the _onScroll listener if there aren't any others that rely on the functionality.\n _observers.filter(function (o) {\n return o !== self && _isViewport(o.target);\n }).length || _removeListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\n if (self.isPressed) {\n self._vx.reset();\n\n self._vy.reset();\n\n _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n }\n\n _removeListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, capture);\n\n _removeListener(target, \"wheel\", _onWheel, capture);\n\n _removeListener(target, _eventTypes[0], _onPress, capture);\n\n _removeListener(ownerDoc, _eventTypes[2], _onRelease);\n\n _removeListener(ownerDoc, _eventTypes[3], _onRelease);\n\n _removeListener(target, \"click\", clickCapture, true);\n\n _removeListener(target, \"click\", _onClick);\n\n _removeListener(ownerDoc, \"gesturestart\", _onGestureStart);\n\n _removeListener(ownerDoc, \"gestureend\", _onGestureEnd);\n\n _removeListener(target, _pointerType + \"enter\", _onHover);\n\n _removeListener(target, _pointerType + \"leave\", _onHoverEnd);\n\n _removeListener(target, _pointerType + \"move\", _onMove);\n\n self.isEnabled = self.isPressed = self.isDragging = false;\n onDisable && onDisable(self);\n }\n };\n\n self.kill = self.revert = function () {\n self.disable();\n\n var i = _observers.indexOf(self);\n\n i >= 0 && _observers.splice(i, 1);\n _normalizer === self && (_normalizer = 0);\n };\n\n _observers.push(self);\n\n isNormalizer && _isViewport(target) && (_normalizer = self);\n self.enable(event);\n };\n\n _createClass(Observer, [{\n key: \"velocityX\",\n get: function get() {\n return this._vx.getVelocity();\n }\n }, {\n key: \"velocityY\",\n get: function get() {\n return this._vy.getVelocity();\n }\n }]);\n\n return Observer;\n}();\nObserver.version = \"3.12.4\";\n\nObserver.create = function (vars) {\n return new Observer(vars);\n};\n\nObserver.register = _initCore;\n\nObserver.getAll = function () {\n return _observers.slice();\n};\n\nObserver.getById = function (id) {\n return _observers.filter(function (o) {\n return o.vars.id === id;\n })[0];\n};\n\n_getGSAP() && gsap.registerPlugin(Observer);\nexport { Observer as default, _isViewport, _scrollers, _getScrollFunc, _getProxyProp, _proxies, _getVelocityProp, _vertical, _horizontal, _getTarget };","/*!\n * ScrollTrigger 3.12.4\n * https://gsap.com\n *\n * @license Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { Observer, _getTarget, _vertical, _horizontal, _scrollers, _proxies, _getScrollFunc, _getProxyProp, _getVelocityProp } from \"./Observer.js\";\n\nvar gsap,\n _coreInitted,\n _win,\n _doc,\n _docEl,\n _body,\n _root,\n _resizeDelay,\n _toArray,\n _clamp,\n _time2,\n _syncInterval,\n _refreshing,\n _pointerIsDown,\n _transformProp,\n _i,\n _prevWidth,\n _prevHeight,\n _autoRefresh,\n _sort,\n _suppressOverwrites,\n _ignoreResize,\n _normalizer,\n _ignoreMobileResize,\n _baseScreenHeight,\n _baseScreenWidth,\n _fixIOSBug,\n _context,\n _scrollRestoration,\n _div100vh,\n _100vh,\n _isReverted,\n _clampingMax,\n _limitCallbacks,\n // if true, we'll only trigger callbacks if the active state toggles, so if you scroll immediately past both the start and end positions of a ScrollTrigger (thus inactive to inactive), neither its onEnter nor onLeave will be called. This is useful during startup.\n_startup = 1,\n _getTime = Date.now,\n _time1 = _getTime(),\n _lastScrollTime = 0,\n _enabled = 0,\n _parseClamp = function _parseClamp(value, type, self) {\n var clamp = _isString(value) && (value.substr(0, 6) === \"clamp(\" || value.indexOf(\"max\") > -1);\n self[\"_\" + type + \"Clamp\"] = clamp;\n return clamp ? value.substr(6, value.length - 7) : value;\n},\n _keepClamp = function _keepClamp(value, clamp) {\n return clamp && (!_isString(value) || value.substr(0, 6) !== \"clamp(\") ? \"clamp(\" + value + \")\" : value;\n},\n _rafBugFix = function _rafBugFix() {\n return _enabled && requestAnimationFrame(_rafBugFix);\n},\n // in some browsers (like Firefox), screen repaints weren't consistent unless we had SOMETHING queued up in requestAnimationFrame()! So this just creates a super simple loop to keep it alive and smooth out repaints.\n_pointerDownHandler = function _pointerDownHandler() {\n return _pointerIsDown = 1;\n},\n _pointerUpHandler = function _pointerUpHandler() {\n return _pointerIsDown = 0;\n},\n _passThrough = function _passThrough(v) {\n return v;\n},\n _round = function _round(value) {\n return Math.round(value * 100000) / 100000 || 0;\n},\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _getGSAP = function _getGSAP() {\n return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n _isViewport = function _isViewport(e) {\n return !!~_root.indexOf(e);\n},\n _getViewportDimension = function _getViewportDimension(dimensionProperty) {\n return (dimensionProperty === \"Height\" ? _100vh : _win[\"inner\" + dimensionProperty]) || _docEl[\"client\" + dimensionProperty] || _body[\"client\" + dimensionProperty];\n},\n _getBoundsFunc = function _getBoundsFunc(element) {\n return _getProxyProp(element, \"getBoundingClientRect\") || (_isViewport(element) ? function () {\n _winOffsets.width = _win.innerWidth;\n _winOffsets.height = _100vh;\n return _winOffsets;\n } : function () {\n return _getBounds(element);\n });\n},\n _getSizeFunc = function _getSizeFunc(scroller, isViewport, _ref) {\n var d = _ref.d,\n d2 = _ref.d2,\n a = _ref.a;\n return (a = _getProxyProp(scroller, \"getBoundingClientRect\")) ? function () {\n return a()[d];\n } : function () {\n return (isViewport ? _getViewportDimension(d2) : scroller[\"client\" + d2]) || 0;\n };\n},\n _getOffsetsFunc = function _getOffsetsFunc(element, isViewport) {\n return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function () {\n return _winOffsets;\n };\n},\n _maxScroll = function _maxScroll(element, _ref2) {\n var s = _ref2.s,\n d2 = _ref2.d2,\n d = _ref2.d,\n a = _ref2.a;\n return Math.max(0, (s = \"scroll\" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? (_docEl[s] || _body[s]) - _getViewportDimension(d2) : element[s] - element[\"offset\" + d2]);\n},\n _iterateAutoRefresh = function _iterateAutoRefresh(func, events) {\n for (var i = 0; i < _autoRefresh.length; i += 3) {\n (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]);\n }\n},\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n},\n _endAnimation = function _endAnimation(animation, reversed, pause) {\n return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause();\n},\n _callback = function _callback(self, func) {\n if (self.enabled) {\n var result = self._ctx ? self._ctx.add(function () {\n return func(self);\n }) : func(self);\n result && result.totalTime && (self.callbackAnimation = result);\n }\n},\n _abs = Math.abs,\n _left = \"left\",\n _top = \"top\",\n _right = \"right\",\n _bottom = \"bottom\",\n _width = \"width\",\n _height = \"height\",\n _Right = \"Right\",\n _Left = \"Left\",\n _Top = \"Top\",\n _Bottom = \"Bottom\",\n _padding = \"padding\",\n _margin = \"margin\",\n _Width = \"Width\",\n _Height = \"Height\",\n _px = \"px\",\n _getComputedStyle = function _getComputedStyle(element) {\n return _win.getComputedStyle(element);\n},\n _makePositionable = function _makePositionable(element) {\n // if the element already has position: absolute or fixed, leave that, otherwise make it position: relative\n var position = _getComputedStyle(element).position;\n\n element.style.position = position === \"absolute\" || position === \"fixed\" ? position : \"relative\";\n},\n _setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n},\n _getBounds = function _getBounds(element, withoutTransforms) {\n var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== \"matrix(1, 0, 0, 1, 0, 0)\" && gsap.to(element, {\n x: 0,\n y: 0,\n xPercent: 0,\n yPercent: 0,\n rotation: 0,\n rotationX: 0,\n rotationY: 0,\n scale: 1,\n skewX: 0,\n skewY: 0\n }).progress(1),\n bounds = element.getBoundingClientRect();\n tween && tween.progress(0).kill();\n return bounds;\n},\n _getSize = function _getSize(element, _ref3) {\n var d2 = _ref3.d2;\n return element[\"offset\" + d2] || element[\"client\" + d2] || 0;\n},\n _getLabelRatioArray = function _getLabelRatioArray(timeline) {\n var a = [],\n labels = timeline.labels,\n duration = timeline.duration(),\n p;\n\n for (p in labels) {\n a.push(labels[p] / duration);\n }\n\n return a;\n},\n _getClosestLabel = function _getClosestLabel(animation) {\n return function (value) {\n return gsap.utils.snap(_getLabelRatioArray(animation), value);\n };\n},\n _snapDirectional = function _snapDirectional(snapIncrementOrArray) {\n var snap = gsap.utils.snap(snapIncrementOrArray),\n a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function (a, b) {\n return a - b;\n });\n return a ? function (value, direction, threshold) {\n if (threshold === void 0) {\n threshold = 1e-3;\n }\n\n var i;\n\n if (!direction) {\n return snap(value);\n }\n\n if (direction > 0) {\n value -= threshold; // to avoid rounding errors. If we're too strict, it might snap forward, then immediately again, and again.\n\n for (i = 0; i < a.length; i++) {\n if (a[i] >= value) {\n return a[i];\n }\n }\n\n return a[i - 1];\n } else {\n i = a.length;\n value += threshold;\n\n while (i--) {\n if (a[i] <= value) {\n return a[i];\n }\n }\n }\n\n return a[0];\n } : function (value, direction, threshold) {\n if (threshold === void 0) {\n threshold = 1e-3;\n }\n\n var snapped = snap(value);\n return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray);\n };\n},\n _getLabelAtDirection = function _getLabelAtDirection(timeline) {\n return function (value, st) {\n return _snapDirectional(_getLabelRatioArray(timeline))(value, st.direction);\n };\n},\n _multiListener = function _multiListener(func, element, types, callback) {\n return types.split(\",\").forEach(function (type) {\n return func(element, type, callback);\n });\n},\n _addListener = function _addListener(element, type, func, nonPassive, capture) {\n return element.addEventListener(type, func, {\n passive: !nonPassive,\n capture: !!capture\n });\n},\n _removeListener = function _removeListener(element, type, func, capture) {\n return element.removeEventListener(type, func, !!capture);\n},\n _wheelListener = function _wheelListener(func, el, scrollFunc) {\n scrollFunc = scrollFunc && scrollFunc.wheelHandler;\n\n if (scrollFunc) {\n func(el, \"wheel\", scrollFunc);\n func(el, \"touchmove\", scrollFunc);\n }\n},\n _markerDefaults = {\n startColor: \"green\",\n endColor: \"red\",\n indent: 0,\n fontSize: \"16px\",\n fontWeight: \"normal\"\n},\n _defaults = {\n toggleActions: \"play\",\n anticipatePin: 0\n},\n _keywords = {\n top: 0,\n left: 0,\n center: 0.5,\n bottom: 1,\n right: 1\n},\n _offsetToPx = function _offsetToPx(value, size) {\n if (_isString(value)) {\n var eqIndex = value.indexOf(\"=\"),\n relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;\n\n if (~eqIndex) {\n value.indexOf(\"%\") > eqIndex && (relative *= size / 100);\n value = value.substr(0, eqIndex - 1);\n }\n\n value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf(\"%\") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);\n }\n\n return value;\n},\n _createMarker = function _createMarker(type, name, container, direction, _ref4, offset, matchWidthEl, containerAnimation) {\n var startColor = _ref4.startColor,\n endColor = _ref4.endColor,\n fontSize = _ref4.fontSize,\n indent = _ref4.indent,\n fontWeight = _ref4.fontWeight;\n\n var e = _doc.createElement(\"div\"),\n useFixedPosition = _isViewport(container) || _getProxyProp(container, \"pinType\") === \"fixed\",\n isScroller = type.indexOf(\"scroller\") !== -1,\n parent = useFixedPosition ? _body : container,\n isStart = type.indexOf(\"start\") !== -1,\n color = isStart ? startColor : endColor,\n css = \"border-color:\" + color + \";font-size:\" + fontSize + \";color:\" + color + \";font-weight:\" + fontWeight + \";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;\";\n\n css += \"position:\" + ((isScroller || containerAnimation) && useFixedPosition ? \"fixed;\" : \"absolute;\");\n (isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + \":\" + (offset + parseFloat(indent)) + \"px;\");\n matchWidthEl && (css += \"box-sizing:border-box;text-align:left;width:\" + matchWidthEl.offsetWidth + \"px;\");\n e._isStart = isStart;\n e.setAttribute(\"class\", \"gsap-marker-\" + type + (name ? \" marker-\" + name : \"\"));\n e.style.cssText = css;\n e.innerText = name || name === 0 ? type + \"-\" + name : type;\n parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e);\n e._offset = e[\"offset\" + direction.op.d2];\n\n _positionMarker(e, 0, direction, isStart);\n\n return e;\n},\n _positionMarker = function _positionMarker(marker, start, direction, flipped) {\n var vars = {\n display: \"block\"\n },\n side = direction[flipped ? \"os2\" : \"p2\"],\n oppositeSide = direction[flipped ? \"p2\" : \"os2\"];\n marker._isFlipped = flipped;\n vars[direction.a + \"Percent\"] = flipped ? -100 : 0;\n vars[direction.a] = flipped ? \"1px\" : 0;\n vars[\"border\" + side + _Width] = 1;\n vars[\"border\" + oppositeSide + _Width] = 0;\n vars[direction.p] = start + \"px\";\n gsap.set(marker, vars);\n},\n _triggers = [],\n _ids = {},\n _rafID,\n _sync = function _sync() {\n return _getTime() - _lastScrollTime > 34 && (_rafID || (_rafID = requestAnimationFrame(_updateAll)));\n},\n _onScroll = function _onScroll() {\n // previously, we tried to optimize performance by batching/deferring to the next requestAnimationFrame(), but discovered that Safari has a few bugs that make this unworkable (especially on iOS). See https://codepen.io/GreenSock/pen/16c435b12ef09c38125204818e7b45fc?editors=0010 and https://codepen.io/GreenSock/pen/JjOxYpQ/3dd65ccec5a60f1d862c355d84d14562?editors=0010 and https://codepen.io/GreenSock/pen/ExbrPNa/087cef197dc35445a0951e8935c41503?editors=0010\n if (!_normalizer || !_normalizer.isPressed || _normalizer.startX > _body.clientWidth) {\n // if the user is dragging the scrollbar, allow it.\n _scrollers.cache++;\n\n if (_normalizer) {\n _rafID || (_rafID = requestAnimationFrame(_updateAll));\n } else {\n _updateAll(); // Safari in particular (on desktop) NEEDS the immediate update rather than waiting for a requestAnimationFrame() whereas iOS seems to benefit from waiting for the requestAnimationFrame() tick, at least when normalizing. See https://codepen.io/GreenSock/pen/qBYozqO?editors=0110\n\n }\n\n _lastScrollTime || _dispatch(\"scrollStart\");\n _lastScrollTime = _getTime();\n }\n},\n _setBaseDimensions = function _setBaseDimensions() {\n _baseScreenWidth = _win.innerWidth;\n _baseScreenHeight = _win.innerHeight;\n},\n _onResize = function _onResize() {\n _scrollers.cache++;\n !_refreshing && !_ignoreResize && !_doc.fullscreenElement && !_doc.webkitFullscreenElement && (!_ignoreMobileResize || _baseScreenWidth !== _win.innerWidth || Math.abs(_win.innerHeight - _baseScreenHeight) > _win.innerHeight * 0.25) && _resizeDelay.restart(true);\n},\n // ignore resizes triggered by refresh()\n_listeners = {},\n _emptyArray = [],\n _softRefresh = function _softRefresh() {\n return _removeListener(ScrollTrigger, \"scrollEnd\", _softRefresh) || _refreshAll(true);\n},\n _dispatch = function _dispatch(type) {\n return _listeners[type] && _listeners[type].map(function (f) {\n return f();\n }) || _emptyArray;\n},\n _savedStyles = [],\n // when ScrollTrigger.saveStyles() is called, the inline styles are recorded in this Array in a sequential format like [element, cssText, gsCache, media]. This keeps it very memory-efficient and fast to iterate through.\n_revertRecorded = function _revertRecorded(media) {\n for (var i = 0; i < _savedStyles.length; i += 5) {\n if (!media || _savedStyles[i + 4] && _savedStyles[i + 4].query === media) {\n _savedStyles[i].style.cssText = _savedStyles[i + 1];\n _savedStyles[i].getBBox && _savedStyles[i].setAttribute(\"transform\", _savedStyles[i + 2] || \"\");\n _savedStyles[i + 3].uncache = 1;\n }\n }\n},\n _revertAll = function _revertAll(kill, media) {\n var trigger;\n\n for (_i = 0; _i < _triggers.length; _i++) {\n trigger = _triggers[_i];\n\n if (trigger && (!media || trigger._ctx === media)) {\n if (kill) {\n trigger.kill(1);\n } else {\n trigger.revert(true, true);\n }\n }\n }\n\n _isReverted = true;\n media && _revertRecorded(media);\n media || _dispatch(\"revert\");\n},\n _clearScrollMemory = function _clearScrollMemory(scrollRestoration, force) {\n // zero-out all the recorded scroll positions. Don't use _triggers because if, for example, .matchMedia() is used to create some ScrollTriggers and then the user resizes and it removes ALL ScrollTriggers, and then go back to a size where there are ScrollTriggers, it would have kept the position(s) saved from the initial state.\n _scrollers.cache++;\n (force || !_refreshingAll) && _scrollers.forEach(function (obj) {\n return _isFunction(obj) && obj.cacheID++ && (obj.rec = 0);\n });\n _isString(scrollRestoration) && (_win.history.scrollRestoration = _scrollRestoration = scrollRestoration);\n},\n _refreshingAll,\n _refreshID = 0,\n _queueRefreshID,\n _queueRefreshAll = function _queueRefreshAll() {\n // we don't want to call _refreshAll() every time we create a new ScrollTrigger (for performance reasons) - it's better to batch them. Some frameworks dynamically load content and we can't rely on the window's \"load\" or \"DOMContentLoaded\" events to trigger it.\n if (_queueRefreshID !== _refreshID) {\n var id = _queueRefreshID = _refreshID;\n requestAnimationFrame(function () {\n return id === _refreshID && _refreshAll(true);\n });\n }\n},\n _refresh100vh = function _refresh100vh() {\n _body.appendChild(_div100vh);\n\n _100vh = !_normalizer && _div100vh.offsetHeight || _win.innerHeight;\n\n _body.removeChild(_div100vh);\n},\n _hideAllMarkers = function _hideAllMarkers(hide) {\n return _toArray(\".gsap-marker-start, .gsap-marker-end, .gsap-marker-scroller-start, .gsap-marker-scroller-end\").forEach(function (el) {\n return el.style.display = hide ? \"none\" : \"block\";\n });\n},\n _refreshAll = function _refreshAll(force, skipRevert) {\n if (_lastScrollTime && !force && !_isReverted) {\n _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n return;\n }\n\n _refresh100vh();\n\n _refreshingAll = ScrollTrigger.isRefreshing = true;\n\n _scrollers.forEach(function (obj) {\n return _isFunction(obj) && ++obj.cacheID && (obj.rec = obj());\n }); // force the clearing of the cache because some browsers take a little while to dispatch the \"scroll\" event and the user may have changed the scroll position and then called ScrollTrigger.refresh() right away\n\n\n var refreshInits = _dispatch(\"refreshInit\");\n\n _sort && ScrollTrigger.sort();\n skipRevert || _revertAll();\n\n _scrollers.forEach(function (obj) {\n if (_isFunction(obj)) {\n obj.smooth && (obj.target.style.scrollBehavior = \"auto\"); // smooth scrolling interferes\n\n obj(0);\n }\n });\n\n _triggers.slice(0).forEach(function (t) {\n return t.refresh();\n }); // don't loop with _i because during a refresh() someone could call ScrollTrigger.update() which would iterate through _i resulting in a skip.\n\n\n _isReverted = false;\n\n _triggers.forEach(function (t) {\n // nested pins (pinnedContainer) with pinSpacing may expand the container, so we must accommodate that here.\n if (t._subPinOffset && t.pin) {\n var prop = t.vars.horizontal ? \"offsetWidth\" : \"offsetHeight\",\n original = t.pin[prop];\n t.revert(true, 1);\n t.adjustPinSpacing(t.pin[prop] - original);\n t.refresh();\n }\n });\n\n _clampingMax = 1; // pinSpacing might be propping a page open, thus when we .setPositions() to clamp a ScrollTrigger's end we should leave the pinSpacing alone. That's what this flag is for.\n\n _hideAllMarkers(true);\n\n _triggers.forEach(function (t) {\n // the scroller's max scroll position may change after all the ScrollTriggers refreshed (like pinning could push it down), so we need to loop back and correct any with end: \"max\". Same for anything with a clamped end\n var max = _maxScroll(t.scroller, t._dir),\n endClamp = t.vars.end === \"max\" || t._endClamp && t.end > max,\n startClamp = t._startClamp && t.start >= max;\n\n (endClamp || startClamp) && t.setPositions(startClamp ? max - 1 : t.start, endClamp ? Math.max(startClamp ? max : t.start + 1, max) : t.end, true);\n });\n\n _hideAllMarkers(false);\n\n _clampingMax = 0;\n refreshInits.forEach(function (result) {\n return result && result.render && result.render(-1);\n }); // if the onRefreshInit() returns an animation (typically a gsap.set()), revert it. This makes it easy to put things in a certain spot before refreshing for measurement purposes, and then put things back.\n\n _scrollers.forEach(function (obj) {\n if (_isFunction(obj)) {\n obj.smooth && requestAnimationFrame(function () {\n return obj.target.style.scrollBehavior = \"smooth\";\n });\n obj.rec && obj(obj.rec);\n }\n });\n\n _clearScrollMemory(_scrollRestoration, 1);\n\n _resizeDelay.pause();\n\n _refreshID++;\n _refreshingAll = 2;\n\n _updateAll(2);\n\n _triggers.forEach(function (t) {\n return _isFunction(t.vars.onRefresh) && t.vars.onRefresh(t);\n });\n\n _refreshingAll = ScrollTrigger.isRefreshing = false;\n\n _dispatch(\"refresh\");\n},\n _lastScroll = 0,\n _direction = 1,\n _primary,\n _updateAll = function _updateAll(force) {\n if (force === 2 || !_refreshingAll && !_isReverted) {\n // _isReverted could be true if, for example, a matchMedia() is in the process of executing. We don't want to update during the time everything is reverted.\n ScrollTrigger.isUpdating = true;\n _primary && _primary.update(0); // ScrollSmoother uses refreshPriority -9999 to become the primary that gets updated before all others because it affects the scroll position.\n\n var l = _triggers.length,\n time = _getTime(),\n recordVelocity = time - _time1 >= 50,\n scroll = l && _triggers[0].scroll();\n\n _direction = _lastScroll > scroll ? -1 : 1;\n _refreshingAll || (_lastScroll = scroll);\n\n if (recordVelocity) {\n if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {\n _lastScrollTime = 0;\n\n _dispatch(\"scrollEnd\");\n }\n\n _time2 = _time1;\n _time1 = time;\n }\n\n if (_direction < 0) {\n _i = l;\n\n while (_i-- > 0) {\n _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n }\n\n _direction = 1;\n } else {\n for (_i = 0; _i < l; _i++) {\n _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n }\n }\n\n ScrollTrigger.isUpdating = false;\n }\n\n _rafID = 0;\n},\n _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, \"display\", \"flexShrink\", \"float\", \"zIndex\", \"gridColumnStart\", \"gridColumnEnd\", \"gridRowStart\", \"gridRowEnd\", \"gridArea\", \"justifySelf\", \"alignSelf\", \"placeSelf\", \"order\"],\n _stateProps = _propNamesToCopy.concat([_width, _height, \"boxSizing\", \"max\" + _Width, \"max\" + _Height, \"position\", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]),\n _swapPinOut = function _swapPinOut(pin, spacer, state) {\n _setState(state);\n\n var cache = pin._gsap;\n\n if (cache.spacerIsNative) {\n _setState(cache.spacerState);\n } else if (pin._gsap.swappedIn) {\n var parent = spacer.parentNode;\n\n if (parent) {\n parent.insertBefore(pin, spacer);\n parent.removeChild(spacer);\n }\n }\n\n pin._gsap.swappedIn = false;\n},\n _swapPinIn = function _swapPinIn(pin, spacer, cs, spacerState) {\n if (!pin._gsap.swappedIn) {\n var i = _propNamesToCopy.length,\n spacerStyle = spacer.style,\n pinStyle = pin.style,\n p;\n\n while (i--) {\n p = _propNamesToCopy[i];\n spacerStyle[p] = cs[p];\n }\n\n spacerStyle.position = cs.position === \"absolute\" ? \"absolute\" : \"relative\";\n cs.display === \"inline\" && (spacerStyle.display = \"inline-block\");\n pinStyle[_bottom] = pinStyle[_right] = \"auto\";\n spacerStyle.flexBasis = cs.flexBasis || \"auto\";\n spacerStyle.overflow = \"visible\";\n spacerStyle.boxSizing = \"border-box\";\n spacerStyle[_width] = _getSize(pin, _horizontal) + _px;\n spacerStyle[_height] = _getSize(pin, _vertical) + _px;\n spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = \"0\";\n\n _setState(spacerState);\n\n pinStyle[_width] = pinStyle[\"max\" + _Width] = cs[_width];\n pinStyle[_height] = pinStyle[\"max\" + _Height] = cs[_height];\n pinStyle[_padding] = cs[_padding];\n\n if (pin.parentNode !== spacer) {\n pin.parentNode.insertBefore(spacer, pin);\n spacer.appendChild(pin);\n }\n\n pin._gsap.swappedIn = true;\n }\n},\n _capsExp = /([A-Z])/g,\n _setState = function _setState(state) {\n if (state) {\n var style = state.t.style,\n l = state.length,\n i = 0,\n p,\n value;\n (state.t._gsap || gsap.core.getCache(state.t)).uncache = 1; // otherwise transforms may be off\n\n for (; i < l; i += 2) {\n value = state[i + 1];\n p = state[i];\n\n if (value) {\n style[p] = value;\n } else if (style[p]) {\n style.removeProperty(p.replace(_capsExp, \"-$1\").toLowerCase());\n }\n }\n }\n},\n _getState = function _getState(element) {\n // returns an Array with alternating values like [property, value, property, value] and a \"t\" property pointing to the target (element). Makes it fast and cheap.\n var l = _stateProps.length,\n style = element.style,\n state = [],\n i = 0;\n\n for (; i < l; i++) {\n state.push(_stateProps[i], style[_stateProps[i]]);\n }\n\n state.t = element;\n return state;\n},\n _copyState = function _copyState(state, override, omitOffsets) {\n var result = [],\n l = state.length,\n i = omitOffsets ? 8 : 0,\n // skip top, left, right, bottom if omitOffsets is true\n p;\n\n for (; i < l; i += 2) {\n p = state[i];\n result.push(p, p in override ? override[p] : state[i + 1]);\n }\n\n result.t = state.t;\n return result;\n},\n _winOffsets = {\n left: 0,\n top: 0\n},\n // // potential future feature (?) Allow users to calculate where a trigger hits (scroll position) like getScrollPosition(\"#id\", \"top bottom\")\n// _getScrollPosition = (trigger, position, {scroller, containerAnimation, horizontal}) => {\n// \tscroller = _getTarget(scroller || _win);\n// \tlet direction = horizontal ? _horizontal : _vertical,\n// \t\tisViewport = _isViewport(scroller);\n// \t_getSizeFunc(scroller, isViewport, direction);\n// \treturn _parsePosition(position, _getTarget(trigger), _getSizeFunc(scroller, isViewport, direction)(), direction, _getScrollFunc(scroller, direction)(), 0, 0, 0, _getOffsetsFunc(scroller, isViewport)(), isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0, 0, containerAnimation ? containerAnimation.duration() : _maxScroll(scroller), containerAnimation);\n// },\n_parsePosition = function _parsePosition(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation, clampZeroProp) {\n _isFunction(value) && (value = value(self));\n\n if (_isString(value) && value.substr(0, 3) === \"max\") {\n value = scrollerMax + (value.charAt(4) === \"=\" ? _offsetToPx(\"0\" + value.substr(3), scrollerSize) : 0);\n }\n\n var time = containerAnimation ? containerAnimation.time() : 0,\n p1,\n p2,\n element;\n containerAnimation && containerAnimation.seek(0);\n isNaN(value) || (value = +value); // convert a string number like \"45\" to an actual number\n\n if (!_isNumber(value)) {\n _isFunction(trigger) && (trigger = trigger(self));\n var offsets = (value || \"0\").split(\" \"),\n bounds,\n localOffset,\n globalOffset,\n display;\n element = _getTarget(trigger, self) || _body;\n bounds = _getBounds(element) || {};\n\n if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === \"none\") {\n // if display is \"none\", it won't report getBoundingClientRect() properly\n display = element.style.display;\n element.style.display = \"block\";\n bounds = _getBounds(element);\n display ? element.style.display = display : element.style.removeProperty(\"display\");\n }\n\n localOffset = _offsetToPx(offsets[0], bounds[direction.d]);\n globalOffset = _offsetToPx(offsets[1] || \"0\", scrollerSize);\n value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;\n markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);\n scrollerSize -= scrollerSize - globalOffset; // adjust for the marker\n } else {\n containerAnimation && (value = gsap.utils.mapRange(containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, 0, scrollerMax, value));\n markerScroller && _positionMarker(markerScroller, scrollerSize, direction, true);\n }\n\n if (clampZeroProp) {\n self[clampZeroProp] = value || -0.001;\n value < 0 && (value = 0);\n }\n\n if (marker) {\n var position = value + scrollerSize,\n isStart = marker._isStart;\n p1 = \"scroll\" + direction.d2;\n\n _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[p1], _docEl[p1]) : marker.parentNode[p1]) <= position + 1);\n\n if (useFixedPosition) {\n scrollerBounds = _getBounds(markerScroller);\n useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);\n }\n }\n\n if (containerAnimation && element) {\n p1 = _getBounds(element);\n containerAnimation.seek(scrollerMax);\n p2 = _getBounds(element);\n containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p];\n value = value / containerAnimation._caScrollDist * scrollerMax;\n }\n\n containerAnimation && containerAnimation.seek(time);\n return containerAnimation ? value : Math.round(value);\n},\n _prefixExp = /(webkit|moz|length|cssText|inset)/i,\n _reparent = function _reparent(element, parent, top, left) {\n if (element.parentNode !== parent) {\n var style = element.style,\n p,\n cs;\n\n if (parent === _body) {\n element._stOrig = style.cssText; // record original inline styles so we can revert them later\n\n cs = _getComputedStyle(element);\n\n for (p in cs) {\n // must copy all relevant styles to ensure that nothing changes visually when we reparent to the . Skip the vendor prefixed ones.\n if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === \"string\" && p !== \"0\") {\n style[p] = cs[p];\n }\n }\n\n style.top = top;\n style.left = left;\n } else {\n style.cssText = element._stOrig;\n }\n\n gsap.core.getCache(element).uncache = 1;\n parent.appendChild(element);\n }\n},\n _interruptionTracker = function _interruptionTracker(getValueFunc, initialValue, onInterrupt) {\n var last1 = initialValue,\n last2 = last1;\n return function (value) {\n var current = Math.round(getValueFunc()); // round because in some [very uncommon] Windows environments, scroll can get reported with decimals even though it was set without.\n\n if (current !== last1 && current !== last2 && Math.abs(current - last1) > 3 && Math.abs(current - last2) > 3) {\n // if the user scrolls, kill the tween. iOS Safari intermittently misreports the scroll position, it may be the most recently-set one or the one before that! When Safari is zoomed (CMD-+), it often misreports as 1 pixel off too! So if we set the scroll position to 125, for example, it'll actually report it as 124.\n value = current;\n onInterrupt && onInterrupt();\n }\n\n last2 = last1;\n last1 = value;\n return value;\n };\n},\n _shiftMarker = function _shiftMarker(marker, direction, value) {\n var vars = {};\n vars[direction.p] = \"+=\" + value;\n gsap.set(marker, vars);\n},\n // _mergeAnimations = animations => {\n// \tlet tl = gsap.timeline({smoothChildTiming: true}).startTime(Math.min(...animations.map(a => a.globalTime(0))));\n// \tanimations.forEach(a => {let time = a.totalTime(); tl.add(a); a.totalTime(time); });\n// \ttl.smoothChildTiming = false;\n// \treturn tl;\n// },\n// returns a function that can be used to tween the scroll position in the direction provided, and when doing so it'll add a .tween property to the FUNCTION itself, and remove it when the tween completes or gets killed. This gives us a way to have multiple ScrollTriggers use a central function for any given scroller and see if there's a scroll tween running (which would affect if/how things get updated)\n_getTweenCreator = function _getTweenCreator(scroller, direction) {\n var getScroll = _getScrollFunc(scroller, direction),\n prop = \"_scroll\" + direction.p2,\n // add a tweenable property to the scroller that's a getter/setter function, like _scrollTop or _scrollLeft. This way, if someone does gsap.killTweensOf(scroller) it'll kill the scroll tween.\n getTween = function getTween(scrollTo, vars, initialValue, change1, change2) {\n var tween = getTween.tween,\n onComplete = vars.onComplete,\n modifiers = {};\n initialValue = initialValue || getScroll();\n\n var checkForInterruption = _interruptionTracker(getScroll, initialValue, function () {\n tween.kill();\n getTween.tween = 0;\n });\n\n change2 = change1 && change2 || 0; // if change1 is 0, we set that to the difference and ignore change2. Otherwise, there would be a compound effect.\n\n change1 = change1 || scrollTo - initialValue;\n tween && tween.kill();\n vars[prop] = scrollTo;\n vars.modifiers = modifiers;\n\n modifiers[prop] = function () {\n return checkForInterruption(initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio);\n };\n\n vars.onUpdate = function () {\n _scrollers.cache++;\n getTween.tween && _updateAll(); // if it was interrupted/killed, like in a context.revert(), don't force an updateAll()\n };\n\n vars.onComplete = function () {\n getTween.tween = 0;\n onComplete && onComplete.call(tween);\n };\n\n tween = getTween.tween = gsap.to(scroller, vars);\n return tween;\n };\n\n scroller[prop] = getScroll;\n\n getScroll.wheelHandler = function () {\n return getTween.tween && getTween.tween.kill() && (getTween.tween = 0);\n };\n\n _addListener(scroller, \"wheel\", getScroll.wheelHandler); // Windows machines handle mousewheel scrolling in chunks (like \"3 lines per scroll\") meaning the typical strategy for cancelling the scroll isn't as sensitive. It's much more likely to match one of the previous 2 scroll event positions. So we kill any snapping as soon as there's a wheel event.\n\n\n ScrollTrigger.isTouch && _addListener(scroller, \"touchmove\", getScroll.wheelHandler);\n return getTween;\n};\n\nexport var ScrollTrigger = /*#__PURE__*/function () {\n function ScrollTrigger(vars, animation) {\n _coreInitted || ScrollTrigger.register(gsap) || console.warn(\"Please gsap.registerPlugin(ScrollTrigger)\");\n\n _context(this);\n\n this.init(vars, animation);\n }\n\n var _proto = ScrollTrigger.prototype;\n\n _proto.init = function init(vars, animation) {\n this.progress = this.start = 0;\n this.vars && this.kill(true, true); // in case it's being initted again\n\n if (!_enabled) {\n this.update = this.refresh = this.kill = _passThrough;\n return;\n }\n\n vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? {\n trigger: vars\n } : vars, _defaults);\n\n var _vars = vars,\n onUpdate = _vars.onUpdate,\n toggleClass = _vars.toggleClass,\n id = _vars.id,\n onToggle = _vars.onToggle,\n onRefresh = _vars.onRefresh,\n scrub = _vars.scrub,\n trigger = _vars.trigger,\n pin = _vars.pin,\n pinSpacing = _vars.pinSpacing,\n invalidateOnRefresh = _vars.invalidateOnRefresh,\n anticipatePin = _vars.anticipatePin,\n onScrubComplete = _vars.onScrubComplete,\n onSnapComplete = _vars.onSnapComplete,\n once = _vars.once,\n snap = _vars.snap,\n pinReparent = _vars.pinReparent,\n pinSpacer = _vars.pinSpacer,\n containerAnimation = _vars.containerAnimation,\n fastScrollEnd = _vars.fastScrollEnd,\n preventOverlaps = _vars.preventOverlaps,\n direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _horizontal : _vertical,\n isToggle = !scrub && scrub !== 0,\n scroller = _getTarget(vars.scroller || _win),\n scrollerCache = gsap.core.getCache(scroller),\n isViewport = _isViewport(scroller),\n useFixedPosition = (\"pinType\" in vars ? vars.pinType : _getProxyProp(scroller, \"pinType\") || isViewport && \"fixed\") === \"fixed\",\n callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],\n toggleActions = isToggle && vars.toggleActions.split(\" \"),\n markers = \"markers\" in vars ? vars.markers : _defaults.markers,\n borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0,\n self = this,\n onRefreshInit = vars.onRefreshInit && function () {\n return vars.onRefreshInit(self);\n },\n getScrollerSize = _getSizeFunc(scroller, isViewport, direction),\n getScrollerOffsets = _getOffsetsFunc(scroller, isViewport),\n lastSnap = 0,\n lastRefresh = 0,\n prevProgress = 0,\n scrollFunc = _getScrollFunc(scroller, direction),\n tweenTo,\n pinCache,\n snapFunc,\n scroll1,\n scroll2,\n start,\n end,\n markerStart,\n markerEnd,\n markerStartTrigger,\n markerEndTrigger,\n markerVars,\n executingOnRefresh,\n change,\n pinOriginalState,\n pinActiveState,\n pinState,\n spacer,\n offset,\n pinGetter,\n pinSetter,\n pinStart,\n pinChange,\n spacingStart,\n spacerState,\n markerStartSetter,\n pinMoves,\n markerEndSetter,\n cs,\n snap1,\n snap2,\n scrubTween,\n scrubSmooth,\n snapDurClamp,\n snapDelayedCall,\n prevScroll,\n prevAnimProgress,\n caMarkerSetter,\n customRevertReturn; // for the sake of efficiency, _startClamp/_endClamp serve like a truthy value indicating that clamping was enabled on the start/end, and ALSO store the actual pre-clamped numeric value. We tap into that in ScrollSmoother for speed effects. So for example, if start=\"clamp(top bottom)\" results in a start of -100 naturally, it would get clamped to 0 but -100 would be stored in _startClamp.\n\n\n self._startClamp = self._endClamp = false;\n self._dir = direction;\n anticipatePin *= 45;\n self.scroller = scroller;\n self.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc;\n scroll1 = scrollFunc();\n self.vars = vars;\n animation = animation || vars.animation;\n\n if (\"refreshPriority\" in vars) {\n _sort = 1;\n vars.refreshPriority === -9999 && (_primary = self); // used by ScrollSmoother\n }\n\n scrollerCache.tweenScroll = scrollerCache.tweenScroll || {\n top: _getTweenCreator(scroller, _vertical),\n left: _getTweenCreator(scroller, _horizontal)\n };\n self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];\n\n self.scrubDuration = function (value) {\n scrubSmooth = _isNumber(value) && value;\n\n if (!scrubSmooth) {\n scrubTween && scrubTween.progress(1).kill();\n scrubTween = 0;\n } else {\n scrubTween ? scrubTween.duration(value) : scrubTween = gsap.to(animation, {\n ease: \"expo\",\n totalProgress: \"+=0\",\n duration: scrubSmooth,\n paused: true,\n onComplete: function onComplete() {\n return onScrubComplete && onScrubComplete(self);\n }\n });\n }\n };\n\n if (animation) {\n animation.vars.lazy = false;\n animation._initted && !self.isReverted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.duration() && animation.render(0, true, true); // special case: if this ScrollTrigger gets re-initted, a from() tween with a stagger could get initted initially and then reverted on the re-init which means it'll need to get rendered again here to properly display things. Otherwise, See https://gsap.com/forums/topic/36777-scrollsmoother-splittext-nextjs/ and https://codepen.io/GreenSock/pen/eYPyPpd?editors=0010\n\n self.animation = animation.pause();\n animation.scrollTrigger = self;\n self.scrubDuration(scrub);\n snap1 = 0;\n id || (id = animation.vars.id);\n }\n\n if (snap) {\n // TODO: potential idea: use legitimate CSS scroll snapping by pushing invisible elements into the DOM that serve as snap positions, and toggle the document.scrollingElement.style.scrollSnapType onToggle. See https://codepen.io/GreenSock/pen/JjLrgWM for a quick proof of concept.\n if (!_isObject(snap) || snap.push) {\n snap = {\n snapTo: snap\n };\n }\n\n \"scrollBehavior\" in _body.style && gsap.set(isViewport ? [_body, _docEl] : scroller, {\n scrollBehavior: \"auto\"\n }); // smooth scrolling doesn't work with snap.\n\n _scrollers.forEach(function (o) {\n return _isFunction(o) && o.target === (isViewport ? _doc.scrollingElement || _docEl : scroller) && (o.smooth = false);\n }); // note: set smooth to false on both the vertical and horizontal scroll getters/setters\n\n\n snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === \"labels\" ? _getClosestLabel(animation) : snap.snapTo === \"labelsDirectional\" ? _getLabelAtDirection(animation) : snap.directional !== false ? function (value, st) {\n return _snapDirectional(snap.snapTo)(value, _getTime() - lastRefresh < 500 ? 0 : st.direction);\n } : gsap.utils.snap(snap.snapTo);\n snapDurClamp = snap.duration || {\n min: 0.1,\n max: 2\n };\n snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp);\n snapDelayedCall = gsap.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function () {\n var scroll = scrollFunc(),\n refreshedRecently = _getTime() - lastRefresh < 500,\n tween = tweenTo.tween;\n\n if ((refreshedRecently || Math.abs(self.getVelocity()) < 10) && !tween && !_pointerIsDown && lastSnap !== scroll) {\n var progress = (scroll - start) / change,\n totalProgress = animation && !isToggle ? animation.totalProgress() : progress,\n velocity = refreshedRecently ? 0 : (totalProgress - snap2) / (_getTime() - _time2) * 1000 || 0,\n change1 = gsap.utils.clamp(-progress, 1 - progress, _abs(velocity / 2) * velocity / 0.185),\n naturalEnd = progress + (snap.inertia === false ? 0 : change1),\n endValue = _clamp(0, 1, snapFunc(naturalEnd, self)),\n endScroll = Math.round(start + endValue * change),\n _snap = snap,\n onStart = _snap.onStart,\n _onInterrupt = _snap.onInterrupt,\n _onComplete = _snap.onComplete;\n\n if (scroll <= end && scroll >= start && endScroll !== scroll) {\n if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) {\n // there's an overlapping snap! So we must figure out which one is closer and let that tween live.\n return;\n }\n\n if (snap.inertia === false) {\n change1 = endValue - progress;\n }\n\n tweenTo(endScroll, {\n duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),\n ease: snap.ease || \"power3\",\n data: _abs(endScroll - scroll),\n // record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap.\n onInterrupt: function onInterrupt() {\n return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self);\n },\n onComplete: function onComplete() {\n self.update();\n lastSnap = scrollFunc();\n scrubTween && animation && animation.progress(endValue); // the resolution of the scrollbar is limited, so we should correct the scrubbed animation's playhead at the end to match EXACTLY where it was supposed to snap\n\n snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;\n onSnapComplete && onSnapComplete(self);\n _onComplete && _onComplete(self);\n }\n }, scroll, change1 * change, endScroll - scroll - change1 * change);\n onStart && onStart(self, tweenTo.tween);\n }\n } else if (self.isActive && lastSnap !== scroll) {\n snapDelayedCall.restart(true);\n }\n }).pause();\n }\n\n id && (_ids[id] = self);\n trigger = self.trigger = _getTarget(trigger || pin !== true && pin); // if a trigger has some kind of scroll-related effect applied that could contaminate the \"y\" or \"x\" position (like a ScrollSmoother effect), we needed a way to temporarily revert it, so we use the stRevert property of the gsCache. It can return another function that we'll call at the end so it can return to its normal state.\n\n customRevertReturn = trigger && trigger._gsap && trigger._gsap.stRevert;\n customRevertReturn && (customRevertReturn = customRevertReturn(self));\n pin = pin === true ? trigger : _getTarget(pin);\n _isString(toggleClass) && (toggleClass = {\n targets: trigger,\n className: toggleClass\n });\n\n if (pin) {\n pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && pin.parentNode && pin.parentNode.style && _getComputedStyle(pin.parentNode).display === \"flex\" ? false : _padding); // if the parent is display: flex, don't apply pinSpacing by default. We should check that pin.parentNode is an element (not shadow dom window)\n\n self.pin = pin;\n pinCache = gsap.core.getCache(pin);\n\n if (!pinCache.spacer) {\n // record the spacer and pinOriginalState on the cache in case someone tries pinning the same element with MULTIPLE ScrollTriggers - we don't want to have multiple spacers or record the \"original\" pin state after it has already been affected by another ScrollTrigger.\n if (pinSpacer) {\n pinSpacer = _getTarget(pinSpacer);\n pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement); // for React & Angular\n\n pinCache.spacerIsNative = !!pinSpacer;\n pinSpacer && (pinCache.spacerState = _getState(pinSpacer));\n }\n\n pinCache.spacer = spacer = pinSpacer || _doc.createElement(\"div\");\n spacer.classList.add(\"pin-spacer\");\n id && spacer.classList.add(\"pin-spacer-\" + id);\n pinCache.pinState = pinOriginalState = _getState(pin);\n } else {\n pinOriginalState = pinCache.pinState;\n }\n\n vars.force3D !== false && gsap.set(pin, {\n force3D: true\n });\n self.spacer = spacer = pinCache.spacer;\n cs = _getComputedStyle(pin);\n spacingStart = cs[pinSpacing + direction.os2];\n pinGetter = gsap.getProperty(pin);\n pinSetter = gsap.quickSetter(pin, direction.a, _px); // pin.firstChild && !_maxScroll(pin, direction) && (pin.style.overflow = \"hidden\"); // protects from collapsing margins, but can have unintended consequences as demonstrated here: https://codepen.io/GreenSock/pen/1e42c7a73bfa409d2cf1e184e7a4248d so it was removed in favor of just telling people to set up their CSS to avoid the collapsing margins (overflow: hidden | auto is just one option. Another is border-top: 1px solid transparent).\n\n _swapPinIn(pin, spacer, cs);\n\n pinState = _getState(pin);\n }\n\n if (markers) {\n markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;\n markerStartTrigger = _createMarker(\"scroller-start\", id, scroller, direction, markerVars, 0);\n markerEndTrigger = _createMarker(\"scroller-end\", id, scroller, direction, markerVars, 0, markerStartTrigger);\n offset = markerStartTrigger[\"offset\" + direction.op.d2];\n\n var content = _getTarget(_getProxyProp(scroller, \"content\") || scroller);\n\n markerStart = this.markerStart = _createMarker(\"start\", id, content, direction, markerVars, offset, 0, containerAnimation);\n markerEnd = this.markerEnd = _createMarker(\"end\", id, content, direction, markerVars, offset, 0, containerAnimation);\n containerAnimation && (caMarkerSetter = gsap.quickSetter([markerStart, markerEnd], direction.a, _px));\n\n if (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, \"fixedMarkers\") === true)) {\n _makePositionable(isViewport ? _body : scroller);\n\n gsap.set([markerStartTrigger, markerEndTrigger], {\n force3D: true\n });\n markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px);\n markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px);\n }\n }\n\n if (containerAnimation) {\n var oldOnUpdate = containerAnimation.vars.onUpdate,\n oldParams = containerAnimation.vars.onUpdateParams;\n containerAnimation.eventCallback(\"onUpdate\", function () {\n self.update(0, 0, 1);\n oldOnUpdate && oldOnUpdate.apply(containerAnimation, oldParams || []);\n });\n }\n\n self.previous = function () {\n return _triggers[_triggers.indexOf(self) - 1];\n };\n\n self.next = function () {\n return _triggers[_triggers.indexOf(self) + 1];\n };\n\n self.revert = function (revert, temp) {\n if (!temp) {\n return self.kill(true);\n } // for compatibility with gsap.context() and gsap.matchMedia() which call revert()\n\n\n var r = revert !== false || !self.enabled,\n prevRefreshing = _refreshing;\n\n if (r !== self.isReverted) {\n if (r) {\n prevScroll = Math.max(scrollFunc(), self.scroll.rec || 0); // record the scroll so we can revert later (repositioning/pinning things can affect scroll position). In the static refresh() method, we first record all the scroll positions as a reference.\n\n prevProgress = self.progress;\n prevAnimProgress = animation && animation.progress();\n }\n\n markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n return m.style.display = r ? \"none\" : \"block\";\n });\n\n if (r) {\n _refreshing = self;\n self.update(r); // make sure the pin is back in its original position so that all the measurements are correct. do this BEFORE swapping the pin out\n }\n\n if (pin && (!pinReparent || !self.isActive)) {\n if (r) {\n _swapPinOut(pin, spacer, pinOriginalState);\n } else {\n _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState);\n }\n }\n\n r || self.update(r); // when we're restoring, the update should run AFTER swapping the pin into its pin-spacer.\n\n _refreshing = prevRefreshing; // restore. We set it to true during the update() so that things fire properly in there.\n\n self.isReverted = r;\n }\n };\n\n self.refresh = function (soft, force, position, pinOffset) {\n // position is typically only defined if it's coming from setPositions() - it's a way to skip the normal parsing. pinOffset is also only from setPositions() and is mostly related to fancy stuff we need to do in ScrollSmoother with effects\n if ((_refreshing || !self.enabled) && !force) {\n return;\n }\n\n if (pin && soft && _lastScrollTime) {\n _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n return;\n }\n\n !_refreshingAll && onRefreshInit && onRefreshInit(self);\n _refreshing = self;\n\n if (tweenTo.tween && !position) {\n // we skip this if a position is passed in because typically that's from .setPositions() and it's best to allow in-progress snapping to continue.\n tweenTo.tween.kill();\n tweenTo.tween = 0;\n }\n\n scrubTween && scrubTween.pause();\n invalidateOnRefresh && animation && animation.revert({\n kill: false\n }).invalidate();\n self.isReverted || self.revert(true, true);\n self._subPinOffset = false; // we'll set this to true in the sub-pins if we find any\n\n var size = getScrollerSize(),\n scrollerBounds = getScrollerOffsets(),\n max = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction),\n isFirstRefresh = change <= 0.01,\n offset = 0,\n otherPinOffset = pinOffset || 0,\n parsedEnd = _isObject(position) ? position.end : vars.end,\n parsedEndTrigger = vars.endTrigger || trigger,\n parsedStart = _isObject(position) ? position.start : vars.start || (vars.start === 0 || !trigger ? 0 : pin ? \"0 0\" : \"0 100%\"),\n pinnedContainer = self.pinnedContainer = vars.pinnedContainer && _getTarget(vars.pinnedContainer, self),\n triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0,\n i = triggerIndex,\n cs,\n bounds,\n scroll,\n isVertical,\n override,\n curTrigger,\n curPin,\n oppositeScroll,\n initted,\n revertedPins,\n forcedOverflow,\n markerStartOffset,\n markerEndOffset;\n\n if (markers && _isObject(position)) {\n // if we alter the start/end positions with .setPositions(), it generally feeds in absolute NUMBERS which don't convey information about where to line up the markers, so to keep it intuitive, we record how far the trigger positions shift after applying the new numbers and then offset by that much in the opposite direction. We do the same to the associated trigger markers too of course.\n markerStartOffset = gsap.getProperty(markerStartTrigger, direction.p);\n markerEndOffset = gsap.getProperty(markerEndTrigger, direction.p);\n }\n\n while (i--) {\n // user might try to pin the same element more than once, so we must find any prior triggers with the same pin, revert them, and determine how long they're pinning so that we can offset things appropriately. Make sure we revert from last to first so that things \"rewind\" properly.\n curTrigger = _triggers[i];\n curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = self); // if it's a timeline-based trigger that hasn't been fully initialized yet because it's waiting for 1 tick, just force the refresh() here, otherwise if it contains a pin that's supposed to affect other ScrollTriggers further down the page, they won't be adjusted properly.\n\n curPin = curTrigger.pin;\n\n if (curPin && (curPin === trigger || curPin === pin || curPin === pinnedContainer) && !curTrigger.isReverted) {\n revertedPins || (revertedPins = []);\n revertedPins.unshift(curTrigger); // we'll revert from first to last to make sure things reach their end state properly\n\n curTrigger.revert(true, true);\n }\n\n if (curTrigger !== _triggers[i]) {\n // in case it got removed.\n triggerIndex--;\n i--;\n }\n }\n\n _isFunction(parsedStart) && (parsedStart = parsedStart(self));\n parsedStart = _parseClamp(parsedStart, \"start\", self);\n start = _parsePosition(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._startClamp && \"_startClamp\") || (pin ? -0.001 : 0);\n _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));\n\n if (_isString(parsedEnd) && !parsedEnd.indexOf(\"+=\")) {\n if (~parsedEnd.indexOf(\" \")) {\n parsedEnd = (_isString(parsedStart) ? parsedStart.split(\" \")[0] : \"\") + parsedEnd;\n } else {\n offset = _offsetToPx(parsedEnd.substr(2), size);\n parsedEnd = _isString(parsedStart) ? parsedStart : (containerAnimation ? gsap.utils.mapRange(0, containerAnimation.duration(), containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, start) : start) + offset; // _parsePosition won't factor in the offset if the start is a number, so do it here.\n\n parsedEndTrigger = trigger;\n }\n }\n\n parsedEnd = _parseClamp(parsedEnd, \"end\", self);\n end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? \"100% 0\" : max), parsedEndTrigger, size, direction, scrollFunc() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._endClamp && \"_endClamp\")) || -0.001;\n offset = 0;\n i = triggerIndex;\n\n while (i--) {\n curTrigger = _triggers[i];\n curPin = curTrigger.pin;\n\n if (curPin && curTrigger.start - curTrigger._pinPush <= start && !containerAnimation && curTrigger.end > 0) {\n cs = curTrigger.end - (self._startClamp ? Math.max(0, curTrigger.start) : curTrigger.start);\n\n if ((curPin === trigger && curTrigger.start - curTrigger._pinPush < start || curPin === pinnedContainer) && isNaN(parsedStart)) {\n // numeric start values shouldn't be offset at all - treat them as absolute\n offset += cs * (1 - curTrigger.progress);\n }\n\n curPin === pin && (otherPinOffset += cs);\n }\n }\n\n start += offset;\n end += offset;\n self._startClamp && (self._startClamp += offset);\n\n if (self._endClamp && !_refreshingAll) {\n self._endClamp = end || -0.001;\n end = Math.min(end, _maxScroll(scroller, direction));\n }\n\n change = end - start || (start -= 0.01) && 0.001;\n\n if (isFirstRefresh) {\n // on the very first refresh(), the prevProgress couldn't have been accurate yet because the start/end were never calculated, so we set it here. Before 3.11.5, it could lead to an inaccurate scroll position restoration with snapping.\n prevProgress = gsap.utils.clamp(0, 1, gsap.utils.normalize(start, end, prevScroll));\n }\n\n self._pinPush = otherPinOffset;\n\n if (markerStart && offset) {\n // offset the markers if necessary\n cs = {};\n cs[direction.a] = \"+=\" + offset;\n pinnedContainer && (cs[direction.p] = \"-=\" + scrollFunc());\n gsap.set([markerStart, markerEnd], cs);\n }\n\n if (pin && !(_clampingMax && self.end >= _maxScroll(scroller, direction))) {\n cs = _getComputedStyle(pin);\n isVertical = direction === _vertical;\n scroll = scrollFunc(); // recalculate because the triggers can affect the scroll\n\n pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;\n\n if (!max && end > 1) {\n // makes sure the scroller has a scrollbar, otherwise if something has width: 100%, for example, it would be too big (exclude the scrollbar). See https://gsap.com/forums/topic/25182-scrolltrigger-width-of-page-increase-where-markers-are-set-to-false/\n forcedOverflow = (isViewport ? _doc.scrollingElement || _docEl : scroller).style;\n forcedOverflow = {\n style: forcedOverflow,\n value: forcedOverflow[\"overflow\" + direction.a.toUpperCase()]\n };\n\n if (isViewport && _getComputedStyle(_body)[\"overflow\" + direction.a.toUpperCase()] !== \"scroll\") {\n // avoid an extra scrollbar if BOTH and have overflow set to \"scroll\"\n forcedOverflow.style[\"overflow\" + direction.a.toUpperCase()] = \"scroll\";\n }\n }\n\n _swapPinIn(pin, spacer, cs);\n\n pinState = _getState(pin); // transforms will interfere with the top/left/right/bottom placement, so remove them temporarily. getBoundingClientRect() factors in transforms.\n\n bounds = _getBounds(pin, true);\n oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)();\n\n if (pinSpacing) {\n spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];\n spacerState.t = spacer;\n i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;\n\n if (i) {\n spacerState.push(direction.d, i + _px); // for box-sizing: border-box (must include padding).\n\n spacer.style.flexBasis !== \"auto\" && (spacer.style.flexBasis = i + _px);\n }\n\n _setState(spacerState);\n\n if (pinnedContainer) {\n // in ScrollTrigger.refresh(), we need to re-evaluate the pinContainer's size because this pinSpacing may stretch it out, but we can't just add the exact distance because depending on layout, it may not push things down or it may only do so partially.\n _triggers.forEach(function (t) {\n if (t.pin === pinnedContainer && t.vars.pinSpacing !== false) {\n t._subPinOffset = true;\n }\n });\n }\n\n useFixedPosition && scrollFunc(prevScroll);\n }\n\n if (useFixedPosition) {\n override = {\n top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px,\n left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px,\n boxSizing: \"border-box\",\n position: \"fixed\"\n };\n override[_width] = override[\"max\" + _Width] = Math.ceil(bounds.width) + _px;\n override[_height] = override[\"max\" + _Height] = Math.ceil(bounds.height) + _px;\n override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = \"0\";\n override[_padding] = cs[_padding];\n override[_padding + _Top] = cs[_padding + _Top];\n override[_padding + _Right] = cs[_padding + _Right];\n override[_padding + _Bottom] = cs[_padding + _Bottom];\n override[_padding + _Left] = cs[_padding + _Left];\n pinActiveState = _copyState(pinOriginalState, override, pinReparent);\n _refreshingAll && scrollFunc(0);\n }\n\n if (animation) {\n // the animation might be affecting the transform, so we must jump to the end, check the value, and compensate accordingly. Otherwise, when it becomes unpinned, the pinSetter() will get set to a value that doesn't include whatever the animation did.\n initted = animation._initted; // if not, we must invalidate() after this step, otherwise it could lock in starting values prematurely.\n\n _suppressOverwrites(1);\n\n animation.render(animation.duration(), true, true);\n pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;\n pinMoves = Math.abs(change - pinChange) > 1;\n useFixedPosition && pinMoves && pinActiveState.splice(pinActiveState.length - 2, 2); // transform is the last property/value set in the state Array. Since the animation is controlling that, we should omit it.\n\n animation.render(0, true, true);\n initted || animation.invalidate(true);\n animation.parent || animation.totalTime(animation.totalTime()); // if, for example, a toggleAction called play() and then refresh() happens and when we render(1) above, it would cause the animation to complete and get removed from its parent, so this makes sure it gets put back in.\n\n _suppressOverwrites(0);\n } else {\n pinChange = change;\n }\n\n forcedOverflow && (forcedOverflow.value ? forcedOverflow.style[\"overflow\" + direction.a.toUpperCase()] = forcedOverflow.value : forcedOverflow.style.removeProperty(\"overflow-\" + direction.a));\n } else if (trigger && scrollFunc() && !containerAnimation) {\n // it may be INSIDE a pinned element, so walk up the tree and look for any elements with _pinOffset to compensate because anything with pinSpacing that's already scrolled would throw off the measurements in getBoundingClientRect()\n bounds = trigger.parentNode;\n\n while (bounds && bounds !== _body) {\n if (bounds._pinOffset) {\n start -= bounds._pinOffset;\n end -= bounds._pinOffset;\n }\n\n bounds = bounds.parentNode;\n }\n }\n\n revertedPins && revertedPins.forEach(function (t) {\n return t.revert(false, true);\n });\n self.start = start;\n self.end = end;\n scroll1 = scroll2 = _refreshingAll ? prevScroll : scrollFunc(); // reset velocity\n\n if (!containerAnimation && !_refreshingAll) {\n scroll1 < prevScroll && scrollFunc(prevScroll);\n self.scroll.rec = 0;\n }\n\n self.revert(false, true);\n lastRefresh = _getTime();\n\n if (snapDelayedCall) {\n lastSnap = -1; // just so snapping gets re-enabled, clear out any recorded last value\n // self.isActive && scrollFunc(start + change * prevProgress); // previously this line was here to ensure that when snapping kicks in, it's from the previous progress but in some cases that's not desirable, like an all-page ScrollTrigger when new content gets added to the page, that'd totally change the progress.\n\n snapDelayedCall.restart(true);\n }\n\n _refreshing = 0;\n animation && isToggle && (animation._initted || prevAnimProgress) && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress || 0, true).render(animation.time(), true, true); // must force a re-render because if saveStyles() was used on the target(s), the styles could have been wiped out during the refresh().\n\n if (isFirstRefresh || prevProgress !== self.progress || containerAnimation) {\n // ensures that the direction is set properly (when refreshing, progress is set back to 0 initially, then back again to wherever it needs to be) and that callbacks are triggered.\n animation && !isToggle && animation.totalProgress(containerAnimation && start < -0.001 && !prevProgress ? gsap.utils.normalize(start, end, 0) : prevProgress, true); // to avoid issues where animation callbacks like onStart aren't triggered.\n\n self.progress = isFirstRefresh || (scroll1 - start) / change === prevProgress ? 0 : prevProgress;\n }\n\n pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));\n scrubTween && scrubTween.invalidate();\n\n if (!isNaN(markerStartOffset)) {\n // numbers were passed in for the position which are absolute, so instead of just putting the markers at the very bottom of the viewport, we figure out how far they shifted down (it's safe to assume they were originally positioned in closer relation to the trigger element with values like \"top\", \"center\", a percentage or whatever, so we offset that much in the opposite direction to basically revert them to the relative position thy were at previously.\n markerStartOffset -= gsap.getProperty(markerStartTrigger, direction.p);\n markerEndOffset -= gsap.getProperty(markerEndTrigger, direction.p);\n\n _shiftMarker(markerStartTrigger, direction, markerStartOffset);\n\n _shiftMarker(markerStart, direction, markerStartOffset - (pinOffset || 0));\n\n _shiftMarker(markerEndTrigger, direction, markerEndOffset);\n\n _shiftMarker(markerEnd, direction, markerEndOffset - (pinOffset || 0));\n }\n\n isFirstRefresh && !_refreshingAll && self.update(); // edge case - when you reload a page when it's already scrolled down, some browsers fire a \"scroll\" event before DOMContentLoaded, triggering an updateAll(). If we don't update the self.progress as part of refresh(), then when it happens next, it may record prevProgress as 0 when it really shouldn't, potentially causing a callback in an animation to fire again.\n\n if (onRefresh && !_refreshingAll && !executingOnRefresh) {\n // when refreshing all, we do extra work to correct pinnedContainer sizes and ensure things don't exceed the maxScroll, so we should do all the refreshes at the end after all that work so that the start/end values are corrected.\n executingOnRefresh = true;\n onRefresh(self);\n executingOnRefresh = false;\n }\n };\n\n self.getVelocity = function () {\n return (scrollFunc() - scroll2) / (_getTime() - _time2) * 1000 || 0;\n };\n\n self.endAnimation = function () {\n _endAnimation(self.callbackAnimation);\n\n if (animation) {\n scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self.direction < 0, 1);\n }\n };\n\n self.labelToScroll = function (label) {\n return animation && animation.labels && (start || self.refresh() || start) + animation.labels[label] / animation.duration() * change || 0;\n };\n\n self.getTrailing = function (name) {\n var i = _triggers.indexOf(self),\n a = self.direction > 0 ? _triggers.slice(0, i).reverse() : _triggers.slice(i + 1);\n\n return (_isString(name) ? a.filter(function (t) {\n return t.vars.preventOverlaps === name;\n }) : a).filter(function (t) {\n return self.direction > 0 ? t.end <= start : t.start >= end;\n });\n };\n\n self.update = function (reset, recordVelocity, forceFake) {\n if (containerAnimation && !forceFake && !reset) {\n return;\n }\n\n var scroll = _refreshingAll === true ? prevScroll : self.scroll(),\n p = reset ? 0 : (scroll - start) / change,\n clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0,\n prevProgress = self.progress,\n isActive,\n wasActive,\n toggleState,\n action,\n stateChanged,\n toggled,\n isAtMax,\n isTakingAction;\n\n if (recordVelocity) {\n scroll2 = scroll1;\n scroll1 = containerAnimation ? scrollFunc() : scroll;\n\n if (snap) {\n snap2 = snap1;\n snap1 = animation && !isToggle ? animation.totalProgress() : clipped;\n }\n } // anticipate the pinning a few ticks ahead of time based on velocity to avoid a visual glitch due to the fact that most browsers do scrolling on a separate thread (not synced with requestAnimationFrame).\n\n\n anticipatePin && !clipped && pin && !_refreshing && !_startup && _lastScrollTime && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin && (clipped = 0.0001);\n\n if (clipped !== prevProgress && self.enabled) {\n isActive = self.isActive = !!clipped && clipped < 1;\n wasActive = !!prevProgress && prevProgress < 1;\n toggled = isActive !== wasActive;\n stateChanged = toggled || !!clipped !== !!prevProgress; // could go from start all the way to end, thus it didn't toggle but it did change state in a sense (may need to fire a callback)\n\n self.direction = clipped > prevProgress ? 1 : -1;\n self.progress = clipped;\n\n if (stateChanged && !_refreshing) {\n toggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3; // 0 = enter, 1 = leave, 2 = enterBack, 3 = leaveBack (we prioritize the FIRST encounter, thus if you scroll really fast past the onEnter and onLeave in one tick, it'd prioritize onEnter.\n\n if (isToggle) {\n action = !toggled && toggleActions[toggleState + 1] !== \"none\" && toggleActions[toggleState + 1] || toggleActions[toggleState]; // if it didn't toggle, that means it shot right past and since we prioritize the \"enter\" action, we should switch to the \"leave\" in this case (but only if one is defined)\n\n isTakingAction = animation && (action === \"complete\" || action === \"reset\" || action in animation);\n }\n }\n\n preventOverlaps && (toggled || isTakingAction) && (isTakingAction || scrub || !animation) && (_isFunction(preventOverlaps) ? preventOverlaps(self) : self.getTrailing(preventOverlaps).forEach(function (t) {\n return t.endAnimation();\n }));\n\n if (!isToggle) {\n if (scrubTween && !_refreshing && !_startup) {\n scrubTween._dp._time - scrubTween._start !== scrubTween._time && scrubTween.render(scrubTween._dp._time - scrubTween._start); // if there's a scrub on both the container animation and this one (or a ScrollSmoother), the update order would cause this one not to have rendered yet, so it wouldn't make any progress before we .restart() it heading toward the new progress so it'd appear stuck thus we force a render here.\n\n if (scrubTween.resetTo) {\n scrubTween.resetTo(\"totalProgress\", clipped, animation._tTime / animation._tDur);\n } else {\n // legacy support (courtesy), before 3.10.0\n scrubTween.vars.totalProgress = clipped;\n scrubTween.invalidate().restart();\n }\n } else if (animation) {\n animation.totalProgress(clipped, !!(_refreshing && (lastRefresh || reset)));\n }\n }\n\n if (pin) {\n reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);\n\n if (!useFixedPosition) {\n pinSetter(_round(pinStart + pinChange * clipped));\n } else if (stateChanged) {\n isAtMax = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); // if it's at the VERY end of the page, don't switch away from position: fixed because it's pointless and it could cause a brief flash when the user scrolls back up (when it gets pinned again)\n\n if (pinReparent) {\n if (!reset && (isActive || isAtMax)) {\n var bounds = _getBounds(pin, true),\n _offset = scroll - start;\n\n _reparent(pin, _body, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px);\n } else {\n _reparent(pin, spacer);\n }\n }\n\n _setState(isActive || isAtMax ? pinActiveState : pinState);\n\n pinMoves && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0));\n }\n }\n\n snap && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true);\n toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function (el) {\n return el.classList[isActive || once ? \"add\" : \"remove\"](toggleClass.className);\n }); // classes could affect positioning, so do it even if reset or refreshing is true.\n\n onUpdate && !isToggle && !reset && onUpdate(self);\n\n if (stateChanged && !_refreshing) {\n if (isToggle) {\n if (isTakingAction) {\n if (action === \"complete\") {\n animation.pause().totalProgress(1);\n } else if (action === \"reset\") {\n animation.restart(true).pause();\n } else if (action === \"restart\") {\n animation.restart(true);\n } else {\n animation[action]();\n }\n }\n\n onUpdate && onUpdate(self);\n }\n\n if (toggled || !_limitCallbacks) {\n // on startup, the page could be scrolled and we don't want to fire callbacks that didn't toggle. For example onEnter shouldn't fire if the ScrollTrigger isn't actually entered.\n onToggle && toggled && _callback(self, onToggle);\n callbacks[toggleState] && _callback(self, callbacks[toggleState]);\n once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0); // a callback shouldn't be called again if once is true.\n\n if (!toggled) {\n // it's possible to go completely past, like from before the start to after the end (or vice-versa) in which case BOTH callbacks should be fired in that order\n toggleState = clipped === 1 ? 1 : 3;\n callbacks[toggleState] && _callback(self, callbacks[toggleState]);\n }\n }\n\n if (fastScrollEnd && !isActive && Math.abs(self.getVelocity()) > (_isNumber(fastScrollEnd) ? fastScrollEnd : 2500)) {\n _endAnimation(self.callbackAnimation);\n\n scrubTween ? scrubTween.progress(1) : _endAnimation(animation, action === \"reverse\" ? 1 : !clipped, 1);\n }\n } else if (isToggle && onUpdate && !_refreshing) {\n onUpdate(self);\n }\n } // update absolutely-positioned markers (only if the scroller isn't the viewport)\n\n\n if (markerEndSetter) {\n var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll;\n markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0));\n markerEndSetter(n);\n }\n\n caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0));\n };\n\n self.enable = function (reset, refresh) {\n if (!self.enabled) {\n self.enabled = true;\n\n _addListener(scroller, \"resize\", _onResize);\n\n isViewport || _addListener(scroller, \"scroll\", _onScroll);\n onRefreshInit && _addListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n if (reset !== false) {\n self.progress = prevProgress = 0;\n scroll1 = scroll2 = lastSnap = scrollFunc();\n }\n\n refresh !== false && self.refresh();\n }\n };\n\n self.getTween = function (snap) {\n return snap && tweenTo ? tweenTo.tween : scrubTween;\n };\n\n self.setPositions = function (newStart, newEnd, keepClamp, pinOffset) {\n // doesn't persist after refresh()! Intended to be a way to override values that were set during refresh(), like you could set it in onRefresh()\n if (containerAnimation) {\n // convert ratios into scroll positions. Remember, start/end values on ScrollTriggers that have a containerAnimation refer to the time (in seconds), NOT scroll positions.\n var st = containerAnimation.scrollTrigger,\n duration = containerAnimation.duration(),\n _change = st.end - st.start;\n\n newStart = st.start + _change * newStart / duration;\n newEnd = st.start + _change * newEnd / duration;\n }\n\n self.refresh(false, false, {\n start: _keepClamp(newStart, keepClamp && !!self._startClamp),\n end: _keepClamp(newEnd, keepClamp && !!self._endClamp)\n }, pinOffset);\n self.update();\n };\n\n self.adjustPinSpacing = function (amount) {\n if (spacerState && amount) {\n var i = spacerState.indexOf(direction.d) + 1;\n spacerState[i] = parseFloat(spacerState[i]) + amount + _px;\n spacerState[1] = parseFloat(spacerState[1]) + amount + _px;\n\n _setState(spacerState);\n }\n };\n\n self.disable = function (reset, allowAnimation) {\n if (self.enabled) {\n reset !== false && self.revert(true, true);\n self.enabled = self.isActive = false;\n allowAnimation || scrubTween && scrubTween.pause();\n prevScroll = 0;\n pinCache && (pinCache.uncache = 1);\n onRefreshInit && _removeListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n if (snapDelayedCall) {\n snapDelayedCall.pause();\n tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);\n }\n\n if (!isViewport) {\n var i = _triggers.length;\n\n while (i--) {\n if (_triggers[i].scroller === scroller && _triggers[i] !== self) {\n return; //don't remove the listeners if there are still other triggers referencing it.\n }\n }\n\n _removeListener(scroller, \"resize\", _onResize);\n\n isViewport || _removeListener(scroller, \"scroll\", _onScroll);\n }\n }\n };\n\n self.kill = function (revert, allowAnimation) {\n self.disable(revert, allowAnimation);\n scrubTween && !allowAnimation && scrubTween.kill();\n id && delete _ids[id];\n\n var i = _triggers.indexOf(self);\n\n i >= 0 && _triggers.splice(i, 1);\n i === _i && _direction > 0 && _i--; // if we're in the middle of a refresh() or update(), splicing would cause skips in the index, so adjust...\n // if no other ScrollTrigger instances of the same scroller are found, wipe out any recorded scroll position. Otherwise, in a single page application, for example, it could maintain scroll position when it really shouldn't.\n\n i = 0;\n\n _triggers.forEach(function (t) {\n return t.scroller === self.scroller && (i = 1);\n });\n\n i || _refreshingAll || (self.scroll.rec = 0);\n\n if (animation) {\n animation.scrollTrigger = null;\n revert && animation.revert({\n kill: false\n });\n allowAnimation || animation.kill();\n }\n\n markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n return m.parentNode && m.parentNode.removeChild(m);\n });\n _primary === self && (_primary = 0);\n\n if (pin) {\n pinCache && (pinCache.uncache = 1);\n i = 0;\n\n _triggers.forEach(function (t) {\n return t.pin === pin && i++;\n });\n\n i || (pinCache.spacer = 0); // if there aren't any more ScrollTriggers with the same pin, remove the spacer, otherwise it could be contaminated with old/stale values if the user re-creates a ScrollTrigger for the same element.\n }\n\n vars.onKill && vars.onKill(self);\n };\n\n _triggers.push(self);\n\n self.enable(false, false);\n customRevertReturn && customRevertReturn(self);\n\n if (animation && animation.add && !change) {\n // if the animation is a timeline, it may not have been populated yet, so it wouldn't render at the proper place on the first refresh(), thus we should schedule one for the next tick. If \"change\" is defined, we know it must be re-enabling, thus we can refresh() right away.\n var updateFunc = self.update; // some browsers may fire a scroll event BEFORE a tick elapses and/or the DOMContentLoaded fires. So there's a chance update() will be called BEFORE a refresh() has happened on a Timeline-attached ScrollTrigger which means the start/end won't be calculated yet. We don't want to add conditional logic inside the update() method (like check to see if end is defined and if not, force a refresh()) because that's a function that gets hit a LOT (performance). So we swap out the real update() method for this one that'll re-attach it the first time it gets called and of course forces a refresh().\n\n self.update = function () {\n self.update = updateFunc;\n start || end || self.refresh();\n };\n\n gsap.delayedCall(0.01, self.update);\n change = 0.01;\n start = end = 0;\n } else {\n self.refresh();\n }\n\n pin && _queueRefreshAll(); // pinning could affect the positions of other things, so make sure we queue a full refresh()\n };\n\n ScrollTrigger.register = function register(core) {\n if (!_coreInitted) {\n gsap = core || _getGSAP();\n _windowExists() && window.document && ScrollTrigger.enable();\n _coreInitted = _enabled;\n }\n\n return _coreInitted;\n };\n\n ScrollTrigger.defaults = function defaults(config) {\n if (config) {\n for (var p in config) {\n _defaults[p] = config[p];\n }\n }\n\n return _defaults;\n };\n\n ScrollTrigger.disable = function disable(reset, kill) {\n _enabled = 0;\n\n _triggers.forEach(function (trigger) {\n return trigger[kill ? \"kill\" : \"disable\"](reset);\n });\n\n _removeListener(_win, \"wheel\", _onScroll);\n\n _removeListener(_doc, \"scroll\", _onScroll);\n\n clearInterval(_syncInterval);\n\n _removeListener(_doc, \"touchcancel\", _passThrough);\n\n _removeListener(_body, \"touchstart\", _passThrough);\n\n _multiListener(_removeListener, _doc, \"pointerdown,touchstart,mousedown\", _pointerDownHandler);\n\n _multiListener(_removeListener, _doc, \"pointerup,touchend,mouseup\", _pointerUpHandler);\n\n _resizeDelay.kill();\n\n _iterateAutoRefresh(_removeListener);\n\n for (var i = 0; i < _scrollers.length; i += 3) {\n _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 1]);\n\n _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 2]);\n }\n };\n\n ScrollTrigger.enable = function enable() {\n _win = window;\n _doc = document;\n _docEl = _doc.documentElement;\n _body = _doc.body;\n\n if (gsap) {\n _toArray = gsap.utils.toArray;\n _clamp = gsap.utils.clamp;\n _context = gsap.core.context || _passThrough;\n _suppressOverwrites = gsap.core.suppressOverwrites || _passThrough;\n _scrollRestoration = _win.history.scrollRestoration || \"auto\";\n _lastScroll = _win.pageYOffset;\n gsap.core.globals(\"ScrollTrigger\", ScrollTrigger); // must register the global manually because in Internet Explorer, functions (classes) don't have a \"name\" property.\n\n if (_body) {\n _enabled = 1;\n _div100vh = document.createElement(\"div\"); // to solve mobile browser address bar show/hide resizing, we shouldn't rely on window.innerHeight. Instead, use a
with its height set to 100vh and measure that since that's what the scrolling is based on anyway and it's not affected by address bar showing/hiding.\n\n _div100vh.style.height = \"100vh\";\n _div100vh.style.position = \"absolute\";\n\n _refresh100vh();\n\n _rafBugFix();\n\n Observer.register(gsap); // isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.\n\n ScrollTrigger.isTouch = Observer.isTouch;\n _fixIOSBug = Observer.isTouch && /(iPad|iPhone|iPod|Mac)/g.test(navigator.userAgent); // since 2017, iOS has had a bug that causes event.clientX/Y to be inaccurate when a scroll occurs, thus we must alternate ignoring every other touchmove event to work around it. See https://bugs.webkit.org/show_bug.cgi?id=181954 and https://codepen.io/GreenSock/pen/ExbrPNa/087cef197dc35445a0951e8935c41503\n\n _addListener(_win, \"wheel\", _onScroll); // mostly for 3rd party smooth scrolling libraries.\n\n\n _root = [_win, _doc, _docEl, _body];\n\n if (gsap.matchMedia) {\n ScrollTrigger.matchMedia = function (vars) {\n var mm = gsap.matchMedia(),\n p;\n\n for (p in vars) {\n mm.add(p, vars[p]);\n }\n\n return mm;\n };\n\n gsap.addEventListener(\"matchMediaInit\", function () {\n return _revertAll();\n });\n gsap.addEventListener(\"matchMediaRevert\", function () {\n return _revertRecorded();\n });\n gsap.addEventListener(\"matchMedia\", function () {\n _refreshAll(0, 1);\n\n _dispatch(\"matchMedia\");\n });\n gsap.matchMedia(\"(orientation: portrait)\", function () {\n // when orientation changes, we should take new base measurements for the ignoreMobileResize feature.\n _setBaseDimensions();\n\n return _setBaseDimensions;\n });\n } else {\n console.warn(\"Requires GSAP 3.11.0 or later\");\n }\n\n _setBaseDimensions();\n\n _addListener(_doc, \"scroll\", _onScroll); // some browsers (like Chrome), the window stops dispatching scroll events on the window if you scroll really fast, but it's consistent on the document!\n\n\n var bodyStyle = _body.style,\n border = bodyStyle.borderTopStyle,\n AnimationProto = gsap.core.Animation.prototype,\n bounds,\n i;\n AnimationProto.revert || Object.defineProperty(AnimationProto, \"revert\", {\n value: function value() {\n return this.time(-0.01, true);\n }\n }); // only for backwards compatibility (Animation.revert() was added after 3.10.4)\n\n bodyStyle.borderTopStyle = \"solid\"; // works around an issue where a margin of a child element could throw off the bounds of the _body, making it seem like there's a margin when there actually isn't. The border ensures that the bounds are accurate.\n\n bounds = _getBounds(_body);\n _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0; // accommodate the offset of the caused by margins and/or padding\n\n _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;\n border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty(\"border-top-style\"); // TODO: (?) maybe move to leveraging the velocity mechanism in Observer and skip intervals.\n\n _syncInterval = setInterval(_sync, 250);\n gsap.delayedCall(0.5, function () {\n return _startup = 0;\n });\n\n _addListener(_doc, \"touchcancel\", _passThrough); // some older Android devices intermittently stop dispatching \"touchmove\" events if we don't listen for \"touchcancel\" on the document.\n\n\n _addListener(_body, \"touchstart\", _passThrough); //works around Safari bug: https://gsap.com/forums/topic/21450-draggable-in-iframe-on-mobile-is-buggy/\n\n\n _multiListener(_addListener, _doc, \"pointerdown,touchstart,mousedown\", _pointerDownHandler);\n\n _multiListener(_addListener, _doc, \"pointerup,touchend,mouseup\", _pointerUpHandler);\n\n _transformProp = gsap.utils.checkPrefix(\"transform\");\n\n _stateProps.push(_transformProp);\n\n _coreInitted = _getTime();\n _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause();\n _autoRefresh = [_doc, \"visibilitychange\", function () {\n var w = _win.innerWidth,\n h = _win.innerHeight;\n\n if (_doc.hidden) {\n _prevWidth = w;\n _prevHeight = h;\n } else if (_prevWidth !== w || _prevHeight !== h) {\n _onResize();\n }\n }, _doc, \"DOMContentLoaded\", _refreshAll, _win, \"load\", _refreshAll, _win, \"resize\", _onResize];\n\n _iterateAutoRefresh(_addListener);\n\n _triggers.forEach(function (trigger) {\n return trigger.enable(0, 1);\n });\n\n for (i = 0; i < _scrollers.length; i += 3) {\n _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 1]);\n\n _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 2]);\n }\n }\n }\n };\n\n ScrollTrigger.config = function config(vars) {\n \"limitCallbacks\" in vars && (_limitCallbacks = !!vars.limitCallbacks);\n var ms = vars.syncInterval;\n ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);\n \"ignoreMobileResize\" in vars && (_ignoreMobileResize = ScrollTrigger.isTouch === 1 && vars.ignoreMobileResize);\n\n if (\"autoRefreshEvents\" in vars) {\n _iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || \"none\");\n _ignoreResize = (vars.autoRefreshEvents + \"\").indexOf(\"resize\") === -1;\n }\n };\n\n ScrollTrigger.scrollerProxy = function scrollerProxy(target, vars) {\n var t = _getTarget(target),\n i = _scrollers.indexOf(t),\n isViewport = _isViewport(t);\n\n if (~i) {\n _scrollers.splice(i, isViewport ? 6 : 2);\n }\n\n if (vars) {\n isViewport ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t, vars);\n }\n };\n\n ScrollTrigger.clearMatchMedia = function clearMatchMedia(query) {\n _triggers.forEach(function (t) {\n return t._ctx && t._ctx.query === query && t._ctx.kill(true, true);\n });\n };\n\n ScrollTrigger.isInViewport = function isInViewport(element, ratio, horizontal) {\n var bounds = (_isString(element) ? _getTarget(element) : element).getBoundingClientRect(),\n offset = bounds[horizontal ? _width : _height] * ratio || 0;\n return horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win.innerHeight;\n };\n\n ScrollTrigger.positionInViewport = function positionInViewport(element, referencePoint, horizontal) {\n _isString(element) && (element = _getTarget(element));\n var bounds = element.getBoundingClientRect(),\n size = bounds[horizontal ? _width : _height],\n offset = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf(\"%\") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0;\n return horizontal ? (bounds.left + offset) / _win.innerWidth : (bounds.top + offset) / _win.innerHeight;\n };\n\n ScrollTrigger.killAll = function killAll(allowListeners) {\n _triggers.slice(0).forEach(function (t) {\n return t.vars.id !== \"ScrollSmoother\" && t.kill();\n });\n\n if (allowListeners !== true) {\n var listeners = _listeners.killAll || [];\n _listeners = {};\n listeners.forEach(function (f) {\n return f();\n });\n }\n };\n\n return ScrollTrigger;\n}();\nScrollTrigger.version = \"3.12.4\";\n\nScrollTrigger.saveStyles = function (targets) {\n return targets ? _toArray(targets).forEach(function (target) {\n // saved styles are recorded in a consecutive alternating Array, like [element, cssText, transform attribute, cache, matchMedia, ...]\n if (target && target.style) {\n var i = _savedStyles.indexOf(target);\n\n i >= 0 && _savedStyles.splice(i, 5);\n\n _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute(\"transform\"), gsap.core.getCache(target), _context());\n }\n }) : _savedStyles;\n};\n\nScrollTrigger.revert = function (soft, media) {\n return _revertAll(!soft, media);\n};\n\nScrollTrigger.create = function (vars, animation) {\n return new ScrollTrigger(vars, animation);\n};\n\nScrollTrigger.refresh = function (safe) {\n return safe ? _onResize() : (_coreInitted || ScrollTrigger.register()) && _refreshAll(true);\n};\n\nScrollTrigger.update = function (force) {\n return ++_scrollers.cache && _updateAll(force === true ? 2 : 0);\n};\n\nScrollTrigger.clearScrollMemory = _clearScrollMemory;\n\nScrollTrigger.maxScroll = function (element, horizontal) {\n return _maxScroll(element, horizontal ? _horizontal : _vertical);\n};\n\nScrollTrigger.getScrollFunc = function (element, horizontal) {\n return _getScrollFunc(_getTarget(element), horizontal ? _horizontal : _vertical);\n};\n\nScrollTrigger.getById = function (id) {\n return _ids[id];\n};\n\nScrollTrigger.getAll = function () {\n return _triggers.filter(function (t) {\n return t.vars.id !== \"ScrollSmoother\";\n });\n}; // it's common for people to ScrollTrigger.getAll(t => t.kill()) on page routes, for example, and we don't want it to ruin smooth scrolling by killing the main ScrollSmoother one.\n\n\nScrollTrigger.isScrolling = function () {\n return !!_lastScrollTime;\n};\n\nScrollTrigger.snapDirectional = _snapDirectional;\n\nScrollTrigger.addEventListener = function (type, callback) {\n var a = _listeners[type] || (_listeners[type] = []);\n ~a.indexOf(callback) || a.push(callback);\n};\n\nScrollTrigger.removeEventListener = function (type, callback) {\n var a = _listeners[type],\n i = a && a.indexOf(callback);\n i >= 0 && a.splice(i, 1);\n};\n\nScrollTrigger.batch = function (targets, vars) {\n var result = [],\n varsCopy = {},\n interval = vars.interval || 0.016,\n batchMax = vars.batchMax || 1e9,\n proxyCallback = function proxyCallback(type, callback) {\n var elements = [],\n triggers = [],\n delay = gsap.delayedCall(interval, function () {\n callback(elements, triggers);\n elements = [];\n triggers = [];\n }).pause();\n return function (self) {\n elements.length || delay.restart(true);\n elements.push(self.trigger);\n triggers.push(self);\n batchMax <= elements.length && delay.progress(1);\n };\n },\n p;\n\n for (p in vars) {\n varsCopy[p] = p.substr(0, 2) === \"on\" && _isFunction(vars[p]) && p !== \"onRefreshInit\" ? proxyCallback(p, vars[p]) : vars[p];\n }\n\n if (_isFunction(batchMax)) {\n batchMax = batchMax();\n\n _addListener(ScrollTrigger, \"refresh\", function () {\n return batchMax = vars.batchMax();\n });\n }\n\n _toArray(targets).forEach(function (target) {\n var config = {};\n\n for (p in varsCopy) {\n config[p] = varsCopy[p];\n }\n\n config.trigger = target;\n result.push(ScrollTrigger.create(config));\n });\n\n return result;\n}; // to reduce file size. clamps the scroll and also returns a duration multiplier so that if the scroll gets chopped shorter, the duration gets curtailed as well (otherwise if you're very close to the top of the page, for example, and swipe up really fast, it'll suddenly slow down and take a long time to reach the top).\n\n\nvar _clampScrollAndGetDurationMultiplier = function _clampScrollAndGetDurationMultiplier(scrollFunc, current, end, max) {\n current > max ? scrollFunc(max) : current < 0 && scrollFunc(0);\n return end > max ? (max - current) / (end - current) : end < 0 ? current / (current - end) : 1;\n},\n _allowNativePanning = function _allowNativePanning(target, direction) {\n if (direction === true) {\n target.style.removeProperty(\"touch-action\");\n } else {\n target.style.touchAction = direction === true ? \"auto\" : direction ? \"pan-\" + direction + (Observer.isTouch ? \" pinch-zoom\" : \"\") : \"none\"; // note: Firefox doesn't support it pinch-zoom properly, at least in addition to a pan-x or pan-y.\n }\n\n target === _docEl && _allowNativePanning(_body, direction);\n},\n _overflow = {\n auto: 1,\n scroll: 1\n},\n _nestedScroll = function _nestedScroll(_ref5) {\n var event = _ref5.event,\n target = _ref5.target,\n axis = _ref5.axis;\n\n var node = (event.changedTouches ? event.changedTouches[0] : event).target,\n cache = node._gsap || gsap.core.getCache(node),\n time = _getTime(),\n cs;\n\n if (!cache._isScrollT || time - cache._isScrollT > 2000) {\n // cache for 2 seconds to improve performance.\n while (node && node !== _body && (node.scrollHeight <= node.clientHeight && node.scrollWidth <= node.clientWidth || !(_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]))) {\n node = node.parentNode;\n }\n\n cache._isScroll = node && node !== target && !_isViewport(node) && (_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]);\n cache._isScrollT = time;\n }\n\n if (cache._isScroll || axis === \"x\") {\n event.stopPropagation();\n event._gsapAllow = true;\n }\n},\n // capture events on scrollable elements INSIDE the and allow those by calling stopPropagation() when we find a scrollable ancestor\n_inputObserver = function _inputObserver(target, type, inputs, nested) {\n return Observer.create({\n target: target,\n capture: true,\n debounce: false,\n lockAxis: true,\n type: type,\n onWheel: nested = nested && _nestedScroll,\n onPress: nested,\n onDrag: nested,\n onScroll: nested,\n onEnable: function onEnable() {\n return inputs && _addListener(_doc, Observer.eventTypes[0], _captureInputs, false, true);\n },\n onDisable: function onDisable() {\n return _removeListener(_doc, Observer.eventTypes[0], _captureInputs, true);\n }\n });\n},\n _inputExp = /(input|label|select|textarea)/i,\n _inputIsFocused,\n _captureInputs = function _captureInputs(e) {\n var isInput = _inputExp.test(e.target.tagName);\n\n if (isInput || _inputIsFocused) {\n e._gsapAllow = true;\n _inputIsFocused = isInput;\n }\n},\n _getScrollNormalizer = function _getScrollNormalizer(vars) {\n _isObject(vars) || (vars = {});\n vars.preventDefault = vars.isNormalizer = vars.allowClicks = true;\n vars.type || (vars.type = \"wheel,touch\");\n vars.debounce = !!vars.debounce;\n vars.id = vars.id || \"normalizer\";\n\n var _vars2 = vars,\n normalizeScrollX = _vars2.normalizeScrollX,\n momentum = _vars2.momentum,\n allowNestedScroll = _vars2.allowNestedScroll,\n onRelease = _vars2.onRelease,\n self,\n maxY,\n target = _getTarget(vars.target) || _docEl,\n smoother = gsap.core.globals().ScrollSmoother,\n smootherInstance = smoother && smoother.get(),\n content = _fixIOSBug && (vars.content && _getTarget(vars.content) || smootherInstance && vars.content !== false && !smootherInstance.smooth() && smootherInstance.content()),\n scrollFuncY = _getScrollFunc(target, _vertical),\n scrollFuncX = _getScrollFunc(target, _horizontal),\n scale = 1,\n initialScale = (Observer.isTouch && _win.visualViewport ? _win.visualViewport.scale * _win.visualViewport.width : _win.outerWidth) / _win.innerWidth,\n wheelRefresh = 0,\n resolveMomentumDuration = _isFunction(momentum) ? function () {\n return momentum(self);\n } : function () {\n return momentum || 2.8;\n },\n lastRefreshID,\n skipTouchMove,\n inputObserver = _inputObserver(target, vars.type, true, allowNestedScroll),\n resumeTouchMove = function resumeTouchMove() {\n return skipTouchMove = false;\n },\n scrollClampX = _passThrough,\n scrollClampY = _passThrough,\n updateClamps = function updateClamps() {\n maxY = _maxScroll(target, _vertical);\n scrollClampY = _clamp(_fixIOSBug ? 1 : 0, maxY);\n normalizeScrollX && (scrollClampX = _clamp(0, _maxScroll(target, _horizontal)));\n lastRefreshID = _refreshID;\n },\n removeContentOffset = function removeContentOffset() {\n content._gsap.y = _round(parseFloat(content._gsap.y) + scrollFuncY.offset) + \"px\";\n content.style.transform = \"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, \" + parseFloat(content._gsap.y) + \", 0, 1)\";\n scrollFuncY.offset = scrollFuncY.cacheID = 0;\n },\n ignoreDrag = function ignoreDrag() {\n if (skipTouchMove) {\n requestAnimationFrame(resumeTouchMove);\n\n var offset = _round(self.deltaY / 2),\n scroll = scrollClampY(scrollFuncY.v - offset);\n\n if (content && scroll !== scrollFuncY.v + scrollFuncY.offset) {\n scrollFuncY.offset = scroll - scrollFuncY.v;\n\n var y = _round((parseFloat(content && content._gsap.y) || 0) - scrollFuncY.offset);\n\n content.style.transform = \"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, \" + y + \", 0, 1)\";\n content._gsap.y = y + \"px\";\n scrollFuncY.cacheID = _scrollers.cache;\n\n _updateAll();\n }\n\n return true;\n }\n\n scrollFuncY.offset && removeContentOffset();\n skipTouchMove = true;\n },\n tween,\n startScrollX,\n startScrollY,\n onStopDelayedCall,\n onResize = function onResize() {\n // if the window resizes, like on an iPhone which Apple FORCES the address bar to show/hide even if we event.preventDefault(), it may be scrolling too far now that the address bar is showing, so we must dynamically adjust the momentum tween.\n updateClamps();\n\n if (tween.isActive() && tween.vars.scrollY > maxY) {\n scrollFuncY() > maxY ? tween.progress(1) && scrollFuncY(maxY) : tween.resetTo(\"scrollY\", maxY);\n }\n };\n\n content && gsap.set(content, {\n y: \"+=0\"\n }); // to ensure there's a cache (element._gsap)\n\n vars.ignoreCheck = function (e) {\n return _fixIOSBug && e.type === \"touchmove\" && ignoreDrag(e) || scale > 1.05 && e.type !== \"touchstart\" || self.isGesturing || e.touches && e.touches.length > 1;\n };\n\n vars.onPress = function () {\n skipTouchMove = false;\n var prevScale = scale;\n scale = _round((_win.visualViewport && _win.visualViewport.scale || 1) / initialScale);\n tween.pause();\n prevScale !== scale && _allowNativePanning(target, scale > 1.01 ? true : normalizeScrollX ? false : \"x\");\n startScrollX = scrollFuncX();\n startScrollY = scrollFuncY();\n updateClamps();\n lastRefreshID = _refreshID;\n };\n\n vars.onRelease = vars.onGestureStart = function (self, wasDragging) {\n scrollFuncY.offset && removeContentOffset();\n\n if (!wasDragging) {\n onStopDelayedCall.restart(true);\n } else {\n _scrollers.cache++; // make sure we're pulling the non-cached value\n // alternate algorithm: durX = Math.min(6, Math.abs(self.velocityX / 800)),\tdur = Math.max(durX, Math.min(6, Math.abs(self.velocityY / 800))); dur = dur * (0.4 + (1 - _power4In(dur / 6)) * 0.6)) * (momentumSpeed || 1)\n\n var dur = resolveMomentumDuration(),\n currentScroll,\n endScroll;\n\n if (normalizeScrollX) {\n currentScroll = scrollFuncX();\n endScroll = currentScroll + dur * 0.05 * -self.velocityX / 0.227; // the constant .227 is from power4(0.05). velocity is inverted because scrolling goes in the opposite direction.\n\n dur *= _clampScrollAndGetDurationMultiplier(scrollFuncX, currentScroll, endScroll, _maxScroll(target, _horizontal));\n tween.vars.scrollX = scrollClampX(endScroll);\n }\n\n currentScroll = scrollFuncY();\n endScroll = currentScroll + dur * 0.05 * -self.velocityY / 0.227; // the constant .227 is from power4(0.05)\n\n dur *= _clampScrollAndGetDurationMultiplier(scrollFuncY, currentScroll, endScroll, _maxScroll(target, _vertical));\n tween.vars.scrollY = scrollClampY(endScroll);\n tween.invalidate().duration(dur).play(0.01);\n\n if (_fixIOSBug && tween.vars.scrollY >= maxY || currentScroll >= maxY - 1) {\n // iOS bug: it'll show the address bar but NOT fire the window \"resize\" event until the animation is done but we must protect against overshoot so we leverage an onUpdate to do so.\n gsap.to({}, {\n onUpdate: onResize,\n duration: dur\n });\n }\n }\n\n onRelease && onRelease(self);\n };\n\n vars.onWheel = function () {\n tween._ts && tween.pause();\n\n if (_getTime() - wheelRefresh > 1000) {\n // after 1 second, refresh the clamps otherwise that'll only happen when ScrollTrigger.refresh() is called or for touch-scrolling.\n lastRefreshID = 0;\n wheelRefresh = _getTime();\n }\n };\n\n vars.onChange = function (self, dx, dy, xArray, yArray) {\n _refreshID !== lastRefreshID && updateClamps();\n dx && normalizeScrollX && scrollFuncX(scrollClampX(xArray[2] === dx ? startScrollX + (self.startX - self.x) : scrollFuncX() + dx - xArray[1])); // for more precision, we track pointer/touch movement from the start, otherwise it'll drift.\n\n if (dy) {\n scrollFuncY.offset && removeContentOffset();\n var isTouch = yArray[2] === dy,\n y = isTouch ? startScrollY + self.startY - self.y : scrollFuncY() + dy - yArray[1],\n yClamped = scrollClampY(y);\n isTouch && y !== yClamped && (startScrollY += yClamped - y);\n scrollFuncY(yClamped);\n }\n\n (dy || dx) && _updateAll();\n };\n\n vars.onEnable = function () {\n _allowNativePanning(target, normalizeScrollX ? false : \"x\");\n\n ScrollTrigger.addEventListener(\"refresh\", onResize);\n\n _addListener(_win, \"resize\", onResize);\n\n if (scrollFuncY.smooth) {\n scrollFuncY.target.style.scrollBehavior = \"auto\";\n scrollFuncY.smooth = scrollFuncX.smooth = false;\n }\n\n inputObserver.enable();\n };\n\n vars.onDisable = function () {\n _allowNativePanning(target, true);\n\n _removeListener(_win, \"resize\", onResize);\n\n ScrollTrigger.removeEventListener(\"refresh\", onResize);\n inputObserver.kill();\n };\n\n vars.lockAxis = vars.lockAxis !== false;\n self = new Observer(vars);\n self.iOS = _fixIOSBug; // used in the Observer getCachedScroll() function to work around an iOS bug that wreaks havoc with TouchEvent.clientY if we allow scroll to go all the way back to 0.\n\n _fixIOSBug && !scrollFuncY() && scrollFuncY(1); // iOS bug causes event.clientY values to freak out (wildly inaccurate) if the scroll position is exactly 0.\n\n _fixIOSBug && gsap.ticker.add(_passThrough); // prevent the ticker from sleeping\n\n onStopDelayedCall = self._dc;\n tween = gsap.to(self, {\n ease: \"power4\",\n paused: true,\n scrollX: normalizeScrollX ? \"+=0.1\" : \"+=0\",\n scrollY: \"+=0.1\",\n modifiers: {\n scrollY: _interruptionTracker(scrollFuncY, scrollFuncY(), function () {\n return tween.pause();\n })\n },\n onUpdate: _updateAll,\n onComplete: onStopDelayedCall.vars.onComplete\n }); // we need the modifier to sense if the scroll position is altered outside of the momentum tween (like with a scrollTo tween) so we can pause() it to prevent conflicts.\n\n return self;\n};\n\nScrollTrigger.sort = function (func) {\n return _triggers.sort(func || function (a, b) {\n return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6);\n });\n};\n\nScrollTrigger.observe = function (vars) {\n return new Observer(vars);\n};\n\nScrollTrigger.normalizeScroll = function (vars) {\n if (typeof vars === \"undefined\") {\n return _normalizer;\n }\n\n if (vars === true && _normalizer) {\n return _normalizer.enable();\n }\n\n if (vars === false) {\n _normalizer && _normalizer.kill();\n _normalizer = vars;\n return;\n }\n\n var normalizer = vars instanceof Observer ? vars : _getScrollNormalizer(vars);\n _normalizer && _normalizer.target === normalizer.target && _normalizer.kill();\n _isViewport(normalizer.target) && (_normalizer = normalizer);\n return normalizer;\n};\n\nScrollTrigger.core = {\n // smaller file size way to leverage in ScrollSmoother and Observer\n _getVelocityProp: _getVelocityProp,\n _inputObserver: _inputObserver,\n _scrollers: _scrollers,\n _proxies: _proxies,\n bridge: {\n // when normalizeScroll sets the scroll position (ss = setScroll)\n ss: function ss() {\n _lastScrollTime || _dispatch(\"scrollStart\");\n _lastScrollTime = _getTime();\n },\n // a way to get the _refreshing value in Observer\n ref: function ref() {\n return _refreshing;\n }\n }\n};\n_getGSAP() && gsap.registerPlugin(ScrollTrigger);\nexport { ScrollTrigger as default };","import I18n from '../../i18n';\nI18n.translations || (I18n.translations = {});\nI18n.translations[\"en\"] = I18n.extend((I18n.translations[\"en\"] || {}), {\"lp\":{\"about_us\":{\"btn\":{\"recruiter\":\"Become our Freelancer\",\"talent\":\"Looking for Talent?\"},\"company_info\":{\"description_html\":\"\\u003cspan class=\\\"blue\\\"\\u003eReeracoen Group,\\u003c/span\\u003e leader in a recruitment industry with over a decade of presence across Southeast Asia, \\nuniquely blends staffing expertise with its innovative service, SourcedOut. Guided by the principles of \\u003cspan\\u003e\\\"The Reeracoen Ways\\\"\\u003c/span\\u003e, \\nwe are committed to continuous client support and fostering personal growth. With passion, expertise, and unwavering belief \\nin people's potential. \\n\",\"title\":\"Company Information\"},\"description\":\"SourcedOut stands at the vanguard of recruitment transformation. \\nOur platform goes beyond traditional methods by leveraging advanced technologies \\nto connect employers and job seeker with network of professional recruiter in \\ntheir industries. Join us in making recruitment smarter with SourcedOut.\\n\",\"greeting\":{\"description_html\":\"\\u003cp\\u003eGreetings from SourcedOut!\\u003c/p\\u003e\\n\\u003cp\\u003eSince launching \\\"SourcedOut\\\" in 2021, our aim was more than just introducing a new service. \\nIt was about pioneering an innovative solution addressing the challenges faced by businesses,\\nrecruiters, and candidates alike.\\u003c/p\\u003e\\n\\u003cp\\u003eThis journey is our challenge, but we wholeheartedly believe in the transformative power of this service.\\nEvery day, we're committed to refining \\\"SourcedOut\\\" to its fullest potential.\\u003c/p\\u003e\\n\\u003cp\\u003eTreading a new path is never easy, but with your continuosly support and trust, \\nwe're excited for steps ahead. \\u003c/p\\u003e\\n\\u003cp class=\\\"regards\\\"\\u003eWarm regards, \\u003cspan class=\\\"name\\\"\\u003eSourcedOut Team\\u003c/span\\u003e\\u003c/p\\u003e\\n\"},\"our_goal\":{\"employer\":{\"description_html\":\"\\u003cspan\\u003eFor employers,\\u003c/span\\u003e SourcedOut provides low-risk recruitment experience and \\nqualified candidates without listing or recommendation fees, thus payments made only upon successful hiring.\\n\"},\"our_mission\":\"Our mission is to optimize the quality and efficiency of hiring. Elavate your recruitment and career to the next level.\\n\",\"recruiter\":{\"description_html\":\"\\u003cspan\\u003eFor recruiters\\u003c/span\\u003e, earn substantial income through SourcedOut from various attractive jobs. \\nGet started easily with support by tools and workshops from our team.\\n\"},\"sourcedout\":{\"description_html\":\"\\u003cspan\\u003eSourcedOut\\u003c/span\\u003e is a cutting-edge platform designed to revolutionize the hiring process. \\nNetwork of over 700 professional recruiters, dedicated to expertly supporting your job listings\\n\"},\"title\":\"Our Goal\"},\"title\":\"About SourcedOut\"},\"employer\":{\"any_risks\":{\"list\":{\"guarantee_satisfaction\":{\"details\":\"Refund policy for a new hire resignation within our guarantee period.\",\"title\":\"Guaranteed Satisfaction\"},\"no_hidden_costs\":{\"details\":\"There are no listing charges. You only pay if you decide to hire.\",\"title\":\"No Hidden Costs\"},\"quality_assurance\":{\"details\":\"Cross check every application from recruiters with our experienced customer success team.\",\"title\":\"Quality Assurance\"}},\"title\":\"Increase Your Hiring Efficiency, with Risk-Free Service.\"},\"btn\":\"Get Started\",\"comparison\":{\"job_position\":\"Job Posting Website\",\"recruiting_service\":\"Recruiting Service\"},\"description\":\"Empower your hiring with network of professional recruiters. Experience the unique resources and techniques only SourcedOut offers. \\nDive into a world where quality meets innovation.\\n\",\"faq\":{\"four\":{\"answer_html\":\"\\u003cp\\u003eIf a candidate hired through SourcedOut resigns within a specific time frame, our platform provides a warranty period. During this period, \\nwe offer a refund policy to address any unforeseen circumstances, ensuring your company's satisfaction and providing financial \\nreassurance in the event of an early resignation.\\u003c/p\\u003e\\n\",\"question\":\"What happens if a candidate hired through SourcedOut resigns early?\"},\"one\":{\"answer_html\":\"\\u003cp\\u003eSourcedOut operates on a \\\"Pay After Hire\\\" service model, providing your company with the flexibility to access our platform without upfront costs. \\nYou pay for the service only after successfully hiring a candidate through our network of HR freelance recruiters.\\u003c/p\\u003e\\n\\u003cp\\u003eSourcedOut also benefits companies by offering a platform that reduces operational costs. It provides a pool of HR freelance recruiters \\nwho can assist in finding suitable candidates for various positions, without limitations based on business type or location.\\u003c/p\\u003e\\n\",\"question\":\"How can my company benefit from using SourcedOut's service model?\\n\"},\"three\":{\"answer_html\":\"\\u003cp\\u003eSourcedOut contributes to a more efficient recruitment process by creating a dynamic and flexible environment. \\nCompanies can connect with HR freelance recruiters who match their specific needs, leading to a streamlined and \\ncost-effective hiring process.\\u003c/p\\u003e\\n\",\"question\":\"How does SourcedOut contribute to a more efficient recruitment process?\"},\"two\":{\"answer_html\":\"\\u003cp\\u003eNo, SourcedOut is designed to accommodate companies from various industries. Whether you're in IT, healthcare, finance, or\\n any other sector, our platform connects you with HR freelance recruiters who match your specific hiring needs.\\u003c/p\\u003e\\n\",\"question\":\"Is there a specific industry focus for companies using SourcedOut?\"}},\"sourcedout_insight\":{\"app_per_month\":\"Application per Month\",\"fastest_first\":\"Fastest First Apply records\",\"no_recruiter\":\"No. of Recruiter\",\"title\":\"SourcedOut Insight\"},\"steps\":{\"list\":{\"share_detail\":\"Share your Job Vacancy Detail with Our Team.\",\"sign_up\":\"Sign Up with SourcedOut\",\"wait\":\"Wait for Qualified Candidate!\"},\"title\":\"Start Your Hiring !\"},\"title\":\"Meet High-Skilled Talent, Pay Lower Recruiting Fee. With SourcedOut\",\"what_they_say\":{\"list\":{\"jinnipa\":{\"company\":\"C.S.I. Intertrade Co.,Ltd\",\"name\":\"Jinnipa S.\",\"position\":\"HR Director\",\"text\":\"We have successfully filled many vacancy with SourcedOut. Service itself is fast also follow the requirement we looking for. \\nSourcedOut team has systematic recruiting process with very reasonable service price.\\n\"},\"pongsak\":{\"company\":\"Bainisys Co., Ltd.\",\"name\":\"Pongsak Wonglertkunakorn\",\"position\":\"Business Development Manager\",\"text\":\"The service provided by SourcedOut team is efficient as we could finally gain the best-fit candidate. \\nNot only the significant number of resources being shared to us, but they work as a partner to recommend \\nstraightforwardly about strong and weak point of candidates\\n\"},\"sugunya\":{\"company\":\"D.A.A. (Thailand) Co.,Ltd\",\"name\":\"Sugunya Viriyasak\",\"position\":\"Accountant\",\"text\":\"Our company choose SourcedOut as it could find talent which match our requirement. \\nAlso, able to fill in the urgent job that required candidate to start working immediately. \\nAt the same time, reduce the chance of unsuccessful and reduce time we spend on our hiring.\\n\"}},\"title\":\"Client's Experience\"},\"why_choose_sourcedout\":{\"list\":{\"assured_quality\":{\"details\":\"Best paired and flawless communication with our customer success along with your hiring.\",\"title\":\"Assured Quality and Communication\"},\"connect\":{\"details\":\"Dive into a vast network of elite professional recruiters.\",\"title\":\"Connect with Thousand of Recruiters!\"},\"cost_effective\":{\"details\":\"Experience premium recruiting services with affordable fees compare to the market.\",\"title\":\"Cost-Effective Hiring Solution\"}},\"title\":\"Why Choose SourcedOut\"}},\"footer\":{\"about_us\":\"About us\",\"employer\":\"For Employer\",\"follow_us\":\"Follow Us\",\"privacy_policy\":\"Privacy Policy\",\"recruiter\":\"For Recruiter\",\"talent\":\"For Talent\",\"terms_of_use\":\"Terms of Use\"},\"header\":{\"about_us\":\"About us\",\"employer\":\"For Employer\",\"home\":\"Home\",\"privacy_policy\":\"Privacy Policy\",\"recruiter\":\"For Recruiter\",\"talent\":\"For Talent\",\"terms_of_use\":\"Terms of Use\",\"user\":{\"log_in\":\"Login\",\"sign_up\":\"Sign up\"}},\"index\":{\"about_sourcedout\":{\"employer_html\":\"\\u003cspan\\u003eFor employers,\\u003c/span\\u003e SourcedOut provides low-risk recruitment experience and qualified candidates without listing or recommendation fees, thus payments made only upon successful hiring.\",\"recruiter_html\":\"\\u003cspan\\u003eFor recruiters,\\u003c/span\\u003e earn substantial income through SourcedOut from various attractive jobs. Get started easily with support by tools and workshops from our team.\",\"sourcedout_html\":\"\\u003cspan\\u003eSourcedOut\\u003c/span\\u003e is a cutting-edge platform designed to revolutionize the hiring process. Network of over 700 professional recruiters, dedicated to expertly supporting your job listings\",\"title\":\"About SourcedOut\"},\"be_a_part_of_sourcedout\":{\"list\":{\"client\":{\"btn\":\"Learn More\",\"description\":\"End your hiring challenges by Connecting with 800+ recruiters and enhance your hiring efforts.\",\"title\":\"Hire Talents\"},\"recruiter\":{\"btn\":\"Learn More\",\"description\":\"Start utilizing your skills and experience and earn income anywhere anytime with SourcedOut\",\"title\":\"For Freelance Recruiter\"},\"searching\":{\"btn\":\"Learn More\",\"description\":\"Find your ideal job through Thailand's professional recruiter community, free of charge!\",\"title\":\"Job Searching\"}},\"title\":\"Be a part of SourcedOut\"},\"btn\":{\"recruiter\":\"Become our Freelancer\",\"talent\":\"Looking for Talent?\"},\"description_html\":\"Join us in shaping the future of recruitment. With \\u003cspan\\u003eSourcedOut\\u003c/span\\u003e, Discover the limitless possibilities and redefine the way you recruit.\",\"faq\":{\"four\":{\"answer_html\":\"\\u003cp\\u003eThe \\\"no limit of location\\\" approach by SourcedOut offers companies the flexibility to connect with recruiters regardless of their working location. \\nThis ensures that recruiters can effectively assist in finding candidates anywhere within Thailand and in the near future, on global scale.\\u003c/p\\u003e\\n\",\"question\":\"How does SourcedOut benefit companies with its \\\"no limit of location\\\" approach?\"},\"one\":{\"answer_html\":\"\\u003cp\\u003e\\\"SourcedOut\\\" is a platform created by Reeracoen Thailand with the concept of building a community of HR freelance recruiters to connect them with companies looking for candidates.\\nSourcedOut aims to reduce operating costs for companies by providing a flexible platform without limitations based on business expertise. This includes considerations for location when searching for employees.\\u003c/p\\u003e \\n\",\"question\":\"\\\"SourcedOut\\\" and \\\"Reeracoen\\\" are related in what way?\\n\"},\"three\":{\"answer_html\":\"\\u003cp\\u003eSourcedOut stands out by offering a platform that encourages diversity in expertise and location. \\nThe emphasis on flexibility allows companies to find HR freelance recruiters who align with their unique requirements, \\nultimately enhancing the effectiveness of the recruitment process\\u003c/p\\u003e\\n\",\"question\":\"What sets SourcedOut apart from other recruitment platforms?\"},\"two\":{\"answer_html\":\"\\u003cp\\u003eSourcedOut contributes to a more efficient recruitment process by creating a dynamic and flexible environment.\\n Companies can connect with HR freelance recruiters who match their specific needs, leading to a streamlined and cost-effective hiring process.\\u003c/p\\u003e\\n\",\"question\":\"How does SourcedOut contribute to a more efficient recruitment process?\"}},\"lets_get_started\":{\"become_freelance_recruiters\":\"Become Freelance Recruiters\",\"connect_with_high_quality_talents\":\"Connect with High-Quality Talents\",\"seeking_out_for_new_job_opportunities\":\"Seeking out for new Job Opportunities\",\"title\":\"Let's Get Started!\"},\"title\":\"Crafting the Future of Recruitment, Today.\",\"what_they_say\":{\"list\":{\"chatchai\":{\"name\":\"Chatchai Sukserm\",\"position\":\"Recruiter\",\"text\":\"I have signed up on a SourcedOut for almost 4 months as a freelance recruiter, \\nI absolutely enjoy to search candidate for many types of roles even some role could bring me new experiences, \\non this platform I have gotten supportive and comfortable from team support to working. \\nI also have earned appropriate income. i hope this platform and company will be more success in the future.\\n\"},\"sunanta\":{\"name\":\"Sunanta Janruam\",\"position\":\"Freelance\",\"text\":\"I started working as a freelance recruiter on platform since mid July 2023. Prior to this, \\nI had only three months of experience in recruiting temporary staff. \\nI must say that this job is very 'rewarding.' I don't have to spend time commuting, \\nand I have access to job positions and candidate profiles that I can use in various ways.\\nAdditionally, there is a team available for consultation, and after spending some time understanding the work, \\nyou will start to see success and receive consistent rewards every month. Importantly, \\nit's crucial to diligently post job ads and take good care of candidates. With just this, \\nsuccess and rewards are not far away.\\n\"},\"vachiraya\":{\"name\":\"Vachiraya\",\"position\":\"Recruiter\",\"text\":\"I have had 2 years of experience in the recruitment field. This type of work is closely related to human relations, \\nand it's no different with this job. I have been able to introduce various professions to people,\\nhelp applicants find jobs, and earn income. It's a source of pride for this profession. In terms of income,\\nit is considered good, but we have to work hard to find applicants and pay attention to providing convenience \\nand detailed information to them. Sourceout team is very professional, providing detailed job information \\nand expertise in positions. They also give good advice on cases, making our work easier. \\nImportantly, the platform is user-friendly, allowing us to work from anywhere, and the pay is good as well\\n\"},\"wanida\":{\"name\":\"Wanida Phoothongkan\",\"position\":\"Freelance\",\"text\":\"I have been working through the SourcedOut platform since May 2022. Initially, \\nI wasn't very confident that working online could generate real income. However, \\nbeing someone who enjoys challenges, likes to learn new things, and prefers flexible work,\\nI decided to give it a try. It has been over a year now, and working through the online platform has been quite enjoyable. \\nThere is a supportive team that provides guidance, transparent updates are communicated, \\nand I've also had the opportunity to learn from a diverse group of people through this work.\\n\"}},\"title\":\"What They Say\"}},\"recruiter\":{\"anyone_can_apply\":{\"professional_recruiter\":{\"details\":\"Harness your vast experience, skills, and connections. With us, you are able to search and select job listings independently, \\nmaximizing your expertise.\\n\",\"title\":\"Professional Recruiter\"},\"title\":\"Anyone Can Apply !\",\"unexperienced\":{\"details\":\"No experience, No Problems! With our dedicated support through workshops, personal chat and more, to thrives as a professional recruiter.\",\"title\":\"Unexperienced\"}},\"btn\":\"Join as Freelance Recruiter\",\"description\":\"At SourcedOut, we believe in empowering individuals to reach their utmost potential.\\nWhether you're an experienced or inexperience, we offer a platform where your skills and\\nefforts directly convert to earnings. Dive into a vast pool of job listings, sourcing \\u0026 screening, and earn rewards.\\n\",\"faq\":{\"five\":{\"answer_html\":\"\\u003cp\\u003eAs a recruiter on SourcedOut, you gain the opportunity to work on a flexible platform with both your location and expertise, \\ncontributing to a more efficient recruitment process. Additionally, through our incentive system, you have the chance to earn rewards \\nfor successful placements, enhancing your overall earning potential.\\u003c/p\\u003e\\n\",\"question\":\"How do I benefit from being a recruiter on SourcedOut?\"},\"four\":{\"answer_html\":\"\\u003cp\\u003eAbsolutely! SourcedOut operates with a \\\"no limit of location\\\" approach, allowing recruiters to work from anywhere. \\nThis flexibility enables you to assist in finding candidates in Thailand, and on a global scale in the near future.\\u003c/p\\u003e\\n\",\"question\":\"Can I work as a recruiter on SourcedOut from any location?\"},\"one\":{\"answer_html\":\"\\u003cp\\u003eTo join SourcedOut as a recruiter, you can visit our registration page on the website and follow the straightforward onboarding process with our staff.\\n Once approved, you'll have access to the platform and its features.\\u003c/p\\u003e \\n\",\"question\":\"How can I join the SourcedOut platform as a recruiter?\\n\"},\"three\":{\"answer_html\":\"\\u003cp\\u003eNo, SourcedOut welcomes recruiters from diverse backgrounds and industries. Whether you specialize in IT, \\nhealthcare, finance, or any other sector, you can contribute your expertise to the platform.\\u003c/p\\u003e\\n\",\"question\":\"Is there a specific expertise or industry focus required for recruiters on SourcedOut?\"},\"two\":{\"answer_html\":\"\\u003cp\\u003eCurrently, there are no fees for recruiters to join SourcedOut. It's a platform that values collaboration and \\naims to create a mutually beneficial environment for recruiters and companies seeking their services.\\u003c/p\\u003e\\n\",\"question\":\"Is there a fee to joining SourcedOut as a recruiter?\"}},\"how_much_can_i_earn\":{\"btn\":\"Earn It Now!\",\"description_html\":\"\\u003cp\\u003eTurn your efforts directly into income with our straightforward commission system calculated from referred candidate salary offer.\\u003c/p\\u003e\\n\\u003cp\\u003eExample: 50,000 THB Monthly Income Successful Hiring Candidate = 18,000 THB Incentive to referrer SourcedOut User\\u003c/p\\u003e\\n\\u003cp\\u003eTop Earner user received more than 300,000 THB incentive after 1 years working as user in SourcedOut.\\u003c/p\\u003e\\n\\u003cp\\u003eDive in and see the results for yourself!\\u003c/p\\u003e\\n\",\"title\":\"How Much Can I Earn?\"},\"make_a_start\":{\"description\":\"SourcedOut friendly team will support you in the following steps after get approved to become our freelance recruiter!\",\"list\":{\"job_selection\":{\"details\":\"Explore our vast job listings and find the perfect match for your expertise\",\"title\":\"Job Selection\"},\"rewards\":{\"details\":\"You'll earn your reward once a candidate got hired\",\"title\":\"Get Your Rewards!\"},\"sourcing_screening\":{\"details\":\"Gather candidates using various channels, including our exclusive talent pool\",\"title\":\"Sourcing \\u0026 Screening\"},\"submit_candidate\":{\"details\":\"Propose candidates through SourcedOut, and let our CS Team support\",\"title\":\"Submit Candidate Profile\"}},\"title\":\"Make a Start and Earn Extra Income !\"},\"sourcedout_insight\":{\"avg_earning_per_placement\":\"Average Earning per Placement\",\"avg_salary_of_job\":\"Average Salary of Job\",\"new_jobs_month\":\"New Jobs / Month\",\"number_of_clients\":\"Number of Clients\",\"title\":\"SourcedOut Insight\"},\"steps\":{\"list\":{\"create\":{\"details\":\"Once approved, your account will be issued\",\"title\":\"Create Account\"},\"register\":{\"details\":\"Fill out registration form with your profile details\",\"title\":\"Register\"},\"review\":{\"details\":\"Your profile being reviewed by our CS team before approval\",\"title\":\"Review\"},\"start\":{\"details\":\"Pick the best job offers and kick off your recruiting journey!\",\"title\":\"Start\"}},\"title\":\"Simple Steps to Join SourcedOut\"},\"title_html\":\"Join our Recruiter Network and Earn Extra Income with SourcedOut\",\"what_they_say\":{\"list\":{\"chatchai\":{\"name\":\"Chatchai Sukserm\",\"position\":\"Recruiter\",\"text\":\"I have signed up on a SourcedOut for almost 4 months as a freelance recruiter, \\nI absolutely enjoy to search candidate for many types of roles even some role could bring me new experiences, \\non this platform I have gotten supportive and comfortable from team support to working. \\nI also have earned appropriate income. i hope this platform and company will be more success in the future.\\n\"},\"sunanta\":{\"name\":\"Sunanta Janruam\",\"position\":\"Freelance\",\"text\":\"I started working as a freelance recruiter on platform since mid July 2023. Prior to this, \\nI had only three months of experience in recruiting temporary staff. \\nI must say that this job is very 'rewarding.' I don't have to spend time commuting, \\nand I have access to job positions and candidate profiles that I can use in various ways.\\nAdditionally, there is a team available for consultation, and after spending some time understanding the work, \\nyou will start to see success and receive consistent rewards every month. Importantly, \\nit's crucial to diligently post job ads and take good care of candidates. With just this, \\nsuccess and rewards are not far away.\\n\"},\"vachiraya\":{\"name\":\"Vachiraya\",\"position\":\"Recruiter\",\"text\":\"I have had 2 years of experience in the recruitment field. This type of work is closely related to human relations, \\nand it's no different with this job. I have been able to introduce various professions to people,\\nhelp applicants find jobs, and earn income. It's a source of pride for this profession. In terms of income,\\nit is considered good, but we have to work hard to find applicants and pay attention to providing convenience \\nand detailed information to them. Sourceout team is very professional, providing detailed job information \\nand expertise in positions. They also give good advice on cases, making our work easier. \\nImportantly, the platform is user-friendly, allowing us to work from anywhere, and the pay is good as well\\n\"},\"wanida\":{\"name\":\"Wanida Phoothongkan\",\"position\":\"Freelance\",\"text\":\"I have been working through the SourcedOut platform since May 2022. Initially, \\nI wasn't very confident that working online could generate real income. However, \\nbeing someone who enjoys challenges, likes to learn new things, and prefers flexible work,\\nI decided to give it a try. It has been over a year now, and working through the online platform has been quite enjoyable. \\nThere is a supportive team that provides guidance, transparent updates are communicated, \\nand I've also had the opportunity to learn from a diverse group of people through this work.\\n\"}},\"title\":\"User's Experience\"},\"why_choose_sourcedout\":{\"list\":{\"fresh_opportunities\":{\"details\":\"With new job listings every month, you'll never run out of chances\",\"title\":\"Fresh Opportunities\"},\"high_earning_awaits\":{\"details\":\"Use your experience and skills to tap into greater financial opportunities\",\"title\":\"High Earnings Awaits\"},\"support_by_professional_team\":{\"details\":\"Leave our team to takes over the process after your recommendation\",\"title\":\"Support by Professional Team\"},\"talent_pool_access\":{\"details\":\"Access to our exclusive Talent Pool, discovering the right talent has never been easier\",\"title\":\"Talent Pool Access\"},\"we_got_you\":{\"details\":\"Even lack of HR experience, our robust support system through LINE and workshops ensures you're never alone\",\"title\":\"We Got You, Experienced or Not.\"},\"work_it_on_your_way\":{\"details\":\"Begin anytime, from anywhere, and embrace the freedom to choose your work style\",\"title\":\"Work It YOUR WAY!\"}},\"title\":\"Why Choose SourcedOut\"}},\"sign_up_choice\":{\"list\":{\"become_freelance_recruiters\":{\"btn\":\"Join today\",\"title\":\"Become Freelance Recruiters\"},\"connect_with_high_quality_talents\":{\"btn\":\"Go to the job request\",\"title\":\"Connect with High-Quality Talents\"},\"seeking_out_for_new_job_opportunities\":{\"btn\":\"Go to candidate form\",\"title\":\"Seeking out for new Job Opportunities\"}}}}});\n","import I18n from '../../i18n';\nI18n.translations || (I18n.translations = {});\nI18n.translations[\"th\"] = I18n.extend((I18n.translations[\"th\"] || {}), {\"lp\":{\"about_us\":{\"btn\":{\"recruiter\":\"ลงทะเบียนเริ่มต้นเป็น Freelance Recruiter\",\"talent\":\"มองหาพนักงาน\"},\"company_info\":{\"description_html\":\"\\u003cspan class=\\\"blue\\\"\\u003eReeracoen\\u003c/span\\u003e เป็นผู้นำในด้านบริการสรรหาบุคลากรในประเทศไทยและภูมิภาคเอเชียมากว่า 10 ปี \\nบริษัทพยายามที่จะนำประสบการณ์ในธุรกิจและเทคโนโลยี เพื่อสร้างสิ่งใหม่ๆที่เป็นประโยชน์ให้กับวงการ HR ผ่าน แพลตฟอร์ม SourcedOut\\nด้วยความเชื่อที่เราเรียกว่า \\u003cspan\\u003e\\\"The Reeracoen Ways\\\"\\u003c/span\\u003e เราให้ความสำคัญกับคำมั่นสัญญาเพื่อช่วยให้บริษัทพาร์ทเนอร์ของเราสามารถเติบโต \\nรวมถึงโอกาสของผู้คน ที่อยากเดินทางร่วมกับเรา ผ่านความมุ่งมั่น ผ่านประสบการณ์ และความเชื่อในผู้คน\\\"\\n\",\"title\":\"เกี่ยวกับบริษัท\"},\"description\":\"SourcedOut เป็นแพลตฟอร์มที่เข้ามาเปลี่ยนรูปแบบการจ้างงานแบบเดิมๆ ด้วยการเชื่อมต่อผู้สมัครงาน บริษัทนายจ้าง \\nและเครือข่ายรีครูทเตอร์ขนาดใหญ่ผ่านเทคโนโลยีที่คิดค้นโดยบริษัทรีครูทเมนท์เอเจนซี่ ที่แก้ปัญหารูปแบบการหาและการจ้างงานแบบเดิมๆ ให้ดียิ่งขึ้น\\n\",\"greeting\":{\"description_html\":\"\\u003cp\\u003eสวัสดีครับ\\u003c/p\\u003e\\n\\u003cp\\u003eตั้งแต่ SourcedOut ได้ออกสู่ตลาดในปี 2021 เป้าหมายของเรามีมากกว่าแค่การนำเสนอบริการใหม่ แต่เป็นการวางรากฐานโดยนำนวัตกรรม\\nมาแก้ปัญหาในธุรกิจการจัดหางานทั้งในมุมขององค์กร Recruiter และผู้สมัครที่ต้องการมองหางาน\\u003c/p\\u003e\\n\\u003cp\\u003eและเส้นทางใหม่นี้ถือเป็นความท้าทาย ซึ่งเรามีความเชื่อมั่นอย่างหมดใจในความเปลี่ยนแปลง ที่จะเกิดขึ้นต่อจากนี้ ในทุกวัน เรามุ่งมั่นตั้งใจที่จะพัฒนา SourcedOut ให้ไปถึงศักยภาพสูงสุด\\u003c/p\\u003e\\n\\u003cp\\u003eการเริ่มต้นเส้นทางใหม่ไม่เคยโรยด้วยกลีบกุหลาบแต่ด้ยความเชื่อใจ และแรงสนับสนุนอย่างต่อเนื่องเราก็พร้อมเสมอสำหรับก้าวถัดไปของอนาคต\\u003c/p\\u003e\\n\\u003cp class=\\\"regards\\\"\\u003eWarm regards, \\u003cspan class=\\\"name\\\"\\u003eSourcedOut Team\\u003c/span\\u003e\\u003c/p\\u003e\\n\"},\"our_goal\":{\"employer\":{\"description_html\":\"\\u003cspan\\u003eสำหรับนายจ้าง\\u003c/span\\u003e SourcedOut เป็นบริการจัดหางานที่สามารถช่วยคัดกรอง \\nและหาผู้สมัครที่ตางกับความต้องการ และความเสี่ยงต่ำ ด้วยรูปแบบค่าบริการที่จะเกิดขึ้นเมื่อมีการจ้างงานสำเร็จเท่านั้น\\n\"},\"our_mission\":\"เป้าหมายของเรามือสร้างเครื่องมือที่ตอบโจทย์การสรรหาบุคลากรทั้งในเรื่องของคุณภาพ และความคุ้มค่า ให้กับวงการ HR\\n\",\"recruiter\":{\"description_html\":\"\\u003cspan\\u003eสำหรับรีครูทเตอร์\\u003c/span\\u003e สร้างรายได้ผ่านแพลตฟอร์ม ผ่านการแนะนำผู้สมัครให้กับตำแหน่งงานที่เปิดอยู่บน SourcedOut \\nผ่านการช่วยเหลือของทีมงาน และเครื่องมือต่างๆที่คอยสนับสนุนของเรา\\n\"},\"sourcedout\":{\"description_html\":\"\\u003cspan\\u003eSourcedOut\\u003c/span\\u003e เป็นแพลตฟอร์มที่ออกแบบเพื่อเปลี่ยนรูปแบบการสรรหาพนักงาน \\nโดยผ่านเครือขายรีครูทเตอร์มืออาชีพในอุตสาหกรรมต่างๆกว่า 700 คน เพื่อให้มั่นใจว่าสามารถเพื่อโอกาสในการจ้างงานของบริษัทผู้ว่าจ้าง\\n\"},\"title\":\"เป้าหมายของเรา\"},\"title\":\"เกี่ยวกับ SourcedOut\"},\"employer\":{\"any_risks\":{\"list\":{\"guarantee_satisfaction\":{\"details\":\"ในกรณีที่ผู้สมัครมีการลาออกหลังการเริ่มงานตาม Policy ในการคืนเงิน\",\"title\":\"การันตีคืนเงินในช่วงแรกที่ผู้สมัครเริ่มงาน\"},\"no_hidden_costs\":{\"details\":\"ด้วยรูปแบบ Pay - After - Hire หรือค่าบริการเกิดขึ้นเมื่อเกิดการจ้างงานเท่านั้น\",\"title\":\"ไม่มีค่าใช้จ่ายแอบแฝง\"},\"quality_assurance\":{\"details\":\"ผู้สมัครทุกคนผ่านการสัมภาษณ์คัดกรองโดยทีมงานรีครูทเตอร์มืออาชีพของ SourcedOut\",\"title\":\"มั่นใจในคุณภาพทุกใบสมัครที่คุณได้รับ\"}},\"title\":\"เพิ่มประสิทธิภาพในการสรรหาพนักงาน ผ่านบริการที่ไร้ความเสี่ยง\"},\"btn\":\"เริ่มต้นกับเรา\",\"comparison\":{\"job_position\":\"เว็บประกาศงานทั่วไป\",\"recruiting_service\":\"บริการจัดหางานทั่วไป\"},\"description\":\"เสริมประสิทธิภาพในการมองหาผู้สมัครที่ใช่ผ่านเครือข่าย Freelance Recruiters ผ่านฐานข้อมูลผู้สมัคร หรือรูปแบบการสรรหาบุคลากรที่คุณจะพบได้ที่ SourcedOut \\nเท่านั้น ทางเลือกใหม่ในการมองหาผู้สมัครที่ตอบโจทย์ของคุณ\\n\",\"faq\":{\"five\":{\"answer_html\":\"\\u003cp\\u003eอันดับแรกคือ \\\"ผลตอบแทน\\\" ในรูปแบบของ Incentive ซึ่งจะได้รับหลังจากที่ผู้สมัครที่ส่งมาได้เซ็นสัญญาเริ่มงาน\\nถือเป็นการสิ้นสุดกระบวนจ้างงานอย่างสมบูรณ์ รวมถึงได้ใช้แพลตฟอร์มเป็นการสร้างเสริมทักษะด้านงานทรัพยากรบุคคลผ่านแพลตฟอร์มที่ยืดหยุ่น ไม่มีข้อจำกัดด้านสถานที่และวันเวลาทำงาน\\u003c/p\\u003e\\n\",\"question\":\"ได้อะไรจากการทำงานเป็น Freelance recruiter บน SourcedOut\"},\"four\":{\"answer_html\":\"\\u003cp\\u003eSourcedOut เราออกแบบมาด้วยความเข้าใจคนทำงานและโลกยุคใหม่ที่เวลามีค่ายิ่งกว่าทองและความยืดหยุ่นคือหัวใจสำคัญ ทำให้ทุกอย่าง \\\"ขึ้นอยู่กับการบริหารตัวเอง\\\"\\nจะสามารถทำงานที่ไหน เมื่อไรก็ได้ ไม่มีชั่วโมงขั้นต่ำการทำงานไม่มีการกำหนดตัวเลขผลงานที่ต้องทำได้ในแต่ละเดือน\\u003c/p\\u003e\\n\",\"question\":\"รูปแบบการทำงานเป็นอย่างไร สามารถทำงานจากที่ไหนได้บ้าง\"},\"one\":{\"answer_html\":\"\\u003cp\\u003eสามารถเริ่มต้นลงทะเบียนสมัครได้ผ่านเว็บไซต์ [https://www.sourcedout.asia/recruiter_applications/new] พร้อมรับการแนะนำวิธีการทำงานบนแพลตฟอร์มจากทีมงาน SourcedOut\\nและเริ่มต้นใช้งานได้ทันที หลังจากที่ได้รับการยืนยันผ่านระบบ.\\u003c/p\\u003e \\n\",\"question\":\"วิธีการเข้าร่วมเป็นส่วนหนึ่งในฐานะ HR Freelance recruiter\\n\"},\"three\":{\"answer_html\":\"\\u003cp\\u003eไม่จำเป็น SourcedOut เราเปิดกว้างให้กับความหลากหลาย ดังนั้นไม่ว่าคุณจะมีพื้นหลังการทำงานแบบไหน มีประสบการณ์ในสายงานใด\\nก็สามารถใช้ทักษะที่มีอยู่ทำงานบนแพลตฟอร์มของเราได้\\u003c/p\\u003e\\n\",\"question\":\"การเป็น Freelance recruiter บนแพลตฟอร์มต้องมีความเชี่ยวชาญในด้านไหนเป็นพิเศษหรือไม่\"},\"two\":{\"answer_html\":\"\\u003cp\\u003eปัจจุบันสามารถสมัครได้ฟรี ไม่มีค่าใช้จ่ายในการเข้าร่วมเป็น Freelance recruiter กับ SourcedOut เนื่องจากเราให้คุณค่ากับการเป็นพื้นที่ของการสร้างสรรค์โอกาส\\nให้กับทั้ง Recruiter และองค์กรไปพร้อมๆ กัน.\\u003c/p\\u003e\\n\",\"question\":\"มีค่าใช้จ่ายใดๆ สำหรับการสมัครเข้าร่วมเป็น HR Freelance recruiter หรือไม่?\"}},\"sourcedout_insight\":{\"app_per_month\":\"ผู้สมัครที่ถูกส่งผ่านแพลตฟอร์ม / เดือน\",\"fastest_first\":\"สามารถแนะนำผู้สมัครหลังประกาศงาน (เร็วสุด)\",\"no_recruiter\":\"จำนวน User บนแพลตฟอร์ม\",\"title\":\"ข้อมูลเครือข่าย Freelance Recruiter ของ SourcedOut\"},\"steps\":{\"list\":{\"share_detail\":\"แชร์ข้อมูลเกี่ยวกับตำแหน่งงานที่คุณเปิดหากับทีมงาน CS ของเรา\",\"sign_up\":\"ลงทะเบียนบัญชีผู้ว่าจ้างกับ SourcedOut\",\"wait\":\"ที่เหลือก็แค่รอผู้สมัครจากทีมงานของเราได้เลย !\"},\"title\":\"พร้อมเริ่มต้นการสรรหากับเรา\"},\"title\":\"เพิ่มโอกาสเจอผู้สมัครที่ตรงโจทย์ ในค่าบริการที่ตรงใจ SourcedOut\",\"what_they_say\":{\"list\":{\"jinnipa\":{\"company\":\"C.S.I. Intertrade Co.,Ltd\",\"name\":\"คุณจิณนภา\",\"position\":\"HR Director\",\"text\":\"การบริการรวดเร็ว ถูกต้องตาม requirement ได้คนที่มีคุณสมบัติตรงตามที่ต้องการหลายคน\\nการทำงานมีขั้นตอนชัดเจน รวดเร็ว ราคาเหมาะสม\\n\"},\"pongsak\":{\"company\":\"Bainisys Co., Ltd.\",\"name\":\"คุณพงษ์ศักดิ์\",\"position\":\"Business Development Manager\",\"text\":\"ถือว่าแพลตฟอร์ม SourcedOut เป็นบริการสรรหาพนักงานที่ค่อนข้างมีประสิทธิภาพ \\nบริษัทก็ได้ผู้สมัครที่ตรงโจทย์ ไม่ใช่แค่เฉพาะจำนวนของผู้สมัครที่ทีมงานส่งให้กับทางบริษัทเท่านั้น \\nแต่ทีมงานของ SourcedOut จะคอยให้คำแนะนำเกี่ยวกับข้อดีข้อเสียของผู้สมัครแต่ละคน \\nจึงช่วยให้การทำงาน Hiring ของบริษัทมีประสิทธิภาพมากขึ้น\\n\"},\"sugunya\":{\"company\":\"D.A.A. (Thailand) Co.,Ltd\",\"name\":\"คุณสุกัญญา\",\"position\":\"Accountant\",\"text\":\"บริษัทฯ เลือกใช้บริการ เพราะช่วยคัดกรองผู้สมัครที่มีคุณสมบัติตรงตามความต้องการ \\nและสามารถสรรหาพนักงานในตำแหน่งที่ต้องการและพร้อมเริ่มงานได้อย่างรวดเร็ว \\nลดความเสี่ยงในการจ้างพนักงานที่ไม่มีประสิทธิภาพและไม่เหมาะสมกับบริษัท \\nและลดเวลาในการดำเนินการสรรหาบุคคากรของบริษัทค่ะ\\n\"}},\"title\":\"ประสบการณ์จริงจากบริษัทที่ใช้บริการ\"},\"why_choose_sourcedout\":{\"list\":{\"assured_quality\":{\"details\":\"การซัพพอร์ทจากทีมงาน SourcedOut ตลอดการสรรหาช่วยให้คุณทั้งสะดวก รวดเร็ว รวมถึงเพื่มประสิทธิภาพในการคัดกรองผู้สมัครก่อนถึงมือคุณ\",\"title\":\"บริการที่คุณมั่นใจได้ทั้งคุณภาพของผู้สมัครและบริการ\"},\"connect\":{\"details\":\"SourcedOut รวบรวม Recruiter เก่งๆจากทุกสายงาน อุตสาหกรรม เพื่อตอบโจทย์การหาผู้สมัครได้อย่างครอบคลุมและรวดเร็ว\",\"title\":\"เข้าถึงคอมมูนิตี้ Freelance Recruiters กว่าพันคน !\"},\"cost_effective\":{\"details\":\"ได้รับประสบการณ์บริการในการมองหาบุคลากรที่ดีที่สุด ในราคาที่เหมาะสมที่สุดเทียบกับบริการสรรหาพนักงานทั่วไป\",\"title\":\"ตอบโจทย์เรื่องความคุ้มค่าของราคา\"}},\"title\":\"ทำไมถึงควรเลือก SourcedOut?\"}},\"footer\":{\"about_us\":\"เกี่ยวกับเรา\",\"employer\":\"สำหรับ Employer\",\"follow_us\":\"ติดต่อเรา\",\"privacy_policy\":\"นโยบายความเป็นส่วนตัว\",\"recruiter\":\"สำหรับ Recruiter\",\"talent\":\"สำหรับทาเลนท์\",\"terms_of_use\":\"ข้อตกลงในการใช้งาน\"},\"header\":{\"about_us\":\"เกี่ยวกับเรา\",\"employer\":\"สำหรับ Employer\",\"home\":\"หน้าหลัก\",\"privacy_policy\":\"นโยบายความเป็นส่วนตัว\",\"recruiter\":\"สำหรับ Recruiter\",\"talent\":\"สำหรับทาเลนท์\",\"terms_of_use\":\"ข้อตกลงในการใช้งาน\",\"user\":{\"log_in\":\"เข้าสู่ระบบ\",\"sign_up\":\"ลงทะเบียน\"}},\"index\":{\"about_sourcedout\":{\"employer_html\":\"\\u003cspan\\u003eสำหรับองค์กร\\u003c/span\\u003e SourcedOut ช่วยลดความเสี่ยงจากบริการสรรหาบุคลากรที่ ค่าบริการจะเกิดขึ้นเมื่อมีการจ้างงานสำเร็จเท่านั้น รวมถึงการคัดกรองผู้สมัครที่ตอบโจทย์คุณสมบัติที่จำเป็น\",\"recruiter_html\":\"\\u003cspan\\u003eFreelance Recruiter \\u003c/span\\u003e สามารถสร้างรายได้ผ่านการแนะนำผู้สมัครให้กับตำแหน่งงานที่หลากหลายผ่านเครื่องมือที่ช่วยในการทำงานบนแพลตฟอร์ม และการแนะนำของทีมงาน รวมถึงเวิร์คช็อปต่างๆใน SourcedOut\",\"sourcedout_html\":\"\\u003cspan\\u003eSourcedOut\\u003c/span\\u003e เป็นแพลตฟอร์มที่เข้ามาแก้ปัญหาการจ้างงานแบบเดิมๆด้วยเครือข่าย Freelance Recruiter กว่า 700 คน เพื่อช่วยตอบโจทย์การมองหาผู้สมัคร ลดภาระของ HR ในองค์กร และเซฟค่าใช้จ่ายในการมองหาผู้สมัคร\",\"title\":\"ทำความรู้จัก SourcedOut\"},\"be_a_part_of_sourcedout\":{\"list\":{\"client\":{\"btn\":\"เริ่มต้นใช้งาน\",\"description\":\"ตอบโจทย์การหาผู้สมัครด้วยการเชื่อมต่อกับเครือข่ายรีครูทเตอร์มืออาชีพ ช่วยให้กาหาผู้สมัครทั้งสะดวกและเซฟค่าใช้จ่าย\",\"title\":\"สำหรับบริษัทมองหาผู้สมัคร\"},\"recruiter\":{\"btn\":\"ดูรายละเอียดเพิ่มเติม\",\"description\":\"เปลี่ยนทักษะและประสบการณ์ด้าน HR ของคุณ สร้างรายได้ทุกที่ทุกเวลากับ Sourcedout\",\"title\":\"สนใจเป็น Freelance Recruiter\"},\"searching\":{\"btn\":\"ฝากโปรไฟล์\",\"description\":\"ค้นพบงานที่ใช่ผ่านเครือข่ายรีครูทเตอร์มืออาชีพที่ใหญ่ที่สุดใน SourcedOut โดยไม่มีค่าใช้จ่าย\",\"title\":\"สำหรับผู้สมัครงาน\"}},\"title\":\"ร่วมเป็นส่วนหนึ่งของ SourcedOut\"},\"btn\":{\"recruiter\":\"ลงทะเบียนเริ่มต้นเป็น Freelance Recruiter\",\"talent\":\"มองหาพนักงาน\"},\"description_html\":\"เป็นส่วนหนึ่งของการสร้างแพลตฟอร์มสำหรับการสรรหาพนักงานเพื่อช่วยให้สังคม HR เติบโต กับ \\u003cspan\\u003eSourcedOut\\u003c/span\\u003e ที่ที่คุณค้นพบโอกาสแบบไม่มีที่สิ้นสุด\",\"faq\":{\"four\":{\"answer_html\":\"\\u003cp\\u003eบริษัทต่างชาติที่เข้ามาลงทุนในประเทศไทย และต้องการมองหาผู้สมัคร มักจะมีข้อจำกัดให้เลือกใช้บริษัทจัดหางานในประเทศนั้นๆ เนื่องจากความเชี่ยวชาญ ฐานผู้สมัครในประเทศ แต่แพลตฟอร์ม SourcedOut \\nเชื่อว่าการสร้างแพลตฟอร์มออนไลน์ที่ Recruiter สามารถทำงานที่ไหนก็ได้ และการไม่มีข้อจำกัดด้านสถานที่ ทำให้องค์กรมีโอกาสที่หลากหลายมากขึ้น เนื่องจากสามารถเข้าถึงผู้สมัครที่มีคุณสมบัติตรงสเปกได้จากทุกพื้นที่ทั่วประเทศ \\nและกำลังเติบโตเพื่อครอบคลุมในระดับโลก ภายในอนาคตอันใกล้นี้\\u003c/p\\u003e\\n\",\"question\":\"อะไรคือจุดเด่นของการ \\\"No Limit to Location\\\" ในกระบวนการจ้างงาน\"},\"one\":{\"answer_html\":\"\\u003cp\\u003eSourcedOut คือบริการจัดหาพนักงานรูปแบบใหม่จาก Reeracoen Thailand ด้วยคอนเซปต์ของการสร้างเครือข่าย HR Freelance recruiter\\nเพื่อเชื่อมต่อและตอบสนองความต้องการให้กับองค์กรที่ต้องการรับสมัครงาน\\u003c/p\\u003e\\n\\u003cp\\u003eเรามีเป้าหมายคือการมุ่งแก้ไขปัญหาด้านต้นทุนในกระบวนการรับสมัครงานผ่านแพลตฟอร์มที่มีความยืดหยุ่น โดยไร้ข้อจำกัดที่อาจเป็นอุปสรรคในการมองหาผู้สมัคร\\nอาทิ ความเชี่ยวชาญในสายงาน รวมถึงสถานที่\\u003c/p\\u003e\\n\",\"question\":\"ความเกี่ยวข้องระหว่าง SourcedOut กับ Reeracoen\\n\"},\"three\":{\"answer_html\":\"\\u003cp\\u003eโดยทั่วไปปัญหาในกระบวนการรับสมัครงานมักแบ่งออกเป็น 3 ด้านได้แก่ต้นทุนค่าใช้จ่าย กำลังคนในการดำเนินงาน และระยะเวลาที่ใช้\\nซึ่ง SourcedOut สามารถแก้ปัญหาเหล่านี้ได้ทุกด้านโดยเฉพาะ \\\"ราคา\\\"เนื่องจากบางบริษัทอาจมีข้อจำกัดในด้านของต้นทุนจนไม่สามารถเข้าถึงบริการจัดหางานที่มีคุณภาพได้\\u003c/p\\u003e\\n\\u003cp\\u003eเราจึงสร้างรูปแบบใหม่ของการจัดหางานผ่านเครือข่าย HR Freelance recruiter ที่ลดค่า Operation cost แบบบริษัทเอเจนซี่ออกไป\\nทำให้องค์กรไหนๆ ก็เข้าถึงบริการจัดหางานที่มีคุณภาพและคุ้มค่าได้ในอัตราค่าบริการที่ถูกกว่า Recruitment agency ทั่วไปถึง 30-60%\\u003c/p\\u003e\\n\",\"question\":\"อะไรที่ทำให้ SourcedOut แตกต่างจากบริการจัดหางานอื่นๆ\"},\"two\":{\"answer_html\":\"\\u003cp\\u003eSourcedOut ด้วยกระบวนการที่มีคุณภาพ รวดเร็ว และยืดหยุ่น ผ่านแพลตฟอร์มโดยองค์กรสามารถเชื่อมต่อกับ HR Freelance recruiter ที่มีความเชี่ยวชาญ\\nตรงโจทย์ตามความต้องการที่ความเฉพาะตัวในแต่ละงานซึ่งนำไปสู่การกระบวนการจ้างงานที่ราบรื่นและมีประสิทธิภาพ\\u003c/p\\u003e \\n\",\"question\":\"SourcedOut สามารถเพิ่มประสิทธิภาพให้การรับสมัครงานได้อย่างไร?\"}},\"lets_get_started\":{\"become_freelance_recruiters\":\"สนใจเป็น Freelance Recruiter\",\"connect_with_high_quality_talents\":\"มองหาผู้สมัคร\",\"seeking_out_for_new_job_opportunities\":\"สนใจมองหางาน\",\"title\":\"เริ่มต้นกับเรา\"},\"title\":\"ร่วมสร้างเครือข่าย HR Freelance Recruiter กับเรา\",\"what_they_say\":{\"list\":{\"chatchai\":{\"name\":\"ชาติชาย\",\"position\":\"HR Recruiter\",\"text\":\"ผมเริ่มต้นสมัครเป็นฟรีแลนซ์บนแพลตฟอร์ม SourcedOut ประมาณ 4 เดือนก่อนหน้านี้ครับ ผมรู้สึกว่าการทำงานบนแพลตฟอร์มค่อนข้างสนุก \\nผ่านโอกาสในการมองหาผู้สมัครในหลากหลายอาชีพ และอุตสาหกรรม ซึ่งถือว่าเป็นประสบการณ์ในการทำงานที่ดีของผมเลย \\nที่นี่ผมสามารถมองหาความช่วยเหลือต่างๆได้ผ่านทีมงานของ SourcedOut เมื่อผมพบเจอปัญหาต่างๆในการทำงาน และช่วยให้การทำงานสะดวก \\nและง่ายขึ้นรวมถึงรายได้ผ่านตัวแพลตฟอร์มก็คุ้มค่ากับเวลาที่เราทำงานด้วย ผมหวังว่าแพลตฟอร์มจะมีโอกาสเติบโต และมีผู้ใช้งานที่เยอะขึ้นในอนาคตนะครับ\\n\"},\"sunanta\":{\"name\":\"สุนันทา จันรวม\",\"position\":\"Freelance Recruiter\",\"text\":\"\\\"เริ่มเป็น Freelance Recruiter กับ Reeracoen ตั้งแต่กลางเดือนก.ค. 2023\\nโดยก่อนหน้านี้เคยมีประสบการณ์หาพนักงานรายวันแค่ 3 เดือน\\nต้องบอกเลยว่าเป็นงานที่ “คุ้มค่า” มากๆ ไม่ต้องออกไปเสียเวลานอกบ้าน\\nมีข้อมูลตำแหน่งงานและโปรไฟล์ผู้สมัครให้นำไปใช้งานต่อในช่องทางต่างๆ ได้\\nแถมมีทีมงานให้คำปรึกษาเพียงใช้เวลาทำความเข้าใจสักระยะจากนั้นคุณก็จะพบกับความสำเร็จและรับผลตอบแทนติดๆ \\nกันในทุกเดือน *ที่สำคัญต้องขยันลงประกาศ-ตามเคส ดูแล candidate ดีๆ แค่นี้ผลตอบแทนก็อยู่ไม่ไกล*\\\"\\n\"},\"vachiraya\":{\"name\":\"วชิรญาณ์\",\"position\":\"HR Recruiter\",\"text\":\"\\\"เคยมีประสบการณ์ด้านรีครูท 2 ปีค่ะ งานลักษณะนี้ถือเป็นเรื่องของมนุษย์สัมพันธ์ด้วย กับงานนี้ก็เช่นกัน\\nได้แนะนำอาชีพให้ผู้คนหลากหลาย ได้ช่วยให้ผู้สมัครได้งาน ได้เงิน เป็นความภาคภูมิใจของอาชีพนี้เลย เรื่องรายได้ ก็ถือว่าดีนะคะ \\nแต่เราต้องขยันหาผู้สมัคร และใส่ใจอำนวยความสะดวกผู้สมัคร ให้ข้อมูลที่ละเอียด ส่วนทีมงาน Reeracoen ก็มีความเป็นมืออาชีพดีค่ะ \\nข้อมูลงานละเอียด และมีความเชี่ยวชาญในตำแหน่งงาน รวมถึงให้คำปรึกษาเคสได้ดีทำให้เราทำงานง่ายขึ้น ที่สำคัญคือแพลตฟอร์มใช้งานง่าย อยู่ไหนก็ทำงานได้ แถมได้เงินดีด้วย \\\"\\n\"},\"wanida\":{\"name\":\"วนิดา ภู่ทองก้าน\",\"position\":\"Freelance Recruiter\",\"text\":\"“สวัสดีค่ะ ชื่อวนิดาหรือเรียกสั้นๆ ว่ามดก็ได้ค่ะ สำหรับมดได้ทำงานผ่านแพลตฟอร์ม Sourcedout โดยเริ่มตั้งแต่เดือนพฤษภาคมปี พ.ศ. 2565\\nแรกๆ เรายังไม่ค่อยมั่นใจว่าการทำงานผ่านแพลตฟอร์มออนไลน์จะสามารถสร้างรายได้จริง แต่ด้วยความที่ส่วนตัวเป็นคนชอบความท้าทาย \\nชอบเรียนรู้สิ่งใหม่ๆ และทำงานแบบยืดหยุ่น จึงลองทำดูก่อน และตอนนี้ก็ผ่านมาปีกว่าแล้วค่ะ การทำงานผ่านแพลตฟอร์มค่อนข้างสนุก \\nมี team support ที่คอยดูแลให้คำปรึกษา มีการแจ้งอัพเดทที่โปร่งใส นอกจากนี้เรายังได้มีโอกาสเรียนรู้กลุ่มคนที่หลากหลายจากการทำงานนี้ค่ะ”\\n\"}},\"title\":\"ประสบการณ์จากผู้ใช้\"}},\"recruiter\":{\"anyone_can_apply\":{\"professional_recruiter\":{\"details\":\"ใช้ประสบการณ์ ทักษะ และเครือข่ายผู้สมัครที่คุณมี ผ่ารการทำงานได้อย่างอิสระบนแพลตฟอร์ม และรูปแบบงานที่หลากหลายของเรา\",\"title\":\"รีครูทเตอร์มืออาชีพ\"},\"title\":\"ที่ SourcedOut ใครก็สมัครได้\",\"unexperienced\":{\"details\":\"ไม่มีปัญหา ! ทีมงาน SourcedOut พร้อมช่วยให้คุณสามารถเริ่มต้นกับการทำงานบทแพลตฟอร์มและเริ่มต้นอาชีพรีครูทเตอร์ผ่านเครื่องมือของเรา\",\"title\":\"มือใหม่กับงาน HR\"}},\"btn\":\"เริ่มต้นเป็น Freelance Recruiter\",\"description\":\"ที่ SourcedOut เราเชื่อในการเสริมสร้างสกิลเพื่อเริ่มต้นการเป็นรีครูทเตอร์มืออาชีพ ทั้งผู้ที่มีประสบการณ์มาก่อน หรือแม้แต่ไม่มีประสบการณ์ เราอยากสร้างแพลตฟอร์มที่คุณสามารถใช้สกิลและความตั้งใจสร้างเป็นรายได้ผ่านรูปแบบการหาผู้สมัครให้กับตำแหน่งงานที่หลากหลายบน SourcedOut\",\"faq\":{\"five\":{\"answer_html\":\"\\u003cp\\u003eอันดับแรกคือ \\\"ผลตอบแทน\\\" ในรูปแบบของ Incentive ซึ่งจะได้รับหลังจากที่ผู้สมัครที่ส่งมาได้เซ็นสัญญาเริ่มงาน\\nถือเป็นการสิ้นสุดกระบวนจ้างงานอย่างสมบูรณ์ รวมถึงได้ใช้แพลตฟอร์มเป็นการสร้างเสริมทักษะด้านงานทรัพยากรบุคคลผ่านแพลตฟอร์มที่ยืดหยุ่น ไม่มีข้อจำกัดด้านสถานที่และวันเวลาทำงาน\\u003c/p\\u003e\\n\",\"question\":\"ได้อะไรจากการทำงานเป็น Freelance recruiter บน SourcedOut\"},\"four\":{\"answer_html\":\"\\u003cp\\u003eSourcedOut เราออกแบบมาด้วยความเข้าใจคนทำงานและโลกยุคใหม่ที่เวลามีค่ายิ่งกว่าทองและความยืดหยุ่นคือหัวใจสำคัญ ทำให้ทุกอย่าง \\\"ขึ้นอยู่กับการบริหารตัวเอง\\\"\\nจะสามารถทำงานที่ไหน เมื่อไรก็ได้ ไม่มีชั่วโมงขั้นต่ำการทำงานไม่มีการกำหนดตัวเลขผลงานที่ต้องทำได้ในแต่ละเดือน\\u003c/p\\u003e\\n\",\"question\":\"รูปแบบการทำงานเป็นอย่างไร สามารถทำงานจากที่ไหนได้บ้าง\"},\"one\":{\"answer_html\":\"\\u003cp\\u003eสามารถเริ่มต้นลงทะเบียนสมัครได้ผ่านเว็บไซต์ [https://www.sourcedout.asia/recruiter_applications/new] พร้อมรับการแนะนำวิธีการทำงานบนแพลตฟอร์มจากทีมงาน SourcedOut\\nและเริ่มต้นใช้งานได้ทันที หลังจากที่ได้รับการยืนยันผ่านระบบ.\\u003c/p\\u003e \\n\",\"question\":\"วิธีการเข้าร่วมเป็นส่วนหนึ่งในฐานะ HR Freelance recruiter\\n\"},\"three\":{\"answer_html\":\"\\u003cp\\u003eไม่จำเป็น SourcedOut เราเปิดกว้างให้กับความหลากหลาย ดังนั้นไม่ว่าคุณจะมีพื้นหลังการทำงานแบบไหน มีประสบการณ์ในสายงานใด\\nก็สามารถใช้ทักษะที่มีอยู่ทำงานบนแพลตฟอร์มของเราได้\\u003c/p\\u003e\\n\",\"question\":\"การเป็น Freelance recruiter บนแพลตฟอร์มต้องมีความเชี่ยวชาญในด้านไหนเป็นพิเศษหรือไม่\"},\"two\":{\"answer_html\":\"\\u003cp\\u003eปัจจุบันสามารถสมัครได้ฟรี ไม่มีค่าใช้จ่ายในการเข้าร่วมเป็น Freelance recruiter กับ SourcedOut เนื่องจากเราให้คุณค่ากับการเป็นพื้นที่ของการสร้างสรรค์โอกาส\\nให้กับทั้ง Recruiter และองค์กรไปพร้อมๆ กัน.\\u003c/p\\u003e\\n\",\"question\":\"มีค่าใช้จ่ายใดๆ สำหรับการสมัครเข้าร่วมเป็น HR Freelance recruiter หรือไม่?\"}},\"how_much_can_i_earn\":{\"btn\":\"เริ่มต้นสร้างรายได้กับเรา\",\"description_html\":\"\\u003cp\\u003eSourcedOut จะตอบแทนความพยายามในการแนะนำผู้สมัครของคุณเป็นรูปแบบ Incentive เมื่อผู้สมัครที่คุณแนะนำได้งานผ่านแพลตฟอร์ม โดยจะคำนวนจากเงินเดือนที่ผู้สมัครได้รับออฟเฟอร์จากบริษัทที่ถูกแนะนำ\\u003c/p\\u003e\\n\\u003cp\\u003eตัวอย่าง: บริษัทมีการออฟเฟอร์เงินเดือนผู้สมัคร 50,000 บาท = Incentive ที่คุณจะได้รับผ่านการแนะนำผู้สมัครคือ 18,000 บาท \\u003c/p\\u003e\\n\\u003cp\\u003eรีครูทเตอร์ที่สามารถสร้างรายได้สูงสุดผ่านแพลตฟอร์ม SourcedOut สามารถทำรายได้สูงกว่า 300,000 บาทหลังจากเริ่มต้นทำงานบนแพลตฟอร์ม SourcedOut 1 ปี\\u003c/p\\u003e\\n\\u003cp\\u003eเข้ามาเปิดโอกาสสร้างรายได้แบบนี้ด้วยตัวคุณเอง\\u003c/p\\u003e\\n\",\"title\":\"รูปแบบรายได้ของ SourcedOut\"},\"make_a_start\":{\"description\":\"มีทีมงาน SourcedOut พร้อมให้ความช่วยเหลือและสนับสนุนตลอดขั้นตอนการทำงาน\",\"list\":{\"job_selection\":{\"details\":\"ดูโอกาสงานต่างๆ ที่เปิดอยู่บนแพลตฟอร์มตามทีคุณถนัดได้อย่างอิสระ\",\"title\":\"เลือกตำแหน่งงาน\"},\"rewards\":{\"details\":\"ความพยายามของคุณจะถูกตอบแทนผ่าน Incentive เมื่อผู้สมัครที่คุณแนะนำได้รับงานผ่านตัวแพลตฟอร์ม\",\"title\":\"ได้รับรางวัล\"},\"sourcing_screening\":{\"details\":\"หาผู้สมัครผ่านช่องทางต่างๆที่คุณสามารถเข้าถึง สกรีนสัมภาษณ์เพื่อให้แน่ใจว่าถูกต้องตามคุณสมบัติที่บริษัทมองหา\",\"title\":\"มองหาผู้สมัคร และแมทช์งาน\"},\"submit_candidate\":{\"details\":\"แนะนำผู้สมัครผ่านช่องทางที่เราเตรียมไว้บทแพลตฟอร์ม ที่เหลือ...ปล่อยให้เป็นหน้าที่ทีมงานของ SourcedOut\",\"title\":\"ส่งผู้สมัคร\"}},\"title\":\"เริ่มต้นสร้างรายได้กับเราวันนี้ !\"},\"sourcedout_insight\":{\"avg_earning_per_placement\":\"Incentive โดยเฉลี่ยต่อ 1 Placement\",\"avg_salary_of_job\":\"อัตราฐานเงินเดือนโดยเฉลี่ย\",\"new_jobs_month\":\"ตำแหน่งงานใหม่/เดือน\",\"number_of_clients\":\"บริษัทพาร์ทเนอร์ที่ใช้บริการ\",\"title\":\"ข้อมูลเกี่ยวกับตัวแพลตฟอร์ม\"},\"steps\":{\"list\":{\"create\":{\"details\":\"เมื่อได้รับอนุมัติ คุณสามารถ Login ผ่านอีเมลและบัญชีที่ถูกสร้างขึ้น\",\"title\":\"สร้างบัญชี\"},\"register\":{\"details\":\"กรอกข้อมูลรายละเอียดส่วนตัวของคุณ\",\"title\":\"ลงทะเบียน\"},\"review\":{\"details\":\"ทีมงานของ SourcedOut จะประเมินคุณสมบัติก่อนอนุมัติให้เข้าไปใช้งา\",\"title\":\"ประเมินคุณสมบัติ\"},\"start\":{\"details\":\"เลือกงานที่คุณถนัด พร้อมเริ่มต้นการเป็นรีครูทเตอร์ได้ !\",\"title\":\"เริ่มต้นแนะนำผู้สมัคร\"}},\"title\":\"เริ่มต้นกับ SourcedOut ได้ง่ายๆ\"},\"title_html\":\"เข้าร่วมเป็นส่วนหนึ่งกับเครือข่าย\\u003cbr\\u003eรีครูทเตอร์และเริ่มสร้างรายได้กับ SourcedOut\",\"what_they_say\":{\"list\":{\"chatchai\":{\"name\":\"ชาติชาย\",\"position\":\"HR Recruiter\",\"text\":\"ผมเริ่มต้นสมัครเป็นฟรีแลนซ์บนแพลตฟอร์ม SourcedOut ประมาณ 4 เดือนก่อนหน้านี้ครับ ผมรู้สึกว่าการทำงานบนแพลตฟอร์มค่อนข้างสนุก \\nผ่านโอกาสในการมองหาผู้สมัครในหลากหลายอาชีพ และอุตสาหกรรม ซึ่งถือว่าเป็นประสบการณ์ในการทำงานที่ดีของผมเลย \\nที่นี่ผมสามารถมองหาความช่วยเหลือต่างๆได้ผ่านทีมงานของ SourcedOut เมื่อผมพบเจอปัญหาต่างๆในการทำงาน และช่วยให้การทำงานสะดวก \\nและง่ายขึ้นรวมถึงรายได้ผ่านตัวแพลตฟอร์มก็คุ้มค่ากับเวลาที่เราทำงานด้วย ผมหวังว่าแพลตฟอร์มจะมีโอกาสเติบโต และมีผู้ใช้งานที่เยอะขึ้นในอนาคตนะครับ\\n\"},\"sunanta\":{\"name\":\"สุนันทา จันรวม\",\"position\":\"Freelance Recruiter\",\"text\":\"\\\"เริ่มเป็น Freelance Recruiter กับ Reeracoen ตั้งแต่กลางเดือนก.ค. 2023\\nโดยก่อนหน้านี้เคยมีประสบการณ์หาพนักงานรายวันแค่ 3 เดือน\\nต้องบอกเลยว่าเป็นงานที่ “คุ้มค่า” มากๆ ไม่ต้องออกไปเสียเวลานอกบ้าน\\nมีข้อมูลตำแหน่งงานและโปรไฟล์ผู้สมัครให้นำไปใช้งานต่อในช่องทางต่างๆ ได้\\nแถมมีทีมงานให้คำปรึกษาเพียงใช้เวลาทำความเข้าใจสักระยะจากนั้นคุณก็จะพบกับความสำเร็จและรับผลตอบแทนติดๆ \\nกันในทุกเดือน *ที่สำคัญต้องขยันลงประกาศ-ตามเคส ดูแล candidate ดีๆ แค่นี้ผลตอบแทนก็อยู่ไม่ไกล*\\\"\\n\"},\"vachiraya\":{\"name\":\"วชิรญาณ์\",\"position\":\"HR Recruiter\",\"text\":\"\\\"เคยมีประสบการณ์ด้านรีครูท 2 ปีค่ะ งานลักษณะนี้ถือเป็นเรื่องของมนุษย์สัมพันธ์ด้วย กับงานนี้ก็เช่นกัน\\nได้แนะนำอาชีพให้ผู้คนหลากหลาย ได้ช่วยให้ผู้สมัครได้งาน ได้เงิน เป็นความภาคภูมิใจของอาชีพนี้เลย เรื่องรายได้ ก็ถือว่าดีนะคะ \\nแต่เราต้องขยันหาผู้สมัคร และใส่ใจอำนวยความสะดวกผู้สมัคร ให้ข้อมูลที่ละเอียด ส่วนทีมงาน Reeracoen ก็มีความเป็นมืออาชีพดีค่ะ \\nข้อมูลงานละเอียด และมีความเชี่ยวชาญในตำแหน่งงาน รวมถึงให้คำปรึกษาเคสได้ดีทำให้เราทำงานง่ายขึ้น ที่สำคัญคือแพลตฟอร์มใช้งานง่าย อยู่ไหนก็ทำงานได้ แถมได้เงินดีด้วย \\\"\\n\"},\"wanida\":{\"name\":\"วนิดา ภู่ทองก้าน\",\"position\":\"Freelance Recruiter\",\"text\":\"“สวัสดีค่ะ ชื่อวนิดาหรือเรียกสั้นๆ ว่ามดก็ได้ค่ะ สำหรับมดได้ทำงานผ่านแพลตฟอร์ม Sourcedout โดยเริ่มตั้งแต่เดือนพฤษภาคมปี พ.ศ. 2565\\nแรกๆ เรายังไม่ค่อยมั่นใจว่าการทำงานผ่านแพลตฟอร์มออนไลน์จะสามารถสร้างรายได้จริง แต่ด้วยความที่ส่วนตัวเป็นคนชอบความท้าทาย \\nชอบเรียนรู้สิ่งใหม่ๆ และทำงานแบบยืดหยุ่น จึงลองทำดูก่อน และตอนนี้ก็ผ่านมาปีกว่าแล้วค่ะ การทำงานผ่านแพลตฟอร์มค่อนข้างสนุก \\nมี team support ที่คอยดูแลให้คำปรึกษา มีการแจ้งอัพเดทที่โปร่งใส นอกจากนี้เรายังได้มีโอกาสเรียนรู้กลุ่มคนที่หลากหลายจากการทำงานนี้ค่ะ”\\n\"}},\"title\":\"ประสบการณ์จริงจาก User\"},\"why_choose_sourcedout\":{\"list\":{\"fresh_opportunities\":{\"details\":\"งานที่เปิดอยู่บนแพลตฟอร์มมีการเปลี่ยนแปลงทุกเดือน เพื่อให้คุณมีโอกาสใหม่ๆได้ทดสอบ\",\"title\":\"เปิดรับโอกาสใหม่ๆ\"},\"high_earning_awaits\":{\"details\":\"ใช้ประสบการณ์และเปลี่ยนทักษะของคุณให้เป็นโอกาสด้านการเงินที่หาไม่ได้ที่ไหน\",\"title\":\"รายได้ที่น่าสนใจรอคุณอยู่\"},\"support_by_professional_team\":{\"details\":\"ให้ทีมงานมืออาชีพคอยช่วยเหลือคุณในขั้นตอนการนัดสัมภาษณ์หรือออฟเฟอร์งานที่ยุ่งยากหลังคุณแนะนำผู้สมัครเข้ามา\",\"title\":\"มีทีมงานรีครูทเตอร์มืออาชีพคอยสนับสนุน\"},\"talent_pool_access\":{\"details\":\"รีครูทเตอร์สามารถเข้าถึงฐานผู้สมัครงานของ SourcedOut เพื่อให้การหาผู้สมัครง่ายกว่าที่เคย\",\"title\":\"เข้าถึงฐานผู้สมัครงานของ SourcedOut\"},\"we_got_you\":{\"details\":\"ถึงแม้คุณจะไม่เคยจับงานด้าน HR มาก่อน ทีมงานของเราจะคอยสนับสนุนการทำงานผ่าน Workshop และ Line Chat เพื่อให้มั่นใจว่าคุณสามารถเริ่มต้นได้\",\"title\":\"ไม่เคยเป็นรีครูทเตอร์ ไม่ใช่ปัญหา\"},\"work_it_on_your_way\":{\"details\":\"เริ่มต้นทำงานที่ไหน เมื่อไหร่ก็ได้ ปรับตามรูปแบบเวลาและความสะดวกที่คุณมี\",\"title\":\"ทำงานในแบบที่คุณชอบ\"}},\"title\":\"ทำไมถึงควรเข้าร่วมแพลตฟอร์ม SourcedOut\"}},\"sign_up_choice\":{\"list\":{\"become_freelance_recruiters\":{\"btn\":\"สมัครเลย!\",\"title\":\"เข้าร่วมเครือข่าย Freelance Recruiter\"},\"connect_with_high_quality_talents\":{\"btn\":\"เริ่มต้นใช้บริการ\",\"title\":\"เชื่อมต่อและค้นหา Top Talents\"},\"seeking_out_for_new_job_opportunities\":{\"btn\":\"ฝากโปรไฟล์ตอนนี้\",\"title\":\"ค้นหาโอกาสงานใหม่ที่ตรงใจกว่าเดิม\"}}}}});\n","module.exports = __webpack_public_path__ + \"media/images/logo/logo-fad3ea31277bb73f4544e70d58cf5536.png\";","!function (e, n) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = n() : \"function\" == typeof define && define.amd ? define(n) : (e || self)[\"v-click-outside\"] = n();\n}(this, function () {\n var e = \"__v-click-outside\",\n n = \"undefined\" != typeof window,\n t = \"undefined\" != typeof navigator,\n r = n && (\"ontouchstart\" in window || t && navigator.msMaxTouchPoints > 0) ? [\"touchstart\"] : [\"click\"];\n\n function i(e) {\n var n = e.event,\n t = e.handler;\n (0, e.middleware)(n) && t(n);\n }\n\n function a(n, t) {\n var a = function (e) {\n var n = \"function\" == typeof e;\n if (!n && \"object\" != typeof e) throw new Error(\"v-click-outside: Binding value must be a function or an object\");\n return {\n handler: n ? e : e.handler,\n middleware: e.middleware || function (e) {\n return e;\n },\n events: e.events || r,\n isActive: !(!1 === e.isActive),\n detectIframe: !(!1 === e.detectIframe),\n capture: !!e.capture\n };\n }(t.value),\n d = a.handler,\n o = a.middleware,\n c = a.detectIframe,\n u = a.capture;\n\n if (a.isActive) {\n if (n[e] = a.events.map(function (e) {\n return {\n event: e,\n srcTarget: document.documentElement,\n handler: function (e) {\n return function (e) {\n var n = e.el,\n t = e.event,\n r = e.handler,\n a = e.middleware,\n d = t.composedPath && t.composedPath() || t.path;\n (d ? d.indexOf(n) < 0 : !n.contains(t.target)) && i({\n event: t,\n handler: r,\n middleware: a\n });\n }({\n el: n,\n event: e,\n handler: d,\n middleware: o\n });\n },\n capture: u\n };\n }), c) {\n var l = {\n event: \"blur\",\n srcTarget: window,\n handler: function (e) {\n return function (e) {\n var n = e.el,\n t = e.event,\n r = e.handler,\n a = e.middleware;\n setTimeout(function () {\n var e = document.activeElement;\n e && \"IFRAME\" === e.tagName && !n.contains(e) && i({\n event: t,\n handler: r,\n middleware: a\n });\n }, 0);\n }({\n el: n,\n event: e,\n handler: d,\n middleware: o\n });\n },\n capture: u\n };\n n[e] = [].concat(n[e], [l]);\n }\n\n n[e].forEach(function (t) {\n var r = t.event,\n i = t.srcTarget,\n a = t.handler;\n return setTimeout(function () {\n n[e] && i.addEventListener(r, a, u);\n }, 0);\n });\n }\n }\n\n function d(n) {\n (n[e] || []).forEach(function (e) {\n return e.srcTarget.removeEventListener(e.event, e.handler, e.capture);\n }), delete n[e];\n }\n\n var o = n ? {\n bind: a,\n update: function (e, n) {\n var t = n.value,\n r = n.oldValue;\n JSON.stringify(t) !== JSON.stringify(r) && (d(e), a(e, {\n value: t\n }));\n },\n unbind: d\n } : {};\n return {\n install: function (e) {\n e.directive(\"click-outside\", o);\n },\n directive: o\n };\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',[_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"main\"},[_c('ul',{staticClass:\"foot-list\"},[_c('li',{staticClass:\"logo\"},[_c('a',{attrs:{\"href\":\"/\"}},[_c('img',{attrs:{\"src\":require('images/logo/logo-wh.png'),\"alt\":_vm.t('layouts.footer.logo_banner_alt')}})])]),_vm._v(\" \"),_c('li',{staticClass:\"link-group\"},[_c('ul',{staticClass:\"list\"},[_c('li',{staticClass:\"phone\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":{ prefix: 'fas', iconName: 'phone-volume' }}}),_vm._v(\" \"),_c('a',{staticClass:\"link icon-link\",attrs:{\"href\":_vm.telNoToHref(_vm.telNo)}},[_vm._v(\"\\n \"+_vm._s(_vm.telNo))])],1),_vm._v(\" \"),_c('li',{staticClass:\"email\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":{ prefix: 'fas', iconName: 'envelope' }}}),_vm._v(\" \"),_c('a',{staticClass:\"link icon-link\",attrs:{\"href\":(\"mailto:\" + _vm.mailAddress)}},[_vm._v(\"\\n \"+_vm._s(_vm.mailAddress)+\"\\n \")])],1),_vm._v(\" \"),_c('li',{staticClass:\"location\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":{ prefix: 'fas', iconName: 'map-marker-alt' }}}),_vm._v(\" \"),_c('div',{staticClass:\"location-detail\"},[_c('a',{staticClass:\"link icon-link\",attrs:{\"href\":_vm.googleMapUrl,\"target\":\"_blank\"}},[_vm._v(\"\\n 801 8th Floor, Mercury Tower, 540 Ploenchit Road,\\n Lumphini, Pathum Wan, Bangkok 10330\\n \")])])],1),_vm._v(\" \"),_c('li',{staticClass:\"socials\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.t('lp.footer.follow_us')))]),_vm._v(\" \"),_c('div',{staticClass:\"socials-group\"},[_c('ul',{staticClass:\"list\"},[_c('li',{staticClass:\"facebook\"},[_c('a',{attrs:{\"href\":_vm.facebookUrl,\"target\":\"_blank\"}},[_c('FontAwesomeIcon',{attrs:{\"icon\":{ prefix: 'fab', iconName: 'facebook-f' }}})],1)]),_vm._v(\" \"),_c('li',{staticClass:\"youtube\"},[_c('a',{attrs:{\"href\":_vm.youtubeUrl,\"target\":\"_blank\"}},[_c('FontAwesomeIcon',{attrs:{\"icon\":{ prefix: 'fab', iconName: 'youtube' }}})],1)]),_vm._v(\" \"),_c('li',{staticClass:\"linkedin\"},[_c('a',{attrs:{\"href\":_vm.linkedinUrl,\"target\":\"_blank\"}},[_c('FontAwesomeIcon',{attrs:{\"icon\":{ prefix: 'fab', iconName: 'linkedin-in' }}})],1)]),_vm._v(\" \"),_c('li',{staticClass:\"tiktok\"},[_c('a',{attrs:{\"href\":_vm.tiktokUrl,\"target\":\"_blank\"}},[_c('FontAwesomeIcon',{attrs:{\"icon\":{ prefix: 'fab', iconName: 'tiktok' }}})],1)])])])])]),_vm._v(\" \"),_c('ul',{staticClass:\"list-link\"},[_c('li',{staticClass:\"about-us\"},[_c('a',{attrs:{\"href\":_vm.paths.aboutUs}},[_vm._v(_vm._s(_vm.t('lp.footer.about_us')))])]),_vm._v(\" \"),_c('li',{staticClass:\"recruiter\"},[_c('a',{attrs:{\"href\":_vm.paths.recruiter}},[_vm._v(_vm._s(_vm.t('lp.footer.recruiter')))])]),_vm._v(\" \"),_c('li',{staticClass:\"client\"},[_c('a',{attrs:{\"href\":_vm.paths.client}},[_vm._v(_vm._s(_vm.t('lp.footer.employer')))])]),_vm._v(\" \"),_c('li',{staticClass:\"talent\"},[_c('a',{attrs:{\"href\":_vm.paths.talents,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.t('lp.footer.talent')))])])])]),_vm._v(\" \"),_c('li',{staticClass:\"copyright\"},[_c('p',[_vm._v(\"\\n Copyright © \"+_vm._s(_vm.currentYear)+\" Reeracoen. All rights reserved.\\n \")])])])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--8-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--8-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=19793750&scoped=true&\"\nimport script from \"./Footer.vue?vue&type=script&lang=js&\"\nexport * from \"./Footer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=19793750&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"19793750\",\n null\n \n)\n\nexport default component.exports","// I18n.js\n// =======\n//\n// This small library provides the Rails I18n API on the Javascript.\n// You don't actually have to use Rails (or even Ruby) to use I18n.js.\n// Just make sure you export all translations in an object like this:\n//\n// I18n.translations.en = {\n// hello: \"Hello World\"\n// };\n//\n// See tests for specific formatting like numbers and dates.\n//\n\n// Using UMD pattern from\n// https://github.com/umdjs/umd#regular-module\n// `returnExports.js` version\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define(\"i18n\", () => factory(root));\n } else if (typeof module === \"object\" && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory(root);\n } else {\n // Browser globals (root is window)\n root.I18n = factory(root);\n }\n})(this, (global) => {\n // Use previously defined object if exists in current scope\n const I18n = (global && global.I18n) || {};\n\n // Just cache the Array#slice function.\n const { slice } = Array.prototype;\n\n // Apply number padding.\n const padding = function (number) {\n return `0${number.toString()}`.substr(-2);\n };\n\n // Improved toFixed number rounding function with support for unprecise floating points\n // JavaScript's standard toFixed function does not round certain numbers correctly (for example 0.105 with precision 2).\n const toFixed = function (number, precision) {\n return decimalAdjust(\"round\", number, -precision).toFixed(precision);\n };\n\n // Is a given variable an object?\n // Borrowed from Underscore.js\n const isObject = function (obj) {\n const type = typeof obj;\n return type === \"function\" || type === \"object\";\n };\n\n const isFunction = function (func) {\n const type = typeof func;\n return type === \"function\";\n };\n\n // Check if value is different than undefined and null;\n const isSet = function (value) {\n return typeof value !== \"undefined\" && value !== null;\n };\n\n // Is a given value an array?\n // Borrowed from Underscore.js\n const isArray = function (val) {\n if (Array.isArray) {\n return Array.isArray(val);\n }\n return Object.prototype.toString.call(val) === \"[object Array]\";\n };\n\n const isString = function (val) {\n return (\n typeof val === \"string\" ||\n Object.prototype.toString.call(val) === \"[object String]\"\n );\n };\n\n const isNumber = function (val) {\n return (\n typeof val === \"number\" ||\n Object.prototype.toString.call(val) === \"[object Number]\"\n );\n };\n\n const isBoolean = function (val) {\n return val === true || val === false;\n };\n\n const isNull = function (val) {\n return val === null;\n };\n\n var decimalAdjust = function (type, value, exp) {\n // If the exp is undefined or zero...\n if (typeof exp === \"undefined\" || +exp === 0) {\n return Math[type](value);\n }\n value = +value;\n exp = +exp;\n // If the value is not a number or the exp is not an integer...\n if (isNaN(value) || !(typeof exp === \"number\" && exp % 1 === 0)) {\n return NaN;\n }\n // Shift\n value = value.toString().split(\"e\");\n value = Math[type](+`${value[0]}e${value[1] ? +value[1] - exp : -exp}`);\n // Shift back\n value = value.toString().split(\"e\");\n return +`${value[0]}e${value[1] ? +value[1] + exp : exp}`;\n };\n\n const lazyEvaluate = function (message, scope) {\n if (isFunction(message)) {\n return message(scope);\n }\n return message;\n };\n\n var merge = function (dest, obj) {\n let key;\n let value;\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n value = obj[key];\n if (\n isString(value) ||\n isNumber(value) ||\n isBoolean(value) ||\n isArray(value) ||\n isNull(value)\n ) {\n dest[key] = value;\n } else {\n if (dest[key] == null) dest[key] = {};\n merge(dest[key], value);\n }\n }\n }\n return dest;\n };\n\n // Set default days/months translations.\n const DATE = {\n day_names: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n abbr_day_names: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n month_names: [\n null,\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n abbr_month_names: [\n null,\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n meridian: [\"AM\", \"PM\"],\n };\n\n // Set default number format.\n const NUMBER_FORMAT = {\n precision: 3,\n separator: \".\",\n delimiter: \",\",\n strip_insignificant_zeros: false,\n };\n\n // Set default currency format.\n const CURRENCY_FORMAT = {\n unit: \"$\",\n precision: 2,\n format: \"%u%n\",\n sign_first: true,\n delimiter: \",\",\n separator: \".\",\n };\n\n // Set default percentage format.\n const PERCENTAGE_FORMAT = {\n unit: \"%\",\n precision: 3,\n format: \"%n%u\",\n separator: \".\",\n delimiter: \"\",\n };\n\n // Set default size units.\n const SIZE_UNITS = [null, \"kb\", \"mb\", \"gb\", \"tb\"];\n\n // Other default options\n const DEFAULT_OPTIONS = {\n // Set default locale. This locale will be used when fallback is enabled and\n // the translation doesn't exist in a particular locale.\n defaultLocale: \"en\",\n // Set the current locale to `en`.\n locale: $('html').attr('lang') || \"en\",\n // Set the translation key separator.\n defaultSeparator: \".\",\n // Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`.\n placeholder: /(?:\\{\\{|%\\{)(.*?)(?:\\}\\}?)/gm,\n // Set if engine should fallback to the default locale when a translation\n // is missing.\n fallbacks: false,\n // Set the default translation object.\n translations: {},\n // Set missing translation behavior. 'message' will display a message\n // that the translation is missing, 'guess' will try to guess the string\n missingBehaviour: \"message\",\n // if you use missingBehaviour with 'message', but want to know that the\n // string is actually missing for testing purposes, you can prefix the\n // guessed string by setting the value here. By default, no prefix!\n missingTranslationPrefix: \"\",\n };\n\n // Set default locale. This locale will be used when fallback is enabled and\n // the translation doesn't exist in a particular locale.\n I18n.reset = function () {\n let key;\n for (key in DEFAULT_OPTIONS) {\n this[key] = DEFAULT_OPTIONS[key];\n }\n };\n\n // Much like `reset`, but only assign options if not already assigned\n I18n.initializeOptions = function () {\n let key;\n for (key in DEFAULT_OPTIONS) {\n if (!isSet(this[key])) {\n this[key] = DEFAULT_OPTIONS[key];\n }\n }\n };\n I18n.initializeOptions();\n\n // Return a list of all locales that must be tried before returning the\n // missing translation message. By default, this will consider the inline option,\n // current locale and fallback locale.\n //\n // I18n.locales.get(\"de-DE\");\n // // [\"de-DE\", \"de\", \"en\"]\n //\n // You can define custom rules for any locale. Just make sure you return a array\n // containing all locales.\n //\n // // Default the Wookie locale to English.\n // I18n.locales[\"wk\"] = function(locale) {\n // return [\"en\"];\n // };\n //\n I18n.locales = {};\n\n // Retrieve locales based on inline locale, current locale or default to\n // I18n's detection.\n I18n.locales.get = function (locale) {\n let result = this[locale] || this[I18n.locale] || this.default;\n\n if (isFunction(result)) {\n result = result(locale);\n }\n\n if (isArray(result) === false) {\n result = [result];\n }\n\n return result;\n };\n\n // The default locale list.\n I18n.locales.default = function (locale) {\n const locales = [];\n const list = [];\n // Handle the inline locale option that can be provided to\n // the `I18n.t` options.\n if (locale) {\n locales.push(locale);\n }\n\n // Add the current locale to the list.\n if (!locale && I18n.locale) {\n locales.push(I18n.locale);\n }\n\n // Add the default locale if fallback strategy is enabled.\n if (I18n.fallbacks && I18n.defaultLocale) {\n locales.push(I18n.defaultLocale);\n }\n\n // Locale code format 1:\n // According to RFC4646 (http://www.ietf.org/rfc/rfc4646.txt)\n // language codes for Traditional Chinese should be `zh-Hant`\n //\n // But due to backward compatibility\n // We use older version of IETF language tag\n // @see http://www.w3.org/TR/html401/struct/dirlang.html\n // @see http://en.wikipedia.org/wiki/IETF_language_tag\n //\n // Format: `language-code = primary-code ( \"-\" subcode )*`\n //\n // primary-code uses ISO639-1\n // @see http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n // @see http://www.iso.org/iso/home/standards/language_codes.htm\n //\n // subcode uses ISO 3166-1 alpha-2\n // @see http://en.wikipedia.org/wiki/ISO_3166\n // @see http://www.iso.org/iso/country_codes.htm\n //\n // @note\n // subcode can be in upper case or lower case\n // defining it in upper case is a convention only\n\n // Locale code format 2:\n // Format: `code = primary-code ( \"-\" region-code )*`\n // primary-code uses ISO 639-1\n // script-code uses ISO 15924\n // region-code uses ISO 3166-1 alpha-2\n // Example: zh-Hant-TW, en-HK, zh-Hant-CN\n //\n // It is similar to RFC4646 (or actually the same),\n // but seems to be limited to language, script, region\n\n // Compute each locale with its country code.\n // So this will return an array containing\n // `de-DE` and `de`\n // or\n // `zh-hans-tw`, `zh-hans`, `zh`\n // locales.\n locales.forEach((locale) => {\n const localeParts = locale.split(\"-\");\n let firstFallback = null;\n let secondFallback = null;\n if (localeParts.length === 3) {\n firstFallback = [localeParts[0], localeParts[1]].join(\"-\");\n secondFallback = localeParts[0];\n } else if (localeParts.length === 2) {\n firstFallback = localeParts[0];\n }\n\n if (list.indexOf(locale) === -1) {\n list.push(locale);\n }\n\n if (!I18n.fallbacks) {\n return;\n }\n\n [firstFallback, secondFallback].forEach((nullableFallbackLocale) => {\n // We don't want null values\n if (typeof nullableFallbackLocale === \"undefined\") {\n return;\n }\n if (nullableFallbackLocale === null) {\n return;\n }\n // We don't want duplicate values\n //\n // Comparing with `locale` first is faster than\n // checking whether value's presence in the list\n if (nullableFallbackLocale === locale) {\n return;\n }\n if (list.indexOf(nullableFallbackLocale) !== -1) {\n return;\n }\n\n list.push(nullableFallbackLocale);\n });\n });\n\n // No locales set? English it is.\n if (!locales.length) {\n locales.push(\"en\");\n }\n\n return list;\n };\n\n // Hold pluralization rules.\n I18n.pluralization = {};\n\n // Return the pluralizer for a specific locale.\n // If no specify locale is found, then I18n's default will be used.\n I18n.pluralization.get = function (locale) {\n return this[locale] || this[I18n.locale] || this.default;\n };\n\n // The default pluralizer rule.\n // It detects the `zero`, `one`, and `other` scopes.\n I18n.pluralization.default = function (count) {\n switch (count) {\n case 0:\n return [\"zero\", \"other\"];\n case 1:\n return [\"one\"];\n default:\n return [\"other\"];\n }\n };\n\n // Return current locale. If no locale has been set, then\n // the current locale will be the default locale.\n I18n.currentLocale = function () {\n return this.locale || this.defaultLocale;\n };\n\n // Check if value is different than undefined and null;\n I18n.isSet = isSet;\n\n // Find and process the translation using the provided scope and options.\n // This is used internally by some functions and should not be used as an\n // public API.\n I18n.lookup = function (scope, options) {\n options = options || {};\n\n const locales = this.locales.get(options.locale).slice();\n let locale;\n let scopes;\n let fullScope;\n let translations;\n fullScope = this.getFullScope(scope, options);\n\n while (locales.length) {\n locale = locales.shift();\n scopes = fullScope.split(options.separator || this.defaultSeparator);\n translations = this.translations[locale];\n\n if (!translations) {\n continue;\n }\n while (scopes.length) {\n translations = translations[scopes.shift()];\n\n if (translations === undefined || translations === null) {\n break;\n }\n }\n\n if (translations !== undefined && translations !== null) {\n return translations;\n }\n }\n\n if (isSet(options.defaultValue)) {\n return lazyEvaluate(options.defaultValue, scope);\n }\n };\n\n // lookup pluralization rule key into translations\n I18n.pluralizationLookupWithoutFallback = function (\n count,\n locale,\n translations\n ) {\n const pluralizer = this.pluralization.get(locale);\n const pluralizerKeys = pluralizer(count);\n let pluralizerKey;\n let message;\n\n if (isObject(translations)) {\n while (pluralizerKeys.length) {\n pluralizerKey = pluralizerKeys.shift();\n if (isSet(translations[pluralizerKey])) {\n message = translations[pluralizerKey];\n break;\n }\n }\n }\n\n return message;\n };\n\n // Lookup dedicated to pluralization\n I18n.pluralizationLookup = function (count, scope, options) {\n options = options || {};\n const locales = this.locales.get(options.locale).slice();\n let locale;\n let scopes;\n let translations;\n let message;\n scope = this.getFullScope(scope, options);\n\n while (locales.length) {\n locale = locales.shift();\n scopes = scope.split(options.separator || this.defaultSeparator);\n translations = this.translations[locale];\n\n if (!translations) {\n continue;\n }\n\n while (scopes.length) {\n translations = translations[scopes.shift()];\n if (!isObject(translations)) {\n break;\n }\n if (scopes.length === 0) {\n message = this.pluralizationLookupWithoutFallback(\n count,\n locale,\n translations\n );\n }\n }\n if (typeof message !== \"undefined\" && message !== null) {\n break;\n }\n }\n\n if (typeof message === \"undefined\" || message === null) {\n if (isSet(options.defaultValue)) {\n if (isObject(options.defaultValue)) {\n message = this.pluralizationLookupWithoutFallback(\n count,\n options.locale,\n options.defaultValue\n );\n } else {\n message = options.defaultValue;\n }\n translations = options.defaultValue;\n }\n }\n\n return { message, translations };\n };\n\n // Rails changed the way the meridian is stored.\n // It started with `date.meridian` returning an array,\n // then it switched to `time.am` and `time.pm`.\n // This function abstracts this difference and returns\n // the correct meridian or the default value when none is provided.\n I18n.meridian = function () {\n const time = this.lookup(\"time\");\n const date = this.lookup(\"date\");\n\n if (time && time.am && time.pm) {\n return [time.am, time.pm];\n }\n if (date && date.meridian) {\n return date.meridian;\n }\n return DATE.meridian;\n };\n\n // Merge serveral hash options, checking if value is set before\n // overwriting any value. The precedence is from left to right.\n //\n // I18n.prepareOptions({name: \"John Doe\"}, {name: \"Mary Doe\", role: \"user\"});\n // #=> {name: \"John Doe\", role: \"user\"}\n //\n I18n.prepareOptions = function () {\n const args = slice.call(arguments);\n const options = {};\n let subject;\n while (args.length) {\n subject = args.shift();\n\n if (typeof subject !== \"object\") {\n continue;\n }\n\n for (const attr in subject) {\n if (!subject.hasOwnProperty(attr)) {\n continue;\n }\n\n if (isSet(options[attr])) {\n continue;\n }\n\n options[attr] = subject[attr];\n }\n }\n\n return options;\n };\n\n // Generate a list of translation options for default fallbacks.\n // `defaultValue` is also deleted from options as it is returned as part of\n // the translationOptions array.\n I18n.createTranslationOptions = function (scope, options) {\n let translationOptions = [{ scope }];\n\n // Defaults should be an array of hashes containing either\n // fallback scopes or messages\n if (isSet(options.defaults)) {\n translationOptions = translationOptions.concat(options.defaults);\n }\n\n // Maintain support for defaultValue. Since it is always a message\n // insert it in to the translation options as such.\n if (isSet(options.defaultValue)) {\n translationOptions.push({ message: options.defaultValue });\n }\n\n return translationOptions;\n };\n\n // Translate the given scope with the provided options.\n I18n.translate = function (scope, options) {\n options = options || {};\n\n const translationOptions = this.createTranslationOptions(scope, options);\n\n let translation;\n let usedScope = scope;\n\n const optionsWithoutDefault = this.prepareOptions(options);\n delete optionsWithoutDefault.defaultValue;\n\n // Iterate through the translation options until a translation\n // or message is found.\n const translationFound = translationOptions.some(function (\n translationOption\n ) {\n if (isSet(translationOption.scope)) {\n usedScope = translationOption.scope;\n translation = this.lookup(usedScope, optionsWithoutDefault);\n } else if (isSet(translationOption.message)) {\n translation = lazyEvaluate(translationOption.message, scope);\n }\n\n if (translation !== undefined && translation !== null) {\n return true;\n }\n },\n this);\n\n if (!translationFound) {\n return this.missingTranslation(scope, options);\n }\n\n if (typeof translation === \"string\") {\n translation = this.interpolate(translation, options);\n } else if (isArray(translation)) {\n translation = translation.map(function (t) {\n return typeof t === \"string\" ? this.interpolate(t, options) : t;\n }, this);\n } else if (isObject(translation) && isSet(options.count)) {\n translation = this.pluralize(options.count, usedScope, options);\n }\n\n return translation;\n };\n\n // This function interpolates the all variables in the given message.\n I18n.interpolate = function (message, options) {\n if (message == null) {\n return message;\n }\n\n options = options || {};\n const matches = message.match(this.placeholder);\n let placeholder;\n let value;\n let name;\n let regex;\n if (!matches) {\n return message;\n }\n\n while (matches.length) {\n placeholder = matches.shift();\n name = placeholder.replace(this.placeholder, \"$1\");\n\n if (isSet(options[name])) {\n value = options[name].toString().replace(/\\$/gm, \"_#$#_\");\n } else if (name in options) {\n value = this.nullPlaceholder(placeholder, message, options);\n } else {\n value = this.missingPlaceholder(placeholder, message, options);\n }\n\n regex = new RegExp(\n placeholder.replace(/{/gm, \"\\\\{\").replace(/}/gm, \"\\\\}\")\n );\n message = message.replace(regex, value);\n }\n\n return message.replace(/_#\\$#_/g, \"$\");\n };\n\n // Pluralize the given scope using the `count` value.\n // The pluralized translation may have other placeholders,\n // which will be retrieved from `options`.\n I18n.pluralize = function (count, scope, options) {\n options = this.prepareOptions({ count: String(count) }, options);\n let pluralizer;\n let result;\n\n result = this.pluralizationLookup(count, scope, options);\n if (\n typeof result.translations === \"undefined\" ||\n result.translations == null\n ) {\n return this.missingTranslation(scope, options);\n }\n\n if (typeof result.message !== \"undefined\" && result.message != null) {\n return this.interpolate(result.message, options);\n }\n\n pluralizer = this.pluralization.get(options.locale);\n return this.missingTranslation(`${scope}.${pluralizer(count)[0]}`, options);\n };\n\n // Return a missing translation message for the given parameters.\n I18n.missingTranslation = function (scope, options) {\n // guess intended string\n if (this.missingBehaviour === \"guess\") {\n // get only the last portion of the scope\n const s = scope.split(\".\").slice(-1)[0];\n // replace underscore with space && camelcase with space and lowercase letter\n return (\n (this.missingTranslationPrefix.length > 0\n ? this.missingTranslationPrefix\n : \"\") +\n s\n .replace(/_/g, \" \")\n .replace(\n /([a-z])([A-Z])/g,\n (match, p1, p2) => `${p1} ${p2.toLowerCase()}`\n )\n );\n }\n\n const localeForTranslation =\n options != null && options.locale != null\n ? options.locale\n : this.currentLocale();\n const fullScope = this.getFullScope(scope, options);\n const fullScopeWithLocale = [localeForTranslation, fullScope].join(\n options.separator || this.defaultSeparator\n );\n\n return `[missing \"${fullScopeWithLocale}\" translation]`;\n };\n\n // Return a missing placeholder message for given parameters\n I18n.missingPlaceholder = function (placeholder, message, options) {\n return `[missing ${placeholder} value]`;\n };\n\n I18n.nullPlaceholder = function () {\n return I18n.missingPlaceholder.apply(I18n, arguments);\n };\n\n // Format number using localization rules.\n // The options will be retrieved from the `number.format` scope.\n // If this isn't present, then the following options will be used:\n //\n // - `precision`: `3`\n // - `separator`: `\".\"`\n // - `delimiter`: `\",\"`\n // - `strip_insignificant_zeros`: `false`\n //\n // You can also override these options by providing the `options` argument.\n //\n I18n.toNumber = function (number, options) {\n options = this.prepareOptions(\n options,\n this.lookup(\"number.format\"),\n NUMBER_FORMAT\n );\n\n const negative = number < 0;\n const string = toFixed(Math.abs(number), options.precision).toString();\n const parts = string.split(\".\");\n let precision;\n const buffer = [];\n let formattedNumber;\n let format = options.format || \"%n\";\n const sign = negative ? \"-\" : \"\";\n number = parts[0];\n precision = parts[1];\n\n while (number.length > 0) {\n buffer.unshift(number.substr(Math.max(0, number.length - 3), 3));\n number = number.substr(0, number.length - 3);\n }\n\n formattedNumber = buffer.join(options.delimiter);\n\n if (options.strip_insignificant_zeros && precision) {\n precision = precision.replace(/0+$/, \"\");\n }\n\n if (options.precision > 0 && precision) {\n formattedNumber += options.separator + precision;\n }\n\n if (options.sign_first) {\n format = `%s${format}`;\n } else {\n format = format.replace(\"%n\", \"%s%n\");\n }\n\n formattedNumber = format\n .replace(\"%u\", options.unit)\n .replace(\"%n\", formattedNumber)\n .replace(\"%s\", sign);\n return formattedNumber;\n };\n\n // Format currency with localization rules.\n // The options will be retrieved from the `number.currency.format` and\n // `number.format` scopes, in that order.\n //\n // Any missing option will be retrieved from the `I18n.toNumber` defaults and\n // the following options:\n //\n // - `unit`: `\"$\"`\n // - `precision`: `2`\n // - `format`: `\"%u%n\"`\n // - `delimiter`: `\",\"`\n // - `separator`: `\".\"`\n //\n // You can also override these options by providing the `options` argument.\n //\n I18n.toCurrency = function (number, options) {\n options = this.prepareOptions(\n options,\n this.lookup(\"number.currency.format\", options),\n this.lookup(\"number.format\", options),\n CURRENCY_FORMAT\n );\n\n return this.toNumber(number, options);\n };\n\n // Localize several values.\n // You can provide the following scopes: `currency`, `number`, or `percentage`.\n // If you provide a scope that matches the `/^(date|time)/` regular expression\n // then the `value` will be converted by using the `I18n.toTime` function.\n //\n // It will default to the value's `toString` function.\n //\n I18n.localize = function (scope, value, options) {\n options || (options = {});\n\n switch (scope) {\n case \"currency\":\n return this.toCurrency(value, options);\n case \"number\":\n scope = this.lookup(\"number.format\", options);\n return this.toNumber(value, scope);\n case \"percentage\":\n return this.toPercentage(value, options);\n default:\n var localizedValue;\n\n if (scope.match(/^(date|time)/)) {\n localizedValue = this.toTime(scope, value, options);\n } else {\n localizedValue = value.toString();\n }\n\n return this.interpolate(localizedValue, options);\n }\n };\n\n // Parse a given `date` string into a JavaScript Date object.\n // This function is time zone aware.\n //\n // The following string formats are recognized:\n //\n // yyyy-mm-dd\n // yyyy-mm-dd[ T]hh:mm::ss\n // yyyy-mm-dd[ T]hh:mm::ss\n // yyyy-mm-dd[ T]hh:mm::ssZ\n // yyyy-mm-dd[ T]hh:mm::ss+0000\n // yyyy-mm-dd[ T]hh:mm::ss+00:00\n // yyyy-mm-dd[ T]hh:mm::ss.123Z\n //\n I18n.parseDate = function (date) {\n let matches;\n let convertedDate;\n let fraction;\n // A date input of `null` or `undefined` will be returned as-is\n if (date == null) {\n return date;\n }\n // we have a date, so just return it.\n if (typeof date === \"object\") {\n return date;\n }\n\n matches = date\n .toString()\n .match(\n /(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2}):(\\d{2})([\\.,]\\d{1,3})?)?(Z|\\+00:?00)?/\n );\n\n if (matches) {\n for (let i = 1; i <= 6; i++) {\n matches[i] = parseInt(matches[i], 10) || 0;\n }\n\n // month starts on 0\n matches[2] -= 1;\n\n fraction = matches[7] ? 1000 * `0${matches[7]}` : null;\n\n if (matches[8]) {\n convertedDate = new Date(\n Date.UTC(\n matches[1],\n matches[2],\n matches[3],\n matches[4],\n matches[5],\n matches[6],\n fraction\n )\n );\n } else {\n convertedDate = new Date(\n matches[1],\n matches[2],\n matches[3],\n matches[4],\n matches[5],\n matches[6],\n fraction\n );\n }\n } else if (typeof date === \"number\") {\n // UNIX timestamp\n convertedDate = new Date();\n convertedDate.setTime(date);\n } else if (\n date.match(\n /([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\\d+) (\\d+:\\d+:\\d+) ([+-]\\d+) (\\d+)/\n )\n ) {\n // This format `Wed Jul 20 13:03:39 +0000 2011` is parsed by\n // webkit/firefox, but not by IE, so we must parse it manually.\n convertedDate = new Date();\n convertedDate.setTime(\n Date.parse(\n [\n RegExp.$1,\n RegExp.$2,\n RegExp.$3,\n RegExp.$6,\n RegExp.$4,\n RegExp.$5,\n ].join(\" \")\n )\n );\n } else if (date.match(/\\d+ \\d+:\\d+:\\d+ [+-]\\d+ \\d+/)) {\n // a valid javascript format with timezone info\n convertedDate = new Date();\n convertedDate.setTime(Date.parse(date));\n } else {\n // an arbitrary javascript string\n convertedDate = new Date();\n convertedDate.setTime(Date.parse(date));\n }\n\n return convertedDate;\n };\n\n // Formats time according to the directives in the given format string.\n // The directives begins with a percent (%) character. Any text not listed as a\n // directive will be passed through to the output string.\n //\n // The accepted formats are:\n //\n // %a - The abbreviated weekday name (Sun)\n // %A - The full weekday name (Sunday)\n // %b - The abbreviated month name (Jan)\n // %B - The full month name (January)\n // %c - The preferred local date and time representation\n // %d - Day of the month (01..31)\n // %-d - Day of the month (1..31)\n // %H - Hour of the day, 24-hour clock (00..23)\n // %-H/%k - Hour of the day, 24-hour clock (0..23)\n // %I - Hour of the day, 12-hour clock (01..12)\n // %-I/%l - Hour of the day, 12-hour clock (1..12)\n // %m - Month of the year (01..12)\n // %-m - Month of the year (1..12)\n // %M - Minute of the hour (00..59)\n // %-M - Minute of the hour (0..59)\n // %p - Meridian indicator (AM or PM)\n // %P - Meridian indicator (am or pm)\n // %S - Second of the minute (00..60)\n // %-S - Second of the minute (0..60)\n // %w - Day of the week (Sunday is 0, 0..6)\n // %y - Year without a century (00..99)\n // %-y - Year without a century (0..99)\n // %Y - Year with century\n // %z/%Z - Timezone offset (+0545)\n //\n I18n.strftime = function (date, format, options) {\n var options = this.lookup(\"date\", options);\n const meridianOptions = I18n.meridian();\n if (!options) {\n options = {};\n }\n\n options = this.prepareOptions(options, DATE);\n\n if (isNaN(date.getTime())) {\n throw new Error(\n \"I18n.strftime() requires a valid date object, but received an invalid date.\"\n );\n }\n\n const weekDay = date.getDay();\n const day = date.getDate();\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const hour = date.getHours();\n let hour12 = hour;\n const meridian = hour > 11 ? 1 : 0;\n const secs = date.getSeconds();\n const mins = date.getMinutes();\n const offset = date.getTimezoneOffset();\n const absOffsetHours = Math.floor(Math.abs(offset / 60));\n const absOffsetMinutes = Math.abs(offset) - absOffsetHours * 60;\n const timezoneoffset =\n (offset > 0 ? \"-\" : \"+\") +\n (absOffsetHours.toString().length < 2\n ? `0${absOffsetHours}`\n : absOffsetHours) +\n (absOffsetMinutes.toString().length < 2\n ? `0${absOffsetMinutes}`\n : absOffsetMinutes);\n if (hour12 > 12) {\n hour12 -= 12;\n } else if (hour12 === 0) {\n hour12 = 12;\n }\n\n format = format.replace(\"%a\", options.abbr_day_names[weekDay]);\n format = format.replace(\"%A\", options.day_names[weekDay]);\n format = format.replace(\"%b\", options.abbr_month_names[month]);\n format = format.replace(\"%B\", options.month_names[month]);\n format = format.replace(\"%d\", padding(day));\n format = format.replace(\"%e\", day);\n format = format.replace(\"%-d\", day);\n format = format.replace(\"%H\", padding(hour));\n format = format.replace(\"%-H\", hour);\n format = format.replace(\"%k\", hour);\n format = format.replace(\"%I\", padding(hour12));\n format = format.replace(\"%-I\", hour12);\n format = format.replace(\"%l\", hour12);\n format = format.replace(\"%m\", padding(month));\n format = format.replace(\"%-m\", month);\n format = format.replace(\"%M\", padding(mins));\n format = format.replace(\"%-M\", mins);\n format = format.replace(\"%p\", meridianOptions[meridian]);\n format = format.replace(\"%P\", meridianOptions[meridian].toLowerCase());\n format = format.replace(\"%S\", padding(secs));\n format = format.replace(\"%-S\", secs);\n format = format.replace(\"%w\", weekDay);\n format = format.replace(\"%y\", padding(year));\n format = format.replace(\"%-y\", padding(year).replace(/^0+/, \"\"));\n format = format.replace(\"%Y\", year);\n format = format.replace(\"%z\", timezoneoffset);\n format = format.replace(\"%Z\", timezoneoffset);\n\n return format;\n };\n\n // Convert the given dateString into a formatted date.\n I18n.toTime = function (scope, dateString, options) {\n const date = this.parseDate(dateString);\n const format = this.lookup(scope, options);\n // A date input of `null` or `undefined` will be returned as-is\n if (date == null) {\n return date;\n }\n\n const date_string = date.toString();\n if (date_string.match(/invalid/i)) {\n return date_string;\n }\n\n if (!format) {\n return date_string;\n }\n\n return this.strftime(date, format, options);\n };\n\n // Convert a number into a formatted percentage value.\n I18n.toPercentage = function (number, options) {\n options = this.prepareOptions(\n options,\n this.lookup(\"number.percentage.format\", options),\n this.lookup(\"number.format\", options),\n PERCENTAGE_FORMAT\n );\n\n return this.toNumber(number, options);\n };\n\n // Convert a number into a readable size representation.\n I18n.toHumanSize = function (number, options) {\n const kb = 1024;\n let size = number;\n let iterations = 0;\n let unit;\n let precision;\n let fullScope;\n while (size >= kb && iterations < 4) {\n size /= kb;\n iterations += 1;\n }\n\n if (iterations === 0) {\n fullScope = this.getFullScope(\n \"number.human.storage_units.units.byte\",\n options\n );\n unit = this.t(fullScope, { count: size });\n precision = 0;\n } else {\n fullScope = this.getFullScope(\n `number.human.storage_units.units.${SIZE_UNITS[iterations]}`,\n options\n );\n unit = this.t(fullScope);\n precision = size - Math.floor(size) === 0 ? 0 : 1;\n }\n\n options = this.prepareOptions(options, {\n unit,\n precision,\n format: \"%n%u\",\n delimiter: \"\",\n });\n\n return this.toNumber(size, options);\n };\n\n I18n.getFullScope = function (scope, options) {\n options = options || {};\n\n // Deal with the scope as an array.\n if (isArray(scope)) {\n scope = scope.join(options.separator || this.defaultSeparator);\n }\n\n // Deal with the scope option provided through the second argument.\n //\n // I18n.t('hello', {scope: 'greetings'});\n //\n if (options.scope) {\n scope = [options.scope, scope].join(\n options.separator || this.defaultSeparator\n );\n }\n\n return scope;\n };\n /**\n * Merge obj1 with obj2 (shallow merge), without modifying inputs\n * @param {Object} obj1\n * @param {Object} obj2\n * @returns {Object} Merged values of obj1 and obj2\n *\n * In order to support ES3, `Object.prototype.hasOwnProperty.call` is used\n * Idea is from:\n * https://stackoverflow.com/questions/8157700/object-has-no-hasownproperty-method-i-e-its-undefined-ie8\n */\n I18n.extend = function (obj1, obj2) {\n if (typeof obj1 === \"undefined\" && typeof obj2 === \"undefined\") {\n return {};\n }\n return merge(obj1, obj2);\n };\n\n // Set aliases, so we can save some typing.\n I18n.t = I18n.translate.bind(I18n);\n I18n.l = I18n.localize.bind(I18n);\n I18n.p = I18n.pluralize.bind(I18n);\n\n return I18n;\n});\n","/*\nCopyright (c) 2022-present NAVER Corp.\nname: @cfcs/core\nlicense: MIT\nauthor: NAVER Crop.\nrepository: https://github.com/naver/cfcs/tree/main/packages/core\nversion: 0.1.0\n*/\nimport Component from '@egjs/component';\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\n/**\n * @hidden\n */\n\nfunction keys(obj) {\n return Object.keys(obj);\n}\n/**\n * @hidden\n */\n\n\nfunction camelize(str) {\n return str.replace(/[\\s-_]([a-z])/g, function (all, letter) {\n return letter.toUpperCase();\n });\n}\n/**\n * @hidden\n */\n\n\nfunction isString(val) {\n return typeof val === \"string\";\n}\n/**\n * @hidden\n */\n\n\nfunction isObject(val) {\n return typeof val === \"object\";\n}\n/**\n * @hidden\n */\n\n\nfunction isFunction(val) {\n return typeof val === \"function\";\n}\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\n/**\n * @hidden\n */\n\n\nfunction findTarget(target) {\n var el;\n\n if (!target) {\n return null;\n }\n\n if (isString(target)) {\n el = document.querySelector(target);\n } else if (target instanceof Element) {\n el = target;\n } else if (\"value\" in target || \"current\" in target) {\n el = target.value || target.current;\n }\n\n return el;\n}\n/**\n * @description Sets the name of the class method to be exposed to the outside.\n * @category DOM\n * @return Property Decorator\n * @example\n * ```ts\n * import { withClassMethods } from \"@cfcs/core\";\n *\n * class YourFrameworkComponent {\n * @withClassMethod(METHOD_NAMES)\n * inst = new YourComponent();\n * }\n * ```\n */\n\n\nfunction withClassMethods(methods) {\n return function (prototype, memberName) {\n methods.forEach(function (name) {\n if (name in prototype) {\n return;\n }\n\n prototype[name] = function () {\n var _a;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var result = (_a = this[memberName])[name].apply(_a, args); // fix `this` type to return your own `class` instance to the instance using the decorator.\n\n\n if (result === this[memberName]) {\n return this;\n } else {\n return result;\n }\n };\n });\n };\n}\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\n\nvar OBSERVERS_PATH = \"__observers__\";\nvar COMPUTED_PATH = \"__computed__\";\nvar CFCS_DETECTED_DEPENDENCIES_VERSION = 1;\nvar CFCS_DETECTED_DEPENDENCIES = \"__CFCS_DETECTED_DEPENDENCIES__\";\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\n\nfunction getDetectedStack() {\n // Version issues do not occur when you access the native object in the global.\n Object[CFCS_DETECTED_DEPENDENCIES] = Object[CFCS_DETECTED_DEPENDENCIES] || {};\n var versionList = Object[CFCS_DETECTED_DEPENDENCIES];\n versionList[CFCS_DETECTED_DEPENDENCIES_VERSION] = versionList[CFCS_DETECTED_DEPENDENCIES_VERSION] || [];\n return versionList[CFCS_DETECTED_DEPENDENCIES_VERSION];\n}\n\nfunction getCurrentDetected() {\n var stack = getDetectedStack();\n return stack[stack.length - 1];\n}\n\nfunction detectDependencies(host) {\n var stack = getDetectedStack();\n var observers = [];\n var detected = {\n host: host,\n observers: observers,\n push: function (observer) {\n if (host !== observer && observers.indexOf(observer) === -1) {\n observers.push(observer);\n }\n }\n };\n stack.push(detected);\n return detected;\n}\n\nfunction endDetectDependencies() {\n var stack = getDetectedStack();\n return stack.pop();\n}\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\n/**\n * Creates a mutable ref object. You can access the `.current` value and detect the value change through `.subscribe`.\n * @category Reactive\n * @see observe\n */\n\n\nvar Observer = /*#__PURE__*/function () {\n /**\n *\n */\n function Observer(value) {\n this._emitter = new Component();\n this._current = value;\n }\n\n var __proto = Observer.prototype;\n Object.defineProperty(__proto, \"current\", {\n /**\n * return the current value.\n */\n get: function () {\n var currentDetected = getCurrentDetected();\n currentDetected === null || currentDetected === void 0 ? void 0 : currentDetected.push(this);\n return this._current;\n },\n set: function (value) {\n this._setCurrent(value);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * When the current value changes, the callback function is called.\n */\n\n __proto.subscribe = function (callback) {\n this.current;\n\n this._emitter.on(\"update\", callback);\n\n return this;\n };\n /**\n * Cancel the registered subscription through callback.\n */\n\n\n __proto.unsubscribe = function (callback) {\n this._emitter.off(\"update\", callback);\n\n return this;\n };\n\n __proto._setCurrent = function (value) {\n var prevValue = this._current;\n var isUpdate = value !== prevValue;\n this._current = value;\n\n if (isUpdate) {\n this._emitter.trigger(\"update\", value, prevValue);\n }\n };\n /**\n * @hidden\n */\n\n\n __proto.toString = function () {\n return \"\".concat(this.current);\n };\n /**\n * @hidden\n */\n\n\n __proto.valueOf = function () {\n return this.current;\n };\n\n return Observer;\n}();\n/**\n * @category Reactive\n * @hidden\n */\n\n\nvar ComputedObserver = /*#__PURE__*/function (_super) {\n __extends(ComputedObserver, _super);\n /**\n * @description Creates a new computed observer from the values of other observers.\n * It is read-only and if you change the value of the observer used inside the callback, its value will be automatically updated.\n * @param _computedCallback A function for observers to be computed.\n */\n\n\n function ComputedObserver(_computedCallback) {\n var _this = _super.call(this) || this;\n\n _this._computedCallback = _computedCallback;\n _this._registered = [];\n\n _this._onCheckUpdate = function () {\n _this._setCurrent(_this.current);\n };\n\n _this._current = _this.current;\n return _this;\n }\n\n var __proto = ComputedObserver.prototype;\n Object.defineProperty(__proto, \"current\", {\n get: function () {\n var _this = this;\n\n detectDependencies(this);\n\n var value = this._computedCallback();\n\n var results = endDetectDependencies();\n\n this._registered.forEach(function (observer) {\n observer.unsubscribe(_this._onCheckUpdate);\n });\n\n results.observers.forEach(function (observer) {\n observer.subscribe(_this._onCheckUpdate);\n });\n this._registered = results.observers;\n return value;\n },\n enumerable: false,\n configurable: true\n });\n return ComputedObserver;\n}(Observer);\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\n\nfunction injectObserve(prototype, memberName, publicName) {\n if (publicName === void 0) {\n publicName = memberName;\n }\n\n var nextAttributes = {\n configurable: true,\n get: function () {\n return getObserver(this, publicName).current;\n },\n set: function (value) {\n getObserver(this, publicName, value).current = value;\n }\n };\n Object.defineProperty(prototype, memberName, nextAttributes);\n\n if (publicName !== memberName) {\n Object.defineProperty(prototype, publicName, {\n configurable: true,\n get: function () {\n return getObserver(this, publicName).current;\n }\n });\n }\n}\n/**\n * @description `Observe` is a property decorator and converts the property into a `reactive state`. You can detect its status through `.subscribe`.\n * @category Reactive-Decorator\n * @see ReactiveSubscribe\n * @example\n* ```ts\nimport { ReactiveSubscribe, Observe } from \"@cfcs/core\";\n\n@ReactiveSubscribe\nclass Component {\n // The public name and state name are the same.\n @Observe value1 = 1;\n // If you want to set public name and private properties separately\n @Observe(\"value2\") _value2 = 1;\n\n constructor() {\n requestAnimationFrame(() => {\n this.value1 = 2;\n });\n }\n}\ninterface C\n```\n */\n\n\nfunction Observe() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (args.length > 1) {\n return injectObserve(args[0], args[1]);\n }\n\n return function (prototype, memberName) {\n return injectObserve(prototype, memberName, args[0]);\n };\n}\n/**\n * @hidden\n */\n\n\nfunction Reactive() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return Observe.apply(void 0, args);\n}\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\n/**\n * @hidden\n */\n\n\nfunction injectReactiveSubscribe(object) {\n object[\"subscribe\"] = function (name, callback) {\n this[name];\n getObserver(this, name).subscribe(callback);\n };\n\n object[\"unsubscribe\"] = function (name, callback) {\n var _this = this;\n\n if (!name) {\n keys(getObservers(this)).forEach(function (observerName) {\n _this.unsubscribe(observerName);\n });\n return;\n }\n\n if (!(name in this)) {\n return;\n }\n\n getObserver(this, name).unsubscribe(callback);\n };\n}\n/**\n * @description `ReactiveSubscribe` is a class decorator and adds `.subscribe` and `.unsubscribe` methods.\n * @category Reactive-Decorator\n * @see Observe\n * @example\n * ```ts\nimport { ReactiveSubscribe, Observe } from \"@cfcs/core\";\n\n@ReactiveSubscribe\nclass Component {\n @Observe value1 = 1;\n\n constructor() {\n requestAnimationFrame(() => {\n this.value1 = 2;\n });\n }\n}\n\ninterface Component extends ReactiveSubscribe<{\n value1: number;\n value2: number;\n}> {}\n\nconst component = new Component();\n\n// 1\nconsole.log(component.value1);\n\ncomponent.subscribe(\"value1\", nextValue => {\n // When the change event occurs => (2, 2)\n console.log(nextValue, component.value2);\n});\n```\n */\n\n\nfunction ReactiveSubscribe(Constructor) {\n var prototype = Constructor.prototype;\n injectReactiveSubscribe(prototype);\n}\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\n\nfunction makeReactiveObject(setup, all) {\n var result = isFunction(setup) ? setup() : setup;\n var reactiveObject = {};\n defineObservers(reactiveObject);\n keys(result).forEach(function (name) {\n var value = result[name];\n\n if (isObserver(value)) {\n setObserver(reactiveObject, name, value);\n } else {\n setObserver(reactiveObject, name, observe(value));\n }\n\n Observe(name)(reactiveObject, name);\n });\n injectReactiveSubscribe(reactiveObject);\n return reactiveObject;\n}\n/**\n * @description Make the return value of the corresponding object or function a reactive object.\n * @category Reactive\n * @param setup - The target object or function to which reactive is applied\n * @returns Makes all values into reactive objects.\n * @example\n * ```ts\n * import { reactive } from \"@cfcs/core\";\n *\n * const obj = reactive({\n * value1: 1,\n * value2: 2,\n * });\n *\n * obj.subscribe(\"value1\", value1 => {\n * console.log(value1);\n * });\n * obj.value1 = 2;\n * ```\n */\n\n\nfunction reactive(setup) {\n return makeReactiveObject(setup);\n}\n/**\n * @description Make the return value of the corresponding object or function a reactive object.\n * @category Reactive\n * @param setup - The target object or function to which reactive is applied\n * @returns Only the values to which observer is applied are objects to which reactive is applied.\n * @example\n * ```ts\n * import { partialReactive, observe } from \"@cfcs/core\";\n *\n * const value1 = observe(1);\n * const value2 = observe(2);\n * const obj = partialReactive({\n * value1,\n * value2,\n * });\n *\n * obj.subscribe(\"value1\", value1 => {\n * console.log(value1);\n * });\n * value1.current = 2;\n * ```\n */\n\n\nfunction partialReactive(setup) {\n return makeReactiveObject(setup);\n}\n/**\n * @description Creates a mutable ref object. You can access the `.current` value and detect the value change through `.subscribe`.\n * @category Reactive\n * @example\n * ```ts\n * import { observe } from \"@cfcs/core\";\n *\n * const ob1 = observe(1);\n *\n * ob1.subscribe(nextValue => {\n * console.log(nextValue);\n * });\n *\n * ob1.current = 2;\n * ```\n */\n\n\nfunction observe(defaultValue) {\n return new Observer(defaultValue);\n}\n/**\n * @hidden\n */\n\n\nfunction computed(computedCallback) {\n return new ComputedObserver(computedCallback);\n}\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\n/**\n * @hidden\n */\n\n\nfunction withReactiveMethods(ref, methods) {\n var obj = {};\n\n if (!methods) {\n return obj;\n }\n\n methods.forEach(function (name) {\n obj[name] = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var current = ref.current || ref.value;\n return current[name].apply(current, args);\n };\n });\n return obj;\n}\n/**\n * @hidden\n */\n\n\nfunction defineObservers(instance) {\n var observers = {};\n Object.defineProperty(instance, OBSERVERS_PATH, {\n get: function () {\n return observers;\n }\n });\n return observers;\n}\n/**\n * @hidden\n */\n\n\nfunction getObservers(instance, isComputed) {\n var _a, _b;\n\n if (!instance[OBSERVERS_PATH]) {\n defineObservers(instance);\n }\n\n var observers = instance[OBSERVERS_PATH];\n\n if (!isComputed) {\n var computedList = (_b = (_a = instance === null || instance === void 0 ? void 0 : instance.constructor) === null || _a === void 0 ? void 0 : _a.prototype) === null || _b === void 0 ? void 0 : _b[COMPUTED_PATH];\n\n if (computedList) {\n computedList.forEach(function (name) {\n if (!(name in observers) && name in instance) {\n instance[name];\n }\n });\n }\n }\n\n return observers;\n}\n/**\n * @hidden\n */\n\n\nfunction getObserver(instance, name, defaultValue) {\n var observers = getObservers(instance);\n\n if (!observers[name]) {\n observers[name] = observe(defaultValue);\n }\n\n return observers[name];\n}\n/**\n * @hidden\n */\n\n\nfunction setObserver(instance, name, observer) {\n var observers = getObservers(instance);\n observers[name] = observer;\n}\n/**\n * @description Whether that object is an observer instance\n * @category Reactive\n */\n\n\nfunction isObserver(val) {\n return val && isObject(val) && \"current\" in val && \"subscribe\" in val && \"unsubscribe\" in val;\n}\n/**\n * @description Whether the object is reactive\n * @category Reactive\n */\n\n\nfunction isReactive(val) {\n return val && !isObserver(val) && \"subscribe\" in val && \"unsubscribe\" in val;\n}\n/**\n * @category Reactive\n * @hidden\n */\n\n\nfunction adaptReactive(adapter, props) {\n var objectAdapter = isFunction(adapter) ? {\n setup: adapter\n } : adapter;\n\n function getProps() {\n var _a, _b, _c, _d, _e;\n\n return (_e = (_c = (_a = props === null || props === void 0 ? void 0 : props()) !== null && _a !== void 0 ? _a : (_b = objectAdapter.props) === null || _b === void 0 ? void 0 : _b.call(objectAdapter)) !== null && _c !== void 0 ? _c : (_d = objectAdapter.data) === null || _d === void 0 ? void 0 : _d.call(objectAdapter)) !== null && _e !== void 0 ? _e : {};\n }\n\n var eventEmitter = new Component();\n var mountedHooks = [];\n var initHooks = [];\n var destroyHooks = [];\n var onHooks = [];\n var instanceRef = {\n current: null\n };\n var offHooksList = [];\n var initialState = null;\n var eventNames = [];\n var methodNames = [];\n\n var onMounted = function (callback) {\n mountedHooks.push(callback);\n };\n\n var onInit = function (callback) {\n initHooks.push(callback);\n };\n\n var onDestroy = function (callback) {\n destroyHooks.push(callback);\n };\n\n var on = function (callback) {\n onHooks.push(callback);\n };\n\n var emit = function (eventName) {\n var params = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n\n eventEmitter.trigger.apply(eventEmitter, __spreadArray([eventName], params, false));\n };\n\n var setInitialState = function (state) {\n initialState = state;\n };\n\n var setEvents = function (events) {\n eventNames = events;\n };\n\n var setMethods = function (methods) {\n methodNames = methods;\n };\n\n if (objectAdapter.setup) {\n instanceRef.current = objectAdapter.setup({\n getProps: getProps,\n setInitialState: setInitialState,\n setEvents: setEvents,\n setMethods: setMethods,\n onMounted: onMounted,\n onDestroy: onDestroy,\n onInit: onInit,\n emit: emit,\n on: on\n }) || null;\n }\n\n if (objectAdapter.created) {\n instanceRef.current = objectAdapter.created(getProps()) || null;\n }\n\n if (objectAdapter.events) {\n setEvents(objectAdapter.events);\n }\n\n if (objectAdapter.state) {\n setInitialState(objectAdapter.state);\n }\n\n if (objectAdapter.methods) {\n setMethods(objectAdapter.methods);\n }\n\n if (objectAdapter.mounted) {\n onMounted(objectAdapter.mounted);\n }\n\n if (objectAdapter.destroy) {\n destroyHooks.push(objectAdapter.destroy);\n }\n\n if (objectAdapter.init) {\n initHooks.push(objectAdapter.init);\n }\n\n if (objectAdapter.on) {\n onHooks.push(function (instance, eventName, listener) {\n var off = objectAdapter.on(instance, eventName, listener);\n return function () {\n var _a;\n\n off && off();\n (_a = objectAdapter.off) === null || _a === void 0 ? void 0 : _a.call(objectAdapter, instance, eventName, listener);\n };\n });\n }\n\n return {\n events: function () {\n return eventNames;\n },\n state: function () {\n var inst = instanceRef.current;\n\n if (initialState) {\n return initialState;\n }\n\n if (inst) {\n var observers_1 = getObservers(inst);\n setInitialState(keys(observers_1).reduce(function (prev, cur) {\n prev[cur] = observers_1[cur].current;\n return prev;\n }, {}));\n }\n\n return initialState || {};\n },\n instance: function () {\n return instanceRef.current;\n },\n mounted: function () {\n var props = getProps();\n mountedHooks.forEach(function (hook) {\n instanceRef.current = hook(props, instanceRef.current) || instanceRef.current;\n });\n },\n init: function () {\n // on events\n var instance = instanceRef.current;\n var props = getProps();\n offHooksList = eventNames.map(function (eventName) {\n var listener = function () {\n var _a;\n\n var params = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n\n (_a = eventEmitter).trigger.apply(_a, __spreadArray([eventName], params, false));\n };\n\n var instance = instanceRef.current;\n return onHooks.map(function (hook) {\n return hook(instance, eventName, listener);\n }).filter(Boolean);\n }); // init\n\n initHooks.forEach(function (hook) {\n hook(instance, props);\n });\n },\n destroy: function () {\n // off events\n offHooksList.forEach(function (offHooks) {\n offHooks.forEach(function (hook) {\n hook();\n });\n }); // destroy\n\n eventEmitter.off();\n var instance = instanceRef.current;\n var props = getProps();\n destroyHooks.forEach(function (hook) {\n hook(instance, props);\n });\n },\n methods: function () {\n return withReactiveMethods(instanceRef, methodNames);\n },\n on: function (eventName, listener) {\n eventEmitter.on(eventName, listener);\n },\n off: function (eventName, listener) {\n eventEmitter.off(eventName, listener);\n }\n };\n}\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\n/**\n * @description `Computed` is a property decorator.\n * Changes in computed state values are also recognized according to changes in observers used within the getter function.\n * You can detect its status through `.subscribe`.\n * @hidden\n * @category Reactive-Decorator\n * @see ReactiveSubscribe\n * @example\n * ```ts\nconst ob1 = observe(0);\nconst ob2 = observe(1);\n\n// When\n@ReactiveSubscribe\nclass TestComputed {\n @Computed\n get ob3() {\n return ob1.current + ob2.current;\n }\n}\nconst inst = new TestComputed();\n\ninst.subscribe(\"ob3\", ob3 => {\n console.log(ob3);\n});\n\nob1.current = 1;\n```\n */\n\n\nfunction Computed(prototype, memberName, attributes) {\n var get = attributes.get;\n\n function getComputed() {\n var observers = getObservers(this, true);\n\n if (!(memberName in observers)) {\n observers[memberName] = computed(get.bind(this));\n }\n\n return getObserver(this, memberName).current;\n }\n\n var nextAttributes = {\n configurable: true,\n get: getComputed\n };\n prototype[COMPUTED_PATH] || (prototype[COMPUTED_PATH] = []);\n var computedList = prototype[COMPUTED_PATH];\n\n if (computedList.indexOf(memberName) === -1) {\n computedList.push(memberName);\n }\n\n Object.defineProperty(prototype, memberName, nextAttributes);\n return nextAttributes;\n}\n\nexport { Computed, ComputedObserver, Observe, Observer, Reactive, ReactiveSubscribe, adaptReactive, camelize, computed, defineObservers, findTarget, getObserver, getObservers, injectReactiveSubscribe, isFunction, isObject, isObserver, isReactive, isString, keys, observe, partialReactive, reactive, setObserver, withClassMethods, withReactiveMethods };","/*\nCopyright (c) 2019-present NAVER Corp.\nname: @egjs/flicking-plugins\nlicense: MIT\nauthor: NAVER Corp.\nrepository: https://github.com/naver/egjs-flicking-plugins\nversion: 4.7.1\n*/\nimport { EVENTS, MOVE_TYPE, DIRECTION, FlickingError, clamp } from '@egjs/flicking';\n/**\n * You can apply parallax effect while panel is moving.\n * @ko 패널들을 움직이면서 parallax 효과를 부여할 수 있습니다.\n * @memberof Flicking.Plugins\n */\n\nvar Parallax = /*#__PURE__*/function () {\n /**\n * @param {string} selector Selector of the element to apply parallax effect Parallax 효과를 적용할 엘리먼트의 선택자 \n * @param {number} scale Effect amplication scale효과 증폭도\n * @example\n * ```ts\n * flicking.addPlugins(new Parallax(\"img\", 1));\n * ```\n */\n function Parallax(selector, scale) {\n var _this = this;\n\n if (selector === void 0) {\n selector = \"\";\n }\n\n if (scale === void 0) {\n scale = 1;\n }\n\n this.update = function () {\n _this._onMove();\n };\n\n this._onMove = function () {\n var flicking = _this._flicking;\n if (!flicking) return;\n var panels = flicking.visiblePanels;\n panels.forEach(function (panel) {\n var progress = panel.outsetProgress;\n var el = panel.element;\n var target = _this._selector ? el.querySelector(_this._selector) : el;\n var parentTarget = target.parentNode;\n var rect = target.getBoundingClientRect();\n var parentRect = parentTarget.getBoundingClientRect();\n var position = (parentRect.width - rect.width) / 2 * progress * _this._scale;\n var transform = \"translate(-50%) translate(\" + position + \"px)\";\n var style = target.style;\n style.cssText += \"transform: \" + transform + \";-webkit-transform: \" + transform + \";-ms-transform:\" + transform;\n });\n };\n\n this._flicking = null;\n this._selector = selector;\n this._scale = scale;\n }\n\n var __proto = Parallax.prototype;\n Object.defineProperty(__proto, \"selector\", {\n get: function () {\n return this._selector;\n },\n set: function (val) {\n this._selector = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"scale\", {\n get: function () {\n return this._scale;\n },\n set: function (val) {\n this._scale = val;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.init = function (flicking) {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n flicking.on(EVENTS.MOVE, this._onMove);\n flicking.on(EVENTS.AFTER_RESIZE, this.update);\n\n this._onMove();\n };\n\n __proto.destroy = function () {\n if (!this._flicking) return;\n\n this._flicking.off(EVENTS.MOVE, this._onMove);\n\n this._flicking.off(EVENTS.AFTER_RESIZE, this.update);\n\n this._flicking = null;\n };\n\n return Parallax;\n}();\n/**\n * You can apply fade in / out effect while panel is moving.\n * @ko 패널들을 움직이면서 fade in / out 효과를 부여할 수 있습니다.\n * @memberof Flicking.Plugins\n */\n\n\nvar Fade = /*#__PURE__*/function () {\n /**\n * @param - The selector of the element to which the fade effect is to be applied. If the selector is blank, it applies to panel element. Fade 효과를 적용할 대상의 선택자. 선택자가 공백이면 패널 엘리먼트에 적용된다.\n * @param - Effect amplication scale효과 증폭도\n * @example\n * ```ts\n * flicking.addPlugins(new Fade(\"p\", 1));\n * ```\n */\n function Fade(selector, scale) {\n var _this = this;\n\n if (selector === void 0) {\n selector = \"\";\n }\n\n if (scale === void 0) {\n scale = 1;\n }\n\n this.update = function () {\n _this._onMove();\n };\n\n this._onMove = function () {\n var flicking = _this._flicking;\n var selector = _this._selector;\n var scale = _this._scale;\n if (!flicking) return;\n var panels = flicking.visiblePanels;\n panels.forEach(function (panel) {\n var progress = panel.outsetProgress;\n var el = panel.element;\n var target = selector ? el.querySelector(selector) : el;\n\n if (target) {\n var opacity = Math.min(1, Math.max(0, 1 - Math.abs(progress * scale)));\n target.style.opacity = \"\" + opacity;\n }\n });\n };\n\n this._flicking = null;\n this._selector = selector;\n this._scale = scale;\n }\n\n var __proto = Fade.prototype;\n Object.defineProperty(__proto, \"selector\", {\n get: function () {\n return this._selector;\n },\n set: function (val) {\n this._selector = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"scale\", {\n get: function () {\n return this._scale;\n },\n set: function (val) {\n this._scale = val;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.init = function (flicking) {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n flicking.on(EVENTS.MOVE, this._onMove);\n flicking.on(EVENTS.AFTER_RESIZE, this.update);\n\n this._onMove();\n };\n\n __proto.destroy = function () {\n if (!this._flicking) return;\n\n this._flicking.off(EVENTS.MOVE, this._onMove);\n\n this._flicking.off(EVENTS.AFTER_RESIZE, this.update);\n\n this._flicking = null;\n };\n\n return Fade;\n}();\n/**\n * Plugin that allow you to automatically move to the next/previous panel, on a specific time basis\n * @ko 일정 시간마다, 자동으로 다음/이전 패널로 넘어가도록 할 수 있는 플러그인\n * @memberof Flicking.Plugins\n */\n\n\nvar AutoPlay = /*#__PURE__*/function () {\n /**\n * @param {AutoPlayOptions} options Options for the AutoPlay instance.AutoPlay 옵션\n * @param {number} options.duration Time to wait before moving on to the next panel.다음 패널로 움직이기까지 대기 시간\n * @param {number | undefined} options.animationDuration Duration of animation of moving to the next panel. If undefined, duration option of the Flicking instance is used instead.패널이 움직이는 애니메이션의 지속 시간, undefined라면 Flicking 인스턴스의 duration 값을 사용한다\n * @param {\"PREV\" | \"NEXT\"} options.direction The direction in which the panel moves.패널이 움직이는 방향\n * @param {boolean} options.stopOnHover Whether to stop when mouse hover upon the element.엘리먼트에 마우스를 올렸을 때 AutoPlay를 정지할지 여부\n * @param {number} options.delayAfterHover If stopOnHover is true, the amount of time to wait before moving on to the next panel when mouse leaves the element.stopOnHover를 사용한다면 마우스가 엘리먼트로부터 나간 뒤 다음 패널로 움직이기까지 대기 시간\n * @example\n * ```ts\n * flicking.addPlugins(new AutoPlay({ duration: 2000, direction: \"NEXT\" }));\n * ```\n */\n function AutoPlay(_a) {\n var _this = this;\n\n var _b = _a === void 0 ? {} : _a,\n _c = _b.duration,\n duration = _c === void 0 ? 2000 : _c,\n _d = _b.animationDuration,\n animationDuration = _d === void 0 ? undefined : _d,\n _e = _b.direction,\n direction = _e === void 0 ? DIRECTION.NEXT : _e,\n _f = _b.stopOnHover,\n stopOnHover = _f === void 0 ? false : _f,\n delayAfterHover = _b.delayAfterHover;\n /* Internal Values */\n\n\n this._flicking = null;\n this._timerId = 0;\n this._mouseEntered = false;\n this._playing = false;\n\n this.play = function () {\n _this._movePanel(_this._duration);\n };\n\n this.stop = function () {\n _this._playing = false;\n clearTimeout(_this._timerId);\n };\n\n this._onMouseEnter = function () {\n _this._mouseEntered = true;\n\n _this.stop();\n };\n\n this._onMouseLeave = function () {\n _this._mouseEntered = false;\n\n _this._movePanel(_this._delayAfterHover);\n };\n\n this._duration = duration;\n this._animationDuration = animationDuration;\n this._direction = direction;\n this._stopOnHover = stopOnHover;\n this._delayAfterHover = delayAfterHover !== null && delayAfterHover !== void 0 ? delayAfterHover : duration;\n }\n\n var __proto = AutoPlay.prototype;\n Object.defineProperty(__proto, \"duration\", {\n get: function () {\n return this._duration;\n },\n set: function (val) {\n this._duration = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"animationDuration\", {\n get: function () {\n return this._animationDuration;\n },\n set: function (val) {\n this._animationDuration = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"direction\", {\n get: function () {\n return this._direction;\n },\n set: function (val) {\n this._direction = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"stopOnHover\", {\n get: function () {\n return this._stopOnHover;\n },\n set: function (val) {\n this._stopOnHover = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"delayAfterHover\", {\n get: function () {\n return this._delayAfterHover;\n },\n set: function (val) {\n this._delayAfterHover = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"playing\", {\n get: function () {\n return this._playing;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.init = function (flicking) {\n var _a;\n\n if (this._flicking) {\n this.destroy();\n }\n\n flicking.on((_a = {}, _a[EVENTS.MOVE_START] = this.stop, _a[EVENTS.HOLD_START] = this.stop, _a[EVENTS.MOVE_END] = this.play, _a[EVENTS.SELECT] = this.play, _a));\n this._flicking = flicking;\n\n if (this._stopOnHover) {\n var targetEl = this._flicking.element;\n targetEl.addEventListener(\"mouseenter\", this._onMouseEnter, false);\n targetEl.addEventListener(\"mouseleave\", this._onMouseLeave, false);\n }\n\n this.play();\n };\n\n __proto.destroy = function () {\n var flicking = this._flicking;\n this._mouseEntered = false;\n this.stop();\n\n if (!flicking) {\n return;\n }\n\n flicking.off(EVENTS.MOVE_START, this.stop);\n flicking.off(EVENTS.HOLD_START, this.stop);\n flicking.off(EVENTS.MOVE_END, this.play);\n flicking.off(EVENTS.SELECT, this.play);\n var targetEl = flicking.element;\n targetEl.removeEventListener(\"mouseenter\", this._onMouseEnter, false);\n targetEl.removeEventListener(\"mouseleave\", this._onMouseLeave, false);\n this._flicking = null;\n };\n\n __proto.update = function () {// DO-NOTHING\n };\n\n __proto._movePanel = function (duration) {\n var _this = this;\n\n var flicking = this._flicking;\n var direction = this._direction;\n\n if (!flicking) {\n return;\n }\n\n this.stop();\n\n if (this._mouseEntered || flicking.animating) {\n return;\n }\n\n this._playing = true;\n this._timerId = window.setTimeout(function () {\n var _a, _b;\n\n var animationDuration = _this._animationDuration || flicking.duration;\n var moveType = flicking.moveType; // for freeScroll\n\n if (moveType === MOVE_TYPE.FREE_SCROLL || (moveType === null || moveType === void 0 ? void 0 : moveType[0]) === MOVE_TYPE.FREE_SCROLL) {\n var range = flicking.camera.range;\n var cameraPosition = flicking.camera.position;\n var currentPanel = flicking.currentPanel;\n var prevPanel = currentPanel.prev();\n var nextPanel = currentPanel.next();\n var currentPosition = currentPanel.position;\n var nextPosition = (_a = nextPanel === null || nextPanel === void 0 ? void 0 : nextPanel.position) !== null && _a !== void 0 ? _a : range.max;\n var prevPosition = (_b = prevPanel === null || prevPanel === void 0 ? void 0 : prevPanel.position) !== null && _b !== void 0 ? _b : range.min; // circular: prev (last) > cur (0) => prev(-1) < cur(0)\n\n if (prevPosition > currentPosition) {\n prevPosition = range.min - (range.max - prevPosition);\n } // current (last) > next (0)\n\n\n if (nextPosition < currentPosition) {\n nextPosition += range.max;\n }\n\n if (direction === DIRECTION.NEXT) {\n // prev - cur - camera - next\n var size = nextPosition - currentPosition;\n var restSize = nextPosition - cameraPosition;\n\n if (cameraPosition < currentPosition) {\n // prev - camera - cur - next\n restSize = nextPosition - cameraPosition;\n }\n\n animationDuration *= restSize / size;\n } else {\n // prev - caemra - cur - next\n var size = currentPosition - prevPosition;\n var restSize = cameraPosition - prevPosition;\n\n if (cameraPosition > currentPosition) {\n // prev - cur - camera - next\n restSize = cameraPosition - prevPosition;\n }\n\n animationDuration *= restSize / size;\n }\n }\n\n if (direction === DIRECTION.NEXT) {\n flicking.next(animationDuration).catch(function () {\n return void 0;\n });\n } else {\n flicking.prev(animationDuration).catch(function () {\n return void 0;\n });\n }\n\n _this.play();\n }, duration);\n };\n\n return AutoPlay;\n}();\n\nvar BROWSER = {\n CLICK: \"click\",\n MOUSE_DOWN: \"mousedown\",\n TOUCH_START: \"touchstart\"\n};\nvar ARROW = {\n PREV_SELECTOR: \".flicking-arrow-prev\",\n NEXT_SELECTOR: \".flicking-arrow-next\",\n DISABLED_CLASS: \"flicking-arrow-disabled\"\n};\nvar PAGINATION = {\n SELECTOR: \".flicking-pagination\",\n PREFIX: \"flicking-pagination\",\n BULLET_WRAPPER_SUFFIX: \"bullets\",\n BULLET_SUFFIX: \"bullet\",\n BULLET_ACTIVE_SUFFIX: \"bullet-active\",\n FRACTION_WRAPPER_SUFFIX: \"fraction\",\n FRACTION_CURRENT_SUFFIX: \"fraction-current\",\n FRACTION_TOTAL_SUFFIX: \"fraction-total\",\n SCROLL_UNINIT_SUFFIX: \"uninitialized\",\n SCROLL_WRAPPER_SUFFIX: \"scroll\",\n SCROLL_SLIDER_SUFFIX: \"slider\",\n SCROLL_PREV_SUFFIX: \"bullet-prev\",\n SCROLL_NEXT_SUFFIX: \"bullet-next\",\n TYPE: {\n BULLET: \"bullet\",\n FRACTION: \"fraction\",\n SCROLL: \"scroll\"\n }\n};\nvar SYNC = {\n TYPE: {\n CAMERA: \"camera\",\n INDEX: \"index\"\n }\n};\n\nvar addClass = function (el, className) {\n if (!el) return;\n\n if (el.classList) {\n el.classList.add(className);\n } else {\n var classes = el.className.split(\" \");\n\n if (classes.indexOf(className) < 0) {\n el.className = el.className + \" \" + className;\n }\n }\n};\n\nvar removeClass = function (el, className) {\n if (!el) return;\n\n if (el.classList) {\n el.classList.remove(className);\n } else {\n var classRegex = new RegExp(\"( |^)\" + className + \"( |$)\", \"g\");\n el.className.replace(classRegex, \" \");\n }\n};\n\nvar getElement = function (selector, parent, pluginName) {\n var el = parent.querySelector(selector);\n\n if (!el) {\n throw new Error(\"[Flicking-\" + pluginName + \"] Couldn't find element with the given selector: \" + selector);\n }\n\n return el;\n};\n/**\n * A plugin to easily create prev/right arrow button of Flicking\n * @ko 이전/다음 버튼을 쉽게 만들 수 있는 플러그인\n * @memberof Flicking.Plugins\n */\n\n\nvar Arrow = /*#__PURE__*/function () {\n function Arrow(_a) {\n var _this = this;\n\n var _b = _a === void 0 ? {} : _a,\n _c = _b.parentEl,\n parentEl = _c === void 0 ? null : _c,\n _d = _b.prevElSelector,\n prevElSelector = _d === void 0 ? ARROW.PREV_SELECTOR : _d,\n _e = _b.nextElSelector,\n nextElSelector = _e === void 0 ? ARROW.NEXT_SELECTOR : _e,\n _f = _b.disabledClass,\n disabledClass = _f === void 0 ? ARROW.DISABLED_CLASS : _f,\n _g = _b.moveCount,\n moveCount = _g === void 0 ? 1 : _g,\n _h = _b.moveByViewportSize,\n moveByViewportSize = _h === void 0 ? false : _h;\n /* Internal Values */\n\n\n this._flicking = null;\n\n this._preventInputPropagation = function (e) {\n e.stopPropagation();\n };\n\n this._onPrevClick = function () {\n var flicking = _this._flicking;\n var camera = flicking.camera;\n var anchorPoints = camera.anchorPoints;\n if (flicking.animating || anchorPoints.length <= 0) return;\n var firstAnchor = anchorPoints[0];\n var moveCount = _this._moveCount;\n\n if (_this._moveByViewportSize) {\n flicking.control.moveToPosition(camera.position - camera.size, flicking.duration).catch(_this._onCatch);\n } else {\n if (flicking.circularEnabled) {\n var targetPanel = flicking.currentPanel;\n\n for (var i = 0; i < moveCount; i++) {\n targetPanel = targetPanel.prev();\n }\n\n targetPanel.focus().catch(_this._onCatch);\n } else if (flicking.index > firstAnchor.panel.index) {\n flicking.moveTo(Math.max(flicking.index - moveCount, firstAnchor.panel.index)).catch(_this._onCatch);\n } else if (camera.position > camera.range.min) {\n flicking.moveTo(flicking.index).catch(_this._onCatch);\n }\n }\n };\n\n this._onNextClick = function () {\n var flicking = _this._flicking;\n var camera = flicking.camera;\n var anchorPoints = camera.anchorPoints;\n if (flicking.animating || anchorPoints.length <= 0) return;\n var lastAnchor = anchorPoints[anchorPoints.length - 1];\n var moveCount = _this._moveCount;\n\n if (_this._moveByViewportSize) {\n flicking.control.moveToPosition(camera.position + camera.size, flicking.duration).catch(_this._onCatch);\n } else {\n if (flicking.circularEnabled) {\n var targetPanel = flicking.currentPanel;\n\n for (var i = 0; i < moveCount; i++) {\n targetPanel = targetPanel.next();\n }\n\n targetPanel.focus().catch(_this._onCatch);\n } else if (flicking.index < lastAnchor.panel.index) {\n flicking.moveTo(Math.min(flicking.index + moveCount, lastAnchor.panel.index)).catch(_this._onCatch);\n } else if (camera.position > camera.range.min) {\n flicking.moveTo(flicking.index).catch(_this._onCatch);\n }\n }\n };\n\n this._onAnimation = function () {\n var flicking = _this._flicking;\n var camera = flicking.camera;\n var controller = flicking.control.controller;\n\n if (flicking.holding) {\n _this._updateClass(camera.position);\n } else {\n _this._updateClass(controller.animatingContext.end);\n }\n };\n\n this._onCatch = function (err) {\n if (err instanceof FlickingError) return;\n throw err;\n };\n\n this._parentEl = parentEl;\n this._prevElSelector = prevElSelector;\n this._nextElSelector = nextElSelector;\n this._disabledClass = disabledClass;\n this._moveCount = moveCount;\n this._moveByViewportSize = moveByViewportSize;\n }\n\n var __proto = Arrow.prototype;\n Object.defineProperty(__proto, \"prevEl\", {\n get: function () {\n return this._prevEl;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"nextEl\", {\n get: function () {\n return this._nextEl;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"parentEl\", {\n get: function () {\n return this._parentEl;\n },\n set: function (val) {\n this._parentEl = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"prevElSelector\", {\n get: function () {\n return this._prevElSelector;\n },\n set: function (val) {\n this._prevElSelector = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"nextElSelector\", {\n get: function () {\n return this._nextElSelector;\n },\n set: function (val) {\n this._nextElSelector = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"disabledClass\", {\n get: function () {\n return this._disabledClass;\n },\n set: function (val) {\n this._disabledClass = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"moveCount\", {\n get: function () {\n return this._moveCount;\n },\n set: function (val) {\n this._moveCount = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"moveByViewportSize\", {\n get: function () {\n return this._moveByViewportSize;\n },\n set: function (val) {\n this._moveByViewportSize = val;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.init = function (flicking) {\n var _this = this;\n\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n flicking.on(EVENTS.MOVE, this._onAnimation);\n var parentEl = this._parentEl ? this._parentEl : flicking.element;\n var prevEl = getElement(this._prevElSelector, parentEl, \"Arrow\");\n var nextEl = getElement(this._nextElSelector, parentEl, \"Arrow\");\n [BROWSER.MOUSE_DOWN, BROWSER.TOUCH_START].forEach(function (evt) {\n prevEl.addEventListener(evt, _this._preventInputPropagation, {\n passive: true\n });\n nextEl.addEventListener(evt, _this._preventInputPropagation, {\n passive: true\n });\n });\n prevEl.addEventListener(BROWSER.CLICK, this._onPrevClick);\n nextEl.addEventListener(BROWSER.CLICK, this._onNextClick);\n this._prevEl = prevEl;\n this._nextEl = nextEl;\n this.update();\n };\n\n __proto.destroy = function () {\n var _this = this;\n\n var flicking = this._flicking;\n\n if (!flicking) {\n return;\n }\n\n flicking.off(EVENTS.MOVE, this._onAnimation);\n var prevEl = this._prevEl;\n var nextEl = this._nextEl;\n [BROWSER.MOUSE_DOWN, BROWSER.TOUCH_START].forEach(function (evt) {\n prevEl.removeEventListener(evt, _this._preventInputPropagation);\n nextEl.removeEventListener(evt, _this._preventInputPropagation);\n });\n prevEl.removeEventListener(BROWSER.CLICK, this._onPrevClick);\n nextEl.removeEventListener(BROWSER.CLICK, this._onNextClick);\n this._flicking = null;\n };\n\n __proto.update = function () {\n this._updateClass(this._flicking.camera.position);\n };\n\n __proto._updateClass = function (pos) {\n var flicking = this._flicking;\n var disabledClass = this._disabledClass;\n var prevEl = this._prevEl;\n var nextEl = this._nextEl;\n var cameraRange = flicking.camera.range;\n var stopAtPrevEdge = flicking.circularEnabled ? false : pos <= cameraRange.min;\n var stopAtNextEdge = flicking.circularEnabled ? false : pos >= cameraRange.max;\n\n if (stopAtPrevEdge) {\n addClass(prevEl, disabledClass);\n } else {\n removeClass(prevEl, disabledClass);\n }\n\n if (stopAtNextEdge) {\n addClass(nextEl, disabledClass);\n } else {\n removeClass(nextEl, disabledClass);\n }\n };\n\n return Arrow;\n}();\n/**\n * Plugin for synchronizing multiple flickings\n * @ko 다양한 형태로 Flicking들이 같이 움직이게 할 수 있습니다.\n * @memberof Flicking.Plugins\n */\n\n\nvar Sync = /*#__PURE__*/function () {\n /** */\n function Sync(_a) {\n var _this = this;\n\n var _b = _a === void 0 ? {} : _a,\n _c = _b.type,\n type = _c === void 0 ? SYNC.TYPE.CAMERA : _c,\n _d = _b.synchronizedFlickingOptions,\n synchronizedFlickingOptions = _d === void 0 ? [] : _d;\n /* Internal Values */\n\n\n this._flicking = null;\n\n this._addEvents = function () {\n var type = _this._type;\n var synced = _this._synchronizedFlickingOptions;\n synced.forEach(function (_a) {\n var flicking = _a.flicking,\n isSlidable = _a.isSlidable,\n isClickable = _a.isClickable;\n\n if (type === SYNC.TYPE.CAMERA) {\n flicking.on(EVENTS.MOVE, _this._onMove);\n flicking.on(EVENTS.MOVE_START, _this._onMoveStart);\n flicking.on(EVENTS.MOVE_END, _this._onMoveEnd);\n }\n\n if (type === SYNC.TYPE.INDEX && isSlidable) {\n flicking.on(EVENTS.WILL_CHANGE, _this._onIndexChange);\n flicking.on(EVENTS.WILL_RESTORE, _this._onIndexChange);\n }\n\n if (isClickable) {\n flicking.on(EVENTS.SELECT, _this._onSelect);\n }\n });\n };\n\n this._removeEvents = function () {\n var type = _this._type;\n var synced = _this._synchronizedFlickingOptions;\n synced.forEach(function (_a) {\n var flicking = _a.flicking,\n isSlidable = _a.isSlidable,\n isClickable = _a.isClickable;\n\n if (type === SYNC.TYPE.CAMERA) {\n flicking.off(EVENTS.MOVE, _this._onMove);\n flicking.off(EVENTS.MOVE_START, _this._onMoveStart);\n flicking.off(EVENTS.MOVE_END, _this._onMoveEnd);\n }\n\n if (type === SYNC.TYPE.INDEX && isSlidable) {\n flicking.off(EVENTS.WILL_CHANGE, _this._onIndexChange);\n flicking.off(EVENTS.WILL_RESTORE, _this._onIndexChange);\n }\n\n if (isClickable) {\n flicking.off(EVENTS.SELECT, _this._onSelect);\n }\n });\n };\n\n this._onIndexChange = function (e) {\n var flicking = e.currentTarget;\n\n if (!flicking.initialized) {\n return;\n }\n\n _this._synchronizeByIndex(flicking, e.index);\n };\n\n this._onMove = function (e) {\n var camera = e.currentTarget.camera;\n var progress = (camera.position - camera.range.min) / camera.rangeDiff;\n\n _this._synchronizedFlickingOptions.forEach(function (_a) {\n var flicking = _a.flicking;\n if (flicking === e.currentTarget) return;\n var targetPosition = 0;\n\n if (camera.position < camera.range.min) {\n targetPosition = camera.position;\n } else if (camera.position > camera.range.max) {\n targetPosition = flicking.camera.range.max + camera.position - camera.range.max;\n } else {\n targetPosition = flicking.camera.range.min + flicking.camera.rangeDiff * progress;\n }\n\n void flicking.camera.lookAt(targetPosition);\n });\n };\n\n this._onMoveStart = function (e) {\n _this._synchronizedFlickingOptions.forEach(function (_a) {\n var flicking = _a.flicking;\n\n if (flicking !== e.currentTarget) {\n flicking.disableInput();\n }\n });\n };\n\n this._onMoveEnd = function (e) {\n _this._synchronizedFlickingOptions.forEach(function (_a) {\n var flicking = _a.flicking;\n\n if (flicking !== e.currentTarget) {\n flicking.enableInput();\n flicking.control.updateInput();\n }\n });\n };\n\n this._onSelect = function (e) {\n void e.currentTarget.moveTo(e.index).catch(function () {\n return void 0;\n });\n\n _this._synchronizeByIndex(e.currentTarget, e.index);\n };\n\n this._synchronizeByIndex = function (activeFlicking, index) {\n var synchronizedFlickingOptions = _this._synchronizedFlickingOptions;\n\n _this._preventEvent(function () {\n synchronizedFlickingOptions.forEach(function (options) {\n // Active class should be applied same to the Flicking which triggered event\n _this._updateClass(options, index);\n\n var flicking = options.flicking;\n if (flicking === activeFlicking) return;\n var targetIndex = clamp(index, 0, flicking.panels.length);\n\n if (flicking.animating) {\n // Reserve moveTo once previous animation is finished\n flicking.once(EVENTS.MOVE_END, function () {\n void flicking.moveTo(targetIndex).catch(function () {\n return void 0;\n });\n });\n } else {\n void flicking.moveTo(targetIndex);\n }\n });\n });\n };\n\n this._updateClass = function (_a, index) {\n var flicking = _a.flicking,\n activeClass = _a.activeClass;\n if (!activeClass) return;\n flicking.panels.forEach(function (panel) {\n if (panel.index === index) {\n addClass(panel.element, activeClass);\n } else {\n removeClass(panel.element, activeClass);\n }\n });\n };\n\n this._type = type;\n this._synchronizedFlickingOptions = synchronizedFlickingOptions;\n }\n\n var __proto = Sync.prototype;\n Object.defineProperty(__proto, \"type\", {\n get: function () {\n return this._type;\n },\n set: function (val) {\n this._type = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"synchronizedFlickingOptions\", {\n get: function () {\n return this._synchronizedFlickingOptions;\n },\n set: function (val) {\n this._synchronizedFlickingOptions = val;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.init = function (flicking) {\n var _this = this;\n\n var synced = this._synchronizedFlickingOptions;\n\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n this._addEvents();\n\n synced.forEach(function (options) {\n var syncedFlicking = options.flicking;\n\n _this._updateClass(options, syncedFlicking.defaultIndex);\n });\n };\n\n __proto.destroy = function () {\n var flicking = this._flicking;\n\n if (!flicking) {\n return;\n }\n\n this._removeEvents();\n\n this._flicking = null;\n };\n\n __proto.update = function () {\n var _this = this;\n\n this._synchronizedFlickingOptions.forEach(function (options) {\n _this._updateClass(options, options.flicking.index);\n });\n };\n\n __proto._preventEvent = function (fn) {\n this._removeEvents();\n\n fn();\n\n this._addEvents();\n };\n\n return Sync;\n}();\n/* eslint-disable no-underscore-dangle */\n\n/**\n * You can apply perspective effect while panel is moving.\n * @ko 패널들을 움직이면서 입체감을 부여할 수 있습니다.\n * @memberof Flicking.Plugins\n */\n\n\nvar Perspective = /*#__PURE__*/function () {\n /**\n * @param - The selector of the element to which the perspective effect is to be applied. If the selector is blank, it applies to panel element. 입체 효과를 적용할 대상의 선택자. 선택자가 공백이면 패널 엘리먼트에 적용된다.\n * @param - Effect amplication scale.효과 증폭도\n * @param - Effect amplication rotate.회전 증폭도\n * @param - The value of perspective CSS property. css perspective 속성 값\n * @example\n * ```ts\n * flicking.addPlugins(new Perspective({ selector: \"p\", scale: 1, rotate: 1, perspective = 1000 }));\n * ```\n */\n function Perspective(_a) {\n var _this = this;\n\n var _b = _a === void 0 ? {} : _a,\n _c = _b.selector,\n selector = _c === void 0 ? \"\" : _c,\n _d = _b.scale,\n scale = _d === void 0 ? 1 : _d,\n _e = _b.rotate,\n rotate = _e === void 0 ? 1 : _e,\n _f = _b.perspective,\n perspective = _f === void 0 ? 1000 : _f;\n\n this.update = function () {\n _this._onMove();\n };\n\n this._onMove = function () {\n var flicking = _this._flicking;\n var selector = _this._selector;\n var scale = _this._scale;\n var rotate = _this._rotate;\n var perspective = _this._perspective;\n if (!flicking) return;\n var horizontal = flicking.horizontal;\n var panels = flicking.visiblePanels;\n panels.forEach(function (panel) {\n var progress = panel.outsetProgress;\n var el = panel.element;\n var target = selector ? el.querySelector(selector) : el;\n var panelScale = 1 / (Math.abs(progress * scale) + 1);\n var rotateDegree = progress > 0 ? Math.min(90, progress * 100 * rotate) : Math.max(-90, progress * 100 * rotate);\n\n var _a = horizontal ? [0, rotateDegree] : [rotateDegree, 0],\n rotateX = _a[0],\n rotateY = _a[1];\n\n target.style.transform = \"perspective(\" + perspective + \"px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg) scale(\" + panelScale + \")\";\n });\n };\n\n this._flicking = null;\n this._selector = selector;\n this._scale = scale;\n this._rotate = rotate;\n this._perspective = perspective;\n }\n\n var __proto = Perspective.prototype;\n Object.defineProperty(__proto, \"selector\", {\n get: function () {\n return this._selector;\n },\n set: function (val) {\n this._selector = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"scale\", {\n get: function () {\n return this._scale;\n },\n set: function (val) {\n this._scale = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"rotate\", {\n get: function () {\n return this._rotate;\n },\n set: function (val) {\n this._rotate = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"perspective\", {\n get: function () {\n return this._perspective;\n },\n set: function (val) {\n this._perspective = val;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.init = function (flicking) {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n flicking.on(EVENTS.MOVE, this._onMove);\n flicking.on(EVENTS.AFTER_RESIZE, this.update);\n\n this._onMove();\n };\n\n __proto.destroy = function () {\n if (!this._flicking) return;\n\n this._flicking.off(EVENTS.MOVE, this._onMove);\n\n this._flicking.off(EVENTS.AFTER_RESIZE, this.update);\n\n this._flicking = null;\n };\n\n return Perspective;\n}();\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || from);\n}\n\nvar Renderer = /*#__PURE__*/function () {\n function Renderer(_a) {\n var flicking = _a.flicking,\n pagination = _a.pagination,\n wrapper = _a.wrapper;\n this._flicking = flicking;\n this._pagination = pagination;\n this._wrapper = wrapper;\n }\n\n var __proto = Renderer.prototype;\n\n __proto._createBulletFromString = function (html, index) {\n var range = document.createRange();\n var frag = range.createContextualFragment(html);\n var bullet = frag.firstChild;\n\n this._addBulletEvents(bullet, index);\n\n return bullet;\n };\n\n __proto._addBulletEvents = function (bullet, index) {\n var _this = this;\n\n var anchorPoints = this._flicking.camera.anchorPoints;\n var panelIndex = anchorPoints[index].panel.index;\n bullet.addEventListener(BROWSER.MOUSE_DOWN, function (e) {\n e.stopPropagation();\n });\n bullet.addEventListener(BROWSER.TOUCH_START, function (e) {\n e.stopPropagation();\n }, {\n passive: true\n });\n bullet.addEventListener(BROWSER.CLICK, function () {\n _this._flicking.moveTo(panelIndex).catch(function (err) {\n if (err instanceof FlickingError) return;\n throw err;\n });\n });\n };\n\n return Renderer;\n}();\n\nvar BulletRenderer = /*#__PURE__*/function (_super) {\n __extends(BulletRenderer, _super);\n\n function BulletRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._bullets = [];\n _this._prevIndex = -1;\n return _this;\n }\n\n var __proto = BulletRenderer.prototype;\n Object.defineProperty(__proto, \"_bulletClass\", {\n get: function () {\n var pagination = this._pagination;\n return pagination.classPrefix + \"-\" + PAGINATION.BULLET_SUFFIX;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"_activeClass\", {\n get: function () {\n var pagination = this._pagination;\n return pagination.classPrefix + \"-\" + PAGINATION.BULLET_ACTIVE_SUFFIX;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.destroy = function () {\n this._bullets = [];\n this._prevIndex = -1;\n };\n\n __proto.render = function () {\n var _this = this;\n\n var flicking = this._flicking;\n var pagination = this._pagination;\n var wrapper = this._wrapper;\n var bulletClass = this._bulletClass;\n var activeClass = this._activeClass;\n var renderBullet = pagination.renderBullet;\n var renderActiveBullet = pagination.renderActiveBullet;\n var bulletWrapperClass = pagination.classPrefix + \"-\" + PAGINATION.BULLET_WRAPPER_SUFFIX;\n var anchorPoints = flicking.camera.anchorPoints;\n addClass(wrapper, bulletWrapperClass);\n wrapper.innerHTML = anchorPoints.map(function (anchorPoint, index) {\n if (renderActiveBullet && anchorPoint.panel.index === flicking.index) {\n return renderActiveBullet(bulletClass, index);\n } else {\n return renderBullet(bulletClass, index);\n }\n }).join(\"\\n\");\n var bullets = [].slice.call(wrapper.children);\n bullets.forEach(function (bullet, index) {\n var anchorPoint = anchorPoints[index];\n\n if (anchorPoint.panel.index === flicking.index) {\n addClass(bullet, activeClass);\n _this._prevIndex = index;\n }\n\n _this._addBulletEvents(bullet, index);\n });\n this._bullets = bullets;\n };\n\n __proto.update = function (index) {\n var flicking = this._flicking;\n var pagination = this._pagination;\n var wrapper = this._wrapper;\n var bullets = this._bullets;\n var bulletClass = this._bulletClass;\n var activeClass = this._activeClass;\n var prevIndex = this._prevIndex;\n var anchorPoints = flicking.camera.anchorPoints;\n var renderBullet = pagination.renderBullet;\n var renderActiveBullet = pagination.renderActiveBullet;\n if (anchorPoints.length <= 0) return;\n var anchorOffset = anchorPoints[0].panel.index;\n var activeBulletIndex = index - anchorOffset;\n if (prevIndex === activeBulletIndex) return;\n\n if (renderActiveBullet) {\n var prevBullet = bullets[prevIndex];\n\n if (prevBullet) {\n var newBullet = this._createBulletFromString(renderBullet(bulletClass, prevIndex), prevIndex);\n\n prevBullet.parentElement.replaceChild(newBullet, prevBullet);\n bullets[prevIndex] = newBullet;\n }\n\n var activeBullet = bullets[activeBulletIndex];\n\n var newActiveBullet = this._createBulletFromString(renderActiveBullet(bulletClass + \" \" + activeClass, activeBulletIndex), activeBulletIndex);\n\n wrapper.replaceChild(newActiveBullet, activeBullet);\n bullets[activeBulletIndex] = newActiveBullet;\n } else {\n var activeBullet = bullets[activeBulletIndex];\n var prevBullet = bullets[prevIndex];\n\n if (prevBullet) {\n removeClass(prevBullet, activeClass);\n }\n\n addClass(activeBullet, activeClass);\n }\n\n this._prevIndex = activeBulletIndex;\n };\n\n return BulletRenderer;\n}(Renderer);\n\nvar FractionRenderer = /*#__PURE__*/function (_super) {\n __extends(FractionRenderer, _super);\n\n function FractionRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._prevIndex = -1;\n _this._prevTotal = -1;\n return _this;\n }\n\n var __proto = FractionRenderer.prototype;\n\n __proto.destroy = function () {\n this._prevIndex = -1;\n this._prevTotal = -1;\n };\n\n __proto.render = function () {\n var flicking = this._flicking;\n var wrapper = this._wrapper;\n var pagination = this._pagination;\n var fractionWrapperClass = pagination.classPrefix + \"-\" + PAGINATION.FRACTION_WRAPPER_SUFFIX;\n var fractionCurrentClass = pagination.classPrefix + \"-\" + PAGINATION.FRACTION_CURRENT_SUFFIX;\n var fractionTotalClass = pagination.classPrefix + \"-\" + PAGINATION.FRACTION_TOTAL_SUFFIX;\n addClass(wrapper, fractionWrapperClass);\n wrapper.innerHTML = pagination.renderFraction(fractionCurrentClass, fractionTotalClass);\n this.update(flicking.index);\n };\n\n __proto.update = function (index) {\n var flicking = this._flicking;\n var wrapper = this._wrapper;\n var pagination = this._pagination;\n var anchorPoints = flicking.camera.anchorPoints;\n var currentIndex = anchorPoints.length > 0 ? index - anchorPoints[0].panel.index + 1 : 0;\n var anchorCount = anchorPoints.length;\n if (currentIndex === this._prevIndex && anchorCount === this._prevTotal) return;\n var fractionCurrentSelector = \".\" + pagination.classPrefix + \"-\" + PAGINATION.FRACTION_CURRENT_SUFFIX;\n var fractionTotalSelector = \".\" + pagination.classPrefix + \"-\" + PAGINATION.FRACTION_TOTAL_SUFFIX;\n var currentWrapper = wrapper.querySelector(fractionCurrentSelector);\n var totalWrapper = wrapper.querySelector(fractionTotalSelector);\n currentWrapper.innerHTML = pagination.fractionCurrentFormat(currentIndex);\n totalWrapper.innerHTML = pagination.fractionTotalFormat(anchorCount);\n this._prevIndex = currentIndex;\n this._prevTotal = anchorCount;\n };\n\n return FractionRenderer;\n}(Renderer);\n\nvar ScrollBulletRenderer = /*#__PURE__*/function (_super) {\n __extends(ScrollBulletRenderer, _super);\n\n function ScrollBulletRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._bullets = [];\n _this._bulletSize = 0;\n _this._previousIndex = -1;\n _this._sliderIndex = -1;\n\n _this.moveTo = function (index) {\n var pagination = _this._pagination;\n var sliderEl = _this._wrapper.firstElementChild;\n var bulletSize = _this._bulletSize;\n var wrapperSize = bulletSize * pagination.bulletCount;\n sliderEl.style.transform = \"translate(\" + (wrapperSize / 2 - (index + 0.5) * bulletSize) + \"px)\";\n _this._sliderIndex = index;\n };\n\n return _this;\n }\n\n var __proto = ScrollBulletRenderer.prototype;\n\n __proto.destroy = function () {\n this._bullets = [];\n this._bulletSize = 0;\n this._previousIndex = -1;\n this._sliderIndex = -1;\n };\n\n __proto.render = function () {\n var _this = this;\n\n var wrapper = this._wrapper;\n var flicking = this._flicking;\n var pagination = this._pagination;\n var renderBullet = pagination.renderBullet;\n var anchorPoints = flicking.camera.anchorPoints;\n var dynamicWrapperClass = pagination.classPrefix + \"-\" + PAGINATION.SCROLL_WRAPPER_SUFFIX;\n var bulletClass = pagination.classPrefix + \"-\" + PAGINATION.BULLET_SUFFIX;\n var sliderClass = pagination.classPrefix + \"-\" + PAGINATION.SCROLL_SLIDER_SUFFIX;\n var uninitClass = pagination.classPrefix + \"-\" + PAGINATION.SCROLL_UNINIT_SUFFIX;\n var sliderEl = document.createElement(\"div\");\n addClass(sliderEl, sliderClass);\n addClass(wrapper, uninitClass);\n addClass(wrapper, dynamicWrapperClass);\n wrapper.appendChild(sliderEl);\n sliderEl.innerHTML = anchorPoints.map(function (_, index) {\n return renderBullet(bulletClass, index);\n }).join(\"\\n\");\n var bullets = [].slice.call(sliderEl.children);\n bullets.forEach(function (bullet, index) {\n _this._addBulletEvents(bullet, index);\n });\n if (bullets.length <= 0) return;\n var bulletStyle = getComputedStyle(bullets[0]);\n var bulletSize = bullets[0].clientWidth + parseFloat(bulletStyle.marginLeft) + parseFloat(bulletStyle.marginRight);\n wrapper.style.width = bulletSize * pagination.bulletCount + \"px\";\n this._bullets = bullets;\n this._bulletSize = bulletSize;\n this._previousIndex = -1;\n this.update(this._flicking.index);\n window.requestAnimationFrame(function () {\n removeClass(wrapper, uninitClass);\n });\n };\n\n __proto.update = function (index) {\n var pagination = this._pagination;\n var flicking = this._flicking;\n var bullets = this._bullets;\n var prevIndex = this._previousIndex;\n var renderBullet = pagination.renderBullet;\n var renderActiveBullet = pagination.renderActiveBullet;\n var anchorPoints = flicking.camera.anchorPoints;\n var anchorOffset = anchorPoints[0].panel.index;\n var activeIndex = index - anchorOffset;\n if (anchorPoints.length <= 0) return;\n var bulletClass = pagination.classPrefix + \"-\" + PAGINATION.BULLET_SUFFIX;\n var bulletActiveClass = pagination.classPrefix + \"-\" + PAGINATION.BULLET_ACTIVE_SUFFIX;\n var prevClassPrefix = pagination.classPrefix + \"-\" + PAGINATION.SCROLL_PREV_SUFFIX;\n var nextClassPrefix = pagination.classPrefix + \"-\" + PAGINATION.SCROLL_NEXT_SUFFIX;\n\n var bulletPrevClass = function (offset) {\n return \"\" + prevClassPrefix + (offset > 1 ? offset : \"\");\n };\n\n var bulletNextClass = function (offset) {\n return \"\" + nextClassPrefix + (offset > 1 ? offset : \"\");\n };\n\n var prevClassRegex = new RegExp(\"^\" + prevClassPrefix);\n var nextClassRegex = new RegExp(\"^\" + nextClassPrefix);\n\n if (renderActiveBullet) {\n var prevBullet = bullets[prevIndex];\n\n if (prevBullet) {\n var newBullet = this._createBulletFromString(renderBullet(bulletClass, prevIndex), prevIndex);\n\n prevBullet.parentElement.replaceChild(newBullet, prevBullet);\n bullets[prevIndex] = newBullet;\n }\n\n var activeBullet = bullets[activeIndex];\n\n if (activeBullet) {\n var newActiveBullet = this._createBulletFromString(renderActiveBullet(bulletClass, activeIndex), activeIndex);\n\n activeBullet.parentElement.replaceChild(newActiveBullet, activeBullet);\n bullets[activeIndex] = newActiveBullet;\n }\n }\n\n bullets.forEach(function (bullet, idx) {\n var indexOffset = idx - activeIndex;\n var classList = bullet.className.split(\" \");\n\n for (var _i = 0, classList_1 = classList; _i < classList_1.length; _i++) {\n var className = classList_1[_i];\n\n if (className === bulletActiveClass || prevClassRegex.test(className) || nextClassRegex.test(className)) {\n removeClass(bullet, className);\n }\n }\n\n if (indexOffset === 0) {\n addClass(bullet, bulletActiveClass);\n } else if (indexOffset > 0) {\n addClass(bullet, bulletNextClass(Math.abs(indexOffset)));\n } else {\n addClass(bullet, bulletPrevClass(Math.abs(indexOffset)));\n }\n });\n pagination.scrollOnChange(activeIndex, {\n total: bullets.length,\n prevIndex: prevIndex,\n sliderIndex: this._sliderIndex,\n direction: activeIndex > prevIndex ? DIRECTION.NEXT : DIRECTION.PREV,\n bullets: __spreadArray([], bullets),\n moveTo: this.moveTo\n });\n this._previousIndex = activeIndex;\n };\n\n return ScrollBulletRenderer;\n}(Renderer);\n/**\n * @memberof Flicking.Plugins\n */\n\n\nvar Pagination = /*#__PURE__*/function () {\n function Pagination(_a) {\n var _this = this;\n\n var _b = _a === void 0 ? {} : _a,\n _c = _b.parentEl,\n parentEl = _c === void 0 ? null : _c,\n _d = _b.selector,\n selector = _d === void 0 ? PAGINATION.SELECTOR : _d,\n _e = _b.type,\n type = _e === void 0 ? PAGINATION.TYPE.BULLET : _e,\n _f = _b.classPrefix,\n classPrefix = _f === void 0 ? PAGINATION.PREFIX : _f,\n _g = _b.bulletCount,\n bulletCount = _g === void 0 ? 5 : _g,\n _h = _b.renderBullet,\n renderBullet = _h === void 0 ? function (className) {\n return \"\";\n } : _h,\n _j = _b.renderActiveBullet,\n renderActiveBullet = _j === void 0 ? null : _j,\n _k = _b.renderFraction,\n renderFraction = _k === void 0 ? function (currentClass, totalClass) {\n return \"/\";\n } : _k,\n _l = _b.fractionCurrentFormat,\n fractionCurrentFormat = _l === void 0 ? function (index) {\n return index.toString();\n } : _l,\n _m = _b.fractionTotalFormat,\n fractionTotalFormat = _m === void 0 ? function (index) {\n return index.toString();\n } : _m,\n _o = _b.scrollOnChange,\n scrollOnChange = _o === void 0 ? function (index, ctx) {\n return ctx.moveTo(index);\n } : _o;\n /* Internal Values */\n\n\n this._flicking = null;\n\n this.update = function () {\n _this._removeAllChilds();\n\n _this._renderer.render();\n };\n\n this._onIndexChange = function (evt) {\n _this._renderer.update(evt.index);\n };\n\n this._parentEl = parentEl;\n this._selector = selector;\n this._type = type;\n this._classPrefix = classPrefix;\n this._bulletCount = bulletCount;\n this._renderBullet = renderBullet;\n this._renderActiveBullet = renderActiveBullet;\n this._renderFraction = renderFraction;\n this._fractionCurrentFormat = fractionCurrentFormat;\n this._fractionTotalFormat = fractionTotalFormat;\n this._scrollOnChange = scrollOnChange;\n }\n\n var __proto = Pagination.prototype;\n Object.defineProperty(__proto, \"parentEl\", {\n get: function () {\n return this._parentEl;\n },\n set: function (val) {\n this._parentEl = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"selector\", {\n get: function () {\n return this._selector;\n },\n set: function (val) {\n this._selector = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"type\", {\n get: function () {\n return this._type;\n },\n set: function (val) {\n this._type = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"classPrefix\", {\n get: function () {\n return this._classPrefix;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"bulletCount\", {\n get: function () {\n return this._bulletCount;\n },\n set: function (val) {\n this._bulletCount = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"renderBullet\", {\n get: function () {\n return this._renderBullet;\n },\n set: function (val) {\n this._renderBullet = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"renderActiveBullet\", {\n get: function () {\n return this._renderActiveBullet;\n },\n set: function (val) {\n this._renderActiveBullet = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"renderFraction\", {\n get: function () {\n return this._renderFraction;\n },\n set: function (val) {\n this._renderFraction = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"fractionCurrentFormat\", {\n get: function () {\n return this._fractionCurrentFormat;\n },\n set: function (val) {\n this._fractionCurrentFormat = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"fractionTotalFormat\", {\n get: function () {\n return this._fractionTotalFormat;\n },\n set: function (val) {\n this._fractionTotalFormat = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"scrollOnChange\", {\n get: function () {\n return this._scrollOnChange;\n },\n set: function (val) {\n this._scrollOnChange = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"bulletWrapperclassPrefixClass\", {\n set: function (val) {\n this._classPrefix = val;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.init = function (flicking) {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n var type = this._type;\n var selector = this._selector;\n var parentEl = this._parentEl ? this._parentEl : flicking.element;\n var wrapper = parentEl.querySelector(selector);\n\n if (!wrapper) {\n throw new Error(\"[Flicking-Pagination] Couldn't find element with the given selector: \" + selector);\n }\n\n this._wrapper = wrapper;\n this._renderer = this._createRenderer(type);\n flicking.on(EVENTS.WILL_CHANGE, this._onIndexChange);\n flicking.on(EVENTS.WILL_RESTORE, this._onIndexChange);\n flicking.on(EVENTS.PANEL_CHANGE, this.update);\n this.update();\n };\n\n __proto.destroy = function () {\n var flicking = this._flicking;\n\n if (!flicking) {\n return;\n }\n\n flicking.off(EVENTS.WILL_CHANGE, this._onIndexChange);\n flicking.off(EVENTS.WILL_RESTORE, this._onIndexChange);\n flicking.off(EVENTS.PANEL_CHANGE, this.update);\n\n this._renderer.destroy();\n\n this._removeAllChilds();\n\n this._flicking = null;\n };\n\n __proto._createRenderer = function (type) {\n var options = {\n flicking: this._flicking,\n pagination: this,\n wrapper: this._wrapper\n };\n\n switch (type) {\n case PAGINATION.TYPE.BULLET:\n return new BulletRenderer(options);\n\n case PAGINATION.TYPE.FRACTION:\n return new FractionRenderer(options);\n\n case PAGINATION.TYPE.SCROLL:\n return new ScrollBulletRenderer(options);\n\n default:\n throw new Error(\"[Flicking-Pagination] type \\\"\" + type + \"\\\" is not supported.\");\n }\n };\n\n __proto._removeAllChilds = function () {\n var wrapper = this._wrapper;\n\n while (wrapper.firstChild) {\n wrapper.removeChild(wrapper.firstChild);\n }\n };\n\n return Pagination;\n}();\n/**\n * @namespace Flicking\n */\n\n\nexport { ARROW, Arrow, AutoPlay, Fade, PAGINATION, Pagination, Parallax, Perspective, SYNC, Sync };","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--4-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=19793750&lang=scss&scoped=true&\"","module.exports =\n/******/\nfunction (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n enumerable: true,\n get: getter\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // define __esModule on exports\n\n /******/\n\n\n __webpack_require__.r = function (exports) {\n /******/\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n /******/\n Object.defineProperty(exports, Symbol.toStringTag, {\n value: 'Module'\n });\n /******/\n }\n /******/\n\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n\n /******/\n // create a fake namespace object\n\n /******/\n // mode & 1: value is a module id, require it\n\n /******/\n // mode & 2: merge all properties of value into the ns\n\n /******/\n // mode & 4: return value when already ns object\n\n /******/\n // mode & 8|1: behave like require\n\n /******/\n\n\n __webpack_require__.t = function (value, mode) {\n /******/\n if (mode & 1) value = __webpack_require__(value);\n /******/\n\n if (mode & 8) return value;\n /******/\n\n if (mode & 4 && typeof value === 'object' && value && value.__esModule) return value;\n /******/\n\n var ns = Object.create(null);\n /******/\n\n __webpack_require__.r(ns);\n /******/\n\n\n Object.defineProperty(ns, 'default', {\n enumerable: true,\n value: value\n });\n /******/\n\n if (mode & 2 && typeof value != 'string') for (var key in value) __webpack_require__.d(ns, key, function (key) {\n return value[key];\n }.bind(null, key));\n /******/\n\n return ns;\n /******/\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"\";\n /******/\n\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = \"fb15\");\n /******/\n}\n/************************************************************************/\n\n/******/\n({\n /***/\n \"0366\":\n /***/\n function (module, exports, __webpack_require__) {\n var aFunction = __webpack_require__(\"1c0b\"); // optional / simple context binding\n\n\n module.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n\n switch (length) {\n case 0:\n return function () {\n return fn.call(that);\n };\n\n case 1:\n return function (a) {\n return fn.call(that, a);\n };\n\n case 2:\n return function (a, b) {\n return fn.call(that, a, b);\n };\n\n case 3:\n return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n\n return function\n /* ...args */\n () {\n return fn.apply(that, arguments);\n };\n };\n /***/\n\n },\n\n /***/\n \"06cf\":\n /***/\n function (module, exports, __webpack_require__) {\n var DESCRIPTORS = __webpack_require__(\"83ab\");\n\n var propertyIsEnumerableModule = __webpack_require__(\"d1e7\");\n\n var createPropertyDescriptor = __webpack_require__(\"5c6c\");\n\n var toIndexedObject = __webpack_require__(\"fc6a\");\n\n var toPrimitive = __webpack_require__(\"c04e\");\n\n var has = __webpack_require__(\"5135\");\n\n var IE8_DOM_DEFINE = __webpack_require__(\"0cfb\"); // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n\n\n var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n\n exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) {\n /* empty */\n }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n };\n /***/\n },\n\n /***/\n \"0cfb\":\n /***/\n function (module, exports, __webpack_require__) {\n var DESCRIPTORS = __webpack_require__(\"83ab\");\n\n var fails = __webpack_require__(\"d039\");\n\n var createElement = __webpack_require__(\"cc12\"); // Thank's IE8 for his funny defineProperty\n\n\n module.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () {\n return 7;\n }\n }).a != 7;\n });\n /***/\n },\n\n /***/\n \"1c0b\":\n /***/\n function (module, exports) {\n module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n }\n\n return it;\n };\n /***/\n\n },\n\n /***/\n \"1d80\":\n /***/\n function (module, exports) {\n // `RequireObjectCoercible` abstract operation\n // https://tc39.es/ecma262/#sec-requireobjectcoercible\n module.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n };\n /***/\n\n },\n\n /***/\n \"1dde\":\n /***/\n function (module, exports, __webpack_require__) {\n var fails = __webpack_require__(\"d039\");\n\n var wellKnownSymbol = __webpack_require__(\"b622\");\n\n var V8_VERSION = __webpack_require__(\"2d00\");\n\n var SPECIES = wellKnownSymbol('species');\n\n module.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n\n constructor[SPECIES] = function () {\n return {\n foo: 1\n };\n };\n\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n };\n /***/\n\n },\n\n /***/\n \"23cb\":\n /***/\n function (module, exports, __webpack_require__) {\n var toInteger = __webpack_require__(\"a691\");\n\n var max = Math.max;\n var min = Math.min; // Helper for a popular repeating case of the spec:\n // Let integer be ? ToInteger(index).\n // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\n\n module.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n };\n /***/\n\n },\n\n /***/\n \"23e7\":\n /***/\n function (module, exports, __webpack_require__) {\n var global = __webpack_require__(\"da84\");\n\n var getOwnPropertyDescriptor = __webpack_require__(\"06cf\").f;\n\n var createNonEnumerableProperty = __webpack_require__(\"9112\");\n\n var redefine = __webpack_require__(\"6eeb\");\n\n var setGlobal = __webpack_require__(\"ce4e\");\n\n var copyConstructorProperties = __webpack_require__(\"e893\");\n\n var isForced = __webpack_require__(\"94ca\");\n /*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n */\n\n\n module.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n\n if (target) for (key in source) {\n sourceProperty = source[key];\n\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target\n\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n } // add a flag to not completely full polyfills\n\n\n if (options.sham || targetProperty && targetProperty.sham) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n } // extend global\n\n\n redefine(target, key, sourceProperty, options);\n }\n };\n /***/\n\n },\n\n /***/\n \"241c\":\n /***/\n function (module, exports, __webpack_require__) {\n var internalObjectKeys = __webpack_require__(\"ca84\");\n\n var enumBugKeys = __webpack_require__(\"7839\");\n\n var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n // eslint-disable-next-line es/no-object-getownpropertynames -- safe\n\n exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n };\n /***/\n\n },\n\n /***/\n \"2d00\":\n /***/\n function (module, exports, __webpack_require__) {\n var global = __webpack_require__(\"da84\");\n\n var userAgent = __webpack_require__(\"342f\");\n\n var process = global.process;\n var versions = process && process.versions;\n var v8 = versions && versions.v8;\n var match, version;\n\n if (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n } else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n }\n\n module.exports = version && +version;\n /***/\n },\n\n /***/\n \"3251\":\n /***/\n function (module, exports, __webpack_require__) {\n (function webpackUniversalModuleDefinition(root, factory) {\n if (true) module.exports = factory();else {}\n })(this, function () {\n return (\n /******/\n function (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n enumerable: true,\n get: getter\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // define __esModule on exports\n\n /******/\n\n\n __webpack_require__.r = function (exports) {\n /******/\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n /******/\n Object.defineProperty(exports, Symbol.toStringTag, {\n value: 'Module'\n });\n /******/\n }\n /******/\n\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n\n /******/\n // create a fake namespace object\n\n /******/\n // mode & 1: value is a module id, require it\n\n /******/\n // mode & 2: merge all properties of value into the ns\n\n /******/\n // mode & 4: return value when already ns object\n\n /******/\n // mode & 8|1: behave like require\n\n /******/\n\n\n __webpack_require__.t = function (value, mode) {\n /******/\n if (mode & 1) value = __webpack_require__(value);\n /******/\n\n if (mode & 8) return value;\n /******/\n\n if (mode & 4 && typeof value === 'object' && value && value.__esModule) return value;\n /******/\n\n var ns = Object.create(null);\n /******/\n\n __webpack_require__.r(ns);\n /******/\n\n\n Object.defineProperty(ns, 'default', {\n enumerable: true,\n value: value\n });\n /******/\n\n if (mode & 2 && typeof value != 'string') for (var key in value) __webpack_require__.d(ns, key, function (key) {\n return value[key];\n }.bind(null, key));\n /******/\n\n return ns;\n /******/\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"\";\n /******/\n\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = 0);\n /******/\n }\n /************************************************************************/\n\n /******/\n ([\n /* 0 */\n\n /***/\n function (module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./src/tools.js\n\n\n var argumentAsArray = function argumentAsArray(argument) {\n return Array.isArray(argument) ? argument : [argument];\n };\n\n var isElement = function isElement(target) {\n return target instanceof Node;\n };\n\n var isElementList = function isElementList(nodeList) {\n return nodeList instanceof NodeList;\n };\n\n var eachNode = function eachNode(nodeList, callback) {\n if (nodeList && callback) {\n nodeList = isElementList(nodeList) ? nodeList : [nodeList];\n\n for (var i = 0; i < nodeList.length; i++) {\n if (callback(nodeList[i], i, nodeList.length) === true) {\n break;\n }\n }\n }\n };\n\n var throwError = function throwError(message) {\n return console.error(\"[scroll-lock] \".concat(message));\n };\n\n var arrayAsSelector = function arrayAsSelector(array) {\n if (Array.isArray(array)) {\n var selector = array.join(', ');\n return selector;\n }\n };\n\n var nodeListAsArray = function nodeListAsArray(nodeList) {\n var nodes = [];\n eachNode(nodeList, function (node) {\n return nodes.push(node);\n });\n return nodes;\n };\n\n var findParentBySelector = function findParentBySelector($el, selector) {\n var self = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var $root = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : document;\n\n if (self && nodeListAsArray($root.querySelectorAll(selector)).indexOf($el) !== -1) {\n return $el;\n }\n\n while (($el = $el.parentElement) && nodeListAsArray($root.querySelectorAll(selector)).indexOf($el) === -1) {\n ;\n }\n\n return $el;\n };\n\n var elementHasSelector = function elementHasSelector($el, selector) {\n var $root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document;\n var has = nodeListAsArray($root.querySelectorAll(selector)).indexOf($el) !== -1;\n return has;\n };\n\n var elementHasOverflowHidden = function elementHasOverflowHidden($el) {\n if ($el) {\n var computedStyle = getComputedStyle($el);\n var overflowIsHidden = computedStyle.overflow === 'hidden';\n return overflowIsHidden;\n }\n };\n\n var elementScrollTopOnStart = function elementScrollTopOnStart($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollTop = $el.scrollTop;\n return scrollTop <= 0;\n }\n };\n\n var elementScrollTopOnEnd = function elementScrollTopOnEnd($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollTop = $el.scrollTop;\n var scrollHeight = $el.scrollHeight;\n var scrollTopWithHeight = scrollTop + $el.offsetHeight;\n return scrollTopWithHeight >= scrollHeight;\n }\n };\n\n var elementScrollLeftOnStart = function elementScrollLeftOnStart($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollLeft = $el.scrollLeft;\n return scrollLeft <= 0;\n }\n };\n\n var elementScrollLeftOnEnd = function elementScrollLeftOnEnd($el) {\n if ($el) {\n if (elementHasOverflowHidden($el)) {\n return true;\n }\n\n var scrollLeft = $el.scrollLeft;\n var scrollWidth = $el.scrollWidth;\n var scrollLeftWithWidth = scrollLeft + $el.offsetWidth;\n return scrollLeftWithWidth >= scrollWidth;\n }\n };\n\n var elementIsScrollableField = function elementIsScrollableField($el) {\n var selector = 'textarea, [contenteditable=\"true\"]';\n return elementHasSelector($el, selector);\n };\n\n var elementIsInputRange = function elementIsInputRange($el) {\n var selector = 'input[type=\"range\"]';\n return elementHasSelector($el, selector);\n }; // CONCATENATED MODULE: ./src/scroll-lock.js\n\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"disablePageScroll\", function () {\n return disablePageScroll;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"enablePageScroll\", function () {\n return enablePageScroll;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getScrollState\", function () {\n return getScrollState;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"clearQueueScrollLocks\", function () {\n return clearQueueScrollLocks;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getTargetScrollBarWidth\", function () {\n return scroll_lock_getTargetScrollBarWidth;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getCurrentTargetScrollBarWidth\", function () {\n return scroll_lock_getCurrentTargetScrollBarWidth;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getPageScrollBarWidth\", function () {\n return getPageScrollBarWidth;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getCurrentPageScrollBarWidth\", function () {\n return getCurrentPageScrollBarWidth;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"addScrollableTarget\", function () {\n return scroll_lock_addScrollableTarget;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"removeScrollableTarget\", function () {\n return scroll_lock_removeScrollableTarget;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"addScrollableSelector\", function () {\n return scroll_lock_addScrollableSelector;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"removeScrollableSelector\", function () {\n return scroll_lock_removeScrollableSelector;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"addLockableTarget\", function () {\n return scroll_lock_addLockableTarget;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"addLockableSelector\", function () {\n return scroll_lock_addLockableSelector;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"setFillGapMethod\", function () {\n return scroll_lock_setFillGapMethod;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"addFillGapTarget\", function () {\n return scroll_lock_addFillGapTarget;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"removeFillGapTarget\", function () {\n return scroll_lock_removeFillGapTarget;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"addFillGapSelector\", function () {\n return scroll_lock_addFillGapSelector;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"removeFillGapSelector\", function () {\n return scroll_lock_removeFillGapSelector;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"refillGaps\", function () {\n return refillGaps;\n });\n\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n }\n\n function _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\n var FILL_GAP_AVAILABLE_METHODS = ['padding', 'margin', 'width', 'max-width', 'none'];\n var TOUCH_DIRECTION_DETECT_OFFSET = 3;\n var state = {\n scroll: true,\n queue: 0,\n scrollableSelectors: ['[data-scroll-lock-scrollable]'],\n lockableSelectors: ['body', '[data-scroll-lock-lockable]'],\n fillGapSelectors: ['body', '[data-scroll-lock-fill-gap]', '[data-scroll-lock-lockable]'],\n fillGapMethod: FILL_GAP_AVAILABLE_METHODS[0],\n //\n startTouchY: 0,\n startTouchX: 0\n };\n\n var disablePageScroll = function disablePageScroll(target) {\n if (state.queue <= 0) {\n state.scroll = false;\n scroll_lock_hideLockableOverflow();\n fillGaps();\n }\n\n scroll_lock_addScrollableTarget(target);\n state.queue++;\n };\n\n var enablePageScroll = function enablePageScroll(target) {\n state.queue > 0 && state.queue--;\n\n if (state.queue <= 0) {\n state.scroll = true;\n scroll_lock_showLockableOverflow();\n unfillGaps();\n }\n\n scroll_lock_removeScrollableTarget(target);\n };\n\n var getScrollState = function getScrollState() {\n return state.scroll;\n };\n\n var clearQueueScrollLocks = function clearQueueScrollLocks() {\n state.queue = 0;\n };\n\n var scroll_lock_getTargetScrollBarWidth = function getTargetScrollBarWidth($target) {\n var onlyExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (isElement($target)) {\n var currentOverflowYProperty = $target.style.overflowY;\n\n if (onlyExists) {\n if (!getScrollState()) {\n $target.style.overflowY = $target.getAttribute('data-scroll-lock-saved-overflow-y-property');\n }\n } else {\n $target.style.overflowY = 'scroll';\n }\n\n var width = scroll_lock_getCurrentTargetScrollBarWidth($target);\n $target.style.overflowY = currentOverflowYProperty;\n return width;\n } else {\n return 0;\n }\n };\n\n var scroll_lock_getCurrentTargetScrollBarWidth = function getCurrentTargetScrollBarWidth($target) {\n if (isElement($target)) {\n if ($target === document.body) {\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n var currentWidth = windowWidth - documentWidth;\n return currentWidth;\n } else {\n var borderLeftWidthCurrentProperty = $target.style.borderLeftWidth;\n var borderRightWidthCurrentProperty = $target.style.borderRightWidth;\n $target.style.borderLeftWidth = '0px';\n $target.style.borderRightWidth = '0px';\n\n var _currentWidth = $target.offsetWidth - $target.clientWidth;\n\n $target.style.borderLeftWidth = borderLeftWidthCurrentProperty;\n $target.style.borderRightWidth = borderRightWidthCurrentProperty;\n return _currentWidth;\n }\n } else {\n return 0;\n }\n };\n\n var getPageScrollBarWidth = function getPageScrollBarWidth() {\n var onlyExists = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return scroll_lock_getTargetScrollBarWidth(document.body, onlyExists);\n };\n\n var getCurrentPageScrollBarWidth = function getCurrentPageScrollBarWidth() {\n return scroll_lock_getCurrentTargetScrollBarWidth(document.body);\n };\n\n var scroll_lock_addScrollableTarget = function addScrollableTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.setAttribute('data-scroll-lock-scrollable', '');\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n };\n\n var scroll_lock_removeScrollableTarget = function removeScrollableTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.removeAttribute('data-scroll-lock-scrollable');\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n };\n\n var scroll_lock_addScrollableSelector = function addScrollableSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.scrollableSelectors.push(selector);\n });\n }\n };\n\n var scroll_lock_removeScrollableSelector = function removeScrollableSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.scrollableSelectors = state.scrollableSelectors.filter(function (sSelector) {\n return sSelector !== selector;\n });\n });\n }\n };\n\n var scroll_lock_addLockableTarget = function addLockableTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.setAttribute('data-scroll-lock-lockable', '');\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n\n if (!getScrollState()) {\n scroll_lock_hideLockableOverflow();\n }\n }\n };\n\n var scroll_lock_addLockableSelector = function addLockableSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.lockableSelectors.push(selector);\n });\n\n if (!getScrollState()) {\n scroll_lock_hideLockableOverflow();\n }\n\n scroll_lock_addFillGapSelector(selector);\n }\n };\n\n var scroll_lock_setFillGapMethod = function setFillGapMethod(method) {\n if (method) {\n if (FILL_GAP_AVAILABLE_METHODS.indexOf(method) !== -1) {\n state.fillGapMethod = method;\n refillGaps();\n } else {\n var methods = FILL_GAP_AVAILABLE_METHODS.join(', ');\n throwError(\"\\\"\".concat(method, \"\\\" method is not available!\\nAvailable fill gap methods: \").concat(methods, \".\"));\n }\n }\n };\n\n var scroll_lock_addFillGapTarget = function addFillGapTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.setAttribute('data-scroll-lock-fill-gap', '');\n\n if (!state.scroll) {\n scroll_lock_fillGapTarget($target);\n }\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n };\n\n var scroll_lock_removeFillGapTarget = function removeFillGapTarget(target) {\n if (target) {\n var targets = argumentAsArray(target);\n targets.map(function ($targets) {\n eachNode($targets, function ($target) {\n if (isElement($target)) {\n $target.removeAttribute('data-scroll-lock-fill-gap');\n\n if (!state.scroll) {\n scroll_lock_unfillGapTarget($target);\n }\n } else {\n throwError(\"\\\"\".concat($target, \"\\\" is not a Element.\"));\n }\n });\n });\n }\n };\n\n var scroll_lock_addFillGapSelector = function addFillGapSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n if (state.fillGapSelectors.indexOf(selector) === -1) {\n state.fillGapSelectors.push(selector);\n\n if (!state.scroll) {\n scroll_lock_fillGapSelector(selector);\n }\n }\n });\n }\n };\n\n var scroll_lock_removeFillGapSelector = function removeFillGapSelector(selector) {\n if (selector) {\n var selectors = argumentAsArray(selector);\n selectors.map(function (selector) {\n state.fillGapSelectors = state.fillGapSelectors.filter(function (fSelector) {\n return fSelector !== selector;\n });\n\n if (!state.scroll) {\n scroll_lock_unfillGapSelector(selector);\n }\n });\n }\n };\n\n var refillGaps = function refillGaps() {\n if (!state.scroll) {\n fillGaps();\n }\n };\n\n var scroll_lock_hideLockableOverflow = function hideLockableOverflow() {\n var selector = arrayAsSelector(state.lockableSelectors);\n scroll_lock_hideLockableOverflowSelector(selector);\n };\n\n var scroll_lock_showLockableOverflow = function showLockableOverflow() {\n var selector = arrayAsSelector(state.lockableSelectors);\n scroll_lock_showLockableOverflowSelector(selector);\n };\n\n var scroll_lock_hideLockableOverflowSelector = function hideLockableOverflowSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n eachNode($targets, function ($target) {\n scroll_lock_hideLockableOverflowTarget($target);\n });\n };\n\n var scroll_lock_showLockableOverflowSelector = function showLockableOverflowSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n eachNode($targets, function ($target) {\n scroll_lock_showLockableOverflowTarget($target);\n });\n };\n\n var scroll_lock_hideLockableOverflowTarget = function hideLockableOverflowTarget($target) {\n if (isElement($target) && $target.getAttribute('data-scroll-lock-locked') !== 'true') {\n var computedStyle = window.getComputedStyle($target);\n $target.setAttribute('data-scroll-lock-saved-overflow-y-property', computedStyle.overflowY);\n $target.setAttribute('data-scroll-lock-saved-inline-overflow-property', $target.style.overflow);\n $target.setAttribute('data-scroll-lock-saved-inline-overflow-y-property', $target.style.overflowY);\n $target.style.overflow = 'hidden';\n $target.setAttribute('data-scroll-lock-locked', 'true');\n }\n };\n\n var scroll_lock_showLockableOverflowTarget = function showLockableOverflowTarget($target) {\n if (isElement($target) && $target.getAttribute('data-scroll-lock-locked') === 'true') {\n $target.style.overflow = $target.getAttribute('data-scroll-lock-saved-inline-overflow-property');\n $target.style.overflowY = $target.getAttribute('data-scroll-lock-saved-inline-overflow-y-property');\n $target.removeAttribute('data-scroll-lock-saved-overflow-property');\n $target.removeAttribute('data-scroll-lock-saved-inline-overflow-property');\n $target.removeAttribute('data-scroll-lock-saved-inline-overflow-y-property');\n $target.removeAttribute('data-scroll-lock-locked');\n }\n };\n\n var fillGaps = function fillGaps() {\n state.fillGapSelectors.map(function (selector) {\n scroll_lock_fillGapSelector(selector);\n });\n };\n\n var unfillGaps = function unfillGaps() {\n state.fillGapSelectors.map(function (selector) {\n scroll_lock_unfillGapSelector(selector);\n });\n };\n\n var scroll_lock_fillGapSelector = function fillGapSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n var isLockable = state.lockableSelectors.indexOf(selector) !== -1;\n eachNode($targets, function ($target) {\n scroll_lock_fillGapTarget($target, isLockable);\n });\n };\n\n var scroll_lock_fillGapTarget = function fillGapTarget($target) {\n var isLockable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (isElement($target)) {\n var scrollBarWidth;\n\n if ($target.getAttribute('data-scroll-lock-lockable') === '' || isLockable) {\n scrollBarWidth = scroll_lock_getTargetScrollBarWidth($target, true);\n } else {\n var $lockableParent = findParentBySelector($target, arrayAsSelector(state.lockableSelectors));\n scrollBarWidth = scroll_lock_getTargetScrollBarWidth($lockableParent, true);\n }\n\n if ($target.getAttribute('data-scroll-lock-filled-gap') === 'true') {\n scroll_lock_unfillGapTarget($target);\n }\n\n var computedStyle = window.getComputedStyle($target);\n $target.setAttribute('data-scroll-lock-filled-gap', 'true');\n $target.setAttribute('data-scroll-lock-current-fill-gap-method', state.fillGapMethod);\n\n if (state.fillGapMethod === 'margin') {\n var currentMargin = parseFloat(computedStyle.marginRight);\n $target.style.marginRight = \"\".concat(currentMargin + scrollBarWidth, \"px\");\n } else if (state.fillGapMethod === 'width') {\n $target.style.width = \"calc(100% - \".concat(scrollBarWidth, \"px)\");\n } else if (state.fillGapMethod === 'max-width') {\n $target.style.maxWidth = \"calc(100% - \".concat(scrollBarWidth, \"px)\");\n } else if (state.fillGapMethod === 'padding') {\n var currentPadding = parseFloat(computedStyle.paddingRight);\n $target.style.paddingRight = \"\".concat(currentPadding + scrollBarWidth, \"px\");\n }\n }\n };\n\n var scroll_lock_unfillGapSelector = function unfillGapSelector(selector) {\n var $targets = document.querySelectorAll(selector);\n eachNode($targets, function ($target) {\n scroll_lock_unfillGapTarget($target);\n });\n };\n\n var scroll_lock_unfillGapTarget = function unfillGapTarget($target) {\n if (isElement($target)) {\n if ($target.getAttribute('data-scroll-lock-filled-gap') === 'true') {\n var currentFillGapMethod = $target.getAttribute('data-scroll-lock-current-fill-gap-method');\n $target.removeAttribute('data-scroll-lock-filled-gap');\n $target.removeAttribute('data-scroll-lock-current-fill-gap-method');\n\n if (currentFillGapMethod === 'margin') {\n $target.style.marginRight = \"\";\n } else if (currentFillGapMethod === 'width') {\n $target.style.width = \"\";\n } else if (currentFillGapMethod === 'max-width') {\n $target.style.maxWidth = \"\";\n } else if (currentFillGapMethod === 'padding') {\n $target.style.paddingRight = \"\";\n }\n }\n }\n };\n\n var onResize = function onResize(e) {\n refillGaps();\n };\n\n var onTouchStart = function onTouchStart(e) {\n if (!state.scroll) {\n state.startTouchY = e.touches[0].clientY;\n state.startTouchX = e.touches[0].clientX;\n }\n };\n\n var scroll_lock_onTouchMove = function onTouchMove(e) {\n if (!state.scroll) {\n var startTouchY = state.startTouchY,\n startTouchX = state.startTouchX;\n var currentClientY = e.touches[0].clientY;\n var currentClientX = e.touches[0].clientX;\n\n if (e.touches.length < 2) {\n var selector = arrayAsSelector(state.scrollableSelectors);\n var direction = {\n up: startTouchY < currentClientY,\n down: startTouchY > currentClientY,\n left: startTouchX < currentClientX,\n right: startTouchX > currentClientX\n };\n var directionWithOffset = {\n up: startTouchY + TOUCH_DIRECTION_DETECT_OFFSET < currentClientY,\n down: startTouchY - TOUCH_DIRECTION_DETECT_OFFSET > currentClientY,\n left: startTouchX + TOUCH_DIRECTION_DETECT_OFFSET < currentClientX,\n right: startTouchX - TOUCH_DIRECTION_DETECT_OFFSET > currentClientX\n };\n\n var handle = function handle($el) {\n var skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if ($el) {\n var parentScrollableEl = findParentBySelector($el, selector, false);\n\n if (elementIsInputRange($el)) {\n return false;\n }\n\n if (skip || elementIsScrollableField($el) && findParentBySelector($el, selector) || elementHasSelector($el, selector)) {\n var prevent = false;\n\n if (elementScrollLeftOnStart($el) && elementScrollLeftOnEnd($el)) {\n if (direction.up && elementScrollTopOnStart($el) || direction.down && elementScrollTopOnEnd($el)) {\n prevent = true;\n }\n } else if (elementScrollTopOnStart($el) && elementScrollTopOnEnd($el)) {\n if (direction.left && elementScrollLeftOnStart($el) || direction.right && elementScrollLeftOnEnd($el)) {\n prevent = true;\n }\n } else if (directionWithOffset.up && elementScrollTopOnStart($el) || directionWithOffset.down && elementScrollTopOnEnd($el) || directionWithOffset.left && elementScrollLeftOnStart($el) || directionWithOffset.right && elementScrollLeftOnEnd($el)) {\n prevent = true;\n }\n\n if (prevent) {\n if (parentScrollableEl) {\n handle(parentScrollableEl, true);\n } else {\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n }\n } else {\n handle(parentScrollableEl);\n }\n } else {\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n };\n\n handle(e.target);\n }\n }\n };\n\n var onTouchEnd = function onTouchEnd(e) {\n if (!state.scroll) {\n state.startTouchY = 0;\n state.startTouchX = 0;\n }\n };\n\n if (typeof window !== 'undefined') {\n window.addEventListener('resize', onResize);\n }\n\n if (typeof document !== 'undefined') {\n document.addEventListener('touchstart', onTouchStart);\n document.addEventListener('touchmove', scroll_lock_onTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', onTouchEnd);\n }\n\n var deprecatedMethods = {\n hide: function hide(target) {\n throwError('\"hide\" is deprecated! Use \"disablePageScroll\" instead. \\n https://github.com/FL3NKEY/scroll-lock#disablepagescrollscrollabletarget');\n disablePageScroll(target);\n },\n show: function show(target) {\n throwError('\"show\" is deprecated! Use \"enablePageScroll\" instead. \\n https://github.com/FL3NKEY/scroll-lock#enablepagescrollscrollabletarget');\n enablePageScroll(target);\n },\n toggle: function toggle(target) {\n throwError('\"toggle\" is deprecated! Do not use it.');\n\n if (getScrollState()) {\n disablePageScroll();\n } else {\n enablePageScroll(target);\n }\n },\n getState: function getState() {\n throwError('\"getState\" is deprecated! Use \"getScrollState\" instead. \\n https://github.com/FL3NKEY/scroll-lock#getscrollstate');\n return getScrollState();\n },\n getWidth: function getWidth() {\n throwError('\"getWidth\" is deprecated! Use \"getPageScrollBarWidth\" instead. \\n https://github.com/FL3NKEY/scroll-lock#getpagescrollbarwidth');\n return getPageScrollBarWidth();\n },\n getCurrentWidth: function getCurrentWidth() {\n throwError('\"getCurrentWidth\" is deprecated! Use \"getCurrentPageScrollBarWidth\" instead. \\n https://github.com/FL3NKEY/scroll-lock#getcurrentpagescrollbarwidth');\n return getCurrentPageScrollBarWidth();\n },\n setScrollableTargets: function setScrollableTargets(target) {\n throwError('\"setScrollableTargets\" is deprecated! Use \"addScrollableTarget\" instead. \\n https://github.com/FL3NKEY/scroll-lock#addscrollabletargetscrollabletarget');\n scroll_lock_addScrollableTarget(target);\n },\n setFillGapSelectors: function setFillGapSelectors(selector) {\n throwError('\"setFillGapSelectors\" is deprecated! Use \"addFillGapSelector\" instead. \\n https://github.com/FL3NKEY/scroll-lock#addfillgapselectorfillgapselector');\n scroll_lock_addFillGapSelector(selector);\n },\n setFillGapTargets: function setFillGapTargets(target) {\n throwError('\"setFillGapTargets\" is deprecated! Use \"addFillGapTarget\" instead. \\n https://github.com/FL3NKEY/scroll-lock#addfillgaptargetfillgaptarget');\n scroll_lock_addFillGapTarget(target);\n },\n clearQueue: function clearQueue() {\n throwError('\"clearQueue\" is deprecated! Use \"clearQueueScrollLocks\" instead. \\n https://github.com/FL3NKEY/scroll-lock#clearqueuescrolllocks');\n clearQueueScrollLocks();\n }\n };\n\n var scrollLock = _objectSpread({\n disablePageScroll: disablePageScroll,\n enablePageScroll: enablePageScroll,\n getScrollState: getScrollState,\n clearQueueScrollLocks: clearQueueScrollLocks,\n getTargetScrollBarWidth: scroll_lock_getTargetScrollBarWidth,\n getCurrentTargetScrollBarWidth: scroll_lock_getCurrentTargetScrollBarWidth,\n getPageScrollBarWidth: getPageScrollBarWidth,\n getCurrentPageScrollBarWidth: getCurrentPageScrollBarWidth,\n addScrollableSelector: scroll_lock_addScrollableSelector,\n removeScrollableSelector: scroll_lock_removeScrollableSelector,\n addScrollableTarget: scroll_lock_addScrollableTarget,\n removeScrollableTarget: scroll_lock_removeScrollableTarget,\n addLockableSelector: scroll_lock_addLockableSelector,\n addLockableTarget: scroll_lock_addLockableTarget,\n addFillGapSelector: scroll_lock_addFillGapSelector,\n removeFillGapSelector: scroll_lock_removeFillGapSelector,\n addFillGapTarget: scroll_lock_addFillGapTarget,\n removeFillGapTarget: scroll_lock_removeFillGapTarget,\n setFillGapMethod: scroll_lock_setFillGapMethod,\n refillGaps: refillGaps,\n _state: state\n }, deprecatedMethods);\n /* harmony default export */\n\n\n var scroll_lock = __webpack_exports__[\"default\"] = scrollLock;\n /***/\n }\n /******/\n ])[\"default\"]\n );\n });\n /***/\n\n },\n\n /***/\n \"342f\":\n /***/\n function (module, exports, __webpack_require__) {\n var getBuiltIn = __webpack_require__(\"d066\");\n\n module.exports = getBuiltIn('navigator', 'userAgent') || '';\n /***/\n },\n\n /***/\n \"428f\":\n /***/\n function (module, exports, __webpack_require__) {\n var global = __webpack_require__(\"da84\");\n\n module.exports = global;\n /***/\n },\n\n /***/\n \"44ad\":\n /***/\n function (module, exports, __webpack_require__) {\n var fails = __webpack_require__(\"d039\");\n\n var classof = __webpack_require__(\"c6b6\");\n\n var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings\n\n module.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n }) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n } : Object;\n /***/\n },\n\n /***/\n \"4930\":\n /***/\n function (module, exports, __webpack_require__) {\n /* eslint-disable es/no-symbol -- required for testing */\n var V8_VERSION = __webpack_require__(\"2d00\");\n\n var fails = __webpack_require__(\"d039\"); // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\n\n\n module.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n return !String(Symbol()) || // Chrome 38 Symbol has incorrect toString conversion\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n });\n /***/\n },\n\n /***/\n \"4d64\":\n /***/\n function (module, exports, __webpack_require__) {\n var toIndexedObject = __webpack_require__(\"fc6a\");\n\n var toLength = __webpack_require__(\"50c4\");\n\n var toAbsoluteIndex = __webpack_require__(\"23cb\"); // `Array.prototype.{ indexOf, includes }` methods implementation\n\n\n var createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value; // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++]; // eslint-disable-next-line no-self-compare -- NaN check\n\n if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not\n } else for (; length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n }\n return !IS_INCLUDES && -1;\n };\n };\n\n module.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n };\n /***/\n },\n\n /***/\n \"4de4\":\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var $ = __webpack_require__(\"23e7\");\n\n var $filter = __webpack_require__(\"b727\").filter;\n\n var arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\n\n var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n // with adding support of @@species\n\n $({\n target: 'Array',\n proto: true,\n forced: !HAS_SPECIES_SUPPORT\n }, {\n filter: function filter(callbackfn\n /* , thisArg */\n ) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n });\n /***/\n },\n\n /***/\n \"50c4\":\n /***/\n function (module, exports, __webpack_require__) {\n var toInteger = __webpack_require__(\"a691\");\n\n var min = Math.min; // `ToLength` abstract operation\n // https://tc39.es/ecma262/#sec-tolength\n\n module.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n };\n /***/\n\n },\n\n /***/\n \"5135\":\n /***/\n function (module, exports, __webpack_require__) {\n var toObject = __webpack_require__(\"7b0b\");\n\n var hasOwnProperty = {}.hasOwnProperty;\n\n module.exports = function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n };\n /***/\n\n },\n\n /***/\n \"5692\":\n /***/\n function (module, exports, __webpack_require__) {\n var IS_PURE = __webpack_require__(\"c430\");\n\n var store = __webpack_require__(\"c6cd\");\n\n (module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n })('versions', []).push({\n version: '3.12.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n });\n /***/\n },\n\n /***/\n \"56ef\":\n /***/\n function (module, exports, __webpack_require__) {\n var getBuiltIn = __webpack_require__(\"d066\");\n\n var getOwnPropertyNamesModule = __webpack_require__(\"241c\");\n\n var getOwnPropertySymbolsModule = __webpack_require__(\"7418\");\n\n var anObject = __webpack_require__(\"825a\"); // all object keys, includes non-enumerable and symbols\n\n\n module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n };\n /***/\n\n },\n\n /***/\n \"5c6c\":\n /***/\n function (module, exports) {\n module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n };\n /***/\n\n },\n\n /***/\n \"65f0\":\n /***/\n function (module, exports, __webpack_require__) {\n var isObject = __webpack_require__(\"861d\");\n\n var isArray = __webpack_require__(\"e8b5\");\n\n var wellKnownSymbol = __webpack_require__(\"b622\");\n\n var SPECIES = wellKnownSymbol('species'); // `ArraySpeciesCreate` abstract operation\n // https://tc39.es/ecma262/#sec-arrayspeciescreate\n\n module.exports = function (originalArray, length) {\n var C;\n\n if (isArray(originalArray)) {\n C = originalArray.constructor; // cross-realm fallback\n\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n }\n\n return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n };\n /***/\n\n },\n\n /***/\n \"69f3\":\n /***/\n function (module, exports, __webpack_require__) {\n var NATIVE_WEAK_MAP = __webpack_require__(\"7f9a\");\n\n var global = __webpack_require__(\"da84\");\n\n var isObject = __webpack_require__(\"861d\");\n\n var createNonEnumerableProperty = __webpack_require__(\"9112\");\n\n var objectHas = __webpack_require__(\"5135\");\n\n var shared = __webpack_require__(\"c6cd\");\n\n var sharedKey = __webpack_require__(\"f772\");\n\n var hiddenKeys = __webpack_require__(\"d012\");\n\n var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\n var WeakMap = global.WeakMap;\n var set, get, has;\n\n var enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n };\n\n var getterFor = function (TYPE) {\n return function (it) {\n var state;\n\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n }\n\n return state;\n };\n };\n\n if (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n\n has = function (it) {\n return wmhas.call(store, it);\n };\n } else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n\n has = function (it) {\n return objectHas(it, STATE);\n };\n }\n\n module.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n };\n /***/\n },\n\n /***/\n \"6eeb\":\n /***/\n function (module, exports, __webpack_require__) {\n var global = __webpack_require__(\"da84\");\n\n var createNonEnumerableProperty = __webpack_require__(\"9112\");\n\n var has = __webpack_require__(\"5135\");\n\n var setGlobal = __webpack_require__(\"ce4e\");\n\n var inspectSource = __webpack_require__(\"8925\");\n\n var InternalStateModule = __webpack_require__(\"69f3\");\n\n var getInternalState = InternalStateModule.get;\n var enforceInternalState = InternalStateModule.enforce;\n var TEMPLATE = String(String).split('String');\n (module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n\n state = enforceInternalState(value);\n\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n\n if (O === global) {\n if (simple) O[key] = value;else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n\n if (simple) O[key] = value;else createNonEnumerableProperty(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n })(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n });\n /***/\n },\n\n /***/\n \"7418\":\n /***/\n function (module, exports) {\n // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\n exports.f = Object.getOwnPropertySymbols;\n /***/\n },\n\n /***/\n \"7839\":\n /***/\n function (module, exports) {\n // IE8- don't enum bug keys\n module.exports = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf'];\n /***/\n },\n\n /***/\n \"7b0b\":\n /***/\n function (module, exports, __webpack_require__) {\n var requireObjectCoercible = __webpack_require__(\"1d80\"); // `ToObject` abstract operation\n // https://tc39.es/ecma262/#sec-toobject\n\n\n module.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n };\n /***/\n\n },\n\n /***/\n \"7f9a\":\n /***/\n function (module, exports, __webpack_require__) {\n var global = __webpack_require__(\"da84\");\n\n var inspectSource = __webpack_require__(\"8925\");\n\n var WeakMap = global.WeakMap;\n module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n /***/\n },\n\n /***/\n \"825a\":\n /***/\n function (module, exports, __webpack_require__) {\n var isObject = __webpack_require__(\"861d\");\n\n module.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n }\n\n return it;\n };\n /***/\n\n },\n\n /***/\n \"83ab\":\n /***/\n function (module, exports, __webpack_require__) {\n var fails = __webpack_require__(\"d039\"); // Detect IE8's incomplete defineProperty implementation\n\n\n module.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, {\n get: function () {\n return 7;\n }\n })[1] != 7;\n });\n /***/\n },\n\n /***/\n \"861d\":\n /***/\n function (module, exports) {\n module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n };\n /***/\n\n },\n\n /***/\n \"8875\":\n /***/\n function (module, exports, __webpack_require__) {\n var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // addapted from the document.currentScript polyfill by Adam Miller\n // MIT license\n // source: https://github.com/amiller-gh/currentScript-polyfill\n // added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n\n (function (root, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = factory, __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n })(typeof self !== 'undefined' ? self : this, function () {\n function getCurrentScript() {\n var descriptor = Object.getOwnPropertyDescriptor(document, 'currentScript'); // for chrome\n\n if (!descriptor && 'currentScript' in document && document.currentScript) {\n return document.currentScript;\n } // for other browsers with native support for currentScript\n\n\n if (descriptor && descriptor.get !== getCurrentScript && document.currentScript) {\n return document.currentScript;\n } // IE 8-10 support script readyState\n // IE 11+ & Firefox support stack trace\n\n\n try {\n throw new Error();\n } catch (err) {\n // Find the second match for the \"at\" string to get file src url from stack.\n var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n scriptLocation = stackDetails && stackDetails[1] || false,\n line = stackDetails && stackDetails[2] || false,\n currentLocation = document.location.href.replace(document.location.hash, ''),\n pageSource,\n inlineScriptSourceRegExp,\n inlineScriptSource,\n scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n if (scriptLocation === currentLocation) {\n pageSource = document.documentElement.outerHTML;\n inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--8-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--8-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--8-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LandingPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--8-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LandingPage.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./Header.vue?vue&type=template&id=421507fa&scoped=true&\"\nimport script from \"./Header.vue?vue&type=script&lang=js&\"\nexport * from \"./Header.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Header.vue?vue&type=style&index=0&id=421507fa&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"421507fa\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{class:_vm.isBlue ? 'bg-havelock-blue' : 'bg-white'},[_c('div',{staticClass:\"container\",class:{ active: _vm.lockScroll }},[_c('div',{staticClass:\"logo\"},[_c('a',{attrs:{\"href\":_vm.paths.home}},[(_vm.isBlue)?_c('img',{attrs:{\"src\":require('images/logo/logo-wh.png'),\"alt\":_vm.t('layouts.header.logo_banner_alt')}}):_c('img',{attrs:{\"src\":require('images/logo/logo.png'),\"alt\":_vm.t('layouts.header.logo_banner_alt')}})])]),_vm._v(\" \"),_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.onClickOutside),expression:\"onClickOutside\"}],staticClass:\"center\"},[_c('div',{staticClass:\"hamburger\",class:{ active: _vm.drawer },on:{\"click\":_vm.toggleMenu}},[_c('span')]),_vm._v(\" \"),_c('div',{staticClass:\"desktop\"},[_c('div',{staticClass:\"menu\"},[_c('ul',{staticClass:\"list\"},[_c('li',{staticClass:\"home\"},[_c('a',{class:_vm.current === 'lp' ? 'current' : '',attrs:{\"href\":_vm.paths.home}},[_vm._v(_vm._s(_vm.t('lp.header.home')))])]),_vm._v(\" \"),_c('li',{staticClass:\"recruiter\"},[_c('a',{class:_vm.current === 'recruiter' ? 'current' : '',attrs:{\"href\":_vm.paths.recruiter}},[_vm._v(_vm._s(_vm.t('lp.header.recruiter')))])]),_vm._v(\" \"),_c('li',{staticClass:\"client\"},[_c('a',{class:_vm.current === 'client' ? 'current' : '',attrs:{\"href\":_vm.paths.client}},[_vm._v(_vm._s(_vm.t('lp.header.employer')))])]),_vm._v(\" \"),_c('li',{staticClass:\"talent\"},[_c('a',{attrs:{\"href\":\"/talents\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.t('lp.header.talent')))])]),_vm._v(\" \"),_c('li',{staticClass:\"about-us\"},[_c('a',{class:_vm.current === 'about_us' ? 'current' : '',attrs:{\"href\":_vm.paths.aboutUs}},[_vm._v(_vm._s(_vm.t('lp.header.about_us')))])])])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"scroll-lock\",rawName:\"v-scroll-lock\",value:(_vm.lockScroll),expression:\"lockScroll\"}],staticClass:\"mobile\",class:{ active: _vm.drawer }},[_c('div',{staticClass:\"menu\"},[_c('ul',{staticClass:\"list\"},[_c('li',{staticClass:\"home\"},[_c('a',{class:_vm.current === 'lp' ? 'current' : '',attrs:{\"href\":_vm.paths.home}},[_vm._v(_vm._s(_vm.t('lp.header.home')))])]),_vm._v(\" \"),_c('li',{staticClass:\"recruiter\"},[_c('a',{class:_vm.current === 'recruiter' ? 'current' : '',attrs:{\"href\":_vm.paths.recruiter}},[_vm._v(_vm._s(_vm.t('lp.header.recruiter')))])]),_vm._v(\" \"),_c('li',{staticClass:\"client\"},[_c('a',{class:_vm.current === 'client' ? 'current' : '',attrs:{\"href\":_vm.paths.client}},[_vm._v(_vm._s(_vm.t('lp.header.employer')))])]),_vm._v(\" \"),_c('li',{staticClass:\"talent\"},[_c('a',{attrs:{\"href\":\"/talents\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.t('lp.header.talent')))])]),_vm._v(\" \"),_c('li',{staticClass:\"about-us\"},[_c('a',{class:_vm.current === 'about_us' ? 'current' : '',attrs:{\"href\":_vm.paths.aboutUs}},[_vm._v(_vm._s(_vm.t('lp.header.about_us')))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"languages\",class:_vm.isBlue ? 'border-bg-maya-blue' : 'no-border'},[_c('sui-dropdown',{attrs:{\"text\":_vm.lang.toUpperCase(),\"button\":\"\",\"pointing\":\"\"}},[_c('sui-dropdown-menu',[_c('sui-dropdown-item',{on:{\"click\":function($event){return _vm.setLocale('en')}}},[_vm._v(\"English\\n \")]),_vm._v(\" \"),_c('sui-dropdown-item',{on:{\"click\":function($event){return _vm.setLocale('th')}}},[_vm._v(\"Thai\\n \")])],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"user\"},[_c('div',{staticClass:\"sign-up\"},[_c('a',{attrs:{\"href\":_vm.paths.signUpChoice}},[_vm._v(_vm._s(_vm.t('lp.header.user.sign_up')))])]),_vm._v(\" \"),_c('div',{staticClass:\"log-in\"},[_c('a',{attrs:{\"href\":\"/users/sign_in\"}},[_vm._v(_vm._s(_vm.t('lp.header.user.log_in')))])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"side\"},[_c('div',{staticClass:\"languages\",class:_vm.isBlue ? 'border-bg-maya-blue' : 'no-border'},[_c('sui-dropdown',{attrs:{\"text\":_vm.lang.toUpperCase(),\"button\":\"\",\"pointing\":\"\"}},[_c('sui-dropdown-menu',[_c('sui-dropdown-item',{on:{\"click\":function($event){return _vm.setLocale('en')}}},[_vm._v(\"English\\n \")]),_vm._v(\" \"),_c('sui-dropdown-item',{on:{\"click\":function($event){return _vm.setLocale('th')}}},[_vm._v(\"Thai\\n \")])],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"user\"},[_c('div',{staticClass:\"log-in\"},[_c('a',{class:_vm.isBlue ? 'text-white' : 'text-black',attrs:{\"href\":\"/users/sign_in\"}},[_vm._v(_vm._s(_vm.t('lp.header.user.log_in')))])]),_vm._v(\" \"),_c('div',{staticClass:\"sign-up\",class:_vm.isBlue ? 'bg-maya-blue ' : 'bg-havelock-blue'},[_c('a',{class:_vm.isBlue ? 'bg-maya-blue ' : 'bg-havelock-blue ',attrs:{\"href\":_vm.paths.signUpChoice}},[_vm._v(_vm._s(_vm.t('lp.header.user.sign_up')))])])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./LandingPage.vue?vue&type=template&id=b4a9465c&\"\nimport script from \"./LandingPage.vue?vue&type=script&lang=js&\"\nexport * from \"./LandingPage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","typeof navigator !== \"undefined\" && function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n}(this, function () {\n '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 } // import Howl from '../../3rd_party/howler';\n\n\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\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) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof$6 = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof$6 = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof$6(obj);\n }\n\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) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof$5 = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof$5 = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof$5(obj);\n }\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) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof$4 = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof$4 = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof$4(obj);\n }\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 /* eslint-disable */\n\n\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 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 /*!\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\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) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof$3 = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof$3 = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof$3(obj);\n }\n\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 /**\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\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 /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\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 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 '',\r\n '',\r\n '',\r\n '',\r\n '',\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= 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) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof$2 = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof$2 = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof$2(obj);\n }\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\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 The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\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 */\n\n\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // 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) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof$1 = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof$1 = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof$1(obj);\n }\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) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(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\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 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 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 return lottie;\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"lavContainer\",style:(_vm.style)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../babel-loader/lib/index.js??ref--7-0!../../vue-loader/lib/index.js??vue-loader-options!./lottie.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../babel-loader/lib/index.js??ref--7-0!../../vue-loader/lib/index.js??vue-loader-options!./lottie.vue?vue&type=script&lang=js&\"","//\n//\n//\n//\nimport lottie from 'lottie-web';\nexport default {\n props: {\n options: {\n type: Object,\n required: true\n },\n height: Number,\n width: Number\n },\n\n data() {\n return {\n style: {\n width: this.width ? `${this.width}px` : '100%',\n height: this.height ? `${this.height}px` : '100%',\n overflow: 'hidden',\n margin: '0 auto'\n }\n };\n },\n\n mounted() {\n this.anim = lottie.loadAnimation({\n container: this.$refs.lavContainer,\n renderer: 'svg',\n loop: this.options.loop !== false,\n autoplay: this.options.autoplay !== false,\n animationData: this.options.animationData,\n rendererSettings: this.options.rendererSettings\n });\n this.$emit('animCreated', this.anim);\n }\n\n};","import { render, staticRenderFns } from \"./lottie.vue?vue&type=template&id=3c796cc7&\"\nimport script from \"./lottie.vue?vue&type=script&lang=js&\"\nexport * from \"./lottie.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*\nCopyright (c) NAVER Corp.\nname: @egjs/axes\nlicense: MIT\nauthor: NAVER Corp.\nrepository: https://github.com/naver/egjs-axes\nversion: 3.9.0\n*/\nimport getAgent from '@egjs/agent';\nimport Component, { ComponentEvent } from '@egjs/component';\nimport { getObserver, Observe, ReactiveSubscribe, Computed } from '@cfcs/core';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nfunction __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n\n/* eslint-disable no-new-func, no-nested-ternary */\n\n\nvar win;\n\nif (typeof window === \"undefined\") {\n // window is undefined in node.js\n win = {\n navigator: {\n userAgent: \"\"\n }\n };\n} else {\n win = window;\n}\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_HORIZONTAL = 2 | 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\nvar DIRECTION_VERTICAL = 8 | 16;\nvar DIRECTION_ALL = 2 | 4 | 8 | 16;\nvar MOUSE_LEFT = \"left\";\nvar MOUSE_RIGHT = \"right\";\nvar MOUSE_MIDDLE = \"middle\";\nvar MOUSE_BUTTON_CODE_MAP = {\n 1: MOUSE_LEFT,\n 2: MOUSE_MIDDLE,\n 3: MOUSE_RIGHT\n};\nvar ANY = \"any\";\nvar NONE = \"none\";\nvar SHIFT = \"shift\";\nvar CTRL = \"ctrl\";\nvar ALT = \"alt\";\nvar META = \"meta\";\nvar VELOCITY_INTERVAL = 16;\nvar AXES_METHODS = [\"connect\", \"disconnect\", \"get\", \"setTo\", \"setBy\", \"setOptions\", \"setAxis\", \"stopAnimation\", \"updateAnimation\", \"isBounceArea\"];\nvar AXES_EVENTS = [\"hold\", \"release\", \"change\", \"animationStart\", \"animationEnd\", \"finish\"];\nvar IOS_EDGE_THRESHOLD = 30;\nvar IS_IOS_SAFARI = \"ontouchstart\" in win && getAgent().browser.name === \"safari\";\n\nvar TRANSFORM = function () {\n if (typeof document === \"undefined\") {\n return \"\";\n }\n\n var bodyStyle = (document.head || document.getElementsByTagName(\"head\")[0]).style;\n var target = [\"transform\", \"webkitTransform\", \"msTransform\", \"mozTransform\"];\n\n for (var i = 0, len = target.length; i < len; i++) {\n if (target[i] in bodyStyle) {\n return target[i];\n }\n }\n\n return \"\";\n}();\n\nvar PREVENT_DRAG_CSSPROPS = {\n \"-webkit-user-select\": \"none\",\n \"-ms-user-select\": \"none\",\n \"-moz-user-select\": \"none\",\n \"user-select\": \"none\",\n \"-webkit-user-drag\": \"none\"\n};\n\nvar toArray = function (nodes) {\n // const el = Array.prototype.slice.call(nodes);\n // for IE8\n var el = [];\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n el.push(nodes[i]);\n }\n\n return el;\n};\n\nvar $ = function (param, multi) {\n if (multi === void 0) {\n multi = false;\n }\n\n var el;\n\n if (typeof param === \"string\") {\n // String (HTML, Selector)\n // check if string is HTML tag format\n var match = param.match(/^<([a-z]+)\\s*([^>]*)>/); // creating element\n\n if (match) {\n // HTML\n var dummy = document.createElement(\"div\");\n dummy.innerHTML = param;\n el = toArray(dummy.childNodes);\n } else {\n // Selector\n el = toArray(document.querySelectorAll(param));\n }\n\n if (!multi) {\n el = el.length >= 1 ? el[0] : undefined;\n }\n } else if (param === win) {\n // window\n el = param;\n } else if (\"value\" in param || \"current\" in param) {\n el = param.value || param.current;\n } else if (param.nodeName && (param.nodeType === 1 || param.nodeType === 9)) {\n // HTMLElement, Document\n el = param;\n } else if (\"jQuery\" in win && param instanceof jQuery || param.constructor.prototype.jquery) {\n // jQuery\n el = multi ? param.toArray() : param.get(0);\n } else if (Array.isArray(param)) {\n el = param.map(function (v) {\n return $(v);\n });\n\n if (!multi) {\n el = el.length >= 1 ? el[0] : undefined;\n }\n }\n\n return el;\n};\n\nvar raf = win.requestAnimationFrame || win.webkitRequestAnimationFrame;\nvar caf = win.cancelAnimationFrame || win.webkitCancelAnimationFrame;\n\nif (raf && !caf) {\n var keyInfo_1 = {};\n var oldraf_1 = raf;\n\n raf = function (callback) {\n var wrapCallback = function (timestamp) {\n if (keyInfo_1[key]) {\n callback(timestamp);\n }\n };\n\n var key = oldraf_1(wrapCallback);\n keyInfo_1[key] = true;\n return key;\n };\n\n caf = function (key) {\n delete keyInfo_1[key];\n };\n} else if (!(raf && caf)) {\n raf = function (callback) {\n return win.setTimeout(function () {\n callback(win.performance && win.performance.now && win.performance.now() || new Date().getTime());\n }, 16);\n };\n\n caf = win.clearTimeout;\n}\n/**\n * A polyfill for the window.requestAnimationFrame() method.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame\n * @private\n */\n\n\nvar requestAnimationFrame = function (fp) {\n return raf(fp);\n};\n/**\n * A polyfill for the window.cancelAnimationFrame() method. It cancels an animation executed through a call to the requestAnimationFrame() method.\n * @param {Number} key − The ID value returned through a call to the requestAnimationFrame() method. requestAnimationFrame() 메서드가 반환한 아이디 값\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/cancelAnimationFrame\n * @private\n */\n\n\nvar cancelAnimationFrame = function (key) {\n caf(key);\n};\n\nvar map = function (obj, callback) {\n var tranformed = {};\n\n for (var k in obj) {\n if (k) {\n tranformed[k] = callback(obj[k], k);\n }\n }\n\n return tranformed;\n};\n\nvar filter = function (obj, callback) {\n var filtered = {};\n\n for (var k in obj) {\n if (k && callback(obj[k], k)) {\n filtered[k] = obj[k];\n }\n }\n\n return filtered;\n};\n\nvar every = function (obj, callback) {\n for (var k in obj) {\n if (k && !callback(obj[k], k)) {\n return false;\n }\n }\n\n return true;\n};\n\nvar equal = function (target, base) {\n return every(target, function (v, k) {\n return v === base[k];\n });\n};\n\nvar roundNumFunc = {};\n\nvar roundNumber = function (num, roundUnit) {\n // Cache for performance\n if (!roundNumFunc[roundUnit]) {\n roundNumFunc[roundUnit] = getRoundFunc(roundUnit);\n }\n\n return roundNumFunc[roundUnit](num);\n};\n\nvar roundNumbers = function (num, roundUnit) {\n if (!num || !roundUnit) {\n return num;\n }\n\n return map(num, function (value, key) {\n return roundNumber(value, typeof roundUnit === \"number\" ? roundUnit : roundUnit[key]);\n });\n};\n\nvar getDecimalPlace = function (val) {\n if (!isFinite(val)) {\n return 0;\n }\n\n var v = \"\".concat(val);\n\n if (v.indexOf(\"e\") >= 0) {\n // Exponential Format\n // 1e-10, 1e-12\n var p = 0;\n var e = 1;\n\n while (Math.round(val * e) / e !== val) {\n e *= 10;\n p++;\n }\n\n return p;\n } // In general, following has performance benefit.\n // https://jsperf.com/precision-calculation\n\n\n return v.indexOf(\".\") >= 0 ? v.length - v.indexOf(\".\") - 1 : 0;\n};\n\nvar inversePow = function (n) {\n // replace Math.pow(10, -n) to solve floating point issue.\n // eg. Math.pow(10, -4) => 0.00009999999999999999\n return 1 / Math.pow(10, n);\n};\n\nvar getRoundFunc = function (v) {\n var p = v < 1 ? Math.pow(10, getDecimalPlace(v)) : 1;\n return function (n) {\n if (v === 0) {\n return 0;\n }\n\n return Math.round(Math.round(n / v) * v * p) / p;\n };\n};\n\nvar getAngle = function (posX, posY) {\n return Math.atan2(posY, posX) * 180 / Math.PI;\n};\n\nvar isCssPropsFromAxes = function (originalCssProps) {\n var same = true;\n Object.keys(PREVENT_DRAG_CSSPROPS).forEach(function (prop) {\n if (!originalCssProps || originalCssProps[prop] !== PREVENT_DRAG_CSSPROPS[prop]) {\n same = false;\n }\n });\n return same;\n};\n\nvar getDirection = function (useHorizontal, useVertical) {\n if (useHorizontal && useVertical) {\n return DIRECTION_ALL;\n } else if (useHorizontal) {\n return DIRECTION_HORIZONTAL;\n } else if (useVertical) {\n return DIRECTION_VERTICAL;\n } else {\n return DIRECTION_NONE;\n }\n};\n\nvar useDirection = function (checkType, direction, userDirection) {\n if (userDirection) {\n return !!(direction === DIRECTION_ALL || direction & checkType && userDirection & checkType);\n } else {\n return !!(direction & checkType);\n }\n};\n\nvar setCssProps = function (element, option, direction) {\n var _a;\n\n var touchActionMap = (_a = {}, _a[DIRECTION_NONE] = \"auto\", _a[DIRECTION_ALL] = \"none\", _a[DIRECTION_VERTICAL] = \"pan-x\", _a[DIRECTION_HORIZONTAL] = \"pan-y\", _a);\n var oldCssProps = {};\n\n if (element && element.style) {\n var touchAction = option.touchAction ? option.touchAction : touchActionMap[direction];\n\n var newCssProps_1 = __assign(__assign({}, PREVENT_DRAG_CSSPROPS), {\n \"touch-action\": element.style[\"touch-action\"] === \"none\" ? \"none\" : touchAction\n });\n\n Object.keys(newCssProps_1).forEach(function (prop) {\n oldCssProps[prop] = element.style[prop];\n element.style[prop] = newCssProps_1[prop];\n });\n }\n\n return oldCssProps;\n};\n\nvar revertCssProps = function (element, originalCssProps) {\n if (element && element.style && originalCssProps) {\n Object.keys(originalCssProps).forEach(function (prop) {\n element.style[prop] = originalCssProps[prop];\n });\n }\n\n return;\n};\n\nvar EventManager = /*#__PURE__*/function () {\n function EventManager(_axes) {\n this._axes = _axes;\n this.holdingCount = 0;\n }\n /**\n * This event is fired when a user holds an element on the screen of the device.\n * @ko 사용자가 기기의 화면에 손을 대고 있을 때 발생하는 이벤트\n * @event Axes#hold\n * @type {object}\n * @property {Object.} pos coordinate 좌표 정보\n * @property {Object} input The instance of inputType where the event occurred이벤트가 발생한 inputType 인스턴스\n * @property {Object} inputEvent The event object received from inputType inputType으로 부터 받은 이벤트 객체\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call 사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"hold\", function(event) {\n * // event.pos\n * // event.input\n * // event.inputEvent\n * // isTrusted\n * });\n * ```\n */\n\n\n var __proto = EventManager.prototype;\n\n __proto.hold = function (pos, option) {\n var roundPos = this._getRoundPos(pos).roundPos;\n\n this._axes.trigger(new ComponentEvent(\"hold\", {\n pos: roundPos,\n input: option.input || null,\n inputEvent: option.event || null,\n isTrusted: true\n }));\n };\n /**\n * Specifies the coordinates to move after the 'change' event. It works when the holding value of the change event is true.\n * @ko 'change' 이벤트 이후 이동할 좌표를 지정한다. change이벤트의 holding 값이 true일 경우에 동작한다\n * @param {Object.} pos The coordinate to move to 이동할 좌표\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"change\", function(event) {\n * event.holding && event.set({x: 10});\n * });\n * ```\n */\n\n /** Specifies the animation coordinates to move after the 'release' or 'animationStart' events.\n * @ko 'release' 또는 'animationStart' 이벤트 이후 이동할 좌표를 지정한다.\n * @param {Object.} pos The coordinate to move to 이동할 좌표\n * @param {Number} [duration=0] Duration of the animation (unit: ms) 애니메이션 진행 시간(단위: ms)\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"animationStart\", function(event) {\n * event.setTo({x: 10}, 2000);\n * });\n * ```\n */\n\n /**\n * This event is fired when a user release an element on the screen of the device.\n * @ko 사용자가 기기의 화면에서 손을 뗐을 때 발생하는 이벤트\n * @event Axes#release\n * @type {object}\n * @property {Object.} depaPos The coordinates when releasing an element손을 뗐을 때의 좌표 \n * @property {Object.} destPos The coordinates to move to after releasing an element손을 뗀 뒤에 이동할 좌표\n * @property {Object.} delta The movement variation of coordinate 좌표의 변화량\n * @property {Object.} bounceRatio If the coordinates at the time of release are in the bounce area, the current bounce value divided by the maximum bounce value 손을 뗐을 때의 좌표가 bounce 영역에 있는 경우 현재 bounce된 값을 최대 bounce 값으로 나눈 수치.\n * @property {Object} inputEvent The event object received from inputType inputType으로 부터 받은 이벤트 객체\n * @property {Object} input The instance of inputType where the event occurred이벤트가 발생한 inputType 인스턴스\n * @property {setTo} setTo Specifies the animation coordinates to move after the event 이벤트 이후 이동할 애니메이션 좌표를 지정한다\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call 사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"release\", function(event) {\n * // event.depaPos\n * // event.destPos\n * // event.delta\n * // event.input\n * // event.inputEvent\n * // event.setTo\n * // event.isTrusted\n *\n * // if you want to change the animation coordinates to move after the 'release' event.\n * event.setTo({x: 10}, 2000);\n * });\n * ```\n */\n\n\n __proto.triggerRelease = function (param) {\n var _a = this._getRoundPos(param.destPos, param.depaPos),\n roundPos = _a.roundPos,\n roundDepa = _a.roundDepa;\n\n param.destPos = roundPos;\n param.depaPos = roundDepa;\n param.setTo = this._createUserControll(param.destPos, param.duration);\n\n this._axes.trigger(new ComponentEvent(\"release\", __assign(__assign({}, param), {\n bounceRatio: this._getBounceRatio(roundPos)\n })));\n };\n /**\n * This event is fired when coordinate changes.\n * @ko 좌표가 변경됐을 때 발생하는 이벤트\n * @event Axes#change\n * @type {object}\n * @property {Object.} pos The coordinate 좌표\n * @property {Object.} delta The movement variation of coordinate 좌표의 변화량\n * @property {Object.} bounceRatio If the current coordinates are in the bounce area, the current bounce value divided by the maximum bounce value 현재 좌표가 bounce 영역에 있는 경우 현재 bounce된 값을 최대 bounce 값으로 나눈 수치.\n * @property {Boolean} holding Indicates whether a user holds an element on the screen of the device.사용자가 기기의 화면을 누르고 있는지 여부\n * @property {Object} input The instance of inputType where the event occurred. If the value is changed by animation, it returns 'null'.이벤트가 발생한 inputType 인스턴스. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.\n * @property {Object} inputEvent The event object received from inputType. If the value is changed by animation, it returns 'null'.inputType으로 부터 받은 이벤트 객체. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.\n * @property {set} set Specifies the coordinates to move after the event. It works when the holding value is true 이벤트 이후 이동할 좌표를 지정한다. holding 값이 true일 경우에 동작한다.\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call 사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"change\", function(event) {\n * // event.pos\n * // event.delta\n * // event.input\n * // event.inputEvent\n * // event.holding\n * // event.set\n * // event.isTrusted\n *\n * // if you want to change the coordinates to move after the 'change' event.\n * // it works when the holding value of the change event is true.\n * event.holding && event.set({x: 10});\n * });\n * ```\n */\n\n\n __proto.triggerChange = function (pos, depaPos, option, holding) {\n var _this = this;\n\n if (holding === void 0) {\n holding = false;\n }\n\n var animationManager = this.animationManager;\n var axisManager = animationManager.axisManager;\n var eventInfo = animationManager.getEventInfo();\n\n var _a = this._getRoundPos(pos, depaPos),\n roundPos = _a.roundPos,\n roundDepa = _a.roundDepa;\n\n var moveTo = axisManager.moveTo(roundPos, roundDepa);\n var inputEvent = (option === null || option === void 0 ? void 0 : option.event) || (eventInfo === null || eventInfo === void 0 ? void 0 : eventInfo.event) || null;\n var param = {\n pos: moveTo.pos,\n delta: moveTo.delta,\n bounceRatio: this._getBounceRatio(moveTo.pos),\n holding: holding,\n inputEvent: inputEvent,\n isTrusted: !!inputEvent,\n input: (option === null || option === void 0 ? void 0 : option.input) || (eventInfo === null || eventInfo === void 0 ? void 0 : eventInfo.input) || null,\n set: inputEvent ? this._createUserControll(moveTo.pos) : function () {} // eslint-disable-line @typescript-eslint/no-empty-function\n\n };\n var event = new ComponentEvent(\"change\", param);\n\n this._axes.trigger(event);\n\n Object.keys(moveTo.pos).forEach(function (axis) {\n var p = moveTo.pos[axis];\n getObserver(_this._axes, axis, p).current = p;\n });\n\n if (inputEvent) {\n axisManager.set(param.set().destPos);\n }\n\n return !event.isCanceled();\n };\n /**\n * This event is fired when animation starts.\n * @ko 에니메이션이 시작할 때 발생한다.\n * @event Axes#animationStart\n * @type {object}\n * @property {Object.} depaPos The coordinates when animation starts애니메이션이 시작 되었을 때의 좌표 \n * @property {Object.} destPos The coordinates to move to. If you change this value, you can run the animation이동할 좌표. 이값을 변경하여 애니메이션을 동작시킬수 있다\n * @property {Object.} delta The movement variation of coordinate 좌표의 변화량\n * @property {Number} duration Duration of the animation (unit: ms). If you change this value, you can control the animation duration time.애니메이션 진행 시간(단위: ms). 이값을 변경하여 애니메이션의 이동시간을 조절할 수 있다.\n * @property {Object} input The instance of inputType where the event occurred. If the value is changed by animation, it returns 'null'.이벤트가 발생한 inputType 인스턴스. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.\n * @property {Object} inputEvent The event object received from inputType inputType으로 부터 받은 이벤트 객체\n * @property {setTo} setTo Specifies the animation coordinates to move after the event 이벤트 이후 이동할 애니메이션 좌표를 지정한다\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call 사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"release\", function(event) {\n * // event.depaPos\n * // event.destPos\n * // event.delta\n * // event.input\n * // event.inputEvent\n * // event.setTo\n * // event.isTrusted\n *\n * // if you want to change the animation coordinates to move after the 'animationStart' event.\n * event.setTo({x: 10}, 2000);\n * });\n * ```\n */\n\n\n __proto.triggerAnimationStart = function (param) {\n var _a = this._getRoundPos(param.destPos, param.depaPos),\n roundPos = _a.roundPos,\n roundDepa = _a.roundDepa;\n\n param.destPos = roundPos;\n param.depaPos = roundDepa;\n param.setTo = this._createUserControll(param.destPos, param.duration);\n var event = new ComponentEvent(\"animationStart\", param);\n\n this._axes.trigger(event);\n\n return !event.isCanceled();\n };\n /**\n * This event is fired when animation ends.\n * @ko 에니메이션이 끝났을 때 발생한다.\n * @event Axes#animationEnd\n * @type {object}\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call 사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"animationEnd\", function(event) {\n * // event.isTrusted\n * });\n * ```\n */\n\n\n __proto.triggerAnimationEnd = function (isTrusted) {\n if (isTrusted === void 0) {\n isTrusted = false;\n }\n\n this._axes.trigger(new ComponentEvent(\"animationEnd\", {\n isTrusted: isTrusted\n }));\n };\n /**\n * This event is fired when all actions have been completed.\n * @ko 에니메이션이 끝났을 때 발생한다.\n * @event Axes#finish\n * @type {object}\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call 사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"finish\", function(event) {\n * // event.isTrusted\n * });\n * ```\n */\n\n\n __proto.triggerFinish = function (isTrusted) {\n if (isTrusted === void 0) {\n isTrusted = false;\n }\n\n this._axes.trigger(new ComponentEvent(\"finish\", {\n isTrusted: isTrusted\n }));\n };\n\n __proto.setAnimationManager = function (animationManager) {\n this.animationManager = animationManager;\n };\n\n __proto.destroy = function () {\n this._axes.off();\n };\n\n __proto._createUserControll = function (pos, duration) {\n if (duration === void 0) {\n duration = 0;\n } // to controll\n\n\n var userControl = {\n destPos: __assign({}, pos),\n duration: duration\n };\n return function (toPos, userDuration) {\n if (toPos) {\n userControl.destPos = __assign({}, toPos);\n }\n\n if (userDuration !== undefined) {\n userControl.duration = userDuration;\n }\n\n return userControl;\n };\n };\n\n __proto._getRoundPos = function (pos, depaPos) {\n // round value if round exist\n var roundUnit = this._axes.options.round; // if (round == null) {\n // return {pos, depaPos}; // undefined, undefined\n // }\n\n return {\n roundPos: roundNumbers(pos, roundUnit),\n roundDepa: roundNumbers(depaPos, roundUnit)\n };\n };\n\n __proto._getBounceRatio = function (pos) {\n return this._axes.axisManager.map(pos, function (v, opt) {\n if (v < opt.range[0] && opt.bounce[0] !== 0) {\n return (opt.range[0] - v) / opt.bounce[0];\n } else if (v > opt.range[1] && opt.bounce[1] !== 0) {\n return (v - opt.range[1]) / opt.bounce[1];\n } else {\n return 0;\n }\n });\n };\n\n __decorate([Observe], EventManager.prototype, \"holdingCount\", void 0);\n\n return EventManager;\n}();\n\nvar InterruptManager = /*#__PURE__*/function () {\n function InterruptManager(_options) {\n this._options = _options;\n this._prevented = false; // check whether the animation event was prevented\n }\n\n var __proto = InterruptManager.prototype;\n\n __proto.isInterrupting = function () {\n // when interruptable is 'true', return value is always 'true'.\n return this._options.interruptable || this._prevented;\n };\n\n __proto.isInterrupted = function () {\n return !this._options.interruptable && this._prevented;\n };\n\n __proto.setInterrupt = function (prevented) {\n if (!this._options.interruptable) {\n this._prevented = prevented;\n }\n };\n\n return InterruptManager;\n}();\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n\n\nvar getInsidePosition = function (destPos, range, circular, bounce) {\n var toDestPos = destPos;\n var targetRange = [circular[0] ? range[0] : bounce ? range[0] - bounce[0] : range[0], circular[1] ? range[1] : bounce ? range[1] + bounce[1] : range[1]];\n toDestPos = Math.max(targetRange[0], toDestPos);\n toDestPos = Math.min(targetRange[1], toDestPos);\n return toDestPos;\n}; // determine outside\n\n\nvar isOutside = function (pos, range) {\n return pos < range[0] || pos > range[1];\n}; // determine whether position has reached the maximum moveable area\n\n\nvar isEndofBounce = function (pos, range, bounce, circular) {\n return !circular[0] && pos === range[0] - bounce[0] || !circular[1] && pos === range[1] + bounce[1];\n};\n\nvar getDuration = function (distance, deceleration) {\n var duration = Math.sqrt(distance / deceleration * 2); // when duration is under 100, then value is zero\n\n return duration < 100 ? 0 : duration;\n};\n\nvar isCircularable = function (destPos, range, circular) {\n return circular[1] && destPos > range[1] || circular[0] && destPos < range[0];\n};\n\nvar getCirculatedPos = function (pos, range, circular) {\n var toPos = pos;\n var min = range[0];\n var max = range[1];\n var length = max - min;\n\n if (circular[1] && pos > max) {\n // right\n toPos = (toPos - max) % length + min;\n }\n\n if (circular[0] && pos < min) {\n // left\n toPos = (toPos - min) % length + max;\n }\n\n return toPos;\n};\n\nvar AxisManager = /*#__PURE__*/function () {\n function AxisManager(_axis) {\n var _this = this;\n\n this._axis = _axis;\n\n this._complementOptions();\n\n this._pos = Object.keys(this._axis).reduce(function (pos, v) {\n pos[v] = _this._axis[v].startPos;\n return pos;\n }, {});\n }\n\n var __proto = AxisManager.prototype;\n\n __proto.getDelta = function (depaPos, destPos) {\n var fullDepaPos = this.get(depaPos);\n return map(this.get(destPos), function (v, k) {\n return v - fullDepaPos[k];\n });\n };\n\n __proto.get = function (axes) {\n var _this = this;\n\n if (axes && Array.isArray(axes)) {\n return axes.reduce(function (acc, v) {\n if (v && v in _this._pos) {\n acc[v] = _this._pos[v];\n }\n\n return acc;\n }, {});\n } else {\n return __assign(__assign({}, this._pos), axes || {});\n }\n };\n\n __proto.moveTo = function (pos, depaPos) {\n if (depaPos === void 0) {\n depaPos = this._pos;\n }\n\n var delta = map(this._pos, function (v, key) {\n return key in pos && key in depaPos ? pos[key] - depaPos[key] : 0;\n });\n this.set(this.map(pos, function (v, opt) {\n return opt ? getCirculatedPos(v, opt.range, opt.circular) : 0;\n }));\n return {\n pos: __assign({}, this._pos),\n delta: delta\n };\n };\n\n __proto.set = function (pos) {\n for (var k in pos) {\n if (k && k in this._pos) {\n this._pos[k] = pos[k];\n }\n }\n };\n\n __proto.every = function (pos, callback) {\n var axisOptions = this._axis;\n return every(pos, function (value, key) {\n return callback(value, axisOptions[key], key);\n });\n };\n\n __proto.filter = function (pos, callback) {\n var axisOptions = this._axis;\n return filter(pos, function (value, key) {\n return callback(value, axisOptions[key], key);\n });\n };\n\n __proto.map = function (pos, callback) {\n var axisOptions = this._axis;\n return map(pos, function (value, key) {\n return callback(value, axisOptions[key], key);\n });\n };\n\n __proto.isOutside = function (axes) {\n return !this.every(axes ? this.get(axes) : this._pos, function (v, opt) {\n return !isOutside(v, opt.range);\n });\n };\n\n __proto.getAxisOptions = function (key) {\n return this._axis[key];\n };\n\n __proto.setAxis = function (axis) {\n var _this = this;\n\n Object.keys(axis).forEach(function (key) {\n if (!_this._axis[key]) {\n throw new Error(\"Axis \".concat(key, \" does not exist in Axes instance\"));\n }\n\n _this._axis[key] = __assign(__assign({}, _this._axis[key]), axis[key]);\n });\n\n this._complementOptions();\n };\n /**\n * set up 'css' expression\n * @private\n */\n\n\n __proto._complementOptions = function () {\n var _this = this;\n\n Object.keys(this._axis).forEach(function (axis) {\n _this._axis[axis] = __assign({\n range: [0, 100],\n startPos: _this._axis[axis].range[0],\n bounce: [0, 0],\n circular: [false, false]\n }, _this._axis[axis]);\n [\"bounce\", \"circular\"].forEach(function (v) {\n var axisOption = _this._axis;\n var key = axisOption[axis][v];\n\n if (/string|number|boolean/.test(typeof key)) {\n axisOption[axis][v] = [key, key];\n }\n });\n });\n };\n\n return AxisManager;\n}();\n\nvar SUPPORT_TOUCH = (\"ontouchstart\" in win);\nvar SUPPORT_POINTER = (\"PointerEvent\" in win);\nvar SUPPORT_MSPOINTER = (\"MSPointerEvent\" in win);\nvar SUPPORT_POINTER_EVENTS = SUPPORT_POINTER || SUPPORT_MSPOINTER;\n\nvar isValidKey = function (event, inputKey) {\n if (!inputKey || inputKey.indexOf(ANY) > -1 || inputKey.indexOf(NONE) > -1 && !event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey || inputKey.indexOf(SHIFT) > -1 && event.shiftKey || inputKey.indexOf(CTRL) > -1 && event.ctrlKey || inputKey.indexOf(ALT) > -1 && event.altKey || inputKey.indexOf(META) > -1 && event.metaKey) {\n return true;\n }\n\n return false;\n};\n\nvar EventInput = /*#__PURE__*/function () {\n function EventInput() {\n var _this = this;\n\n this._stopContextMenu = function (event) {\n event.preventDefault();\n win.removeEventListener(\"contextmenu\", _this._stopContextMenu);\n };\n }\n\n var __proto = EventInput.prototype;\n\n __proto.extendEvent = function (event) {\n var _a;\n\n var prevEvent = this.prevEvent;\n\n var center = this._getCenter(event);\n\n var movement = prevEvent ? this._getMovement(event) : {\n x: 0,\n y: 0\n };\n var scale = prevEvent ? this._getScale(event) : 1;\n var angle = prevEvent ? getAngle(center.x - prevEvent.center.x, center.y - prevEvent.center.y) : 0;\n var deltaX = prevEvent ? prevEvent.deltaX + movement.x : movement.x;\n var deltaY = prevEvent ? prevEvent.deltaY + movement.y : movement.y;\n var offsetX = movement.x;\n var offsetY = movement.y;\n var latestInterval = this._latestInterval;\n var timeStamp = Date.now();\n var deltaTime = latestInterval ? timeStamp - latestInterval.timestamp : 0;\n var velocityX = prevEvent ? prevEvent.velocityX : 0;\n var velocityY = prevEvent ? prevEvent.velocityY : 0;\n\n if (!latestInterval || deltaTime >= VELOCITY_INTERVAL) {\n if (latestInterval) {\n _a = [(deltaX - latestInterval.deltaX) / deltaTime, (deltaY - latestInterval.deltaY) / deltaTime], velocityX = _a[0], velocityY = _a[1];\n }\n\n this._latestInterval = {\n timestamp: timeStamp,\n deltaX: deltaX,\n deltaY: deltaY\n };\n }\n\n return {\n srcEvent: event,\n scale: scale,\n angle: angle,\n center: center,\n deltaX: deltaX,\n deltaY: deltaY,\n offsetX: offsetX,\n offsetY: offsetY,\n velocityX: velocityX,\n velocityY: velocityY,\n preventSystemEvent: true\n };\n };\n\n __proto._getDistance = function (start, end) {\n var x = end.clientX - start.clientX;\n var y = end.clientY - start.clientY;\n return Math.sqrt(x * x + y * y);\n };\n\n __proto._getButton = function (event) {\n var buttonCodeMap = {\n 1: MOUSE_LEFT,\n 2: MOUSE_RIGHT,\n 4: MOUSE_MIDDLE\n };\n var button = this._isTouchEvent(event) ? MOUSE_LEFT : buttonCodeMap[event.buttons];\n return button ? button : null;\n };\n\n __proto._isTouchEvent = function (event) {\n return event.type && event.type.indexOf(\"touch\") > -1;\n };\n\n __proto._isValidButton = function (button, inputButton) {\n return inputButton.indexOf(button) > -1;\n };\n\n __proto._isValidEvent = function (event, inputKey, inputButton) {\n return (!inputKey || isValidKey(event, inputKey)) && (!inputButton || this._isValidButton(this._getButton(event), inputButton));\n };\n\n __proto._preventMouseButton = function (event, button) {\n if (button === MOUSE_RIGHT) {\n win.addEventListener(\"contextmenu\", this._stopContextMenu);\n } else if (button === MOUSE_MIDDLE) {\n event.preventDefault();\n }\n };\n\n return EventInput;\n}();\n\nvar MouseEventInput = /*#__PURE__*/function (_super) {\n __extends(MouseEventInput, _super);\n\n function MouseEventInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.start = [\"mousedown\"];\n _this.move = [\"mousemove\"];\n _this.end = [\"mouseup\"];\n return _this;\n }\n\n var __proto = MouseEventInput.prototype;\n\n __proto.onEventStart = function (event, inputKey, inputButton) {\n var button = this._getButton(event);\n\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n\n this._preventMouseButton(event, button);\n\n return this.extendEvent(event);\n };\n\n __proto.onEventMove = function (event, inputKey, inputButton) {\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n\n return this.extendEvent(event);\n };\n\n __proto.onEventEnd = function () {\n return;\n };\n\n __proto.onRelease = function () {\n this.prevEvent = null;\n return;\n };\n\n __proto.getTouches = function (event, inputButton) {\n if (inputButton) {\n return this._isValidButton(MOUSE_BUTTON_CODE_MAP[event.which], inputButton) && this.end.indexOf(event.type) === -1 ? 1 : 0;\n }\n\n return 0;\n };\n\n __proto._getScale = function () {\n return 1;\n };\n\n __proto._getCenter = function (event) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n };\n\n __proto._getMovement = function (event) {\n var prev = this.prevEvent.srcEvent;\n return {\n x: event.clientX - prev.clientX,\n y: event.clientY - prev.clientY\n };\n };\n\n return MouseEventInput;\n}(EventInput);\n\nvar TouchEventInput = /*#__PURE__*/function (_super) {\n __extends(TouchEventInput, _super);\n\n function TouchEventInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.start = [\"touchstart\"];\n _this.move = [\"touchmove\"];\n _this.end = [\"touchend\", \"touchcancel\"];\n return _this;\n }\n\n var __proto = TouchEventInput.prototype;\n\n __proto.onEventStart = function (event, inputKey) {\n this._baseTouches = event.touches;\n\n if (!this._isValidEvent(event, inputKey)) {\n return null;\n }\n\n return this.extendEvent(event);\n };\n\n __proto.onEventMove = function (event, inputKey) {\n if (!this._isValidEvent(event, inputKey)) {\n return null;\n }\n\n return this.extendEvent(event);\n };\n\n __proto.onEventEnd = function (event) {\n this._baseTouches = event.touches;\n return;\n };\n\n __proto.onRelease = function () {\n this.prevEvent = null;\n this._baseTouches = null;\n return;\n };\n\n __proto.getTouches = function (event) {\n return event.touches.length;\n };\n\n __proto._getScale = function (event) {\n if (event.touches.length !== 2 || this._baseTouches.length < 2) {\n return null; // TODO: consider calculating non-pinch gesture scale\n }\n\n return this._getDistance(event.touches[0], event.touches[1]) / this._getDistance(this._baseTouches[0], this._baseTouches[1]);\n };\n\n __proto._getCenter = function (event) {\n return {\n x: event.touches[0].clientX,\n y: event.touches[0].clientY\n };\n };\n\n __proto._getMovement = function (event) {\n var prev = this.prevEvent.srcEvent;\n\n if (event.touches[0].identifier !== prev.touches[0].identifier) {\n return {\n x: 0,\n y: 0\n };\n }\n\n return {\n x: event.touches[0].clientX - prev.touches[0].clientX,\n y: event.touches[0].clientY - prev.touches[0].clientY\n };\n };\n\n return TouchEventInput;\n}(EventInput);\n\nvar PointerEventInput = /*#__PURE__*/function (_super) {\n __extends(PointerEventInput, _super);\n\n function PointerEventInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.start = SUPPORT_POINTER ? [\"pointerdown\"] : [\"MSPointerDown\"];\n _this.move = SUPPORT_POINTER ? [\"pointermove\"] : [\"MSPointerMove\"];\n _this.end = SUPPORT_POINTER ? [\"pointerup\", \"pointercancel\"] : [\"MSPointerUp\", \"MSPointerCancel\"]; // store first, recent inputs for each event id\n\n _this._firstInputs = [];\n _this._recentInputs = [];\n return _this;\n }\n\n var __proto = PointerEventInput.prototype;\n\n __proto.onEventStart = function (event, inputKey, inputButton) {\n var button = this._getButton(event);\n\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n\n this._preventMouseButton(event, button);\n\n this._updatePointerEvent(event);\n\n return this.extendEvent(event);\n };\n\n __proto.onEventMove = function (event, inputKey, inputButton) {\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n\n this._updatePointerEvent(event);\n\n return this.extendEvent(event);\n };\n\n __proto.onEventEnd = function (event) {\n this._removePointerEvent(event);\n };\n\n __proto.onRelease = function () {\n this.prevEvent = null;\n this._firstInputs = [];\n this._recentInputs = [];\n return;\n };\n\n __proto.getTouches = function () {\n return this._recentInputs.length;\n };\n\n __proto._getScale = function () {\n if (this._recentInputs.length !== 2) {\n return null; // TODO: consider calculating non-pinch gesture scale\n }\n\n return this._getDistance(this._recentInputs[0], this._recentInputs[1]) / this._getDistance(this._firstInputs[0], this._firstInputs[1]);\n };\n\n __proto._getCenter = function (event) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n };\n\n __proto._getMovement = function (event) {\n var prev = this.prevEvent.srcEvent;\n\n if (event.pointerId !== prev.pointerId) {\n return {\n x: 0,\n y: 0\n };\n }\n\n return {\n x: event.clientX - prev.clientX,\n y: event.clientY - prev.clientY\n };\n };\n\n __proto._updatePointerEvent = function (event) {\n var _this = this;\n\n var addFlag = false;\n\n this._recentInputs.forEach(function (e, i) {\n if (e.pointerId === event.pointerId) {\n addFlag = true;\n _this._recentInputs[i] = event;\n }\n });\n\n if (!addFlag) {\n this._firstInputs.push(event);\n\n this._recentInputs.push(event);\n }\n };\n\n __proto._removePointerEvent = function (event) {\n this._firstInputs = this._firstInputs.filter(function (x) {\n return x.pointerId !== event.pointerId;\n });\n this._recentInputs = this._recentInputs.filter(function (x) {\n return x.pointerId !== event.pointerId;\n });\n };\n\n return PointerEventInput;\n}(EventInput);\n\nvar TouchMouseEventInput = /*#__PURE__*/function (_super) {\n __extends(TouchMouseEventInput, _super);\n\n function TouchMouseEventInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.start = [\"mousedown\", \"touchstart\"];\n _this.move = [\"mousemove\", \"touchmove\"];\n _this.end = [\"mouseup\", \"touchend\", \"touchcancel\"];\n return _this;\n }\n\n var __proto = TouchMouseEventInput.prototype;\n\n __proto.onEventStart = function (event, inputKey, inputButton) {\n var button = this._getButton(event);\n\n if (this._isTouchEvent(event)) {\n this._baseTouches = event.touches;\n }\n\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n\n this._preventMouseButton(event, button);\n\n return this.extendEvent(event);\n };\n\n __proto.onEventMove = function (event, inputKey, inputButton) {\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n\n return this.extendEvent(event);\n };\n\n __proto.onEventEnd = function (event) {\n if (this._isTouchEvent(event)) {\n this._baseTouches = event.touches;\n }\n\n return;\n };\n\n __proto.onRelease = function () {\n this.prevEvent = null;\n this._baseTouches = null;\n return;\n };\n\n __proto.getTouches = function (event, inputButton) {\n if (this._isTouchEvent(event)) {\n return event.touches.length;\n } else {\n return this._isValidButton(MOUSE_BUTTON_CODE_MAP[event.which], inputButton) && this.end.indexOf(event.type) === -1 ? 1 : 0;\n }\n };\n\n __proto._getScale = function (event) {\n if (this._isTouchEvent(event)) {\n if (event.touches.length !== 2 || this._baseTouches.length < 2) {\n return 1; // TODO: consider calculating non-pinch gesture scale\n }\n\n return this._getDistance(event.touches[0], event.touches[1]) / this._getDistance(this._baseTouches[0], this._baseTouches[1]);\n }\n\n return this.prevEvent.scale;\n };\n\n __proto._getCenter = function (event) {\n if (this._isTouchEvent(event)) {\n return {\n x: event.touches[0].clientX,\n y: event.touches[0].clientY\n };\n }\n\n return {\n x: event.clientX,\n y: event.clientY\n };\n };\n\n __proto._getMovement = function (event) {\n var _this = this;\n\n var prev = this.prevEvent.srcEvent;\n\n var _a = [event, prev].map(function (e) {\n if (_this._isTouchEvent(e)) {\n return {\n id: e.touches[0].identifier,\n x: e.touches[0].clientX,\n y: e.touches[0].clientY\n };\n }\n\n return {\n id: null,\n x: e.clientX,\n y: e.clientY\n };\n }),\n nextSpot = _a[0],\n prevSpot = _a[1];\n\n return nextSpot.id === prevSpot.id ? {\n x: nextSpot.x - prevSpot.x,\n y: nextSpot.y - prevSpot.y\n } : {\n x: 0,\n y: 0\n };\n };\n\n return TouchMouseEventInput;\n}(EventInput);\n\nvar toAxis = function (source, offset) {\n return offset.reduce(function (acc, v, i) {\n if (source[i]) {\n acc[source[i]] = v;\n }\n\n return acc;\n }, {});\n};\n\nvar convertInputType = function (inputType) {\n if (inputType === void 0) {\n inputType = [];\n }\n\n var hasTouch = false;\n var hasMouse = false;\n var hasPointer = false;\n inputType.forEach(function (v) {\n switch (v) {\n case \"mouse\":\n hasMouse = true;\n break;\n\n case \"touch\":\n hasTouch = SUPPORT_TOUCH;\n break;\n\n case \"pointer\":\n hasPointer = SUPPORT_POINTER_EVENTS;\n // no default\n }\n });\n\n if (hasPointer) {\n return new PointerEventInput();\n } else if (hasTouch && hasMouse) {\n return new TouchMouseEventInput();\n } else if (hasTouch) {\n return new TouchEventInput();\n } else if (hasMouse) {\n return new MouseEventInput();\n }\n\n return null;\n};\n\nfunction getAddEventOptions(eventName) {\n // The passive default value of the touch event is true.\n // If not a touch event, return false to support ie11\n return eventName.indexOf(\"touch\") > -1 ? {\n passive: false\n } : false;\n}\n\nvar InputObserver = /*#__PURE__*/function () {\n function InputObserver(_a) {\n var options = _a.options,\n interruptManager = _a.interruptManager,\n eventManager = _a.eventManager,\n axisManager = _a.axisManager,\n animationManager = _a.animationManager;\n this._isOutside = false;\n this._moveDistance = null;\n this._isStopped = false;\n this.options = options;\n this._interruptManager = interruptManager;\n this._eventManager = eventManager;\n this._axisManager = axisManager;\n this._animationManager = animationManager;\n }\n\n var __proto = InputObserver.prototype;\n\n __proto.get = function (input) {\n return this._axisManager.get(input.axes);\n };\n\n __proto.hold = function (input, event) {\n if (this._interruptManager.isInterrupted() || !input.axes.length) {\n return;\n }\n\n var changeOption = {\n input: input,\n event: event\n };\n this._isStopped = false;\n\n this._interruptManager.setInterrupt(true);\n\n this._animationManager.stopAnimation(changeOption);\n\n ++this._eventManager.holdingCount;\n\n if (!this._moveDistance) {\n this._eventManager.hold(this._axisManager.get(), changeOption);\n }\n\n this._isOutside = this._axisManager.isOutside(input.axes);\n this._moveDistance = this._axisManager.get(input.axes);\n };\n\n __proto.change = function (input, event, offset, useAnimation) {\n if (this._isStopped || !this._interruptManager.isInterrupting() || this._axisManager.every(offset, function (v) {\n return v === 0;\n })) {\n return;\n }\n\n var nativeEvent = event.srcEvent ? event.srcEvent : event;\n\n if (nativeEvent.__childrenAxesAlreadyChanged) {\n return;\n }\n\n var depaPos = this._moveDistance || this._axisManager.get(input.axes);\n\n var destPos; // for outside logic\n\n destPos = map(depaPos, function (v, k) {\n return v + (offset[k] || 0);\n });\n\n if (this._moveDistance) {\n this._moveDistance = this._axisManager.map(destPos, function (v, _a) {\n var circular = _a.circular,\n range = _a.range;\n return circular && (circular[0] || circular[1]) ? getCirculatedPos(v, range, circular) : v;\n });\n } // from outside to inside\n\n\n if (this._isOutside && this._axisManager.every(depaPos, function (v, opt) {\n return !isOutside(v, opt.range);\n })) {\n this._isOutside = false;\n }\n\n depaPos = this._atOutside(depaPos);\n destPos = this._atOutside(destPos);\n\n if (!this.options.nested || !this._isEndofAxis(offset, depaPos, destPos)) {\n nativeEvent.__childrenAxesAlreadyChanged = true;\n }\n\n var changeOption = {\n input: input,\n event: event\n };\n\n if (useAnimation) {\n var duration = this._animationManager.getDuration(destPos, depaPos);\n\n this._animationManager.animateTo(destPos, duration, changeOption);\n } else {\n var isCanceled = !this._eventManager.triggerChange(destPos, depaPos, changeOption, true);\n\n if (isCanceled) {\n this._isStopped = true;\n this._moveDistance = null;\n\n this._animationManager.finish(false);\n }\n }\n };\n\n __proto.release = function (input, event, velocity, inputDuration) {\n if (this._isStopped || !this._interruptManager.isInterrupting() || !this._moveDistance) {\n return;\n }\n\n var nativeEvent = event.srcEvent ? event.srcEvent : event;\n\n if (nativeEvent.__childrenAxesAlreadyReleased) {\n velocity = velocity.map(function () {\n return 0;\n });\n }\n\n var pos = this._axisManager.get(input.axes);\n\n var depaPos = this._axisManager.get();\n\n var displacement = this._animationManager.getDisplacement(velocity);\n\n var offset = toAxis(input.axes, displacement);\n\n var destPos = this._axisManager.get(this._axisManager.map(offset, function (v, opt, k) {\n if (opt.circular && (opt.circular[0] || opt.circular[1])) {\n return pos[k] + v;\n } else {\n return getInsidePosition(pos[k] + v, opt.range, opt.circular, opt.bounce);\n }\n }));\n\n nativeEvent.__childrenAxesAlreadyReleased = true;\n\n var duration = this._animationManager.getDuration(destPos, pos, inputDuration);\n\n if (duration === 0) {\n destPos = __assign({}, depaPos);\n } // prepare params\n\n\n var param = {\n depaPos: depaPos,\n destPos: destPos,\n duration: duration,\n delta: this._axisManager.getDelta(depaPos, destPos),\n inputEvent: event,\n input: input,\n isTrusted: true\n };\n --this._eventManager.holdingCount;\n\n this._eventManager.triggerRelease(param);\n\n if (this._eventManager.holdingCount === 0) {\n this._moveDistance = null;\n } // to contol\n\n\n var userWish = this._animationManager.getUserControl(param);\n\n var isEqual = equal(userWish.destPos, depaPos);\n var changeOption = {\n input: input,\n event: event\n };\n\n if (isEqual || userWish.duration === 0) {\n if (!isEqual) {\n this._eventManager.triggerChange(userWish.destPos, depaPos, changeOption, true);\n }\n\n this._interruptManager.setInterrupt(false);\n\n if (this._axisManager.isOutside()) {\n this._animationManager.restore(changeOption);\n } else {\n this._eventManager.triggerFinish(true);\n }\n } else {\n this._animationManager.animateTo(userWish.destPos, userWish.duration, changeOption);\n }\n }; // when move pointer is held in outside\n\n\n __proto._atOutside = function (pos) {\n var _this = this;\n\n if (this._isOutside) {\n return this._axisManager.map(pos, function (v, opt) {\n var tn = opt.range[0] - opt.bounce[0];\n var tx = opt.range[1] + opt.bounce[1];\n return v > tx ? tx : v < tn ? tn : v;\n });\n } else {\n return this._axisManager.map(pos, function (v, opt) {\n var min = opt.range[0];\n var max = opt.range[1];\n var out = opt.bounce;\n var circular = opt.circular;\n\n if (circular[0] && v < min || circular[1] && v > max) {\n return v;\n } else if (v < min) {\n // left\n return min - _this._animationManager.interpolate(min - v, out[0]);\n } else if (v > max) {\n // right\n return max + _this._animationManager.interpolate(v - max, out[1]);\n }\n\n return v;\n });\n }\n };\n\n __proto._isEndofAxis = function (offset, depaPos, destPos) {\n return this._axisManager.every(depaPos, function (value, option, key) {\n return offset[key] === 0 || depaPos[key] === destPos[key] && isEndofBounce(value, option.range, option.bounce, option.circular);\n });\n };\n\n return InputObserver;\n}();\n\nvar clamp = function (value, min, max) {\n return Math.max(Math.min(value, max), min);\n};\n\nvar AnimationManager = /*#__PURE__*/function () {\n function AnimationManager(_a) {\n var options = _a.options,\n interruptManager = _a.interruptManager,\n eventManager = _a.eventManager,\n axisManager = _a.axisManager;\n this._options = options;\n this.interruptManager = interruptManager;\n this.eventManager = eventManager;\n this.axisManager = axisManager;\n this.animationEnd = this.animationEnd.bind(this);\n }\n\n var __proto = AnimationManager.prototype;\n\n __proto.getDuration = function (depaPos, destPos, wishDuration) {\n var _this = this;\n\n var duration;\n\n if (typeof wishDuration !== \"undefined\") {\n duration = wishDuration;\n } else {\n var durations_1 = map(destPos, function (v, k) {\n return getDuration(Math.abs(v - depaPos[k]), _this._options.deceleration);\n });\n duration = Object.keys(durations_1).reduce(function (max, v) {\n return Math.max(max, durations_1[v]);\n }, -Infinity);\n }\n\n return clamp(duration, this._options.minimumDuration, this._options.maximumDuration);\n };\n\n __proto.getDisplacement = function (velocity) {\n var totalVelocity = Math.pow(velocity.reduce(function (total, v) {\n return total + v * v;\n }, 0), 1 / velocity.length);\n var duration = Math.abs(totalVelocity / -this._options.deceleration);\n return velocity.map(function (v) {\n return v / 2 * duration;\n });\n };\n\n __proto.stopAnimation = function (option) {\n if (this._animateParam) {\n var orgPos_1 = this.axisManager.get();\n var pos = this.axisManager.map(orgPos_1, function (v, opt) {\n return getCirculatedPos(v, opt.range, opt.circular);\n });\n\n if (!every(pos, function (v, k) {\n return orgPos_1[k] === v;\n })) {\n this.eventManager.triggerChange(pos, orgPos_1, option, !!option);\n }\n\n this._animateParam = null;\n\n if (this._raf) {\n cancelAnimationFrame(this._raf);\n }\n\n this._raf = null;\n this.eventManager.triggerAnimationEnd(!!(option === null || option === void 0 ? void 0 : option.event));\n }\n };\n\n __proto.getEventInfo = function () {\n if (this._animateParam && this._animateParam.input && this._animateParam.inputEvent) {\n return {\n input: this._animateParam.input,\n event: this._animateParam.inputEvent\n };\n } else {\n return null;\n }\n };\n\n __proto.restore = function (option) {\n var pos = this.axisManager.get();\n var destPos = this.axisManager.map(pos, function (v, opt) {\n return Math.min(opt.range[1], Math.max(opt.range[0], v));\n });\n this.stopAnimation();\n this.animateTo(destPos, this.getDuration(pos, destPos), option);\n };\n\n __proto.animationEnd = function () {\n var beforeParam = this.getEventInfo();\n this._animateParam = null; // for Circular\n\n var circularTargets = this.axisManager.filter(this.axisManager.get(), function (v, opt) {\n return isCircularable(v, opt.range, opt.circular);\n });\n\n if (Object.keys(circularTargets).length > 0) {\n this.setTo(this.axisManager.map(circularTargets, function (v, opt) {\n return getCirculatedPos(v, opt.range, opt.circular);\n }));\n }\n\n this.interruptManager.setInterrupt(false);\n this.eventManager.triggerAnimationEnd(!!beforeParam);\n\n if (this.axisManager.isOutside()) {\n this.restore(beforeParam);\n } else {\n this.finish(!!beforeParam);\n }\n };\n\n __proto.finish = function (isTrusted) {\n this._animateParam = null;\n this.interruptManager.setInterrupt(false);\n this.eventManager.triggerFinish(isTrusted);\n };\n\n __proto.getUserControl = function (param) {\n var userWish = param.setTo();\n userWish.destPos = this.axisManager.get(userWish.destPos);\n userWish.duration = clamp(userWish.duration, this._options.minimumDuration, this._options.maximumDuration);\n return userWish;\n };\n\n __proto.animateTo = function (destPos, duration, option) {\n var _this = this;\n\n this.stopAnimation();\n\n var param = this._createAnimationParam(destPos, duration, option);\n\n var depaPos = __assign({}, param.depaPos);\n\n var retTrigger = this.eventManager.triggerAnimationStart(param); // to control\n\n var userWish = this.getUserControl(param); // You can't stop the 'animationStart' event when 'circular' is true.\n\n if (!retTrigger && this.axisManager.every(userWish.destPos, function (v, opt) {\n return isCircularable(v, opt.range, opt.circular);\n })) {\n console.warn(\"You can't stop the 'animation' event when 'circular' is true.\");\n }\n\n if (retTrigger && !equal(userWish.destPos, depaPos)) {\n var inputEvent = (option === null || option === void 0 ? void 0 : option.event) || null;\n\n this._animateLoop({\n depaPos: depaPos,\n destPos: userWish.destPos,\n duration: userWish.duration,\n delta: this.axisManager.getDelta(depaPos, userWish.destPos),\n isTrusted: !!inputEvent,\n inputEvent: inputEvent,\n input: (option === null || option === void 0 ? void 0 : option.input) || null\n }, function () {\n return _this.animationEnd();\n });\n }\n };\n\n __proto.setTo = function (pos, duration) {\n if (duration === void 0) {\n duration = 0;\n }\n\n var axes = Object.keys(pos);\n var orgPos = this.axisManager.get(axes);\n\n if (equal(pos, orgPos)) {\n return this;\n }\n\n this.interruptManager.setInterrupt(true);\n var movedPos = filter(pos, function (v, k) {\n return orgPos[k] !== v;\n });\n\n if (!Object.keys(movedPos).length) {\n return this;\n }\n\n movedPos = this.axisManager.map(movedPos, function (v, opt) {\n var range = opt.range,\n circular = opt.circular;\n\n if (circular && (circular[0] || circular[1])) {\n return v;\n } else {\n return getInsidePosition(v, range, circular);\n }\n });\n\n if (equal(movedPos, orgPos)) {\n return this;\n }\n\n if (duration > 0) {\n this.animateTo(movedPos, duration);\n } else {\n this.stopAnimation();\n this.eventManager.triggerChange(movedPos);\n this.finish(false);\n }\n\n return this;\n };\n\n __proto.setBy = function (pos, duration) {\n if (duration === void 0) {\n duration = 0;\n }\n\n return this.setTo(map(this.axisManager.get(Object.keys(pos)), function (v, k) {\n return v + pos[k];\n }), duration);\n };\n\n __proto.setOptions = function (options) {\n this._options = __assign(__assign({}, this._options), options);\n };\n\n __proto._createAnimationParam = function (pos, duration, option) {\n var depaPos = this.axisManager.get();\n var destPos = pos;\n var inputEvent = (option === null || option === void 0 ? void 0 : option.event) || null;\n return {\n depaPos: depaPos,\n destPos: destPos,\n duration: clamp(duration, this._options.minimumDuration, this._options.maximumDuration),\n delta: this.axisManager.getDelta(depaPos, destPos),\n inputEvent: inputEvent,\n input: (option === null || option === void 0 ? void 0 : option.input) || null,\n isTrusted: !!inputEvent,\n done: this.animationEnd\n };\n };\n\n __proto._animateLoop = function (param, complete) {\n var _this = this;\n\n if (param.duration) {\n this._animateParam = __assign(__assign({}, param), {\n startTime: new Date().getTime()\n });\n var originalIntendedPos_1 = map(param.destPos, function (v) {\n return v;\n });\n\n var state_1 = this._initState(this._animateParam);\n\n var loop_1 = function () {\n _this._raf = null;\n var animateParam = _this._animateParam;\n\n var nextState = _this._getNextState(state_1);\n\n var isCanceled = !_this.eventManager.triggerChange(nextState.pos, state_1.pos);\n state_1 = nextState;\n\n if (nextState.finished) {\n animateParam.destPos = _this._getFinalPos(animateParam.destPos, originalIntendedPos_1);\n\n if (!equal(animateParam.destPos, _this.axisManager.get(Object.keys(animateParam.destPos)))) {\n _this.eventManager.triggerChange(animateParam.destPos, nextState.pos);\n }\n\n complete();\n return;\n } else if (isCanceled) {\n _this.finish(false);\n } else {\n _this._raf = requestAnimationFrame(loop_1);\n }\n };\n\n loop_1();\n } else {\n this.eventManager.triggerChange(param.destPos);\n complete();\n }\n };\n /**\n * Get estimated final value.\n *\n * If destPos is within the 'error range' of the original intended position, the initial intended position is returned.\n * - eg. original intended pos: 100, destPos: 100.0000000004 ==> return 100;\n * If dest Pos is outside the 'range of error' compared to the originally intended pos, it is returned rounded based on the originally intended pos.\n * - eg. original intended pos: 100.123 destPos: 50.12345 => return 50.123\n * @param originalIntendedPos\n * @param destPos\n */\n\n\n __proto._getFinalPos = function (destPos, originalIntendedPos) {\n var _this = this; // compare destPos and originalIntendedPos\n // eslint-disable-next-line @typescript-eslint/naming-convention\n\n\n var ERROR_LIMIT = 0.000001;\n var finalPos = map(destPos, function (value, key) {\n if (value >= originalIntendedPos[key] - ERROR_LIMIT && value <= originalIntendedPos[key] + ERROR_LIMIT) {\n // In error range, return original intended\n return originalIntendedPos[key];\n } else {\n // Out of error range, return rounded pos.\n var roundUnit = _this._getRoundUnit(value, key);\n\n var result = roundNumber(value, roundUnit);\n return result;\n }\n });\n return finalPos;\n };\n\n __proto._getRoundUnit = function (val, key) {\n var roundUnit = this._options.round; // manual mode\n\n var minRoundUnit = null; // auto mode\n // auto mode\n\n if (!roundUnit) {\n // Get minimum round unit\n var options = this.axisManager.getAxisOptions(key);\n minRoundUnit = inversePow(Math.max(getDecimalPlace(options.range[0]), getDecimalPlace(options.range[1]), getDecimalPlace(val)));\n }\n\n return minRoundUnit || roundUnit;\n };\n\n return AnimationManager;\n}();\n\nvar EasingManager = /*#__PURE__*/function (_super) {\n __extends(EasingManager, _super);\n\n function EasingManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._useDuration = true;\n return _this;\n }\n\n var __proto = EasingManager.prototype;\n\n __proto.interpolate = function (displacement, threshold) {\n var initSlope = this._easing(0.00001) / 0.00001;\n return this._easing(displacement / (threshold * initSlope)) * threshold;\n };\n\n __proto.updateAnimation = function (options) {\n var _a;\n\n var animateParam = this._animateParam;\n\n if (!animateParam) {\n return;\n }\n\n var diffTime = new Date().getTime() - animateParam.startTime;\n var pos = (options === null || options === void 0 ? void 0 : options.destPos) || animateParam.destPos;\n var duration = (_a = options === null || options === void 0 ? void 0 : options.duration) !== null && _a !== void 0 ? _a : animateParam.duration;\n\n if ((options === null || options === void 0 ? void 0 : options.restart) || duration <= diffTime) {\n this.setTo(pos, duration - diffTime);\n return;\n }\n\n if (options === null || options === void 0 ? void 0 : options.destPos) {\n var currentPos = this.axisManager.get(); // When destination is changed, new delta should be calculated as remaining percent.\n // For example, moving x:0, y:0 to x:200, y:200 and it has current easing percent of 92%. coordinate is x:184 and y:184\n // If destination changes to x:300, y:300. xdelta:200, ydelta:200 changes to xdelta:116, ydelta:116 and use remaining easingPer as 100%, not 8% as previous.\n // Therefore, original easingPer by time is kept. And divided by (1 - self._initialEasingPer) which means new total easing percent. Like calculating 8% as 100%.\n\n this._initialEasingPer = this._prevEasingPer;\n animateParam.delta = this.axisManager.getDelta(currentPos, pos);\n animateParam.destPos = pos;\n }\n\n if (options === null || options === void 0 ? void 0 : options.duration) {\n var ratio = (diffTime + this._durationOffset) / animateParam.duration; // Use durationOffset for keeping animation ratio after duration is changed.\n // newRatio = (diffTime + newDurationOffset) / newDuration = oldRatio\n // newDurationOffset = oldRatio * newDuration - diffTime\n\n this._durationOffset = ratio * duration - diffTime;\n animateParam.duration = duration;\n }\n };\n\n __proto._initState = function (info) {\n this._initialEasingPer = 0;\n this._prevEasingPer = 0;\n this._durationOffset = 0;\n return {\n pos: info.depaPos,\n easingPer: 0,\n finished: false\n };\n };\n\n __proto._getNextState = function (prevState) {\n var _this = this;\n\n var animateParam = this._animateParam;\n var prevPos = prevState.pos;\n var destPos = animateParam.destPos;\n var directions = map(prevPos, function (value, key) {\n return value <= destPos[key] ? 1 : -1;\n });\n var diffTime = new Date().getTime() - animateParam.startTime;\n var ratio = (diffTime + this._durationOffset) / animateParam.duration;\n\n var easingPer = this._easing(ratio);\n\n var toPos = this.axisManager.map(prevPos, function (pos, options, key) {\n var nextPos = ratio >= 1 ? destPos[key] : pos + animateParam.delta[key] * (easingPer - _this._prevEasingPer) / (1 - _this._initialEasingPer); // Subtract distance from distance already moved.\n // Recalculate the remaining distance.\n // Fix the bouncing phenomenon by changing the range.\n\n var circulatedPos = getCirculatedPos(nextPos, options.range, options.circular);\n\n if (nextPos !== circulatedPos) {\n // circular\n var rangeOffset = directions[key] * (options.range[1] - options.range[0]);\n destPos[key] -= rangeOffset;\n prevPos[key] -= rangeOffset;\n }\n\n return circulatedPos;\n });\n this._prevEasingPer = easingPer;\n return {\n pos: toPos,\n easingPer: easingPer,\n finished: easingPer >= 1\n };\n };\n\n __proto._easing = function (p) {\n return p > 1 ? 1 : this._options.easing(p);\n };\n\n return EasingManager;\n}(AnimationManager);\n/**\n * @typedef {Object} AxisOption The Axis information. The key of the axis specifies the name to use as the logical virtual coordinate system.\n * @ko 축 정보. 축의 키는 논리적인 가상 좌표계로 사용할 이름을 지정한다.\n * @param {Number[]} [range] The range of coordinate 좌표 범위\n * @param {Number} [range[0]=0] The coordinate of the minimum 최소 좌표\n * @param {Number} [range[1]=0] The coordinate of the maximum 최대 좌표\n * @param {Number} [startPos=range[0]] The coordinates to be moved when creating an instance 인스턴스 생성시 이동할 좌표\n * @param {Number[]} [bounce] The size of bouncing area. The coordinates can exceed the coordinate area as much as the bouncing area based on user action. If the coordinates does not exceed the bouncing area when an element is dragged, the coordinates where bouncing effects are applied are retuned back into the coordinate area바운스 영역의 크기. 사용자의 동작에 따라 좌표가 좌표 영역을 넘어 바운스 영역의 크기만큼 더 이동할 수 있다. 사용자가 끌어다 놓는 동작을 했을 때 좌표가 바운스 영역에 있으면, 바운스 효과가 적용된 좌표가 다시 좌표 영역 안으로 들어온다\n * @param {Number} [bounce[0]=0] The size of coordinate of the minimum area 최소 좌표 바운스 영역의 크기\n * @param {Number} [bounce[1]=0] The size of coordinate of the maximum area 최대 좌표 바운스 영역의 크기\n * @param {Boolean[]} [circular] Indicates whether a circular element is available. If it is set to \"true\" and an element is dragged outside the coordinate area, the element will appear on the other side.순환 여부. 'true'로 설정한 방향의 좌표 영역 밖으로 엘리먼트가 이동하면 반대 방향에서 엘리먼트가 나타난다\n * @param {Boolean} [circular[0]=false] Indicates whether to circulate to the coordinate of the minimum 최소 좌표 방향의 순환 여부\n * @param {Boolean} [circular[1]=false] Indicates whether to circulate to the coordinate of the maximum 최대 좌표 방향의 순환 여부\n **/\n\n/**\n * @typedef {Object} AxesOption The option object of the eg.Axes module\n * @ko eg.Axes 모듈의 옵션 객체\n * @param {Function} [easing=easing.easeOutCubic] The easing function to apply to an animation 애니메이션에 적용할 easing 함수\n * @param {Number} [maximumDuration=Infinity] Maximum duration of the animation 가속도에 의해 애니메이션이 동작할 때의 최대 좌표 이동 시간\n * @param {Number} [minimumDuration=0] Minimum duration of the animation 가속도에 의해 애니메이션이 동작할 때의 최소 좌표 이동 시간\n * @param {Number} [deceleration=0.0006] Deceleration of the animation where acceleration is manually enabled by user. A higher value indicates shorter running time. 사용자의 동작으로 가속도가 적용된 애니메이션의 감속도. 값이 높을수록 애니메이션 실행 시간이 짧아진다\n * @param {Boolean} [interruptable=true] Indicates whether an animation is interruptible.\n * - true: It can be paused or stopped by user action or the API.\n * - false: It cannot be paused or stopped by user action or the API while it is running.\n * 진행 중인 애니메이션 중지 가능 여부.\n * - true: 사용자의 동작이나 API로 애니메이션을 중지할 수 있다.\n * - false: 애니메이션이 진행 중일 때는 사용자의 동작이나 API가 적용되지 않는다\n * @param {Number} [round=null] Rounding unit. For example, 0.1 rounds to 0.1 decimal point(6.1234 => 6.1), 5 rounds to 5 (93 => 95)\n * [Details](https://github.com/naver/egjs-axes/wiki/round-option)반올림 단위. 예를 들어 0.1 은 소숫점 0.1 까지 반올림(6.1234 => 6.1), 5 는 5 단위로 반올림(93 => 95).\n * [상세내용](https://github.com/naver/egjs-axes/wiki/round-option)\n * @param {Boolean} [nested=false] Whether the event propagates to other instances when the coordinates reach the end of the movable area 좌표가 이동 가능한 영역의 끝까지 도달했을 때 다른 인스턴스들로의 이벤트 전파 여부\n **/\n\n/**\n * A module used to change the information of user action entered by various input devices such as touch screen or mouse into the logical virtual coordinates. You can easily create a UI that responds to user actions.\n * @ko 터치 입력 장치나 마우스와 같은 다양한 입력 장치를 통해 전달 받은 사용자의 동작을 논리적인 가상 좌표로 변경하는 모듈이다. 사용자 동작에 반응하는 UI를 손쉽게 만들수 있다.\n * @extends eg.Component\n *\n * @param {Object.} axis Axis information managed by eg.Axes. The key of the axis specifies the name to use as the logical virtual coordinate system. eg.Axes가 관리하는 축 정보. 축의 키는 논리적인 가상 좌표계로 사용할 이름을 지정한다.\n * @param {AxesOption} [options={}] The option object of the eg.Axes moduleeg.Axes 모듈의 옵션 객체\n * @param {Object.} [startPos={}] The coordinates to be moved when creating an instance. It is applied with higher priority than startPos of axisOption.인스턴스 생성시 이동할 좌표, axisOption의 startPos보다 높은 우선순위로 적용된다.\n *\n * @support {\"ie\": \"10+\", \"ch\" : \"latest\", \"ff\" : \"latest\", \"sf\" : \"latest\", \"edge\" : \"latest\", \"ios\" : \"7+\", \"an\" : \"2.3+ (except 3.x)\"}\n * @example\n * ```js\n * // 1. Initialize eg.Axes\n * const axes = new eg.Axes({\n * something1: {\n * range: [0, 150],\n * bounce: 50\n * },\n * something2: {\n * range: [0, 200],\n * bounce: 100\n * },\n * somethingN: {\n * range: [1, 10],\n * }\n * }, {\n * deceleration : 0.0024\n * });\n *\n * // 2. attach event handler\n * axes.on({\n * \"hold\" : function(evt) {\n * },\n * \"release\" : function(evt) {\n * },\n * \"animationStart\" : function(evt) {\n * },\n * \"animationEnd\" : function(evt) {\n * },\n * \"change\" : function(evt) {\n * }\n * });\n *\n * // 3. Initialize inputTypes\n * const panInputArea = new eg.Axes.PanInput(\"#area\", {\n * scale: [0.5, 1]\n * });\n * const panInputHmove = new eg.Axes.PanInput(\"#hmove\");\n * const panInputVmove = new eg.Axes.PanInput(\"#vmove\");\n * const pinchInputArea = new eg.Axes.PinchInput(\"#area\", {\n * scale: 1.5\n * });\n *\n * // 4. Connect eg.Axes and InputTypes\n * // [PanInput] When the mouse or touchscreen is down and moved.\n * // Connect the 'something2' axis to the mouse or touchscreen x position and\n * // connect the 'somethingN' axis to the mouse or touchscreen y position.\n * axes.connect([\"something2\", \"somethingN\"], panInputArea); // or axes.connect(\"something2 somethingN\", panInputArea);\n *\n * // Connect only one 'something1' axis to the mouse or touchscreen x position.\n * axes.connect([\"something1\"], panInputHmove); // or axes.connect(\"something1\", panInputHmove);\n *\n * // Connect only one 'something2' axis to the mouse or touchscreen y position.\n * axes.connect([\"\", \"something2\"], panInputVmove); // or axes.connect(\" something2\", panInputVmove);\n *\n * // [PinchInput] Connect 'something2' axis when two pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * axes.connect(\"something2\", pinchInputArea);\n * ```\n */\n\n\nvar Axes = /*#__PURE__*/function (_super) {\n __extends(Axes, _super);\n /**\n *\n */\n\n\n function Axes(axis, options, startPos) {\n if (axis === void 0) {\n axis = {};\n }\n\n if (options === void 0) {\n options = {};\n }\n\n if (startPos === void 0) {\n startPos = {};\n }\n\n var _this = _super.call(this) || this;\n\n _this.axis = axis;\n _this._inputs = [];\n _this.options = __assign({\n easing: function (x) {\n return 1 - Math.pow(1 - x, 3);\n },\n interruptable: true,\n maximumDuration: Infinity,\n minimumDuration: 0,\n deceleration: 0.0006,\n round: null,\n nested: false\n }, options);\n Object.keys(startPos).forEach(function (key) {\n _this.axis[key].startPos = startPos[key];\n });\n _this.interruptManager = new InterruptManager(_this.options);\n _this.axisManager = new AxisManager(_this.axis);\n _this.eventManager = new EventManager(_this);\n _this.animationManager = new EasingManager(_this);\n _this.inputObserver = new InputObserver(_this);\n\n _this.eventManager.setAnimationManager(_this.animationManager);\n\n _this.eventManager.triggerChange(_this.axisManager.get());\n\n return _this;\n }\n\n var __proto = Axes.prototype;\n Object.defineProperty(__proto, \"holding\", {\n /**\n * @name Axes#holding\n * @desc Returns true if at least one input is in progress.\n * @ko 입력이 하나 이상 진행 중인지 여부를 반환한다.\n *\n * @readonly\n * @type {boolean}\n * @example\n * ```js\n * const axes = new eg.Axes({\n * x: {\n * range: [0, 100],\n * },\n * });\n *\n * axes.holding\n * ```\n */\n get: function () {\n return this.eventManager.holdingCount > 0;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Connect the axis of eg.Axes to the inputType.\n * @ko eg.Axes의 축과 inputType을 연결한다\n * @param {(String[]|String)} axes The name of the axis to associate with inputType inputType과 연결할 축의 이름\n * @param {Object} inputType The inputType instance to associate with the axis of eg.Axes eg.Axes의 축과 연결할 inputType 인스턴스\n * @return {eg.Axes} An instance of a module itself 모듈 자신의 인스턴스\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * }\n * });\n *\n * axes.connect(\"x\", new eg.Axes.PanInput(\"#area1\"))\n * .connect(\"x xOther\", new eg.Axes.PanInput(\"#area2\"))\n * .connect(\" xOther\", new eg.Axes.PanInput(\"#area3\"))\n * .connect([\"x\"], new eg.Axes.PanInput(\"#area4\"))\n * .connect([\"xOther\", \"x\"], new eg.Axes.PanInput(\"#area5\"))\n * .connect([\"\", \"xOther\"], new eg.Axes.PanInput(\"#area6\"));\n * ```\n */\n\n __proto.connect = function (axes, inputType) {\n var mapped;\n\n if (typeof axes === \"string\") {\n mapped = axes.split(\" \");\n } else {\n mapped = axes.concat();\n } // check same instance\n\n\n if (~this._inputs.indexOf(inputType)) {\n this.disconnect(inputType);\n }\n\n inputType.mapAxes(mapped);\n inputType.connect(this.inputObserver);\n\n this._inputs.push(inputType);\n\n return this;\n };\n /**\n * Disconnect the axis of eg.Axes from the inputType.\n * @ko eg.Axes의 축과 inputType의 연결을 끊는다.\n * @param {Object} [inputType] An inputType instance associated with the axis of eg.Axes eg.Axes의 축과 연결한 inputType 인스턴스\n * @return {eg.Axes} An instance of a module itself 모듈 자신의 인스턴스\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * }\n * });\n *\n * const input1 = new eg.Axes.PanInput(\"#area1\");\n * const input2 = new eg.Axes.PanInput(\"#area2\");\n * const input3 = new eg.Axes.PanInput(\"#area3\");\n *\n * axes.connect(\"x\", input1);\n * .connect(\"x xOther\", input2)\n * .connect([\"xOther\", \"x\"], input3);\n *\n * axes.disconnect(input1); // disconnects input1\n * axes.disconnect(); // disconnects all of them\n * ```\n */\n\n\n __proto.disconnect = function (inputType) {\n if (inputType) {\n var index = this._inputs.indexOf(inputType);\n\n if (index >= 0) {\n this._inputs[index].disconnect();\n\n this._inputs.splice(index, 1);\n }\n } else {\n this._inputs.forEach(function (v) {\n return v.disconnect();\n });\n\n this._inputs = [];\n }\n\n return this;\n };\n /**\n * Returns the current position of the coordinates.\n * @ko 좌표의 현재 위치를 반환한다\n * @param {Object} [axes] The names of the axis 축 이름들\n * @return {Object.} Axis coordinate information 축 좌표 정보\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * });\n *\n * axes.get(); // {\"x\": 0, \"xOther\": -100, \"zoom\": 50}\n * axes.get([\"x\", \"zoom\"]); // {\"x\": 0, \"zoom\": 50}\n * ```\n */\n\n\n __proto.get = function (axes) {\n return this.axisManager.get(axes);\n };\n /**\n * Moves an axis to specific coordinates.\n * @ko 좌표를 이동한다.\n * @param {Object.} pos The coordinate to move to 이동할 좌표\n * @param {Number} [duration=0] Duration of the animation (unit: ms) 애니메이션 진행 시간(단위: ms)\n * @return {eg.Axes} An instance of a module itself 모듈 자신의 인스턴스\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * });\n *\n * axes.setTo({\"x\": 30, \"zoom\": 60});\n * axes.get(); // {\"x\": 30, \"xOther\": -100, \"zoom\": 60}\n *\n * axes.setTo({\"x\": 100, \"xOther\": 60}, 1000); // animatation\n *\n * // after 1000 ms\n * axes.get(); // {\"x\": 100, \"xOther\": 60, \"zoom\": 60}\n * ```\n */\n\n\n __proto.setTo = function (pos, duration) {\n if (duration === void 0) {\n duration = 0;\n }\n\n this.animationManager.setTo(pos, duration);\n return this;\n };\n /**\n * Moves an axis from the current coordinates to specific coordinates.\n * @ko 현재 좌표를 기준으로 좌표를 이동한다.\n * @param {Object.} pos The coordinate to move to 이동할 좌표\n * @param {Number} [duration=0] Duration of the animation (unit: ms) 애니메이션 진행 시간(단위: ms)\n * @return {eg.Axes} An instance of a module itself 모듈 자신의 인스턴스\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * });\n *\n * axes.setBy({\"x\": 30, \"zoom\": 10});\n * axes.get(); // {\"x\": 30, \"xOther\": -100, \"zoom\": 60}\n *\n * axes.setBy({\"x\": 70, \"xOther\": 60}, 1000); // animatation\n *\n * // after 1000 ms\n * axes.get(); // {\"x\": 100, \"xOther\": -40, \"zoom\": 60}\n * ```\n */\n\n\n __proto.setBy = function (pos, duration) {\n if (duration === void 0) {\n duration = 0;\n }\n\n this.animationManager.setBy(pos, duration);\n return this;\n };\n /**\n * Change the options of Axes instance.\n * @ko 인스턴스의 옵션을 변경한다.\n * @param {AxesOption} options Axes options to change 변경할 옵션 목록\n * @return {eg.Axes} An instance of a module itself 모듈 자신의 인스턴스\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * }, {\n * round: 10,\n * });\n *\n * axes.setTo({\"x\": 48});\n * axes.get(); // {\"x\": 50}\n *\n * axes.setOptions({\n * round: 1,\n * });\n *\n * axes.setTo({\"x\": 48});\n * axes.get(); // {\"x\": 48}\n * ```\n */\n\n\n __proto.setOptions = function (options) {\n this.options = __assign(__assign({}, this.options), options);\n this.animationManager.setOptions(options);\n return this;\n };\n /**\n * Change the information of an existing axis.\n * @ko 존재하는 축의 정보를 변경한다.\n * @param {Object.} axis Axis options to change 변경할 축의 정보\n * @return {eg.Axes} An instance of a module itself 모듈 자신의 인스턴스\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * });\n *\n * axes.setTo({\"x\": 150});\n * axes.get(); // {\"x\": 100}\n *\n * axes.setAxis({\n * \"x\": {\n * range: [0, 200]\n * },\n * });\n *\n * axes.setTo({\"x\": 150});\n * axes.get(); // {\"x\": 150}\n * ```\n */\n\n\n __proto.setAxis = function (axis) {\n this.axisManager.setAxis(axis);\n return this;\n };\n /**\n * Stop an animation in progress.\n * @ko 재생 중인 애니메이션을 정지한다.\n * @return {eg.Axes} An instance of a module itself 모듈 자신의 인스턴스\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * });\n *\n * axes.setTo({\"x\": 10}, 1000); // start animatation\n *\n * // after 500 ms\n * axes.stopAnimation(); // stop animation during movement.\n * ```\n */\n\n\n __proto.stopAnimation = function () {\n this.animationManager.stopAnimation();\n this.animationManager.finish(false);\n return this;\n };\n /**\n * Change the destination of an animation in progress.\n * @ko 재생 중인 애니메이션의 목적지와 진행 시간을 변경한다.\n * @param {UpdateAnimationOption} pos The coordinate to move to 이동할 좌표\n * @return {eg.Axes} An instance of a module itself 모듈 자신의 인스턴스\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 200]\n * },\n * \"y\": {\n * range: [0, 200]\n * }\n * });\n *\n * axes.setTo({\"x\": 50, \"y\": 50}, 1000); // trigger animation by setTo\n *\n * // after 500 ms\n * axes.updateAnimation({destPos: {\"x\": 100, \"y\": 100}}); // animation will end after 500 ms, at {\"x\": 100, \"y\": 100}\n *\n * // after 500 ms\n * axes.setTo({\"x\": 50, \"y\": 50}, 1000); // trigger animation by setTo\n *\n * // after 700 ms\n * axes.updateAnimation({destPos: {\"x\": 100, \"y\": 100}, duration: 1500, restart: true}); // this works same as axes.setTo({\"x\": 100, \"y\": 100}, 800) since restart is true.\n * ```\n */\n\n\n __proto.updateAnimation = function (options) {\n this.animationManager.updateAnimation(options);\n return this;\n };\n /**\n * Returns whether there is a coordinate in the bounce area of ​​the target axis.\n * @ko 대상 축 중 bounce영역에 좌표가 존재하는지를 반환한다\n * @param {Object} [axes] The names of the axis 축 이름들\n * @return {Boolen} Whether the bounce area exists. bounce 영역 존재 여부\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * });\n *\n * axes.isBounceArea([\"x\"]);\n * axes.isBounceArea([\"x\", \"zoom\"]);\n * axes.isBounceArea();\n * ```\n */\n\n\n __proto.isBounceArea = function (axes) {\n return this.axisManager.isOutside(axes);\n };\n /**\n * Destroys properties, and events used in a module and disconnect all connections to inputTypes.\n * @ko 모듈에 사용한 속성, 이벤트를 해제한다. 모든 inputType과의 연결을 끊는다.\n */\n\n\n __proto.destroy = function () {\n this.disconnect();\n this.eventManager.destroy();\n };\n /**\n * @name VERSION\n * @desc Version info string\n * @ko 버전정보 문자열\n *\n * @constant\n * @type {String}\n * @example\n * ```js\n * eg.Axes.VERSION; // ex) 3.3.3\n * ```\n */\n\n\n Axes.VERSION = \"3.9.0\";\n /* eslint-enable */\n\n /**\n * @name TRANSFORM\n * @desc Returns the transform attribute with CSS vendor prefixes.\n * @ko CSS vendor prefixes를 붙인 transform 속성을 반환한다.\n *\n * @constant\n * @type {String}\n * @example\n * ```js\n * eg.Axes.TRANSFORM; // \"transform\" or \"webkitTransform\"\n * ```\n */\n\n Axes.TRANSFORM = TRANSFORM;\n /**\n * @name DIRECTION_NONE\n * @constant\n * @type {Number}\n */\n\n Axes.DIRECTION_NONE = DIRECTION_NONE;\n /**\n * @name DIRECTION_LEFT\n * @constant\n * @type {Number}\n */\n\n Axes.DIRECTION_LEFT = DIRECTION_LEFT;\n /**\n * @name DIRECTION_RIGHT\n * @constant\n * @type {Number}\n */\n\n Axes.DIRECTION_RIGHT = DIRECTION_RIGHT;\n /**\n * @name DIRECTION_UP\n * @constant\n * @type {Number}\n */\n\n Axes.DIRECTION_UP = DIRECTION_UP;\n /**\n * @name DIRECTION_DOWN\n * @constant\n * @type {Number}\n */\n\n Axes.DIRECTION_DOWN = DIRECTION_DOWN;\n /**\n * @name DIRECTION_HORIZONTAL\n * @constant\n * @type {Number}\n */\n\n Axes.DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL;\n /**\n * @name DIRECTION_VERTICAL\n * @constant\n * @type {Number}\n */\n\n Axes.DIRECTION_VERTICAL = DIRECTION_VERTICAL;\n /**\n * @name DIRECTION_ALL\n * @constant\n * @type {Number}\n */\n\n Axes.DIRECTION_ALL = DIRECTION_ALL;\n\n __decorate([Computed], Axes.prototype, \"holding\", null);\n\n Axes = __decorate([ReactiveSubscribe], Axes);\n return Axes;\n}(Component);\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n// get user's direction\n\n\nvar getDirectionByAngle = function (angle, thresholdAngle) {\n if (thresholdAngle < 0 || thresholdAngle > 90) {\n return DIRECTION_NONE;\n }\n\n var toAngle = Math.abs(angle);\n return toAngle > thresholdAngle && toAngle < 180 - thresholdAngle ? DIRECTION_VERTICAL : DIRECTION_HORIZONTAL;\n};\n/**\n * @typedef {Object} PanInputOption The option object of the eg.Axes.PanInput module.\n * @ko eg.Axes.PanInput 모듈의 옵션 객체\n * @param {String[]} [inputType=[\"touch\", \"mouse\", \"pointer\"]] Types of input devices\n * - touch: Touch screen\n * - mouse: Mouse\n * - pointer: Mouse and touch 입력 장치 종류\n * - touch: 터치 입력 장치\n * - mouse: 마우스\n * - pointer: 마우스 및 터치\n * @param {String[]} [inputKey=[\"any\"]] List of key combinations to allow input\n * - any: any key\n * - shift: shift key\n * - ctrl: ctrl key and pinch gesture on the trackpad\n * - alt: alt key\n * - meta: meta key\n * - none: none of these keys are pressed 입력을 허용할 키 조합 목록\n * - any: 아무 키\n * - shift: shift 키\n * - ctrl: ctrl 키 및 트랙패드의 pinch 제스쳐\n * - alt: alt 키\n * - meta: meta 키\n * - none: 아무 키도 눌리지 않은 상태 \n * @param {String[]} [inputButton=[\"left\"]] List of buttons to allow input\n * - left: Left mouse button and normal touch\n * - middle: Mouse wheel press\n * - right: Right mouse button 입력을 허용할 버튼 목록\n * - left: 마우스 왼쪽 버튼\n * - middle: 마우스 휠 눌림\n * - right: 마우스 오른쪽 버튼 \n * @param {Number[]} [scale] Coordinate scale that a user can move사용자의 동작으로 이동하는 좌표의 배율\n * @param {Number} [scale[0]=1] horizontal axis scale 수평축 배율\n * @param {Number} [scale[1]=1] vertical axis scale 수직축 배율\n * @param {Number} [thresholdAngle=45] The threshold value that determines whether user action is horizontal or vertical (0~90) 사용자의 동작이 가로 방향인지 세로 방향인지 판단하는 기준 각도(0~90)\n * @param {Number} [threshold=0] Minimal pan distance required before recognizing 사용자의 Pan 동작을 인식하기 위해산 최소한의 거리\n * @param {Boolean} [preventClickOnDrag=false] Whether to cancel the {@link https://developer.mozilla.org/en/docs/Web/API/Element/click_event click} event when the user finishes dragging more than 1 pixel 사용자가 1픽셀 이상 드래그를 마쳤을 때 {@link https://developer.mozilla.org/ko/docs/Web/API/Element/click_event click} 이벤트 취소 여부\n * @param {Boolean} [preventDefaultOnDrag=false] Whether to use the {@link https://developer.mozilla.org/ko/docs/Web/API/Event/preventDefault preventDefault} when the user starts dragging 사용자가 드래그를 시작할 때 {@link https://developer.mozilla.org/ko/docs/Web/API/Event/preventDefault preventDefault} 실행 여부\n * @param {Number} [iOSEdgeSwipeThreshold=30] Area (px) that can go to the next page when swiping the right edge in iOS safari iOS Safari에서 오른쪽 엣지를 스와이프 하는 경우 다음 페이지로 넘어갈 수 있는 영역(px)\n * @param {String} [touchAction=null] Value that overrides the element's \"touch-action\" css property. If set to null, it is automatically set to prevent scrolling in the direction of the connected axis. 엘리먼트의 \"touch-action\" CSS 속성을 덮어쓰는 값. 만약 null로 설정된 경우, 연결된 축 방향으로의 스크롤을 방지하게끔 자동으로 설정된다.\n **/\n\n/**\n * A module that passes the amount of change to eg.Axes when the mouse or touchscreen is down and moved. use less than two axes.\n * @ko 마우스나 터치 스크린을 누르고 움직일때의 변화량을 eg.Axes에 전달하는 모듈. 두개 이하의 축을 사용한다.\n *\n * @example\n * ```js\n * const pan = new eg.Axes.PanInput(\"#area\", {\n * inputType: [\"touch\"],\n * scale: [1, 1.3],\n * });\n *\n * // Connect the 'something2' axis to the mouse or touchscreen x position when the mouse or touchscreen is down and moved.\n * // Connect the 'somethingN' axis to the mouse or touchscreen y position when the mouse or touchscreen is down and moved.\n * axes.connect([\"something2\", \"somethingN\"], pan); // or axes.connect(\"something2 somethingN\", pan);\n *\n * // Connect only one 'something1' axis to the mouse or touchscreen x position when the mouse or touchscreen is down and moved.\n * axes.connect([\"something1\"], pan); // or axes.connect(\"something1\", pan);\n *\n * // Connect only one 'something2' axis to the mouse or touchscreen y position when the mouse or touchscreen is down and moved.\n * axes.connect([\"\", \"something2\"], pan); // or axes.connect(\" something2\", pan);\n * ```\n * @param {String|HTMLElement|Ref|jQuery} element An element to use the eg.Axes.PanInput module eg.Axes.PanInput 모듈을 사용할 엘리먼트\n * @param {PanInputOption} [options={}] The option object of the eg.Axes.PanInput moduleeg.Axes.PanInput 모듈의 옵션 객체\n */\n\n\nvar PanInput = /*#__PURE__*/function () {\n /**\n *\n */\n function PanInput(el, options) {\n var _this = this;\n\n this.axes = [];\n this.element = null;\n this._enabled = false;\n this._activeEvent = null;\n this._atRightEdge = false;\n this._rightEdgeTimer = 0;\n this._dragged = false;\n this._isOverThreshold = false;\n\n this._preventClickWhenDragged = function (e) {\n if (_this._dragged) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n _this._dragged = false;\n };\n\n this._voidFunction = function () {};\n\n this.element = $(el);\n this.options = __assign({\n inputType: [\"touch\", \"mouse\", \"pointer\"],\n inputKey: [ANY],\n inputButton: [MOUSE_LEFT],\n scale: [1, 1],\n thresholdAngle: 45,\n threshold: 0,\n preventClickOnDrag: false,\n preventDefaultOnDrag: false,\n iOSEdgeSwipeThreshold: IOS_EDGE_THRESHOLD,\n releaseOnScroll: false,\n touchAction: null\n }, options);\n this._onPanstart = this._onPanstart.bind(this);\n this._onPanmove = this._onPanmove.bind(this);\n this._onPanend = this._onPanend.bind(this);\n }\n\n var __proto = PanInput.prototype;\n\n __proto.mapAxes = function (axes) {\n this._direction = getDirection(!!axes[0], !!axes[1]);\n this.axes = axes;\n };\n\n __proto.connect = function (observer) {\n if (this._activeEvent) {\n this._detachElementEvent();\n\n this._detachWindowEvent(this._activeEvent);\n }\n\n this._attachElementEvent(observer);\n\n this._originalCssProps = setCssProps(this.element, this.options, this._direction);\n return this;\n };\n\n __proto.disconnect = function () {\n this._detachElementEvent();\n\n this._detachWindowEvent(this._activeEvent);\n\n if (!isCssPropsFromAxes(this._originalCssProps)) {\n revertCssProps(this.element, this._originalCssProps);\n }\n\n this._direction = DIRECTION_NONE;\n return this;\n };\n /**\n * Destroys elements, properties, and events used in a module.\n * @ko 모듈에 사용한 엘리먼트와 속성, 이벤트를 해제한다.\n */\n\n\n __proto.destroy = function () {\n this.disconnect();\n this.element = null;\n };\n /**\n * Enables input devices\n * @ko 입력 장치를 사용할 수 있게 한다\n * @return {PanInput} An instance of a module itself 모듈 자신의 인스턴스\n */\n\n\n __proto.enable = function () {\n this._enabled = true;\n return this;\n };\n /**\n * Disables input devices\n * @ko 입력 장치를 사용할 수 없게 한다.\n * @return {PanInput} An instance of a module itself 모듈 자신의 인스턴스\n */\n\n\n __proto.disable = function () {\n this._enabled = false;\n return this;\n };\n /**\n * Returns whether to use an input device\n * @ko 입력 장치 사용 여부를 반환한다.\n * @return {Boolean} Whether to use an input device 입력장치 사용여부\n */\n\n\n __proto.isEnabled = function () {\n return this._enabled;\n };\n /**\n * Releases current user input.\n * @ko 사용자의 입력을 강제로 중단시킨다.\n * @return {PanInput} An instance of a module itself 모듈 자신의 인스턴스\n */\n\n\n __proto.release = function () {\n var activeEvent = this._activeEvent;\n var prevEvent = activeEvent.prevEvent;\n activeEvent.onRelease();\n\n this._observer.release(this, prevEvent, [0, 0]);\n\n this._detachWindowEvent(activeEvent);\n\n return this;\n };\n\n __proto._onPanstart = function (event) {\n var _a = this.options,\n inputKey = _a.inputKey,\n inputButton = _a.inputButton,\n preventDefaultOnDrag = _a.preventDefaultOnDrag;\n var activeEvent = this._activeEvent;\n var panEvent = activeEvent.onEventStart(event, inputKey, inputButton);\n\n if (!panEvent || !this._enabled || activeEvent.getTouches(event, inputButton) > 1) {\n return;\n }\n\n if (panEvent.srcEvent.cancelable !== false) {\n var edgeThreshold = this.options.iOSEdgeSwipeThreshold;\n this._dragged = false;\n this._isOverThreshold = false;\n\n this._observer.hold(this, panEvent);\n\n this._atRightEdge = IS_IOS_SAFARI && panEvent.center.x > window.innerWidth - edgeThreshold;\n\n this._attachWindowEvent(activeEvent);\n\n preventDefaultOnDrag && panEvent.srcEvent.type !== \"touchstart\" && panEvent.srcEvent.preventDefault();\n activeEvent.prevEvent = panEvent;\n }\n };\n\n __proto._onPanmove = function (event) {\n var _this = this;\n\n var _a = this.options,\n iOSEdgeSwipeThreshold = _a.iOSEdgeSwipeThreshold,\n preventClickOnDrag = _a.preventClickOnDrag,\n releaseOnScroll = _a.releaseOnScroll,\n inputKey = _a.inputKey,\n inputButton = _a.inputButton,\n threshold = _a.threshold,\n thresholdAngle = _a.thresholdAngle;\n var activeEvent = this._activeEvent;\n var panEvent = activeEvent.onEventMove(event, inputKey, inputButton);\n var touches = activeEvent.getTouches(event, inputButton);\n\n if (touches === 0 || releaseOnScroll && panEvent && !panEvent.srcEvent.cancelable) {\n this._onPanend(event);\n\n return;\n }\n\n if (!panEvent || !this._enabled || touches > 1) {\n return;\n }\n\n var userDirection = getDirectionByAngle(panEvent.angle, thresholdAngle);\n var useHorizontal = useDirection(DIRECTION_HORIZONTAL, this._direction, userDirection);\n var useVertical = useDirection(DIRECTION_VERTICAL, this._direction, userDirection);\n\n if (activeEvent.prevEvent && IS_IOS_SAFARI) {\n var swipeLeftToRight = panEvent.center.x < 0;\n\n if (swipeLeftToRight) {\n // iOS swipe left => right\n this.release();\n return;\n } else if (this._atRightEdge) {\n clearTimeout(this._rightEdgeTimer); // - is right to left\n\n var swipeRightToLeft = panEvent.deltaX < -iOSEdgeSwipeThreshold;\n\n if (swipeRightToLeft) {\n this._atRightEdge = false;\n } else {\n // iOS swipe right => left\n this._rightEdgeTimer = window.setTimeout(function () {\n return _this.release();\n }, 100);\n }\n }\n }\n\n var distance = this._getDistance([panEvent.deltaX, panEvent.deltaY], [useHorizontal, useVertical]);\n\n var offset = this._getOffset([panEvent.offsetX, panEvent.offsetY], [useHorizontal, useVertical]);\n\n var prevent = offset.some(function (v) {\n return v !== 0;\n });\n\n if (prevent) {\n if (panEvent.srcEvent.cancelable !== false) {\n panEvent.srcEvent.preventDefault();\n }\n\n panEvent.srcEvent.stopPropagation();\n }\n\n panEvent.preventSystemEvent = prevent;\n\n if (prevent && (this._isOverThreshold || distance >= threshold)) {\n this._dragged = preventClickOnDrag;\n this._isOverThreshold = true;\n\n this._observer.change(this, panEvent, toAxis(this.axes, offset));\n }\n\n activeEvent.prevEvent = panEvent;\n };\n\n __proto._onPanend = function (event) {\n var inputButton = this.options.inputButton;\n var activeEvent = this._activeEvent;\n activeEvent.onEventEnd(event);\n\n if (!this._enabled || activeEvent.getTouches(event, inputButton) !== 0) {\n return;\n }\n\n this._detachWindowEvent(activeEvent);\n\n clearTimeout(this._rightEdgeTimer);\n var prevEvent = activeEvent.prevEvent;\n var velocity = this._isOverThreshold ? this._getOffset([Math.abs(prevEvent.velocityX) * (prevEvent.offsetX < 0 ? -1 : 1), Math.abs(prevEvent.velocityY) * (prevEvent.offsetY < 0 ? -1 : 1)], [useDirection(DIRECTION_HORIZONTAL, this._direction), useDirection(DIRECTION_VERTICAL, this._direction)]) : [0, 0];\n activeEvent.onRelease();\n\n this._observer.release(this, prevEvent, velocity);\n };\n\n __proto._attachWindowEvent = function (activeEvent) {\n var _this = this;\n\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.move.forEach(function (event) {\n window.addEventListener(event, _this._onPanmove, getAddEventOptions(event));\n });\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.end.forEach(function (event) {\n window.addEventListener(event, _this._onPanend, getAddEventOptions(event));\n });\n };\n\n __proto._detachWindowEvent = function (activeEvent) {\n var _this = this;\n\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.move.forEach(function (event) {\n window.removeEventListener(event, _this._onPanmove);\n });\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.end.forEach(function (event) {\n window.removeEventListener(event, _this._onPanend);\n });\n };\n\n __proto._getOffset = function (properties, direction) {\n var scale = this.options.scale;\n return [direction[0] ? properties[0] * scale[0] : 0, direction[1] ? properties[1] * scale[1] : 0];\n };\n\n __proto._getDistance = function (delta, direction) {\n return Math.sqrt(Number(direction[0]) * Math.pow(delta[0], 2) + Number(direction[1]) * Math.pow(delta[1], 2));\n };\n\n __proto._attachElementEvent = function (observer) {\n var _this = this;\n\n var activeEvent = convertInputType(this.options.inputType);\n var element = this.element;\n\n if (!activeEvent) {\n return;\n }\n\n if (!element) {\n throw new Error(\"Element to connect input does not exist.\");\n }\n\n this._observer = observer;\n this._enabled = true;\n this._activeEvent = activeEvent;\n element.addEventListener(\"click\", this._preventClickWhenDragged, true);\n activeEvent.start.forEach(function (event) {\n element.addEventListener(event, _this._onPanstart);\n }); // adding event listener to element prevents invalid behavior in iOS Safari\n\n activeEvent.move.forEach(function (event) {\n element.addEventListener(event, _this._voidFunction);\n });\n };\n\n __proto._detachElementEvent = function () {\n var _this = this;\n\n var activeEvent = this._activeEvent;\n var element = this.element;\n\n if (element) {\n element.removeEventListener(\"click\", this._preventClickWhenDragged, true);\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.start.forEach(function (event) {\n element.removeEventListener(event, _this._onPanstart);\n });\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.move.forEach(function (event) {\n element.removeEventListener(event, _this._voidFunction);\n });\n }\n\n this._enabled = false;\n this._observer = null;\n };\n\n return PanInput;\n}();\n/**\n * A module that passes the angle moved by touch to Axes and uses one axis of rotation.\n * [Details](https://github.com/naver/egjs-axes/wiki/RotatePanInput)\n * @ko 터치에 의해 움직인 각도를 Axes 에 전달하며 1개의 회전축만 사용한다.\n * [상세내용](https://github.com/naver/egjs-axes/wiki/RotatePanInput-%7C-%ED%95%9C%EA%B5%AD%EC%96%B4)\n *\n * @example\n * ```js\n * const input = new eg.Axes.RotatePanInput(\"#area\");\n *\n * var axes = new eg.Axes({\n *\t// property name('angle') could be anything you want (eg. x, y, z...)\n * \tangle: {\n * \t\trange: [-180, 180] // from -180deg to 180deg\n * \t}\n * });\n *\n * axes.connect(\"angle\", input)\n * ```\n * @param {HTMLElement|String|jQuery} element An element to use the eg.Axes.RotatePanInput module eg.Axes.RotatePanInput 모듈을 사용할 엘리먼트\n * @param {PanInputOption} [options] The option object of the eg.Axes.PanInput moduleeg.Axes.PanInput 모듈의 옵션 객체\n * @extends PanInput\n */\n\n\nvar RotatePanInput = /*#__PURE__*/function (_super) {\n __extends(RotatePanInput, _super);\n /**\n *\n */\n\n\n function RotatePanInput(el, options) {\n var _this = _super.call(this, el, options) || this;\n\n _this._prevQuadrant = null;\n _this._lastDiff = 0;\n return _this;\n }\n\n var __proto = RotatePanInput.prototype;\n\n __proto.mapAxes = function (axes) {\n this._direction = Axes.DIRECTION_ALL;\n this.axes = axes;\n };\n\n __proto._onPanstart = function (event) {\n var _a = this.options,\n inputKey = _a.inputKey,\n inputButton = _a.inputButton;\n var activeEvent = this._activeEvent;\n var panEvent = activeEvent.onEventStart(event, inputKey, inputButton);\n\n if (!panEvent || !this.isEnabled()) {\n return;\n }\n\n var rect = this.element.getBoundingClientRect();\n\n this._observer.hold(this, panEvent);\n\n this._attachWindowEvent(activeEvent); // TODO: how to do if element is ellipse not circle.\n\n\n this._coefficientForDistanceToAngle = 360 / (rect.width * Math.PI); // from 2*pi*r * x / 360\n // TODO: provide a way to set origin like https://developer.mozilla.org/en-US/docs/Web/CSS/transform-origin\n\n this._rotateOrigin = [rect.left + (rect.width - 1) / 2, rect.top + (rect.height - 1) / 2]; // init angle.\n\n this._prevAngle = null;\n\n this._triggerChange(panEvent);\n\n activeEvent.prevEvent = panEvent;\n };\n\n __proto._onPanmove = function (event) {\n var _a = this.options,\n inputKey = _a.inputKey,\n inputButton = _a.inputButton;\n var activeEvent = this._activeEvent;\n var panEvent = activeEvent.onEventMove(event, inputKey, inputButton);\n\n if (!panEvent || !this.isEnabled()) {\n return;\n }\n\n if (panEvent.srcEvent.cancelable !== false) {\n panEvent.srcEvent.preventDefault();\n }\n\n panEvent.srcEvent.stopPropagation();\n\n this._triggerChange(panEvent);\n\n activeEvent.prevEvent = panEvent;\n };\n\n __proto._onPanend = function (event) {\n var activeEvent = this._activeEvent;\n activeEvent.onEventEnd(event);\n\n if (!this.isEnabled()) {\n return;\n }\n\n var prevEvent = activeEvent.prevEvent;\n\n this._triggerChange(prevEvent);\n\n var vx = prevEvent.velocityX;\n var vy = prevEvent.velocityY;\n var velocity = Math.sqrt(vx * vx + vy * vy) * (this._lastDiff > 0 ? -1 : 1); // clockwise\n\n activeEvent.onRelease();\n\n this._observer.release(this, prevEvent, [velocity * this._coefficientForDistanceToAngle]);\n\n this._detachWindowEvent(activeEvent);\n };\n\n __proto._triggerChange = function (event) {\n var _a = this._getPosFromOrigin(event.center.x, event.center.y),\n x = _a.x,\n y = _a.y;\n\n var angle = getAngle(x, y);\n var positiveAngle = angle < 0 ? 360 + angle : angle;\n\n var quadrant = this._getQuadrant(event.center.x, event.center.y);\n\n var diff = this._getDifference(this._prevAngle, positiveAngle, this._prevQuadrant, quadrant);\n\n this._prevAngle = positiveAngle;\n this._prevQuadrant = quadrant;\n\n if (diff === 0) {\n return;\n }\n\n this._lastDiff = diff;\n\n this._observer.change(this, event, toAxis(this.axes, [-diff])); // minus for clockwise\n\n };\n\n __proto._getDifference = function (prevAngle, angle, prevQuadrant, quadrant) {\n var diff;\n\n if (prevAngle === null) {\n diff = 0;\n } else if (prevQuadrant === 1 && quadrant === 4) {\n diff = -prevAngle - (360 - angle);\n } else if (prevQuadrant === 4 && quadrant === 1) {\n diff = 360 - prevAngle + angle;\n } else {\n diff = angle - prevAngle;\n }\n\n return diff;\n };\n\n __proto._getPosFromOrigin = function (posX, posY) {\n return {\n x: posX - this._rotateOrigin[0],\n y: this._rotateOrigin[1] - posY\n };\n };\n\n __proto._getQuadrant = function (posX, posY) {\n /**\n * Quadrant\n * y(+)\n * |\n * 2 | 1\n * --------------->x(+)\n * 3 | 4\n * |\n */\n var _a = this._getPosFromOrigin(posX, posY),\n x = _a.x,\n y = _a.y;\n\n var q = 0;\n\n if (x >= 0 && y >= 0) {\n q = 1;\n } else if (x < 0 && y >= 0) {\n q = 2;\n } else if (x < 0 && y < 0) {\n q = 3;\n } else if (x >= 0 && y < 0) {\n q = 4;\n }\n\n return q;\n };\n\n return RotatePanInput;\n}(PanInput);\n/**\n * @typedef {Object} PinchInputOption The option object of the eg.Axes.PinchInput module\n * @ko eg.Axes.PinchInput 모듈의 옵션 객체\n * @param {Number} [scale=1] Coordinate scale that a user can move사용자의 동작으로 이동하는 좌표의 배율\n * @param {Number} [threshold=0] Minimal scale before recognizing 사용자의 Pinch 동작을 인식하기 위해산 최소한의 배율\n * @param {String[]} [inputType=[\"touch\", \"pointer\"]] Types of input devices\n * - touch: Touch screen\n * - pointer: Mouse and touch 입력 장치 종류\n * - touch: 터치 입력 장치\n * - pointer: 마우스 및 터치\n * @param {String} [touchAction=\"none\"] Value that overrides the element's \"touch-action\" css property. It is set to \"none\" to prevent scrolling during touch. 엘리먼트의 \"touch-action\" CSS 속성을 덮어쓰는 값. 터치 도중 스크롤을 방지하기 위해 \"none\" 으로 설정되어 있다.\n **/\n\n/**\n * A module that passes the amount of change to eg.Axes when two pointers are moving toward (zoom-in) or away from each other (zoom-out). use one axis.\n * @ko 2개의 pointer를 이용하여 zoom-in하거나 zoom-out 하는 동작의 변화량을 eg.Axes에 전달하는 모듈. 한 개 의 축을 사용한다.\n * @example\n * ```js\n * const pinch = new eg.Axes.PinchInput(\"#area\", {\n * scale: 1\n * });\n *\n * // Connect 'something' axis when two pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * axes.connect(\"something\", pinch);\n * ```\n * @param {HTMLElement|String|jQuery} element An element to use the eg.Axes.PinchInput module eg.Axes.PinchInput 모듈을 사용할 엘리먼트\n * @param {PinchInputOption} [options] The option object of the eg.Axes.PinchInput moduleeg.Axes.PinchInput 모듈의 옵션 객체\n */\n\n\nvar PinchInput = /*#__PURE__*/function () {\n /**\n *\n */\n function PinchInput(el, options) {\n this.axes = [];\n this.element = null;\n this._pinchFlag = false;\n this._enabled = false;\n this._activeEvent = null;\n this._isOverThreshold = false;\n this.element = $(el);\n this.options = __assign({\n scale: 1,\n threshold: 0,\n inputType: [\"touch\", \"pointer\"],\n touchAction: \"none\"\n }, options);\n this._onPinchStart = this._onPinchStart.bind(this);\n this._onPinchMove = this._onPinchMove.bind(this);\n this._onPinchEnd = this._onPinchEnd.bind(this);\n }\n\n var __proto = PinchInput.prototype;\n\n __proto.mapAxes = function (axes) {\n this.axes = axes;\n };\n\n __proto.connect = function (observer) {\n if (this._activeEvent) {\n this._detachEvent();\n }\n\n this._attachEvent(observer);\n\n this._originalCssProps = setCssProps(this.element, this.options, DIRECTION_ALL);\n return this;\n };\n\n __proto.disconnect = function () {\n this._detachEvent();\n\n if (!isCssPropsFromAxes(this._originalCssProps)) {\n revertCssProps(this.element, this._originalCssProps);\n }\n\n return this;\n };\n /**\n * Destroys elements, properties, and events used in a module.\n * @ko 모듈에 사용한 엘리먼트와 속성, 이벤트를 해제한다.\n */\n\n\n __proto.destroy = function () {\n this.disconnect();\n this.element = null;\n };\n /**\n * Enables input devices\n * @ko 입력 장치를 사용할 수 있게 한다\n * @return {PinchInput} An instance of a module itself 모듈 자신의 인스턴스\n */\n\n\n __proto.enable = function () {\n this._enabled = true;\n return this;\n };\n /**\n * Disables input devices\n * @ko 입력 장치를 사용할 수 없게 한다.\n * @return {PinchInput} An instance of a module itself 모듈 자신의 인스턴스\n */\n\n\n __proto.disable = function () {\n this._enabled = false;\n return this;\n };\n /**\n * Returns whether to use an input device\n * @ko 입력 장치를 사용 여부를 반환한다.\n * @return {Boolean} Whether to use an input device 입력장치 사용여부\n */\n\n\n __proto.isEnabled = function () {\n return this._enabled;\n };\n\n __proto._onPinchStart = function (event) {\n var activeEvent = this._activeEvent;\n var pinchEvent = activeEvent.onEventStart(event);\n\n if (!pinchEvent || !this._enabled || activeEvent.getTouches(event) !== 2) {\n return;\n }\n\n this._baseValue = this._observer.get(this)[this.axes[0]];\n\n this._observer.hold(this, event);\n\n this._pinchFlag = true;\n this._isOverThreshold = false;\n activeEvent.prevEvent = pinchEvent;\n };\n\n __proto._onPinchMove = function (event) {\n var threshold = this.options.threshold;\n var activeEvent = this._activeEvent;\n var pinchEvent = activeEvent.onEventMove(event);\n\n if (!pinchEvent || !this._pinchFlag || !this._enabled || activeEvent.getTouches(event) !== 2) {\n return;\n }\n\n var distance = this._getDistance(pinchEvent.scale);\n\n var offset = this._getOffset(pinchEvent.scale, activeEvent.prevEvent.scale);\n\n if (this._isOverThreshold || distance >= threshold) {\n this._isOverThreshold = true;\n\n this._observer.change(this, event, toAxis(this.axes, [offset]));\n }\n\n activeEvent.prevEvent = pinchEvent;\n };\n\n __proto._onPinchEnd = function (event) {\n var activeEvent = this._activeEvent;\n activeEvent.onEventEnd(event);\n\n if (!this._pinchFlag || !this._enabled || activeEvent.getTouches(event) >= 2) {\n return;\n }\n\n activeEvent.onRelease();\n\n this._observer.release(this, event, [0], 0);\n\n this._baseValue = null;\n this._pinchFlag = false;\n };\n\n __proto._attachEvent = function (observer) {\n var _this = this;\n\n var activeEvent = convertInputType(this.options.inputType);\n var element = this.element;\n\n if (!activeEvent) {\n return;\n }\n\n if (!element) {\n throw new Error(\"Element to connect input does not exist.\");\n }\n\n this._observer = observer;\n this._enabled = true;\n this._activeEvent = activeEvent;\n activeEvent.start.forEach(function (event) {\n element.addEventListener(event, _this._onPinchStart, false);\n });\n activeEvent.move.forEach(function (event) {\n element.addEventListener(event, _this._onPinchMove, false);\n });\n activeEvent.end.forEach(function (event) {\n element.addEventListener(event, _this._onPinchEnd, false);\n });\n };\n\n __proto._detachEvent = function () {\n var _this = this;\n\n var activeEvent = this._activeEvent;\n var element = this.element;\n\n if (element) {\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.start.forEach(function (event) {\n element.removeEventListener(event, _this._onPinchStart, false);\n });\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.move.forEach(function (event) {\n element.removeEventListener(event, _this._onPinchMove, false);\n });\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.end.forEach(function (event) {\n element.removeEventListener(event, _this._onPinchEnd, false);\n });\n }\n\n this._enabled = false;\n this._observer = null;\n };\n\n __proto._getOffset = function (pinchScale, prev) {\n if (prev === void 0) {\n prev = 1;\n }\n\n return this._baseValue * (pinchScale - prev) * this.options.scale;\n };\n\n __proto._getDistance = function (pinchScale) {\n return Math.abs(pinchScale - 1);\n };\n\n return PinchInput;\n}();\n/**\n * @typedef {Object} WheelInputOption The option object of the eg.Axes.WheelInput module\n * @ko eg.Axes.WheelInput 모듈의 옵션 객체\n * @param {String[]} [inputKey=[\"any\"]] List of key combinations to allow input\n * - any: any key\n * - shift: shift key\n * - ctrl: ctrl key and pinch gesture on the trackpad\n * - alt: alt key\n * - meta: meta key\n * - none: none of these keys are pressed 입력을 허용할 키 조합 목록\n * - any: 아무 키\n * - shift: shift 키\n * - ctrl: ctrl 키 및 트랙패드의 pinch 제스쳐\n * - alt: alt 키\n * - meta: meta 키\n * - none: 아무 키도 눌리지 않은 상태 \n * @param {Number} [scale=1] Coordinate scale that a user can move사용자의 동작으로 이동하는 좌표의 배율\n * @param {Number} [releaseDelay=300] Millisecond that trigger release event after last input마지막 입력 이후 release 이벤트가 트리거되기까지의 밀리초\n * @param {Boolean} [useNormalized=true] Whether to calculate scroll speed the same in all browsers모든 브라우저에서 스크롤 속도를 동일하게 처리할지 여부\n * @param {Boolean} [useAnimation=false] Whether to process coordinate changes through the mouse wheel as a continuous animation마우스 휠을 통한 좌표 변화를 연속적인 애니메이션으로 처리할지 여부\n **/\n\n/**\n * A module that passes the amount of change to eg.Axes when the mouse wheel is moved. use one axis.\n * @ko 마우스 휠이 움직일때의 변화량을 eg.Axes에 전달하는 모듈. 두개 이하의 축을 사용한다.\n *\n * @example\n * ```js\n * const wheel = new eg.Axes.WheelInput(\"#area\", {\n * scale: 1\n * });\n *\n * // Connect only one 'something1' axis to the vertical mouse wheel.\n * axes.connect([\"something1\"], wheel); // or axes.connect(\"something1\", wheel);\n *\n * // Connect only one 'something2' axis to the horizontal mouse wheel.\n * axes.connect([\"\", \"something2\"], wheel); // or axes.connect(\" something2\", pan);\n *\n * // Connect the 'something1' axis to the vertical mouse wheel.\n * // Connect the 'something2' axis to the horizontal mouse wheel.\n * axes.connect([\"something1\", \"something2\"], wheel);\n * ```\n * @param {HTMLElement|String|jQuery} element An element to use the eg.Axes.WheelInput module eg.Axes.WheelInput 모듈을 사용할 엘리먼트\n * @param {WheelInputOption} [options] The option object of the eg.Axes.WheelInput moduleeg.Axes.WheelInput 모듈의 옵션 객체\n */\n\n\nvar WheelInput = /*#__PURE__*/function () {\n /**\n *\n */\n function WheelInput(el, options) {\n this.axes = [];\n this.element = null;\n this._enabled = false;\n this._holding = false;\n this._timer = null;\n this.element = $(el);\n this.options = __assign({\n inputKey: [ANY],\n scale: 1,\n releaseDelay: 300,\n useNormalized: true,\n useAnimation: false\n }, options);\n this._onWheel = this._onWheel.bind(this);\n }\n\n var __proto = WheelInput.prototype;\n\n __proto.mapAxes = function (axes) {\n // vertical mouse wheel is mapped into axes[0]\n this._direction = getDirection(!!axes[1], !!axes[0]);\n this.axes = axes;\n };\n\n __proto.connect = function (observer) {\n this._detachEvent();\n\n this._attachEvent(observer);\n\n return this;\n };\n\n __proto.disconnect = function () {\n this._detachEvent();\n\n return this;\n };\n /**\n * Destroys elements, properties, and events used in a module.\n * @ko 모듈에 사용한 엘리먼트와 속성, 이벤트를 해제한다.\n */\n\n\n __proto.destroy = function () {\n this.disconnect();\n this.element = null;\n };\n /**\n * Enables input devices\n * @ko 입력 장치를 사용할 수 있게 한다\n * @return {WheelInput} An instance of a module itself 모듈 자신의 인스턴스\n */\n\n\n __proto.enable = function () {\n this._enabled = true;\n return this;\n };\n /**\n * Disables input devices\n * @ko 입력 장치를 사용할 수 없게 한다.\n * @return {WheelInput} An instance of a module itself 모듈 자신의 인스턴스\n */\n\n\n __proto.disable = function () {\n this._enabled = false;\n return this;\n };\n /**\n * Returns whether to use an input device\n * @ko 입력 장치를 사용 여부를 반환한다.\n * @return {Boolean} Whether to use an input device 입력장치 사용여부\n */\n\n\n __proto.isEnabled = function () {\n return this._enabled;\n };\n\n __proto._onWheel = function (event) {\n var _this = this;\n\n if (!this._enabled || !isValidKey(event, this.options.inputKey)) {\n return;\n }\n\n var offset = this._getOffset([event.deltaY, event.deltaX], [useDirection(DIRECTION_VERTICAL, this._direction), useDirection(DIRECTION_HORIZONTAL, this._direction)]);\n\n if (offset[0] === 0 && offset[1] === 0) {\n return;\n }\n\n event.preventDefault();\n\n if (!this._holding) {\n this._observer.hold(this, event);\n\n this._holding = true;\n }\n\n this._observer.change(this, event, toAxis(this.axes, offset), this.options.useAnimation);\n\n clearTimeout(this._timer);\n this._timer = setTimeout(function () {\n if (_this._holding) {\n _this._holding = false;\n\n _this._observer.release(_this, event, [0]);\n }\n }, this.options.releaseDelay);\n };\n\n __proto._getOffset = function (properties, direction) {\n var scale = this.options.scale;\n var useNormalized = this.options.useNormalized;\n return [direction[0] && properties[0] ? (properties[0] > 0 ? -1 : 1) * (useNormalized ? 1 : Math.abs(properties[0])) * scale : 0, direction[1] && properties[1] ? (properties[1] > 0 ? -1 : 1) * (useNormalized ? 1 : Math.abs(properties[1])) * scale : 0];\n };\n\n __proto._attachEvent = function (observer) {\n var element = this.element;\n\n if (!element) {\n throw new Error(\"Element to connect input does not exist.\");\n }\n\n this._observer = observer;\n element.addEventListener(\"wheel\", this._onWheel);\n this._enabled = true;\n };\n\n __proto._detachEvent = function () {\n var element = this.element;\n\n if (element) {\n this.element.removeEventListener(\"wheel\", this._onWheel);\n }\n\n this._enabled = false;\n this._observer = null;\n\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n };\n\n return WheelInput;\n}();\n\nvar KEY_LEFT_ARROW = 37;\nvar KEY_A = 65;\nvar KEY_UP_ARROW = 38;\nvar KEY_W = 87;\nvar KEY_RIGHT_ARROW = 39;\nvar KEY_D = 68;\nvar KEY_DOWN_ARROW = 40;\nvar KEY_S = 83;\n/* eslint-disable */\n\nvar DIRECTION_REVERSE = -1;\nvar DIRECTION_FORWARD = 1;\nvar DIRECTION_HORIZONTAL$1 = -1;\nvar DIRECTION_VERTICAL$1 = 1;\nvar DELAY = 80;\n/**\n * @typedef {Object} MoveKeyInputOption The option object of the eg.Axes.MoveKeyInput module\n * @ko eg.Axes.MoveKeyInput 모듈의 옵션 객체\n * @param {Array} [scale] Coordinate scale that a user can move사용자의 동작으로 이동하는 좌표의 배율\n * @param {Number} [scale[0]=1] Coordinate scale for the first axis첫번째 축의 배율\n * @param {Number} [scale[1]=1] Coordinate scale for the decond axis두번째 축의 배율\n **/\n\n/**\n * A module that passes the amount of change to eg.Axes when the move key stroke is occured. use two axis.\n * @ko 이동키 입력이 발생했을 때의 변화량을 eg.Axes에 전달하는 모듈. 두 개 의 축을 사용한다.\n *\n * @example\n * ```js\n * const moveKey = new eg.Axes.MoveKeyInput(\"#area\", {\n * scale: [1, 1]\n * });\n *\n * // Connect 'x', 'y' axes when the moveKey is pressed.\n * axes.connect([\"x\", \"y\"], moveKey);\n * ```\n * @param {HTMLElement|String|jQuery} element An element to use the eg.Axes.MoveKeyInput module eg.Axes.MoveKeyInput 모듈을 사용할 엘리먼트\n * @param {MoveKeyInputOption} [options] The option object of the eg.Axes.MoveKeyInput moduleeg.Axes.MoveKeyInput 모듈의 옵션 객체\n */\n\nvar MoveKeyInput = /*#__PURE__*/function () {\n /**\n *\n */\n function MoveKeyInput(el, options) {\n this.axes = [];\n this.element = null;\n this._enabled = false;\n this._holding = false;\n this._timer = null;\n this.element = $(el);\n this.options = __assign({\n scale: [1, 1]\n }, options);\n this._onKeydown = this._onKeydown.bind(this);\n this._onKeyup = this._onKeyup.bind(this);\n }\n\n var __proto = MoveKeyInput.prototype;\n\n __proto.mapAxes = function (axes) {\n this.axes = axes;\n };\n\n __proto.connect = function (observer) {\n this._detachEvent(); // add tabindex=\"0\" to the container for making it focusable\n\n\n if (this.element.getAttribute(\"tabindex\") !== \"0\") {\n this.element.setAttribute(\"tabindex\", \"0\");\n }\n\n this._attachEvent(observer);\n\n return this;\n };\n\n __proto.disconnect = function () {\n this._detachEvent();\n\n return this;\n };\n /**\n * Destroys elements, properties, and events used in a module.\n * @ko 모듈에 사용한 엘리먼트와 속성, 이벤트를 해제한다.\n */\n\n\n __proto.destroy = function () {\n this.disconnect();\n this.element = null;\n };\n /**\n * Enables input devices\n * @ko 입력 장치를 사용할 수 있게 한다\n * @return {MoveKeyInput} An instance of a module itself 모듈 자신의 인스턴스\n */\n\n\n __proto.enable = function () {\n this._enabled = true;\n return this;\n };\n /**\n * Disables input devices\n * @ko 입력 장치를 사용할 수 없게 한다.\n * @return {MoveKeyInput} An instance of a module itself 모듈 자신의 인스턴스\n */\n\n\n __proto.disable = function () {\n this._enabled = false;\n return this;\n };\n /**\n * Returns whether to use an input device\n * @ko 입력 장치를 사용 여부를 반환한다.\n * @return {Boolean} Whether to use an input device 입력장치 사용여부\n */\n\n\n __proto.isEnabled = function () {\n return this._enabled;\n };\n\n __proto._onKeydown = function (event) {\n if (!this._enabled) {\n return;\n }\n\n var isMoveKey = true;\n var direction = DIRECTION_FORWARD;\n var move = DIRECTION_HORIZONTAL$1;\n\n switch (event.keyCode) {\n case KEY_LEFT_ARROW:\n case KEY_A:\n direction = DIRECTION_REVERSE;\n break;\n\n case KEY_RIGHT_ARROW:\n case KEY_D:\n break;\n\n case KEY_DOWN_ARROW:\n case KEY_S:\n direction = DIRECTION_REVERSE;\n move = DIRECTION_VERTICAL$1;\n break;\n\n case KEY_UP_ARROW:\n case KEY_W:\n move = DIRECTION_VERTICAL$1;\n break;\n\n default:\n isMoveKey = false;\n }\n\n if (move === DIRECTION_HORIZONTAL$1 && !this.axes[0] || move === DIRECTION_VERTICAL$1 && !this.axes[1]) {\n isMoveKey = false;\n }\n\n if (!isMoveKey) {\n return;\n }\n\n event.preventDefault();\n var offsets = move === DIRECTION_HORIZONTAL$1 ? [+this.options.scale[0] * direction, 0] : [0, +this.options.scale[1] * direction];\n\n if (!this._holding) {\n this._observer.hold(this, event);\n\n this._holding = true;\n }\n\n clearTimeout(this._timer);\n\n this._observer.change(this, event, toAxis(this.axes, offsets));\n };\n\n __proto._onKeyup = function (event) {\n var _this = this;\n\n if (!this._holding) {\n return;\n }\n\n clearTimeout(this._timer);\n this._timer = setTimeout(function () {\n _this._observer.release(_this, event, [0, 0]);\n\n _this._holding = false;\n }, DELAY);\n };\n\n __proto._attachEvent = function (observer) {\n var element = this.element;\n\n if (!element) {\n throw new Error(\"Element to connect input does not exist.\");\n }\n\n this._observer = observer;\n element.addEventListener(\"keydown\", this._onKeydown, false);\n element.addEventListener(\"keypress\", this._onKeydown, false);\n element.addEventListener(\"keyup\", this._onKeyup, false);\n this._enabled = true;\n };\n\n __proto._detachEvent = function () {\n var element = this.element;\n\n if (element) {\n element.removeEventListener(\"keydown\", this._onKeydown, false);\n element.removeEventListener(\"keypress\", this._onKeydown, false);\n element.removeEventListener(\"keyup\", this._onKeyup, false);\n }\n\n this._enabled = false;\n this._observer = null;\n };\n\n return MoveKeyInput;\n}();\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n\n\nvar REACTIVE_AXES = {\n methods: AXES_METHODS,\n events: AXES_EVENTS,\n created: function (data) {\n return new Axes(data.axis, data.options);\n },\n on: function (instance, name, callback) {\n instance.on(name, callback);\n },\n off: function (instance, name, callback) {\n instance.off(name, callback);\n },\n destroy: function (instance) {\n instance.destroy();\n }\n};\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n\nexport default Axes;\nexport { PanInput, RotatePanInput, PinchInput, WheelInput, MoveKeyInput, AXES_METHODS, AXES_EVENTS, REACTIVE_AXES };","module.exports = __webpack_public_path__ + \"media/images/views/lp/recruiter/profile/profile-f-d17874a32f5a27dbd3c40b7456838426.png\";","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--4-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=style&index=0&id=421507fa&lang=scss&scoped=true&\"","/*\nCopyright (c) 2015 NAVER Corp.\nname: @egjs/agent\nlicense: MIT\nauthor: NAVER Corp.\nrepository: git+https://github.com/naver/agent.git\nversion: 2.4.3\n*/\nfunction some(arr, callback) {\n var length = arr.length;\n\n for (var i = 0; i < length; ++i) {\n if (callback(arr[i], i)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction find(arr, callback) {\n var length = arr.length;\n\n for (var i = 0; i < length; ++i) {\n if (callback(arr[i], i)) {\n return arr[i];\n }\n }\n\n return null;\n}\n\nfunction getUserAgentString(agent) {\n var userAgent = agent;\n\n if (typeof userAgent === \"undefined\") {\n if (typeof navigator === \"undefined\" || !navigator) {\n return \"\";\n }\n\n userAgent = navigator.userAgent || \"\";\n }\n\n return userAgent.toLowerCase();\n}\n\nfunction execRegExp(pattern, text) {\n try {\n return new RegExp(pattern, \"g\").exec(text);\n } catch (e) {\n return null;\n }\n}\n\nfunction hasUserAgentData() {\n if (typeof navigator === \"undefined\" || !navigator || !navigator.userAgentData) {\n return false;\n }\n\n var userAgentData = navigator.userAgentData;\n var brands = userAgentData.brands || userAgentData.uaList;\n return !!(brands && brands.length);\n}\n\nfunction findVersion(versionTest, userAgent) {\n var result = execRegExp(\"(\" + versionTest + \")((?:\\\\/|\\\\s|:)([0-9|\\\\.|_]+))\", userAgent);\n return result ? result[3] : \"\";\n}\n\nfunction convertVersion(text) {\n return text.replace(/_/g, \".\");\n}\n\nfunction findPreset(presets, userAgent) {\n var userPreset = null;\n var version = \"-1\";\n some(presets, function (preset) {\n var result = execRegExp(\"(\" + preset.test + \")((?:\\\\/|\\\\s|:)([0-9|\\\\.|_]+))?\", userAgent);\n\n if (!result || preset.brand) {\n return false;\n }\n\n userPreset = preset;\n version = result[3] || \"-1\";\n\n if (preset.versionAlias) {\n version = preset.versionAlias;\n } else if (preset.versionTest) {\n version = findVersion(preset.versionTest.toLowerCase(), userAgent) || version;\n }\n\n version = convertVersion(version);\n return true;\n });\n return {\n preset: userPreset,\n version: version\n };\n}\n\nfunction findPresetBrand(presets, brands) {\n var brandInfo = {\n brand: \"\",\n version: \"-1\"\n };\n some(presets, function (preset) {\n var result = findBrand(brands, preset);\n\n if (!result) {\n return false;\n }\n\n brandInfo.brand = preset.id;\n brandInfo.version = preset.versionAlias || result.version;\n return brandInfo.version !== \"-1\";\n });\n return brandInfo;\n}\n\nfunction findBrand(brands, preset) {\n return find(brands, function (_a) {\n var brand = _a.brand;\n return execRegExp(\"\" + preset.test, brand.toLowerCase());\n });\n}\n\nvar BROWSER_PRESETS = [{\n test: \"phantomjs\",\n id: \"phantomjs\"\n}, {\n test: \"whale\",\n id: \"whale\"\n}, {\n test: \"edgios|edge|edg\",\n id: \"edge\"\n}, {\n test: \"msie|trident|windows phone\",\n id: \"ie\",\n versionTest: \"iemobile|msie|rv\"\n}, {\n test: \"miuibrowser\",\n id: \"miui browser\"\n}, {\n test: \"samsungbrowser\",\n id: \"samsung internet\"\n}, {\n test: \"samsung\",\n id: \"samsung internet\",\n versionTest: \"version\"\n}, {\n test: \"chrome|crios\",\n id: \"chrome\"\n}, {\n test: \"firefox|fxios\",\n id: \"firefox\"\n}, {\n test: \"android\",\n id: \"android browser\",\n versionTest: \"version\"\n}, {\n test: \"safari|iphone|ipad|ipod\",\n id: \"safari\",\n versionTest: \"version\"\n}]; // chromium's engine(blink) is based on applewebkit 537.36.\n\nvar CHROMIUM_PRESETS = [{\n test: \"(?=.*applewebkit/(53[0-7]|5[0-2]|[0-4]))(?=.*\\\\schrome)\",\n id: \"chrome\",\n versionTest: \"chrome\"\n}, {\n test: \"chromium\",\n id: \"chrome\"\n}, {\n test: \"whale\",\n id: \"chrome\",\n versionAlias: \"-1\",\n brand: true\n}];\nvar WEBKIT_PRESETS = [{\n test: \"applewebkit\",\n id: \"webkit\",\n versionTest: \"applewebkit|safari\"\n}];\nvar WEBVIEW_PRESETS = [{\n test: \"(?=(iphone|ipad))(?!(.*version))\",\n id: \"webview\"\n}, {\n test: \"(?=(android|iphone|ipad))(?=.*(naver|daum|; wv))\",\n id: \"webview\"\n}, {\n // test webview\n test: \"webview\",\n id: \"webview\"\n}];\nvar OS_PRESETS = [{\n test: \"windows phone\",\n id: \"windows phone\"\n}, {\n test: \"windows 2000\",\n id: \"window\",\n versionAlias: \"5.0\"\n}, {\n test: \"windows nt\",\n id: \"window\"\n}, {\n test: \"win32|windows\",\n id: \"window\"\n}, {\n test: \"iphone|ipad|ipod\",\n id: \"ios\",\n versionTest: \"iphone os|cpu os\"\n}, {\n test: \"macos|macintel|mac os x\",\n id: \"mac\"\n}, {\n test: \"android|linux armv81\",\n id: \"android\"\n}, {\n test: \"tizen\",\n id: \"tizen\"\n}, {\n test: \"webos|web0s\",\n id: \"webos\"\n}];\n\nfunction isWebView(userAgent) {\n return !!findPreset(WEBVIEW_PRESETS, userAgent).preset;\n}\n\nfunction getLegacyAgent(userAgent) {\n var nextAgent = getUserAgentString(userAgent);\n var isMobile = !!/mobi/g.exec(nextAgent);\n var browser = {\n name: \"unknown\",\n version: \"-1\",\n majorVersion: -1,\n webview: isWebView(nextAgent),\n chromium: false,\n chromiumVersion: \"-1\",\n webkit: false,\n webkitVersion: \"-1\"\n };\n var os = {\n name: \"unknown\",\n version: \"-1\",\n majorVersion: -1\n };\n\n var _a = findPreset(BROWSER_PRESETS, nextAgent),\n browserPreset = _a.preset,\n browserVersion = _a.version;\n\n var _b = findPreset(OS_PRESETS, nextAgent),\n osPreset = _b.preset,\n osVersion = _b.version;\n\n var chromiumPreset = findPreset(CHROMIUM_PRESETS, nextAgent);\n browser.chromium = !!chromiumPreset.preset;\n browser.chromiumVersion = chromiumPreset.version;\n\n if (!browser.chromium) {\n var webkitPreset = findPreset(WEBKIT_PRESETS, nextAgent);\n browser.webkit = !!webkitPreset.preset;\n browser.webkitVersion = webkitPreset.version;\n }\n\n if (osPreset) {\n os.name = osPreset.id;\n os.version = osVersion;\n os.majorVersion = parseInt(osVersion, 10);\n }\n\n if (browserPreset) {\n browser.name = browserPreset.id;\n browser.version = browserVersion; // Early whale bugs\n\n if (browser.webview && os.name === \"ios\" && browser.name !== \"safari\") {\n browser.webview = false;\n }\n }\n\n browser.majorVersion = parseInt(browser.version, 10);\n return {\n browser: browser,\n os: os,\n isMobile: isMobile,\n isHints: false\n };\n}\n\nfunction getClientHintsAgent(osData) {\n var userAgentData = navigator.userAgentData;\n var brands = (userAgentData.uaList || userAgentData.brands).slice();\n var fullVersionList = osData && osData.fullVersionList;\n var isMobile = userAgentData.mobile || false;\n var firstBrand = brands[0];\n var platform = (osData && osData.platform || userAgentData.platform || navigator.platform).toLowerCase();\n var browser = {\n name: firstBrand.brand,\n version: firstBrand.version,\n majorVersion: -1,\n webkit: false,\n webkitVersion: \"-1\",\n chromium: false,\n chromiumVersion: \"-1\",\n webview: !!findPresetBrand(WEBVIEW_PRESETS, brands).brand || isWebView(getUserAgentString())\n };\n var os = {\n name: \"unknown\",\n version: \"-1\",\n majorVersion: -1\n };\n browser.webkit = !browser.chromium && some(WEBKIT_PRESETS, function (preset) {\n return findBrand(brands, preset);\n });\n var chromiumBrand = findPresetBrand(CHROMIUM_PRESETS, brands);\n browser.chromium = !!chromiumBrand.brand;\n browser.chromiumVersion = chromiumBrand.version;\n\n if (!browser.chromium) {\n var webkitBrand = findPresetBrand(WEBKIT_PRESETS, brands);\n browser.webkit = !!webkitBrand.brand;\n browser.webkitVersion = webkitBrand.version;\n }\n\n var platfomResult = find(OS_PRESETS, function (preset) {\n return new RegExp(\"\" + preset.test, \"g\").exec(platform);\n });\n os.name = platfomResult ? platfomResult.id : \"\";\n\n if (osData) {\n os.version = osData.platformVersion;\n }\n\n if (fullVersionList && fullVersionList.length) {\n var browserBrandByFullVersionList = findPresetBrand(BROWSER_PRESETS, fullVersionList);\n browser.name = browserBrandByFullVersionList.brand || browser.name;\n browser.version = browserBrandByFullVersionList.version || browser.version;\n } else {\n var browserBrand = findPresetBrand(BROWSER_PRESETS, brands);\n browser.name = browserBrand.brand || browser.name;\n browser.version = browserBrand.brand && osData ? osData.uaFullVersion : browserBrand.version;\n }\n\n if (browser.webkit) {\n os.name = isMobile ? \"ios\" : \"mac\";\n }\n\n if (os.name === \"ios\" && browser.webview) {\n browser.version = \"-1\";\n }\n\n os.version = convertVersion(os.version);\n browser.version = convertVersion(browser.version);\n os.majorVersion = parseInt(os.version, 10);\n browser.majorVersion = parseInt(browser.version, 10);\n return {\n browser: browser,\n os: os,\n isMobile: isMobile,\n isHints: true\n };\n}\n/**\n * @namespace eg.agent\n */\n\n/**\n* Extracts accuate browser and operating system information from the user agent string or client hints.\n* @ko 유저 에이전트 문자열 또는 client hints에서 정확한 브라우저와 운영체제 정보를 추출한다.\n* @function eg.agent#getAccurateAgent\n* @param - Callback function to get the accuate agent 정확한 에이전트를 가져오기 위한 callback 함수\n* @return - get the accuate agent promise. If Promise are not supported, null is returned. 정확한 에이전트 promise를 가져온다. Promise를 지원 하지 않는 경우, null을 반환한다. \n* @example\nimport { getAccurateAgent } from \"@egjs/agent\";\n// eg.agent.getAccurateAgent()\ngetAccurateAgent().then(agent => {\n const { os, browser, isMobile } = agent;\n});\ngetAccurateAgent(agent => {\n const { os, browser, isMobile } = agent;\n});\n*/\n\n\nfunction getAccurateAgent(callback) {\n if (hasUserAgentData()) {\n return navigator.userAgentData.getHighEntropyValues([\"architecture\", \"model\", \"platform\", \"platformVersion\", \"uaFullVersion\", \"fullVersionList\"]).then(function (info) {\n var agentInfo = getClientHintsAgent(info);\n callback && callback(agentInfo);\n return agentInfo;\n });\n }\n\n callback && callback(agent());\n\n if (typeof Promise === \"undefined\" || !Promise) {\n return null;\n }\n\n return Promise.resolve(agent());\n}\n/**\n * Extracts browser and operating system information from the user agent string.\n * @ko 유저 에이전트 문자열에서 브라우저와 운영체제 정보를 추출한다.\n * @function eg.agent#agent\n * @param - user agent string to parse 파싱할 유저에이전트 문자열\n * @return - agent Info 에이전트 정보 \n * @example\nimport agent from \"@egjs/agent\";\n// eg.agent();\nconst { os, browser, isMobile } = agent();\n */\n\n\nfunction agent(userAgent) {\n if (typeof userAgent === \"undefined\" && hasUserAgentData()) {\n return getClientHintsAgent();\n } else {\n return getLegacyAgent(userAgent);\n }\n}\n\nexport default agent;\nexport { getAccurateAgent, getLegacyAgent };","/*\nCopyright (c) 2019-present NAVER Corp.\nname: @egjs/list-differ\nlicense: MIT\nauthor: NAVER Corp.\nrepository: https://github.com/naver/egjs-list-differ\nversion: 1.0.1\n*/\n\n/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\nvar PolyMap = /*#__PURE__*/function () {\n function PolyMap() {\n this.keys = [];\n this.values = [];\n }\n\n var __proto = PolyMap.prototype;\n\n __proto.get = function (key) {\n return this.values[this.keys.indexOf(key)];\n };\n\n __proto.set = function (key, value) {\n var keys = this.keys;\n var values = this.values;\n var prevIndex = keys.indexOf(key);\n var index = prevIndex === -1 ? keys.length : prevIndex;\n keys[index] = key;\n values[index] = value;\n };\n\n return PolyMap;\n}();\n/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\n\n\nvar HashMap = /*#__PURE__*/function () {\n function HashMap() {\n this.object = {};\n }\n\n var __proto = HashMap.prototype;\n\n __proto.get = function (key) {\n return this.object[key];\n };\n\n __proto.set = function (key, value) {\n this.object[key] = value;\n };\n\n return HashMap;\n}();\n/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\n\n\nvar SUPPORT_MAP = typeof Map === \"function\";\n/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\n\nvar Link = /*#__PURE__*/function () {\n function Link() {}\n\n var __proto = Link.prototype;\n\n __proto.connect = function (prevLink, nextLink) {\n this.prev = prevLink;\n this.next = nextLink;\n prevLink && (prevLink.next = this);\n nextLink && (nextLink.prev = this);\n };\n\n __proto.disconnect = function () {\n // In double linked list, diconnect the interconnected relationship.\n var prevLink = this.prev;\n var nextLink = this.next;\n prevLink && (prevLink.next = nextLink);\n nextLink && (nextLink.prev = prevLink);\n };\n\n __proto.getIndex = function () {\n var link = this;\n var index = -1;\n\n while (link) {\n link = link.prev;\n ++index;\n }\n\n return index;\n };\n\n return Link;\n}();\n/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\n\n\nfunction orderChanged(changed, fixed) {\n // It is roughly in the order of these examples.\n // 4, 6, 0, 2, 1, 3, 5, 7\n var fromLinks = []; // 0, 1, 2, 3, 4, 5, 6, 7\n\n var toLinks = [];\n changed.forEach(function (_a) {\n var from = _a[0],\n to = _a[1];\n var link = new Link();\n fromLinks[from] = link;\n toLinks[to] = link;\n }); // `fromLinks` are connected to each other by double linked list.\n\n fromLinks.forEach(function (link, i) {\n link.connect(fromLinks[i - 1]);\n });\n return changed.filter(function (_, i) {\n return !fixed[i];\n }).map(function (_a, i) {\n var from = _a[0],\n to = _a[1];\n\n if (from === to) {\n return [0, 0];\n }\n\n var fromLink = fromLinks[from];\n var toLink = toLinks[to - 1];\n var fromIndex = fromLink.getIndex(); // Disconnect the link connected to `fromLink`.\n\n fromLink.disconnect(); // Connect `fromLink` to the right of `toLink`.\n\n if (!toLink) {\n fromLink.connect(undefined, fromLinks[0]);\n } else {\n fromLink.connect(toLink, toLink.next);\n }\n\n var toIndex = fromLink.getIndex();\n return [fromIndex, toIndex];\n });\n}\n\nvar Result = /*#__PURE__*/function () {\n function Result(prevList, list, added, removed, changed, maintained, changedBeforeAdded, fixed) {\n this.prevList = prevList;\n this.list = list;\n this.added = added;\n this.removed = removed;\n this.changed = changed;\n this.maintained = maintained;\n this.changedBeforeAdded = changedBeforeAdded;\n this.fixed = fixed;\n }\n\n var __proto = Result.prototype;\n Object.defineProperty(__proto, \"ordered\", {\n get: function () {\n if (!this.cacheOrdered) {\n this.caculateOrdered();\n }\n\n return this.cacheOrdered;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(__proto, \"pureChanged\", {\n get: function () {\n if (!this.cachePureChanged) {\n this.caculateOrdered();\n }\n\n return this.cachePureChanged;\n },\n enumerable: true,\n configurable: true\n });\n\n __proto.caculateOrdered = function () {\n var ordered = orderChanged(this.changedBeforeAdded, this.fixed);\n var changed = this.changed;\n var pureChanged = [];\n this.cacheOrdered = ordered.filter(function (_a, i) {\n var from = _a[0],\n to = _a[1];\n var _b = changed[i],\n fromBefore = _b[0],\n toBefore = _b[1];\n\n if (from !== to) {\n pureChanged.push([fromBefore, toBefore]);\n return true;\n }\n });\n this.cachePureChanged = pureChanged;\n };\n\n return Result;\n}();\n/**\n *\n * @memberof eg.ListDiffer\n * @static\n * @function\n * @param - Previous List 이전 목록 \n * @param - List to Update 업데이트 할 목록 \n * @param - This callback function returns the key of the item. 아이템의 키를 반환하는 콜백 함수입니다.\n * @return - Returns the diff between `prevList` and `list` `prevList`와 `list`의 다른 점을 반환한다.\n * @example\n * import { diff } from \"@egjs/list-differ\";\n * // script => eg.ListDiffer.diff\n * const result = diff([0, 1, 2, 3, 4, 5], [7, 8, 0, 4, 3, 6, 2, 1], e => e);\n * // List before update\n * // [1, 2, 3, 4, 5]\n * console.log(result.prevList);\n * // Updated list\n * // [4, 3, 6, 2, 1]\n * console.log(result.list);\n * // Index array of values added to `list`\n * // [0, 1, 5]\n * console.log(result.added);\n * // Index array of values removed in `prevList`\n * // [5]\n * console.log(result.removed);\n * // An array of index pairs of `prevList` and `list` with different indexes from `prevList` and `list`\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\n * console.log(result.changed);\n * // The subset of `changed` and an array of index pairs that moved data directly. Indicate an array of absolute index pairs of `ordered`.(Formatted by: Array<[index of prevList, index of list]>)\n * // [[4, 3], [3, 4], [2, 6]]\n * console.log(result.pureChanged);\n * // An array of index pairs to be `ordered` that can synchronize `list` before adding data. (Formatted by: Array<[prevIndex, nextIndex]>)\n * // [[4, 1], [4, 2], [4, 3]]\n * console.log(result.ordered);\n * // An array of index pairs of `prevList` and `list` that have not been added/removed so data is preserved\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\n * console.log(result.maintained);\n */\n\n\nfunction diff(prevList, list, findKeyCallback) {\n var mapClass = SUPPORT_MAP ? Map : findKeyCallback ? HashMap : PolyMap;\n\n var callback = findKeyCallback || function (e) {\n return e;\n };\n\n var added = [];\n var removed = [];\n var maintained = [];\n var prevKeys = prevList.map(callback);\n var keys = list.map(callback);\n var prevKeyMap = new mapClass();\n var keyMap = new mapClass();\n var changedBeforeAdded = [];\n var fixed = [];\n var removedMap = {};\n var changed = [];\n var addedCount = 0;\n var removedCount = 0; // Add prevKeys and keys to the hashmap.\n\n prevKeys.forEach(function (key, prevListIndex) {\n prevKeyMap.set(key, prevListIndex);\n });\n keys.forEach(function (key, listIndex) {\n keyMap.set(key, listIndex);\n }); // Compare `prevKeys` and `keys` and add them to `removed` if they are not in `keys`.\n\n prevKeys.forEach(function (key, prevListIndex) {\n var listIndex = keyMap.get(key); // In prevList, but not in list, it is removed.\n\n if (typeof listIndex === \"undefined\") {\n ++removedCount;\n removed.push(prevListIndex);\n } else {\n removedMap[listIndex] = removedCount;\n }\n }); // Compare `prevKeys` and `keys` and add them to `added` if they are not in `prevKeys`.\n\n keys.forEach(function (key, listIndex) {\n var prevListIndex = prevKeyMap.get(key); // In list, but not in prevList, it is added.\n\n if (typeof prevListIndex === \"undefined\") {\n added.push(listIndex);\n ++addedCount;\n } else {\n maintained.push([prevListIndex, listIndex]);\n removedCount = removedMap[listIndex] || 0;\n changedBeforeAdded.push([prevListIndex - removedCount, listIndex - addedCount]);\n fixed.push(listIndex === prevListIndex);\n\n if (prevListIndex !== listIndex) {\n changed.push([prevListIndex, listIndex]);\n }\n }\n }); // Sort by ascending order of 'to(list's index).\n\n removed.reverse();\n return new Result(prevList, list, added, removed, changed, maintained, changedBeforeAdded, fixed);\n}\n/**\n * A module that checks diff when values are added, removed, or changed in an array.\n * @ko 배열 또는 오브젝트에서 값이 추가되거나 삭제되거나 순서가 변경사항을 체크하는 모듈입니다.\n * @memberof eg\n */\n\n\nvar ListDiffer = /*#__PURE__*/function () {\n /**\n * @param - Initializing Data Array. 초기 설정할 데이터 배열.\n * @param - This callback function returns the key of the item. 아이템의 키를 반환하는 콜백 함수입니다.\n * @example\n * import ListDiffer from \"@egjs/list-differ\";\n * // script => eg.ListDiffer\n * const differ = new ListDiffer([0, 1, 2, 3, 4, 5], e => e);\n * const result = differ.update([7, 8, 0, 4, 3, 6, 2, 1]);\n * // List before update\n * // [1, 2, 3, 4, 5]\n * console.log(result.prevList);\n * // Updated list\n * // [4, 3, 6, 2, 1]\n * console.log(result.list);\n * // Index array of values added to `list`.\n * // [0, 1, 5]\n * console.log(result.added);\n * // Index array of values removed in `prevList`.\n * // [5]\n * console.log(result.removed);\n * // An array of index pairs of `prevList` and `list` with different indexes from `prevList` and `list`.\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\n * console.log(result.changed);\n * // The subset of `changed` and an array of index pairs that moved data directly. Indicate an array of absolute index pairs of `ordered`.(Formatted by: Array<[index of prevList, index of list]>)\n * // [[4, 3], [3, 4], [2, 6]]\n * console.log(result.pureChanged);\n * // An array of index pairs to be `ordered` that can synchronize `list` before adding data. (Formatted by: Array<[prevIndex, nextIndex]>)\n * // [[4, 1], [4, 2], [4, 3]]\n * console.log(result.ordered);\n * // An array of index pairs of `prevList` and `list` that have not been added/removed so data is preserved.\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\n * console.log(result.maintained);\n */\n function ListDiffer(list, findKeyCallback) {\n if (list === void 0) {\n list = [];\n }\n\n this.findKeyCallback = findKeyCallback;\n this.list = [].slice.call(list);\n }\n /**\n * Update list.\n * @ko 리스트를 업데이트를 합니다.\n * @param - List to update 업데이트할 리스트 \n * @return - Returns the results of an update from `prevList` to `list`. `prevList`에서 `list`로 업데이트한 결과를 반환한다. \n */\n\n\n var __proto = ListDiffer.prototype;\n\n __proto.update = function (list) {\n var newData = [].slice.call(list);\n var result = diff(this.list, newData, this.findKeyCallback);\n this.list = newData;\n return result;\n };\n\n return ListDiffer;\n}();\n/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\n\n\nexport default ListDiffer;\nexport { diff };","/*\nCopyright (c) 2015-present NAVER Corp.\nname: @egjs/vue-flicking\nlicense: MIT\nauthor: NAVER Corp.\nrepository: https://github.com/naver/egjs-flicking/tree/master/packages/vue-flicking\nversion: 4.11.1\n*/\nimport ListDiffer from '@egjs/list-differ';\nimport Vue from 'vue';\nimport VanillaFlicking, { getFlickingAttached, ExternalRenderer, withFlickingMethods, VirtualRenderingStrategy, NormalRenderingStrategy, EVENTS, sync, getDefaultCameraTransform, getRenderingPanels, range } from '@egjs/flicking';\nexport * from '@egjs/flicking';\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nvar VueRenderer = /*#__PURE__*/function (_super) {\n __extends(VueRenderer, _super);\n\n function VueRenderer(options) {\n var _this = _super.call(this, options) || this;\n\n _this._vueFlicking = options.vueFlicking;\n return _this;\n }\n\n var __proto = VueRenderer.prototype;\n\n __proto.render = function () {\n return __awaiter(this, void 0, void 0, function () {\n var flicking, vueFlicking, strategy;\n\n var _this = this;\n\n return __generator(this, function (_a) {\n flicking = getFlickingAttached(this._flicking);\n vueFlicking = this._vueFlicking;\n strategy = this._strategy;\n strategy.updateRenderingPanels(flicking);\n strategy.renderPanels(flicking);\n return [2\n /*return*/\n , new Promise(function (resolve) {\n vueFlicking.$once(\"render\", function () {\n _this._afterRender();\n\n resolve();\n });\n vueFlicking.$forceUpdate();\n })];\n });\n });\n };\n\n __proto.forceRenderAllPanels = function () {\n return __awaiter(this, void 0, void 0, function () {\n var vueFlicking;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n vueFlicking = this._vueFlicking;\n return [4\n /*yield*/\n , _super.prototype.forceRenderAllPanels.call(this)];\n\n case 1:\n _a.sent();\n\n return [2\n /*return*/\n , new Promise(function (resolve) {\n vueFlicking.$once(\"render\", resolve);\n vueFlicking.$forceUpdate();\n })];\n }\n });\n });\n };\n\n __proto._collectPanels = function () {\n var flicking = getFlickingAttached(this._flicking);\n var vueFlicking = this._vueFlicking;\n var vuePanels = vueFlicking.$children;\n this._panels = this._strategy.collectPanels(flicking, vuePanels);\n };\n\n __proto._createPanel = function (externalComponent, options) {\n return this._strategy.createPanel(externalComponent, options);\n };\n\n return VueRenderer;\n}(ExternalRenderer);\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n\n\nvar VuePanel = Vue.extend({\n data: function () {\n return {\n hide: false\n };\n },\n render: function () {\n var _a;\n\n var children = this.hide ? undefined : (_a = this.$slots.default) !== null && _a !== void 0 ? _a : []; // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n\n return children;\n },\n methods: {\n getElement: function () {\n return this.$el;\n }\n }\n});\n\nvar VueElementProvider = /*#__PURE__*/function () {\n function VueElementProvider(el) {\n this._el = el;\n }\n\n var __proto = VueElementProvider.prototype;\n Object.defineProperty(__proto, \"element\", {\n get: function () {\n return this._el.getElement();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"rendered\", {\n get: function () {\n return !this._el.hide;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.show = function () {\n this._el.hide = false;\n };\n\n __proto.hide = function () {\n this._el.hide = true;\n };\n\n return VueElementProvider;\n}();\n\nvar FlickingProps = {\n viewportTag: {\n type: String,\n default: \"div\",\n required: false\n },\n cameraTag: {\n type: String,\n default: \"div\",\n required: false\n },\n cameraClass: {\n type: String,\n default: \"\",\n required: false\n },\n hideBeforeInit: {\n type: Boolean,\n default: false,\n required: false\n },\n firstPanelSize: {\n type: String,\n required: false\n },\n options: {\n type: Object,\n default: function () {\n return {};\n },\n required: false\n },\n plugins: {\n type: Array,\n default: function () {\n return [];\n },\n required: false\n },\n status: {\n type: Object,\n required: false\n }\n};\n\nvar getSlots = function (component) {\n var _a, _b;\n\n return (_b = (_a = component.$slots.default) === null || _a === void 0 ? void 0 : _a.filter(function (slot) {\n return slot.tag;\n })) !== null && _b !== void 0 ? _b : [];\n};\n\nvar fillKeys = function (component) {\n var vnodes = getSlots(component);\n vnodes.forEach(function (node, idx) {\n if (node.key == null) {\n node.key = \"$_\".concat(idx);\n }\n });\n};\n\nvar Flicking = Vue.extend({\n props: FlickingProps,\n components: {\n Panel: VuePanel\n },\n data: function () {\n // Mocking the type, as we don't want them to be reactive\n return {};\n },\n created: function () {\n this.diffResult = null;\n withFlickingMethods(this, \"vanillaFlicking\");\n },\n mounted: function () {\n var _this = this;\n\n var _a;\n\n var options = this.options;\n var viewportEl = this.$el;\n var rendererOptions = {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n vueFlicking: this,\n align: options.align,\n strategy: options.virtual && ((_a = options.panelsPerView) !== null && _a !== void 0 ? _a : -1) > 0 ? new VirtualRenderingStrategy() : new NormalRenderingStrategy({\n providerCtor: VueElementProvider\n })\n };\n var flicking = new VanillaFlicking(viewportEl, __assign(__assign({}, options), {\n externalRenderer: new VueRenderer(rendererOptions)\n }));\n this.vanillaFlicking = flicking;\n flicking.once(EVENTS.READY, function () {\n _this.$forceUpdate();\n });\n var slots = getSlots(this);\n this.slotDiffer = new ListDiffer(slots, function (vnode) {\n return vnode.key;\n });\n this.pluginsDiffer = new ListDiffer();\n\n this._bindEvents();\n\n this._checkPlugins();\n\n if (this.status) {\n flicking.setStatus(this.status);\n }\n },\n beforeDestroy: function () {\n var _a;\n\n (_a = this.vanillaFlicking) === null || _a === void 0 ? void 0 : _a.destroy();\n },\n beforeMount: function () {\n fillKeys(this);\n },\n beforeUpdate: function () {\n fillKeys(this);\n this.diffResult = this.slotDiffer.update(getSlots(this));\n },\n updated: function () {\n var flicking = this.vanillaFlicking;\n var diffResult = this.diffResult;\n\n this._checkPlugins();\n\n this.$emit(\"render\");\n if (!diffResult || !flicking.initialized) return;\n sync(flicking, diffResult, this.$children);\n\n if (diffResult.added.length > 0 || diffResult.removed.length > 0) {\n this.$forceUpdate();\n }\n\n this.diffResult = null;\n },\n render: function (h) {\n var _a;\n\n var _b, _c;\n\n var flicking = this.vanillaFlicking;\n var options = this.options;\n var initialized = !!this.diffResult && flicking && flicking.initialized;\n var isHorizontal = flicking ? flicking.horizontal : (_b = options.horizontal) !== null && _b !== void 0 ? _b : true;\n var viewportData = {\n class: {\n \"flicking-viewport\": true,\n \"vertical\": !isHorizontal,\n \"flicking-hidden\": this.hideBeforeInit && !initialized\n }\n };\n var cameraData = {\n class: (_a = {\n \"flicking-camera\": true\n }, _a[this.cameraClass] = !!this.cameraClass, _a),\n style: !initialized && this.firstPanelSize ? {\n transform: getDefaultCameraTransform(options.align, options.horizontal, this.firstPanelSize)\n } : {}\n };\n var panels = options.virtual && ((_c = options.panelsPerView) !== null && _c !== void 0 ? _c : -1) > 0 ? this._getVirtualPanels(h, initialized) : this._getPanels(h, initialized);\n return h(this.viewportTag, viewportData, [h(this.cameraTag, cameraData, panels), this.$slots.viewport]);\n },\n methods: {\n /* eslint-disable @typescript-eslint/naming-convention */\n _getSlots: function () {\n var _a, _b;\n\n return (_b = (_a = this.$slots.default) === null || _a === void 0 ? void 0 : _a.filter(function (slot) {\n return slot.tag;\n })) !== null && _b !== void 0 ? _b : [];\n },\n _fillKeys: function () {\n var vnodes = this._getSlots();\n\n vnodes.forEach(function (node, idx) {\n if (node.key == null) {\n node.key = \"$_\".concat(idx);\n }\n });\n },\n _bindEvents: function () {\n var _this = this;\n\n var flicking = this.vanillaFlicking;\n var events = Object.keys(EVENTS).map(function (key) {\n return EVENTS[key];\n });\n events.forEach(function (eventName) {\n flicking.on(eventName, function (e) {\n e.currentTarget = _this; // Make events from camelCase to kebab-case\n\n _this.$emit(eventName.replace(/([A-Z])/g, \"-$1\").toLowerCase(), e);\n });\n });\n },\n _checkPlugins: function () {\n var _a, _b;\n\n var _c = this.pluginsDiffer.update(this.plugins),\n list = _c.list,\n added = _c.added,\n removed = _c.removed,\n prevList = _c.prevList;\n\n (_a = this.vanillaFlicking).addPlugins.apply(_a, __spreadArray([], __read(added.map(function (index) {\n return list[index];\n })), false));\n\n (_b = this.vanillaFlicking).removePlugins.apply(_b, __spreadArray([], __read(removed.map(function (index) {\n return prevList[index];\n })), false));\n },\n _getPanels: function (h, initialized) {\n var slots = initialized ? getRenderingPanels(this.vanillaFlicking, this.diffResult) : this._getSlots();\n return slots.map(function (slot) {\n return h(\"Panel\", {\n key: slot.key\n }, [slot]);\n });\n },\n _getVirtualPanels: function (h, initialized) {\n var options = this.options;\n var _a = options.virtual.panelClass,\n panelClass = _a === void 0 ? \"flicking-panel\" : _a;\n var panelsPerView = options.panelsPerView;\n var flicking = this.vanillaFlicking;\n var renderingIndexes = initialized ? flicking.renderer.strategy.getRenderingIndexesByOrder(flicking) : range(panelsPerView + 1);\n var firstPanel = flicking && flicking.panels[0];\n var size = firstPanel ? flicking.horizontal ? {\n width: firstPanel.size\n } : {\n height: firstPanel.size\n } : {};\n return renderingIndexes.map(function (idx) {\n return h(\"div\", {\n key: idx,\n staticClass: panelClass,\n style: size,\n domProps: {\n \"data-element-index\": idx\n }\n });\n });\n }\n },\n watch: {\n options: {\n handler: function (newOptions) {\n var flicking = this.vanillaFlicking;\n if (!flicking) return; // Omit 'virtual', as it can't have any setter\n\n var virtual = newOptions.virtual,\n options = __rest(newOptions, [\"virtual\"]); // eslint-disable-line @typescript-eslint/no-unused-vars\n\n\n for (var key in options) {\n if (key in flicking && flicking[key] !== options[key]) {\n flicking[key] = options[key];\n }\n }\n },\n deep: true,\n immediate: true\n }\n }\n});\nvar version = \"4.11.1\";\n\nvar install = function (Vue) {\n Vue.component(\"Flicking\", Flicking);\n};\n\nvar plugin = {\n Flicking: Flicking,\n install: install,\n version: version\n};\nexport default plugin;\nexport { Flicking, install, version };","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","module.exports = __webpack_public_path__ + \"media/images/views/lp/home/banner-home-db0a3e2a9471fca848c5e0e62a08247e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/views/lp/recruiter/profile/profile-m-81d84f494ca81d8c3477f243831ad9a4.png\";","/*\nCopyright (c) NAVER Corp.\nname: @egjs/imready\nlicense: MIT\nauthor: NAVER Corp.\nrepository: https://github.com/naver/egjs-imready\nversion: 1.4.1\n*/\nimport Component, { ComponentEvent } from '@egjs/component';\nimport { reactive, isString } from '@cfcs/core';\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n/** @deprecated */\n\n\nfunction __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n\n return r;\n}\n/*\negjs-imready\nCopyright (c) 2020-present NAVER Corp.\nMIT license\n*/\n\n\nvar isWindow = typeof window !== \"undefined\";\nvar ua = isWindow ? window.navigator.userAgent : \"\";\nvar SUPPORT_COMPUTEDSTYLE = isWindow ? !!(\"getComputedStyle\" in window) : false;\nvar IS_IE = /MSIE|Trident|Windows Phone|Edge/.test(ua);\nvar SUPPORT_ADDEVENTLISTENER = isWindow ? !!(\"addEventListener\" in document) : false;\nvar WIDTH = \"width\";\nvar HEIGHT = \"height\";\nvar PROPS = [\"prefix\", \"loaders\"];\nvar EVENTS = [\"preReadyElement\", \"readyElement\", \"error\", \"preReady\", \"ready\"];\n\nfunction getAttribute(el, name) {\n return el.getAttribute(name) || \"\";\n}\n\nfunction toArray(arr) {\n return [].slice.call(arr);\n}\n\nfunction hasSizeAttribute(target, prefix) {\n if (prefix === void 0) {\n prefix = \"data-\";\n }\n\n return !!target.getAttribute(prefix + \"width\");\n}\n\nfunction hasLoadingAttribute(target, prefix) {\n if (prefix === void 0) {\n prefix = \"data-\";\n }\n\n return \"loading\" in target && target.getAttribute(\"loading\") === \"lazy\" || !!target.getAttribute(prefix + \"lazy\");\n}\n\nfunction hasSkipAttribute(target, prefix) {\n if (prefix === void 0) {\n prefix = \"data-\";\n }\n\n return !!target.getAttribute(prefix + \"skip\");\n}\n\nfunction addEvent(element, type, handler) {\n if (SUPPORT_ADDEVENTLISTENER) {\n element.addEventListener(type, handler, false);\n } else if (element.attachEvent) {\n element.attachEvent(\"on\" + type, handler);\n } else {\n element[\"on\" + type] = handler;\n }\n}\n\nfunction removeEvent(element, type, handler) {\n if (element.removeEventListener) {\n element.removeEventListener(type, handler, false);\n } else if (element.detachEvent) {\n element.detachEvent(\"on\" + type, handler);\n } else {\n element[\"on\" + type] = null;\n }\n}\n\nfunction innerWidth(el) {\n return getSize(el, \"Width\");\n}\n\nfunction innerHeight(el) {\n return getSize(el, \"Height\");\n}\n\nfunction getStyles(el) {\n return (SUPPORT_COMPUTEDSTYLE ? window.getComputedStyle(el) : el.currentStyle) || {};\n}\n\nfunction getSize(el, name) {\n var size = el[\"client\" + name] || el[\"offset\" + name];\n return parseFloat(size || getStyles(el)[name.toLowerCase()]) || 0;\n}\n\nfunction getContentElements(element, tags, prefix) {\n var skipElements = toArray(element.querySelectorAll(__spreadArrays([\"[\" + prefix + \"skip] [\" + prefix + \"width]\"], tags.map(function (tag) {\n return [\"[\" + prefix + \"skip] \" + tag, tag + \"[\" + prefix + \"skip]\", \"[\" + prefix + \"width] \" + tag].join(\", \");\n })).join(\", \")));\n return toArray(element.querySelectorAll(\"[\" + prefix + \"width], \" + tags.join(\", \"))).filter(function (el) {\n return skipElements.indexOf(el) === -1;\n });\n}\n/*\negjs-imready\nCopyright (c) 2020-present NAVER Corp.\nMIT license\n*/\n\n\nvar elements = [];\n\nfunction addAutoSizer(element, prefix) {\n !elements.length && addEvent(window, \"resize\", resizeAllAutoSizers);\n element.__PREFIX__ = prefix;\n elements.push(element);\n resize(element);\n}\n\nfunction removeAutoSizer(element, prefix) {\n var index = elements.indexOf(element);\n\n if (index < 0) {\n return;\n }\n\n var fixed = getAttribute(element, prefix + \"fixed\");\n delete element.__PREFIX__;\n element.style[fixed === HEIGHT ? WIDTH : HEIGHT] = \"\";\n elements.splice(index, 1);\n !elements.length && removeEvent(window, \"resize\", resizeAllAutoSizers);\n}\n\nfunction resize(element, prefix) {\n if (prefix === void 0) {\n prefix = \"data-\";\n }\n\n var elementPrefix = element.__PREFIX__ || prefix;\n var dataWidth = parseInt(getAttribute(element, \"\" + elementPrefix + WIDTH), 10) || 0;\n var dataHeight = parseInt(getAttribute(element, \"\" + elementPrefix + HEIGHT), 10) || 0;\n var fixed = getAttribute(element, elementPrefix + \"fixed\");\n\n if (fixed === HEIGHT) {\n var size = innerHeight(element) || dataHeight;\n element.style[WIDTH] = dataWidth / dataHeight * size + \"px\";\n } else {\n var size = innerWidth(element) || dataWidth;\n element.style[HEIGHT] = dataHeight / dataWidth * size + \"px\";\n }\n}\n\nfunction resizeAllAutoSizers() {\n elements.forEach(function (element) {\n resize(element);\n });\n}\n\nvar Loader = /*#__PURE__*/function (_super) {\n __extends(Loader, _super);\n\n function Loader(element, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _this = _super.call(this) || this;\n\n _this.isReady = false;\n _this.isPreReady = false;\n _this.hasDataSize = false;\n _this.hasLoading = false;\n _this.isSkip = false;\n\n _this.onCheck = function (e) {\n _this.clear();\n\n if (e && e.type === \"error\") {\n _this.onError(_this.element);\n }\n\n if (_this.hasLoading && _this.checkElement()) {\n // I'm not ready\n return;\n } // I'm pre-ready and ready!\n\n\n var withPreReady = !_this.hasDataSize && !_this.hasLoading;\n\n _this.onReady(withPreReady);\n };\n\n _this.options = __assign({\n prefix: \"data-\"\n }, options);\n _this.element = element;\n var prefix = _this.options.prefix;\n _this.hasDataSize = hasSizeAttribute(element, prefix);\n _this.isSkip = hasSkipAttribute(element, prefix);\n _this.hasLoading = hasLoadingAttribute(element, prefix);\n return _this;\n }\n\n var __proto = Loader.prototype;\n\n __proto.check = function () {\n if (this.isSkip || !this.checkElement()) {\n // I'm Ready\n this.onAlreadyReady(true);\n return false;\n }\n\n if (this.hasDataSize) {\n addAutoSizer(this.element, this.options.prefix);\n }\n\n if (this.hasDataSize || this.hasLoading) {\n // I'm Pre Ready\n this.onAlreadyPreReady();\n } // Wati Pre Ready, Ready\n\n\n return true;\n };\n\n __proto.addEvents = function () {\n var _this = this;\n\n var element = this.element;\n this.constructor.EVENTS.forEach(function (name) {\n addEvent(element, name, _this.onCheck);\n });\n };\n\n __proto.clear = function () {\n var _this = this;\n\n var element = this.element;\n this.constructor.EVENTS.forEach(function (name) {\n removeEvent(element, name, _this.onCheck);\n });\n this.removeAutoSizer();\n };\n\n __proto.destroy = function () {\n this.clear();\n this.off();\n };\n\n __proto.removeAutoSizer = function () {\n if (this.hasDataSize) {\n // I'm already ready.\n var prefix = this.options.prefix;\n removeAutoSizer(this.element, prefix);\n }\n };\n\n __proto.onError = function (target) {\n this.trigger(\"error\", {\n element: this.element,\n target: target\n });\n };\n\n __proto.onPreReady = function () {\n if (this.isPreReady) {\n return;\n }\n\n this.isPreReady = true;\n this.trigger(\"preReady\", {\n element: this.element,\n hasLoading: this.hasLoading,\n isSkip: this.isSkip\n });\n };\n\n __proto.onReady = function (withPreReady) {\n if (this.isReady) {\n return;\n }\n\n withPreReady = !this.isPreReady && withPreReady;\n\n if (withPreReady) {\n this.isPreReady = true;\n }\n\n this.removeAutoSizer();\n this.isReady = true;\n this.trigger(\"ready\", {\n element: this.element,\n withPreReady: withPreReady,\n hasLoading: this.hasLoading,\n isSkip: this.isSkip\n });\n };\n\n __proto.onAlreadyError = function (target) {\n var _this = this;\n\n setTimeout(function () {\n _this.onError(target);\n });\n };\n\n __proto.onAlreadyPreReady = function () {\n var _this = this;\n\n setTimeout(function () {\n _this.onPreReady();\n });\n };\n\n __proto.onAlreadyReady = function (withPreReady) {\n var _this = this;\n\n setTimeout(function () {\n _this.onReady(withPreReady);\n });\n };\n\n Loader.EVENTS = [];\n return Loader;\n}(Component);\n\nvar ElementLoader = /*#__PURE__*/function (_super) {\n __extends(ElementLoader, _super);\n\n function ElementLoader() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n var __proto = ElementLoader.prototype;\n\n __proto.setHasLoading = function (hasLoading) {\n this.hasLoading = hasLoading;\n };\n\n __proto.check = function () {\n if (this.isSkip) {\n // I'm Ready\n this.onAlreadyReady(true);\n return false;\n }\n\n if (this.hasDataSize) {\n addAutoSizer(this.element, this.options.prefix);\n this.onAlreadyPreReady();\n } else {\n // has not data size\n this.trigger(\"requestChildren\");\n }\n\n return true;\n };\n\n __proto.checkElement = function () {\n return true;\n };\n\n __proto.destroy = function () {\n this.clear();\n this.trigger(\"requestDestroy\");\n this.off();\n };\n\n __proto.onAlreadyPreReady = function () {\n // has data size\n _super.prototype.onAlreadyPreReady.call(this);\n\n this.trigger(\"reqeustReadyChildren\");\n };\n\n ElementLoader.EVENTS = [];\n return ElementLoader;\n}(Loader);\n/**\n * @alias eg.ImReady\n * @extends eg.Component\n */\n\n\nvar ImReadyManager = /*#__PURE__*/function (_super) {\n __extends(ImReadyManager, _super);\n /**\n * @param - ImReady's options\n */\n\n\n function ImReadyManager(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _this = _super.call(this) || this;\n\n _this.readyCount = 0;\n _this.preReadyCount = 0;\n _this.totalCount = 0;\n _this.totalErrorCount = 0;\n _this.isPreReadyOver = true;\n _this.elementInfos = [];\n _this.options = __assign({\n loaders: {},\n prefix: \"data-\"\n }, options);\n return _this;\n }\n /**\n * Checks whether elements are in the ready state.\n * @ko 엘리먼트가 준비 상태인지 체크한다.\n * @elements - Elements to check ready status. 준비 상태를 체크할 엘리먼트들.\n * @example\n * ```html\n *
\n * \n * \n * \n *
\n * ```\n * ## Javascript\n * ```js\n * import ImReady from \"@egjs/imready\";\n *\n * const im = new ImReady(); // umd: eg.ImReady\n * im.check(document.querySelectorAll(\"img\")).on({\n * preReadyElement: e => {\n * // 1, 3\n * // 2, 3\n * // 3, 3\n * console.log(e.preReadyCount, e.totalCount),\n * },\n * });\n * ```\n */\n\n\n var __proto = ImReadyManager.prototype;\n\n __proto.check = function (elements) {\n var _this = this;\n\n var prefix = this.options.prefix;\n this.clear();\n this.elementInfos = toArray(elements).map(function (element, index) {\n var loader = _this.getLoader(element, {\n prefix: prefix\n });\n\n loader.check();\n loader.on(\"error\", function (e) {\n _this.onError(index, e.target);\n }).on(\"preReady\", function (e) {\n var info = _this.elementInfos[index];\n info.hasLoading = e.hasLoading;\n info.isSkip = e.isSkip;\n\n var isPreReady = _this.checkPreReady(index);\n\n _this.onPreReadyElement(index);\n\n isPreReady && _this.onPreReady();\n }).on(\"ready\", function (_a) {\n var withPreReady = _a.withPreReady,\n hasLoading = _a.hasLoading,\n isSkip = _a.isSkip;\n var info = _this.elementInfos[index];\n info.hasLoading = hasLoading;\n info.isSkip = isSkip;\n\n var isPreReady = withPreReady && _this.checkPreReady(index);\n\n var isReady = _this.checkReady(index); // Pre-ready and ready occur simultaneously\n\n\n withPreReady && _this.onPreReadyElement(index);\n\n _this.onReadyElement(index);\n\n isPreReady && _this.onPreReady();\n isReady && _this.onReady();\n });\n return {\n loader: loader,\n element: element,\n hasLoading: false,\n hasError: false,\n isPreReady: false,\n isReady: false,\n isSkip: false\n };\n });\n var length = this.elementInfos.length;\n this.totalCount = length;\n\n if (!length) {\n setTimeout(function () {\n _this.onPreReady();\n\n _this.onReady();\n });\n }\n\n return this;\n };\n /**\n * Gets the total count of elements to be checked.\n * @ko 체크하는 element의 총 개수를 가져온다.\n */\n\n\n __proto.getTotalCount = function () {\n return this.totalCount;\n };\n /**\n * Whether the elements are all pre-ready. (all sizes are known)\n * @ko 엘리먼트들이 모두 사전 준비가 됐는지 (사이즈를 전부 알 수 있는지) 여부.\n */\n\n\n __proto.isPreReady = function () {\n return this.elementInfos.every(function (info) {\n return info.isPreReady;\n });\n };\n /**\n * Whether the elements are all ready.\n * @ko 엘리먼트들이 모두 준비가 됐는지 여부.\n */\n\n\n __proto.isReady = function () {\n return this.elementInfos.every(function (info) {\n return info.isReady;\n });\n };\n /**\n * Whether an error has occurred in the elements in the current state.\n * @ko 현재 상태에서 엘리먼트들이 에러가 발생했는지 여부.\n */\n\n\n __proto.hasError = function () {\n return this.totalErrorCount > 0;\n };\n /**\n * Clears events of elements being checked.\n * @ko 체크 중인 엘리먼트들의 이벤트를 해제 한다.\n */\n\n\n __proto.clear = function () {\n this.isPreReadyOver = false;\n this.totalCount = 0;\n this.preReadyCount = 0;\n this.readyCount = 0;\n this.totalErrorCount = 0;\n this.elementInfos.forEach(function (info) {\n if (info.loader) {\n info.loader.destroy();\n }\n });\n this.elementInfos = [];\n };\n /**\n * Destory all events.\n * @ko 모든 이벤트를 해제 한다.\n */\n\n\n __proto.destroy = function () {\n this.clear();\n this.off();\n };\n\n __proto.getLoader = function (element, options) {\n var _this = this;\n\n var tagName = element.tagName.toLowerCase();\n var loaders = this.options.loaders;\n var prefix = options.prefix;\n var tags = Object.keys(loaders);\n\n if (loaders[tagName]) {\n return new loaders[tagName](element, options);\n }\n\n var loader = new ElementLoader(element, options);\n var children = toArray(element.querySelectorAll(tags.join(\", \")));\n loader.setHasLoading(children.some(function (el) {\n return hasLoadingAttribute(el, prefix);\n }));\n var withPreReady = false;\n var childrenImReady = this.clone().on(\"error\", function (e) {\n loader.onError(e.target);\n }).on(\"ready\", function () {\n loader.onReady(withPreReady);\n });\n loader.on(\"requestChildren\", function () {\n // has not data size\n var contentElements = getContentElements(element, tags, _this.options.prefix);\n childrenImReady.check(contentElements).on(\"preReady\", function (e) {\n withPreReady = e.isReady;\n\n if (!withPreReady) {\n loader.onPreReady();\n }\n });\n }).on(\"reqeustReadyChildren\", function () {\n // has data size\n // loader call preReady\n // check only video, image elements\n childrenImReady.check(children);\n }).on(\"requestDestroy\", function () {\n childrenImReady.destroy();\n });\n return loader;\n };\n\n __proto.clone = function () {\n return new ImReadyManager(__assign({}, this.options));\n };\n\n __proto.checkPreReady = function (index) {\n this.elementInfos[index].isPreReady = true;\n ++this.preReadyCount;\n\n if (this.preReadyCount < this.totalCount) {\n return false;\n }\n\n return true;\n };\n\n __proto.checkReady = function (index) {\n this.elementInfos[index].isReady = true;\n ++this.readyCount;\n\n if (this.readyCount < this.totalCount) {\n return false;\n }\n\n return true;\n };\n\n __proto.onError = function (index, target) {\n var info = this.elementInfos[index];\n info.hasError = true;\n /**\n * An event occurs if the image, video fails to load.\n * @ko 이미지, 비디오가 로딩에 실패하면 이벤트가 발생한다.\n * @event eg.ImReady#error\n * @param {eg.ImReady.OnError} e - The object of data to be sent to an event 이벤트에 전달되는 데이터 객체\n * @example\n * ```html\n *
\n * \n * \n * \n *
\n * ```\n * ## Javascript\n * ```js\n * import ImReady from \"@egjs/imready\";\n *\n * const im = new ImReady(); // umd: eg.ImReady\n * im.check([document.querySelector(\"div\")]).on({\n * error: e => {\n * //
...
, 0, \n * console.log(e.element, e.index, e.target),\n * },\n * });\n * ```\n */\n\n this.trigger(new ComponentEvent(\"error\", {\n element: info.element,\n index: index,\n target: target,\n errorCount: this.getErrorCount(),\n totalErrorCount: ++this.totalErrorCount\n }));\n };\n\n __proto.onPreReadyElement = function (index) {\n var info = this.elementInfos[index];\n /**\n * An event occurs when the element is pre-ready (when the loading attribute is applied or the size is known)\n * @ko 해당 엘리먼트가 사전 준비되었을 때(loading 속성이 적용되었거나 사이즈를 알 수 있을 때) 이벤트가 발생한다.\n * @event eg.ImReady#preReadyElement\n * @param {eg.ImReady.OnPreReadyElement} e - The object of data to be sent to an event 이벤트에 전달되는 데이터 객체\n * @example\n * ```html\n *
\n * \n * \n * \n *
\n * ```\n * ## Javascript\n * ```js\n * import ImReady from \"@egjs/imready\";\n *\n * const im = new ImReady(); // umd: eg.ImReady\n * im.check(document.querySelectorAll(\"img\")).on({\n * preReadyElement: e => {\n * // 1, 3\n * // 2, 3\n * // 3, 3\n * console.log(e.preReadyCount, e.totalCount),\n * },\n * });\n * ```\n */\n\n this.trigger(new ComponentEvent(\"preReadyElement\", {\n element: info.element,\n index: index,\n preReadyCount: this.preReadyCount,\n readyCount: this.readyCount,\n totalCount: this.totalCount,\n isPreReady: this.isPreReady(),\n isReady: this.isReady(),\n hasLoading: info.hasLoading,\n isSkip: info.isSkip\n }));\n };\n\n __proto.onPreReady = function () {\n this.isPreReadyOver = true;\n /**\n * An event occurs when all element are pre-ready (When all elements have the loading attribute applied or the size is known)\n * @ko 모든 엘리먼트들이 사전 준비된 경우 (모든 엘리먼트들이 loading 속성이 적용되었거나 사이즈를 알 수 있는 경우) 이벤트가 발생한다.\n * @event eg.ImReady#preReady\n * @param {eg.ImReady.OnPreReady} e - The object of data to be sent to an event 이벤트에 전달되는 데이터 객체\n * @example\n * ```html\n *
\n * \n * \n * \n *
\n * ```\n * ## Javascript\n * ```js\n * import ImReady from \"@egjs/imready\";\n *\n * const im = new ImReady(); // umd: eg.ImReady\n * im.check(document.querySelectorAll(\"img\")).on({\n * preReady: e => {\n * // 0, 3\n * console.log(e.readyCount, e.totalCount),\n * },\n * });\n * ```\n */\n\n this.trigger(new ComponentEvent(\"preReady\", {\n readyCount: this.readyCount,\n totalCount: this.totalCount,\n isReady: this.isReady(),\n hasLoading: this.hasLoading()\n }));\n };\n\n __proto.onReadyElement = function (index) {\n var info = this.elementInfos[index];\n /**\n * An event occurs when the element is ready\n * @ko 해당 엘리먼트가 준비가 되었을 때 이벤트가 발생한다.\n * @event eg.ImReady#readyElement\n * @param {eg.ImReady.OnReadyElement} e - The object of data to be sent to an event 이벤트에 전달되는 데이터 객체\n * @example\n * ```html\n *
\n * \n * \n * \n *
\n * ```\n * ## Javascript\n * ```js\n * import ImReady from \"@egjs/imready\";\n *\n * const im = new ImReady(); // umd: eg.ImReady\n * im.check(document.querySelectorAll(\"img\")).on({\n * readyElement: e => {\n * // 1, 0, false, 3\n * // 2, 1, false, 3\n * // 3, 2, true, 3\n * console.log(e.readyCount, e.index, e.hasError, e.totalCount),\n * },\n * });\n * ```\n */\n\n this.trigger(new ComponentEvent(\"readyElement\", {\n index: index,\n element: info.element,\n hasError: info.hasError,\n errorCount: this.getErrorCount(),\n totalErrorCount: this.totalErrorCount,\n preReadyCount: this.preReadyCount,\n readyCount: this.readyCount,\n totalCount: this.totalCount,\n isPreReady: this.isPreReady(),\n isReady: this.isReady(),\n hasLoading: info.hasLoading,\n isPreReadyOver: this.isPreReadyOver,\n isSkip: info.isSkip\n }));\n };\n\n __proto.onReady = function () {\n /**\n * An event occurs when all element are ready\n * @ko 모든 엘리먼트들이 준비된 경우 이벤트가 발생한다.\n * @event eg.ImReady#ready\n * @param {eg.ImReady.OnReady} e - The object of data to be sent to an event 이벤트에 전달되는 데이터 객체\n * @example\n * ```html\n *
\n * \n * \n * \n *
\n * ```\n * ## Javascript\n * ```js\n * import ImReady from \"@egjs/imready\";\n *\n * const im = new ImReady(); // umd: eg.ImReady\n * im.check(document.querySelectorAll(\"img\")).on({\n * preReady: e => {\n * // 0, 3\n * console.log(e.readyCount, e.totalCount),\n * },\n * ready: e => {\n * // 1, 3\n * console.log(e.errorCount, e.totalCount),\n * },\n * });\n * ```\n */\n this.trigger(new ComponentEvent(\"ready\", {\n errorCount: this.getErrorCount(),\n totalErrorCount: this.totalErrorCount,\n totalCount: this.totalCount\n }));\n };\n\n __proto.getErrorCount = function () {\n return this.elementInfos.filter(function (info) {\n return info.hasError;\n }).length;\n };\n\n __proto.hasLoading = function () {\n return this.elementInfos.some(function (info) {\n return info.hasLoading;\n });\n };\n\n return ImReadyManager;\n}(Component);\n\nvar ImageLoader = /*#__PURE__*/function (_super) {\n __extends(ImageLoader, _super);\n\n function ImageLoader() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n var __proto = ImageLoader.prototype;\n\n __proto.checkElement = function () {\n var element = this.element;\n var src = element.getAttribute(\"src\");\n\n if (element.complete) {\n if (src) {\n // complete\n if (!element.naturalWidth) {\n this.onAlreadyError(element);\n }\n\n return false;\n } else {\n // Using an external lazy loading module\n this.onAlreadyPreReady();\n }\n }\n\n this.addEvents();\n IS_IE && element.setAttribute(\"src\", src);\n return true;\n };\n\n ImageLoader.EVENTS = [\"load\", \"error\"];\n return ImageLoader;\n}(Loader);\n\nvar VideoLoader = /*#__PURE__*/function (_super) {\n __extends(VideoLoader, _super);\n\n function VideoLoader() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n var __proto = VideoLoader.prototype;\n\n __proto.checkElement = function () {\n var element = this.element; // HAVE_NOTHING: 0, no information whether or not the audio/video is ready\n // HAVE_METADATA: 1, HAVE_METADATA - metadata for the audio/video is ready\n // HAVE_CURRENT_DATA: 2, data for the current playback position is available, but not enough data to play next frame/millisecond\n // HAVE_FUTURE_DATA: 3, data for the current and at least the next frame is available\n // HAVE_ENOUGH_DATA: 4, enough data available to start playing\n\n if (element.readyState >= 1) {\n return false;\n }\n\n if (element.error) {\n this.onAlreadyError(element);\n return false;\n }\n\n this.addEvents();\n return true;\n };\n\n VideoLoader.EVENTS = [\"loadedmetadata\", \"error\"];\n return VideoLoader;\n}(Loader);\n\nvar ImReady = /*#__PURE__*/function (_super) {\n __extends(ImReady, _super);\n\n function ImReady(options) {\n if (options === void 0) {\n options = {};\n }\n\n return _super.call(this, __assign({\n loaders: {\n img: ImageLoader,\n video: VideoLoader\n }\n }, options)) || this;\n }\n\n return ImReady;\n}(ImReadyManager);\n\nvar REACTIVE_IMREADY = function (_a) {\n var setEvents = _a.setEvents,\n setMethods = _a.setMethods,\n on = _a.on,\n onInit = _a.onInit,\n onDestroy = _a.onDestroy,\n getProps = _a.getProps;\n setEvents(EVENTS);\n setMethods([\"add\"]);\n var children = [];\n var reactiveImReady = reactive({\n preReadyCount: 0,\n readyCount: 0,\n errorCount: 0,\n totalErrorCount: 0,\n totalCount: 0,\n isPreReady: false,\n isReady: false,\n hasError: false,\n isPreReadyOver: false,\n add: function (element) {\n children.push(element);\n }\n });\n var props = getProps() || {};\n var imReady = new ImReady(props);\n imReady.on(\"error\", function (e) {\n reactiveImReady.hasError = true;\n reactiveImReady.errorCount = e.errorCount;\n reactiveImReady.totalErrorCount = e.totalErrorCount;\n }).on(\"preReadyElement\", function (e) {\n reactiveImReady.preReadyCount = e.preReadyCount;\n }).on(\"readyElement\", function (e) {\n reactiveImReady.readyCount = e.readyCount;\n reactiveImReady.isPreReadyOver = e.isPreReadyOver;\n }).on(\"preReady\", function () {\n reactiveImReady.isPreReady = true;\n }).on(\"ready\", function () {\n reactiveImReady.isReady = true;\n });\n on(function (_, name, callback) {\n imReady.on(name, callback);\n return function () {\n imReady.off(name, callback);\n };\n });\n onInit(function () {\n var selector = props === null || props === void 0 ? void 0 : props.selector;\n var checkedElements = [];\n children.forEach(function (child) {\n if (!child) {\n return;\n }\n\n if (isString(child)) {\n checkedElements = __spreadArrays(checkedElements, toArray(document.querySelectorAll(child)));\n } else if (child instanceof Element) {\n checkedElements.push(child);\n } else if (\"value\" in child || \"current\" in child) {\n var element = child.value || child.current;\n\n if (element) {\n checkedElements.push(element);\n }\n }\n });\n\n if (selector) {\n checkedElements = checkedElements.reduce(function (prev, cur) {\n return __spreadArrays(prev, [].slice.call(cur.querySelectorAll(selector)));\n }, []);\n }\n\n reactiveImReady.totalCount = checkedElements.length;\n imReady.check(checkedElements);\n });\n onDestroy(function () {\n imReady.destroy();\n });\n return reactiveImReady;\n};\n/*\negjs-imready\nCopyright (c) 2020-present NAVER Corp.\nMIT license\n*/\n\n\nexport default ImReady;\nexport { EVENTS, ImageLoader, Loader, ImReadyManager as Manager, PROPS, REACTIVE_IMREADY, VideoLoader };","/*\nCopyright (c) 2015-present NAVER Corp.\nname: @egjs/flicking\nlicense: MIT\nauthor: NAVER Corp.\nrepository: https://github.com/naver/egjs-flicking\nversion: 4.11.1\n*/\nimport Component, { ComponentEvent } from '@egjs/component';\nimport Axes, { PanInput } from '@egjs/axes';\nimport ImReady from '@egjs/imready';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n/** @deprecated */\n\n\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n\n return ar;\n}\n/*\r\n * Copyright (c) 2015 NAVER Corp.\r\n * egjs projects are licensed under the MIT license\r\n */\n\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\n\n/**\r\n * Error codes of {@link FlickingError}. Below are the conditions where each error code occurs.\r\n * @ko {@link FlickingError}의 에러 코드. 아래는 각각의 에러 코드가 발생하는 조건입니다.\r\n * @name ERROR_CODE\r\n * @constant\r\n * @type object\r\n * @property {number} WRONG_TYPE Parameter type is wrong패러미터의 타입이 잘못되었을 경우\r\n * @property {number} ELEMENT_NOT_FOUND Element is not found inside page with the given CSS selector주어진 CSS selector로 페이지 내에서 해당 엘리먼트를 찾지 못했을 경우\r\n * @property {number} VAL_MUST_NOT_NULL Expected non-null value, but given `null` or `undefined`값을 기대했으나, `null`이나 `undefined`를 받은 경우\r\n * @property {number} NOT_ATTACHED_TO_FLICKING When Flicking's component is not initialized (i.e. {@link Flicking#init} is not called)Flicking 내부 컴포넌트가 초기화되지 않은 경우 ({@link Flicking#init}이 호출되지 않은 경우)\r\n * @property {number} WRONG_OPTION One of the options is wrong옵션들 중 잘못된 값이 있을 때\r\n * @property {number} INDEX_OUT_OF_RANGE When the given index is out of possible range인덱스가 주어진 범위를 벗어난 경우\r\n * @property {number} POSITION_NOT_REACHABLE When {@link Control#moveToPosition}'s position parameter is out of possible range.{@link Control#moveToPosition}의 `position` 패러미터가 도달 가능한 범위를 벗어난 경우\r\n * @property {number} TRANSFORM_NOT_SUPPORTED CSS `transform` property is not available(<=IE8) CSS `transform` 속성을 사용할 수 없는 경우(<=IE8)\r\n * @property {number} STOP_CALLED_BY_USER When the event's `stop()` is called by user.사용자에 의해 이벤트의 `stop()`이 호출된 경우\r\n * @property {number} ANIMATION_INTERRUPTED When the animation is interrupted by user.사용자에 의해 애니메이션이 중단된 경우\r\n * @property {number} ANIMATION_ALREADY_PLAYING When the animation is already playing.현재 애니메이션이 이미 진행중인 경우\r\n * @property {number} NOT_ALLOWED_IN_FRAMEWORK When the non-allowed method is called from frameworks (React, Angular, Vue...)\r\n * 프레임워크(React, Angular, Vue ...)에서 사용 불가능한 메소드를 호출했을 경우\r\n * @property {number} NOT_INITIALIZED When the {@link Flicking#init} is not called before but is needed{@link Flicking#init}의 호출이 필요하나, 아직 호출되지 않았을 경우\r\n * @property {number} NO_ACTIVE When there're no active panel that flicking has selected. This may be due to the absence of any panels현재 Flicking이 선택한 패널이 없을 경우. 일반적으로 패널이 하나도 없는 경우에 발생할 수 있습니다\r\n * @property {number} NOT_ALLOWED_IN_VIRTUAL When the non-allowed method is called while the virtual option is enabledvirtual 옵션이 활성화된 상태에서 사용 불가능한 메소드가 호출되었을 경우\r\n */\n\n\nvar CODE = {\n WRONG_TYPE: 0,\n ELEMENT_NOT_FOUND: 1,\n VAL_MUST_NOT_NULL: 2,\n NOT_ATTACHED_TO_FLICKING: 3,\n WRONG_OPTION: 4,\n INDEX_OUT_OF_RANGE: 5,\n POSITION_NOT_REACHABLE: 6,\n TRANSFORM_NOT_SUPPORTED: 7,\n STOP_CALLED_BY_USER: 8,\n ANIMATION_INTERRUPTED: 9,\n ANIMATION_ALREADY_PLAYING: 10,\n NOT_ALLOWED_IN_FRAMEWORK: 11,\n NOT_INITIALIZED: 12,\n NO_ACTIVE: 13,\n NOT_ALLOWED_IN_VIRTUAL: 14\n};\nvar MESSAGE = {\n WRONG_TYPE: function (wrongVal, correctTypes) {\n return wrongVal + \"(\" + typeof wrongVal + \") is not a \" + correctTypes.map(function (type) {\n return \"\\\"\" + type + \"\\\"\";\n }).join(\" or \") + \".\";\n },\n ELEMENT_NOT_FOUND: function (selector) {\n return \"Element with selector \\\"\" + selector + \"\\\" not found.\";\n },\n VAL_MUST_NOT_NULL: function (val, name) {\n return name + \" should be provided. Given: \" + val;\n },\n NOT_ATTACHED_TO_FLICKING: \"This module is not attached to the Flicking instance. \\\"init()\\\" should be called first.\",\n WRONG_OPTION: function (optionName, val) {\n return \"Option \\\"\" + optionName + \"\\\" is not in correct format, given: \" + val;\n },\n INDEX_OUT_OF_RANGE: function (val, min, max) {\n return \"Index \\\"\" + val + \"\\\" is out of range: should be between \" + min + \" and \" + max + \".\";\n },\n POSITION_NOT_REACHABLE: function (position) {\n return \"Position \\\"\" + position + \"\\\" is not reachable.\";\n },\n TRANSFORM_NOT_SUPPORTED: \"Browser does not support CSS transform.\",\n STOP_CALLED_BY_USER: \"Event stop() is called by user.\",\n ANIMATION_INTERRUPTED: \"Animation is interrupted by user input.\",\n ANIMATION_ALREADY_PLAYING: \"Animation is already playing.\",\n NOT_ALLOWED_IN_FRAMEWORK: \"This behavior is not allowed in the frameworks like React, Vue, or Angular.\",\n NOT_INITIALIZED: \"Flicking is not initialized yet, call init() first.\",\n NO_ACTIVE: \"There's no active panel that Flicking has selected. This may be due to the absence of any panels.\",\n NOT_ALLOWED_IN_VIRTUAL: \"This behavior is not allowed when the virtual option is enabled\"\n};\n/*\r\n * Copyright (c) 2015 NAVER Corp.\r\n * egjs projects are licensed under the MIT license\r\n */\n\n/**\r\n * Event type object with event name strings of {@link Flicking}\r\n * @ko {@link Flicking}의 이벤트 이름 문자열들을 담은 객체\r\n * @type {object}\r\n * @property {\"holdStart\"} HOLD_START holdStart eventholdStart 이벤트\r\n * @property {\"holdEnd\"} HOLD_END holdEnd eventholdEnd 이벤트\r\n * @property {\"moveStart\"} MOVE_START moveStart eventmoveStart 이벤트\r\n * @property {\"move\"} MOVE move eventmove 이벤트\r\n * @property {\"moveEnd\"} MOVE_END moveEnd eventmoveEnd 이벤트\r\n * @property {\"willChange\"} WILL_CHANGE willChange eventwillChange 이벤트\r\n * @property {\"changed\"} CHANGED changed eventchanged 이벤트\r\n * @property {\"willRestore\"} WILL_RESTORE willRestore eventwillRestore 이벤트\r\n * @property {\"restored\"} RESTORED restored eventrestored 이벤트\r\n * @property {\"select\"} SELECT select eventselect 이벤트\r\n * @property {\"needPanel\"} NEED_PANEL needPanel eventneedPanel 이벤트\r\n * @property {\"panelChange\"} PANEL_CHANGE panelChange eventpanelChange 이벤트\r\n * @example\r\n * ```ts\r\n * import { EVENTS } from \"@egjs/flicking\";\r\n * EVENTS.MOVE_START; // \"moveStart\"\r\n * ```\r\n */\n\nvar EVENTS = {\n READY: \"ready\",\n BEFORE_RESIZE: \"beforeResize\",\n AFTER_RESIZE: \"afterResize\",\n HOLD_START: \"holdStart\",\n HOLD_END: \"holdEnd\",\n MOVE_START: \"moveStart\",\n MOVE: \"move\",\n MOVE_END: \"moveEnd\",\n WILL_CHANGE: \"willChange\",\n CHANGED: \"changed\",\n WILL_RESTORE: \"willRestore\",\n RESTORED: \"restored\",\n SELECT: \"select\",\n NEED_PANEL: \"needPanel\",\n VISIBLE_CHANGE: \"visibleChange\",\n REACH_EDGE: \"reachEdge\",\n PANEL_CHANGE: \"panelChange\"\n};\n/**\r\n * An object with all possible predefined literal string for the {@link Flicking#align align} option\r\n * @ko {@link Flicking#align align} 옵션에 사용되는 미리 정의된 리터럴 상수들을 담고 있는 객체\r\n * @type {object}\r\n * @property {\"prev\"} PREV left/top align좌/상 정렬\r\n * @property {\"center\"} CENTER center align중앙 정렬\r\n * @property {\"next\"} NEXT right/bottom align우/하 정렬\r\n */\n\nvar ALIGN = {\n PREV: \"prev\",\n CENTER: \"center\",\n NEXT: \"next\"\n};\n/**\r\n * An object of directions\r\n * @ko 방향을 나타내는 값들을 담고 있는 객체\r\n * @type {object}\r\n * @property {\"PREV\"} PREV \"left\" when {@link Flicking#horizontal horizontal} is true, and \"top\" when {@link Flicking#horizontal horizontal} is false\r\n * {@link Flicking#horizontal horizontal}가 `true`일 경우 왼쪽, {@link Flicking#horizontal horizontal}가 `false`일 경우 위쪽을 의미합니다\r\n * @property {\"NEXT\"} NEXT \"right\" when {@link Flicking#horizontal horizontal} is true, and \"bottom\" when {@link Flicking#horizontal horizontal} is false\r\n * {@link Flicking#horizontal horizontal}가 `true`일 경우 오른쪽, {@link Flicking#horizontal horizontal}가 `false`일 경우 아래쪽을 의미합니다\r\n * @property {null} NONE This value usually means it's the same position주로 제자리인 경우를 의미합니다\r\n */\n\nvar DIRECTION = {\n PREV: \"PREV\",\n NEXT: \"NEXT\",\n NONE: null\n};\n/**\r\n * An object with all possible {@link Flicking#moveType moveType}s\r\n * @ko Flicking이 제공하는 {@link Flicking#moveType moveType}들을 담고 있는 객체\r\n * @type {object}\r\n * @property {\"snap\"} SNAP Flicking's {@link Flicking#moveType moveType} that enables {@link SnapControl} as a Flicking's {@link Flicking#control control}\r\n * Flicking의 {@link Flicking#control control}을 {@link SnapControl}로 설정하게 하는 {@link Flicking#moveType moveType}\r\n * @property {\"freeScroll\"} FREE_SCROLL Flicking's {@link Flicking#moveType moveType} that enables {@link FreeControl} as a Flicking's {@link Flicking#control control}\r\n * Flicking의 {@link Flicking#control control}을 {@link FreeControl}로 설정하게 하는 {@link Flicking#moveType moveType}\r\n * @property {\"strict\"} STRICT Flicking's {@link Flicking#moveType moveType} that enables {@link StrictControl} as a Flicking's {@link Flicking#control control}\r\n * Flicking의 {@link Flicking#control control}을 {@link StrictControl}로 설정하게 하는 {@link Flicking#moveType moveType}\r\n */\n\nvar MOVE_TYPE = {\n SNAP: \"snap\",\n FREE_SCROLL: \"freeScroll\",\n STRICT: \"strict\"\n};\nvar CLASS = {\n VERTICAL: \"vertical\",\n HIDDEN: \"flicking-hidden\",\n DEFAULT_VIRTUAL: \"flicking-panel\"\n};\n/**\r\n * An object with all possible {@link Flicking#circularFallback circularFallback}s\r\n * @ko Flicking의 {@link Flicking#circularFallback circularFallback}에 설정 가능한 값들을 담고 있는 객체\r\n * @type {object}\r\n * @property {string} LINEAR \"linear\"\r\n * @property {string} BOUND \"bound\"\r\n */\n\nvar CIRCULAR_FALLBACK = {\n LINEAR: \"linear\",\n BOUND: \"bound\"\n};\n/**\r\n * An object for identifying {@link https://developer.mozilla.org/en-US/docs/Web/CSS/direction direction} CSS property applied to the camera element(`.flicking-camera`)\r\n * @ko 카메라 엘리먼트(`.flicking-camera`)에 적용된 {@link https://developer.mozilla.org/en-US/docs/Web/CSS/direction direction} CSS 속성을 구분하기 위한 객체\r\n * @type {object}\r\n * @property {string} LTR \"ltr\"\r\n * @property {string} RTL \"rtl\"\r\n */\n\nvar ORDER = {\n LTR: \"ltr\",\n RTL: \"rtl\"\n}; // eslint-disable-next-line @typescript-eslint/ban-types\n\nvar merge = function (target) {\n var sources = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n\n sources.forEach(function (source) {\n Object.keys(source).forEach(function (key) {\n target[key] = source[key];\n });\n });\n return target;\n};\n\nvar getElement = function (el, parent) {\n var targetEl = null;\n\n if (isString(el)) {\n var parentEl = parent ? parent : document;\n var queryResult = parentEl.querySelector(el);\n\n if (!queryResult) {\n throw new FlickingError(MESSAGE.ELEMENT_NOT_FOUND(el), CODE.ELEMENT_NOT_FOUND);\n }\n\n targetEl = queryResult;\n } else if (el && el.nodeType === Node.ELEMENT_NODE) {\n targetEl = el;\n }\n\n if (!targetEl) {\n throw new FlickingError(MESSAGE.WRONG_TYPE(el, [\"HTMLElement\", \"string\"]), CODE.WRONG_TYPE);\n }\n\n return targetEl;\n};\n\nvar checkExistence = function (value, nameOnErrMsg) {\n if (value == null) {\n throw new FlickingError(MESSAGE.VAL_MUST_NOT_NULL(value, nameOnErrMsg), CODE.VAL_MUST_NOT_NULL);\n }\n};\n\nvar clamp = function (x, min, max) {\n return Math.max(Math.min(x, max), min);\n};\n\nvar getFlickingAttached = function (val) {\n if (!val) {\n throw new FlickingError(MESSAGE.NOT_ATTACHED_TO_FLICKING, CODE.NOT_ATTACHED_TO_FLICKING);\n }\n\n return val;\n};\n\nvar toArray = function (iterable) {\n return [].slice.call(iterable);\n};\n\nvar parseAlign$1 = function (align, size) {\n var alignPoint;\n\n if (isString(align)) {\n switch (align) {\n case ALIGN.PREV:\n alignPoint = 0;\n break;\n\n case ALIGN.CENTER:\n alignPoint = 0.5 * size;\n break;\n\n case ALIGN.NEXT:\n alignPoint = size;\n break;\n\n default:\n alignPoint = parseArithmeticSize(align, size);\n\n if (alignPoint == null) {\n throw new FlickingError(MESSAGE.WRONG_OPTION(\"align\", align), CODE.WRONG_OPTION);\n }\n\n }\n } else {\n alignPoint = align;\n }\n\n return alignPoint;\n};\n\nvar parseBounce = function (bounce, size) {\n var parsedBounce;\n\n if (Array.isArray(bounce)) {\n parsedBounce = bounce.map(function (val) {\n return parseArithmeticSize(val, size);\n });\n } else {\n var parsedVal = parseArithmeticSize(bounce, size);\n parsedBounce = [parsedVal, parsedVal];\n }\n\n return parsedBounce.map(function (val) {\n if (val == null) {\n throw new FlickingError(MESSAGE.WRONG_OPTION(\"bounce\", bounce), CODE.WRONG_OPTION);\n }\n\n return val;\n });\n};\n\nvar parseArithmeticSize = function (cssValue, base) {\n var parsed = parseArithmeticExpression(cssValue);\n if (parsed == null) return null;\n return parsed.percentage * base + parsed.absolute;\n};\n\nvar parseArithmeticExpression = function (cssValue) {\n var cssRegex = /(?:(\\+|\\-)\\s*)?(\\d+(?:\\.\\d+)?(%|px)?)/g;\n\n if (typeof cssValue === \"number\") {\n return {\n percentage: 0,\n absolute: cssValue\n };\n }\n\n var parsed = {\n percentage: 0,\n absolute: 0\n };\n var idx = 0;\n var matchResult = cssRegex.exec(cssValue);\n\n while (matchResult != null) {\n var sign = matchResult[1];\n var value = matchResult[2];\n var unit = matchResult[3];\n var parsedValue = parseFloat(value);\n\n if (idx <= 0) {\n sign = sign || \"+\";\n } // Return default value for values not in good form\n\n\n if (!sign) {\n return null;\n }\n\n var signMultiplier = sign === \"+\" ? 1 : -1;\n\n if (unit === \"%\") {\n parsed.percentage += signMultiplier * (parsedValue / 100);\n } else {\n parsed.absolute += signMultiplier * parsedValue;\n } // Match next occurrence\n\n\n ++idx;\n matchResult = cssRegex.exec(cssValue);\n } // None-matched\n\n\n if (idx === 0) {\n return null;\n }\n\n return parsed;\n};\n\nvar parseCSSSizeValue = function (val) {\n return isString(val) ? val : val + \"px\";\n};\n\nvar parsePanelAlign = function (align) {\n return typeof align === \"object\" ? align.panel : align;\n};\n\nvar getDirection = function (start, end) {\n if (start === end) return DIRECTION.NONE;\n return start < end ? DIRECTION.NEXT : DIRECTION.PREV;\n};\n\nvar parseElement = function (element) {\n if (!Array.isArray(element)) {\n element = [element];\n }\n\n var elements = [];\n element.forEach(function (el) {\n if (isString(el)) {\n var tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = el;\n elements.push.apply(elements, __spread(toArray(tempDiv.children)));\n\n while (tempDiv.firstChild) {\n tempDiv.removeChild(tempDiv.firstChild);\n }\n } else if (el && el.nodeType === Node.ELEMENT_NODE) {\n elements.push(el);\n } else {\n throw new FlickingError(MESSAGE.WRONG_TYPE(el, [\"HTMLElement\", \"string\"]), CODE.WRONG_TYPE);\n }\n });\n return elements;\n};\n\nvar getMinusCompensatedIndex = function (idx, max) {\n return idx < 0 ? clamp(idx + max, 0, max) : clamp(idx, 0, max);\n};\n\nvar includes = function (array, target) {\n var e_1, _a;\n\n try {\n for (var array_1 = __values(array), array_1_1 = array_1.next(); !array_1_1.done; array_1_1 = array_1.next()) {\n var val = array_1_1.value;\n if (val === target) return true;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (array_1_1 && !array_1_1.done && (_a = array_1.return)) _a.call(array_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n return false;\n};\n\nvar isString = function (val) {\n return typeof val === \"string\";\n};\n\nvar circulatePosition = function (pos, min, max) {\n var size = max - min;\n\n if (pos < min) {\n var offset = (min - pos) % size;\n pos = max - offset;\n } else if (pos > max) {\n var offset = (pos - max) % size;\n pos = min + offset;\n }\n\n return pos;\n};\n\nvar find = function (array, checker) {\n var e_2, _a;\n\n try {\n for (var array_2 = __values(array), array_2_1 = array_2.next(); !array_2_1.done; array_2_1 = array_2.next()) {\n var val = array_2_1.value;\n\n if (checker(val)) {\n return val;\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (array_2_1 && !array_2_1.done && (_a = array_2.return)) _a.call(array_2);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n\n return null;\n};\n\nvar findRight = function (array, checker) {\n for (var idx = array.length - 1; idx >= 0; idx--) {\n var val = array[idx];\n\n if (checker(val)) {\n return val;\n }\n }\n\n return null;\n};\n\nvar findIndex = function (array, checker) {\n for (var idx = 0; idx < array.length; idx++) {\n if (checker(array[idx])) {\n return idx;\n }\n }\n\n return -1;\n};\n\nvar getProgress = function (pos, prev, next) {\n return (pos - prev) / (next - prev);\n}; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\n\nvar getStyle = function (el) {\n return window.getComputedStyle(el) || el.currentStyle;\n};\n\nvar setSize = function (el, _a) {\n var width = _a.width,\n height = _a.height;\n\n if (width != null) {\n if (isString(width)) {\n el.style.width = width;\n } else {\n el.style.width = width + \"px\";\n }\n }\n\n if (height != null) {\n if (isString(height)) {\n el.style.height = height;\n } else {\n el.style.height = height + \"px\";\n }\n }\n};\n\nvar isBetween = function (val, min, max) {\n return val >= min && val <= max;\n};\n\nvar circulateIndex = function (index, max) {\n if (index >= max) {\n return index % max;\n } else if (index < 0) {\n return getMinusCompensatedIndex((index + 1) % max - 1, max);\n } else {\n return index;\n }\n};\n\nvar range = function (end) {\n var arr = new Array(end);\n\n for (var i = 0; i < end; i++) {\n arr[i] = i;\n }\n\n return arr;\n};\n\nvar getElementSize = function (_a) {\n var el = _a.el,\n horizontal = _a.horizontal,\n useFractionalSize = _a.useFractionalSize,\n useOffset = _a.useOffset,\n style = _a.style;\n var size = 0;\n\n if (useFractionalSize) {\n var baseSize = parseFloat(horizontal ? style.width : style.height) || 0;\n var isBorderBoxSizing = style.boxSizing === \"border-box\";\n var border = horizontal ? parseFloat(style.borderLeftWidth || \"0\") + parseFloat(style.borderRightWidth || \"0\") : parseFloat(style.borderTopWidth || \"0\") + parseFloat(style.borderBottomWidth || \"0\");\n\n if (isBorderBoxSizing) {\n size = useOffset ? baseSize : baseSize - border;\n } else {\n var padding = horizontal ? parseFloat(style.paddingLeft || \"0\") + parseFloat(style.paddingRight || \"0\") : parseFloat(style.paddingTop || \"0\") + parseFloat(style.paddingBottom || \"0\");\n size = useOffset ? baseSize + padding + border : baseSize + padding;\n }\n } else {\n var sizeStr = horizontal ? \"Width\" : \"Height\";\n size = useOffset ? el[\"offset\" + sizeStr] : el[\"client\" + sizeStr];\n }\n\n return Math.max(size, 0);\n};\n\nvar setPrototypeOf = Object.setPrototypeOf || function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n};\n/*\r\n * Copyright (c) 2015 NAVER Corp.\r\n * egjs projects are licensed under the MIT license\r\n */\n\n/**\r\n * Special type of known error that {@link Flicking} throws.\r\n * @ko Flicking 내부에서 알려진 오류 발생시 throw되는 에러\r\n * @property {number} code Error code에러 코드\r\n * @property {string} message Error message에러 메시지\r\n * @see {@link ERROR_CODE ERROR_CODE}\r\n * @example\r\n * ```ts\r\n * import Flicking, { FlickingError, ERROR_CODES } from \"@egjs/flicking\";\r\n * try {\r\n * const flicking = new Flicking(\".flicking-viewport\")\r\n * } catch (e) {\r\n * if (e instanceof FlickingError && e.code === ERROR_CODES.ELEMENT_NOT_FOUND) {\r\n * console.error(\"Element not found\")\r\n * }\r\n * }\r\n * ```\r\n */\n\n\nvar FlickingError = /*#__PURE__*/function (_super) {\n __extends(FlickingError, _super);\n /**\r\n * @param message Error message에러 메시지\r\n * @param code Error code에러 코드\r\n */\n\n\n function FlickingError(message, code) {\n var _this = _super.call(this, message) || this;\n\n setPrototypeOf(_this, FlickingError.prototype);\n _this.name = \"FlickingError\";\n _this.code = code;\n return _this;\n }\n\n return FlickingError;\n}(Error);\n/**\r\n * A component that manages viewport size\r\n * @ko 뷰포트 크기 정보를 담당하는 컴포넌트\r\n */\n\n\nvar Viewport = /*#__PURE__*/function () {\n /**\r\n * @param el A viewport element뷰포트 엘리먼트\r\n */\n function Viewport(flicking, el) {\n this._flicking = flicking;\n this._el = el;\n this._width = 0;\n this._height = 0;\n this._padding = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this._isBorderBoxSizing = false;\n }\n\n var __proto = Viewport.prototype;\n Object.defineProperty(__proto, \"element\", {\n /**\r\n * A viewport(root) element\r\n * @ko 뷰포트(root) 엘리먼트\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\n get: function () {\n return this._el;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"width\", {\n /**\r\n * Viewport width, without paddings\r\n * @ko 뷰포트 너비\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._width - this._padding.left - this._padding.right;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"height\", {\n /**\r\n * Viewport height, without paddings\r\n * @ko 뷰포트 높이\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._height - this._padding.top - this._padding.bottom;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"padding\", {\n /**\r\n * Viewport paddings\r\n * @ko 뷰포트 CSS padding 값\r\n * @type {object}\r\n * @property {number} left CSS `padding-left`\r\n * @property {number} right CSS `padding-right`\r\n * @property {number} top CSS `padding-top`\r\n * @property {number} bottom CSS `padding-bottom`\r\n * @readonly\r\n */\n get: function () {\n return this._padding;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Change viewport's size.\r\n * This will change the actual size of `.flicking-viewport` element by changing its CSS width/height property\r\n * @ko 뷰포트 크기를 변경합니다.\r\n * `.flicking-viewport` 엘리먼트에 해당 크기의 CSS width/height를 적용합니다\r\n * @param {object} [size] New viewport size새 뷰포트 크기\r\n * @param {number|string} [size.width] CSS string or number(in px)CSS 문자열 또는 숫자(px)\r\n * @param {number|string} [size.height] CSS string or number(in px)CSS 문자열 또는 숫자(px)\r\n */\n\n __proto.setSize = function (_a) {\n var width = _a.width,\n height = _a.height;\n var el = this._el;\n var padding = this._padding;\n var isBorderBoxSizing = this._isBorderBoxSizing;\n\n if (width != null) {\n if (isString(width)) {\n el.style.width = width;\n } else {\n var newWidth = isBorderBoxSizing ? width + padding.left + padding.right : width;\n el.style.width = newWidth + \"px\";\n }\n }\n\n if (height != null) {\n if (isString(height)) {\n el.style.height = height;\n } else {\n var newHeight = isBorderBoxSizing ? height + padding.top + padding.bottom : height;\n el.style.height = newHeight + \"px\";\n }\n }\n\n this.resize();\n };\n /**\r\n * Update width/height to the current viewport element's size\r\n * @ko 현재 뷰포트 엘리먼트의 크기로 너비/높이를 업데이트합니다\r\n */\n\n\n __proto.resize = function () {\n var el = this._el;\n var elStyle = getStyle(el);\n var useFractionalSize = this._flicking.useFractionalSize;\n this._width = getElementSize({\n el: el,\n horizontal: true,\n useFractionalSize: useFractionalSize,\n useOffset: false,\n style: elStyle\n });\n this._height = getElementSize({\n el: el,\n horizontal: false,\n useFractionalSize: useFractionalSize,\n useOffset: false,\n style: elStyle\n });\n this._padding = {\n left: elStyle.paddingLeft ? parseFloat(elStyle.paddingLeft) : 0,\n right: elStyle.paddingRight ? parseFloat(elStyle.paddingRight) : 0,\n top: elStyle.paddingTop ? parseFloat(elStyle.paddingTop) : 0,\n bottom: elStyle.paddingBottom ? parseFloat(elStyle.paddingBottom) : 0\n };\n this._isBorderBoxSizing = elStyle.boxSizing === \"border-box\";\n };\n\n return Viewport;\n}();\n\nvar AutoResizer = /*#__PURE__*/function () {\n function AutoResizer(flicking) {\n var _this = this;\n\n this._onResize = function () {\n var flicking = _this._flicking;\n var resizeDebounce = flicking.resizeDebounce;\n var maxResizeDebounce = flicking.maxResizeDebounce;\n\n if (resizeDebounce <= 0) {\n void flicking.resize();\n } else {\n if (_this._maxResizeDebounceTimer <= 0) {\n if (maxResizeDebounce > 0 && maxResizeDebounce >= resizeDebounce) {\n _this._maxResizeDebounceTimer = window.setTimeout(_this._doScheduledResize, maxResizeDebounce);\n }\n }\n\n if (_this._resizeTimer > 0) {\n clearTimeout(_this._resizeTimer);\n _this._resizeTimer = 0;\n }\n\n _this._resizeTimer = window.setTimeout(_this._doScheduledResize, resizeDebounce);\n }\n };\n\n this._doScheduledResize = function () {\n clearTimeout(_this._resizeTimer);\n clearTimeout(_this._maxResizeDebounceTimer);\n _this._maxResizeDebounceTimer = -1;\n _this._resizeTimer = -1;\n void _this._flicking.resize();\n }; // eslint-disable-next-line @typescript-eslint/member-ordering\n\n\n this._skipFirstResize = function () {\n var isFirstResize = true;\n return function () {\n if (isFirstResize) {\n isFirstResize = false;\n return;\n }\n\n _this._onResize();\n };\n }();\n\n this._flicking = flicking;\n this._enabled = false;\n this._resizeObserver = null;\n this._resizeTimer = -1;\n this._maxResizeDebounceTimer = -1;\n }\n\n var __proto = AutoResizer.prototype;\n Object.defineProperty(__proto, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.enable = function () {\n var flicking = this._flicking;\n var viewport = flicking.viewport;\n\n if (this._enabled) {\n this.disable();\n }\n\n if (flicking.useResizeObserver && !!window.ResizeObserver) {\n var viewportSizeNot0 = viewport.width !== 0 || viewport.height !== 0;\n var resizeObserver = viewportSizeNot0 ? new ResizeObserver(this._skipFirstResize) : new ResizeObserver(this._onResize);\n resizeObserver.observe(flicking.viewport.element);\n this._resizeObserver = resizeObserver;\n } else {\n window.addEventListener(\"resize\", this._onResize);\n }\n\n this._enabled = true;\n return this;\n };\n\n __proto.disable = function () {\n if (!this._enabled) return this;\n var resizeObserver = this._resizeObserver;\n\n if (resizeObserver) {\n resizeObserver.disconnect();\n this._resizeObserver = null;\n } else {\n window.removeEventListener(\"resize\", this._onResize);\n }\n\n this._enabled = false;\n return this;\n };\n\n return AutoResizer;\n}();\n/**\r\n * @internal\r\n */\n\n\nvar VanillaElementProvider = /*#__PURE__*/function () {\n function VanillaElementProvider(element) {\n this._element = element;\n this._rendered = true;\n }\n\n var __proto = VanillaElementProvider.prototype;\n Object.defineProperty(__proto, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"rendered\", {\n get: function () {\n return this._rendered;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.show = function (flicking) {\n var el = this.element;\n var cameraEl = flicking.camera.element;\n\n if (el.parentElement !== cameraEl) {\n cameraEl.appendChild(el);\n this._rendered = true;\n }\n };\n\n __proto.hide = function (flicking) {\n var el = this.element;\n var cameraEl = flicking.camera.element;\n\n if (el.parentElement === cameraEl) {\n cameraEl.removeChild(el);\n this._rendered = false;\n }\n };\n\n return VanillaElementProvider;\n}();\n/*\r\n * Copyright (c) 2015 NAVER Corp.\r\n * egjs projects are licensed under the MIT license\r\n */\n\n/**\r\n * @internal\r\n */\n\n\nvar VirtualElementProvider = /*#__PURE__*/function () {\n function VirtualElementProvider(flicking) {\n this._flicking = flicking;\n }\n\n var __proto = VirtualElementProvider.prototype;\n Object.defineProperty(__proto, \"element\", {\n get: function () {\n return this._virtualElement.nativeElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"rendered\", {\n get: function () {\n return this._virtualElement.visible;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"_virtualElement\", {\n get: function () {\n var flicking = this._flicking;\n var elIndex = this._panel.elementIndex;\n var virtualElements = flicking.virtual.elements;\n return virtualElements[elIndex];\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.init = function (panel) {\n this._panel = panel;\n };\n\n __proto.show = function () {// DO_NOTHING\n // Actual element visibility is controlled by VirtualManager\n };\n\n __proto.hide = function () {// DO_NOTHING\n // Actual element visibility is controlled by VirtualManager\n };\n\n return VirtualElementProvider;\n}();\n/**\r\n * A manager class to add / remove virtual panels\r\n */\n\n\nvar VirtualManager = /*#__PURE__*/function () {\n function VirtualManager(flicking, options) {\n var _a, _b, _c, _d;\n\n this._flicking = flicking;\n this._renderPanel = (_a = options === null || options === void 0 ? void 0 : options.renderPanel) !== null && _a !== void 0 ? _a : function () {\n return \"\";\n };\n this._initialPanelCount = (_b = options === null || options === void 0 ? void 0 : options.initialPanelCount) !== null && _b !== void 0 ? _b : -1;\n this._cache = (_c = options === null || options === void 0 ? void 0 : options.cache) !== null && _c !== void 0 ? _c : false;\n this._panelClass = (_d = options === null || options === void 0 ? void 0 : options.panelClass) !== null && _d !== void 0 ? _d : CLASS.DEFAULT_VIRTUAL;\n this._elements = [];\n }\n\n var __proto = VirtualManager.prototype;\n Object.defineProperty(__proto, \"elements\", {\n get: function () {\n return this._elements;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"renderPanel\", {\n // Options\n\n /**\r\n * A rendering function for the panel element's innerHTML\r\n * @ko 패널 엘리먼트의 innerHTML을 렌더링하는 함수\r\n * @type {function}\r\n * @param {VirtualPanel} panel Instance of the panel패널 인스턴스\r\n * @param {number} index Index of the panel패널 인덱스\r\n * @default \"() => {}\"\r\n */\n get: function () {\n return this._renderPanel;\n },\n set: function (val) {\n this._renderPanel = val;\n\n this._flicking.renderer.panels.forEach(function (panel) {\n return panel.uncacheRenderResult();\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"initialPanelCount\", {\n /**\r\n * Initial panel count to render\r\n * @ko 최초로 렌더링할 패널의 개수\r\n * @readonly\r\n * @type {number}\r\n * @default -1\r\n */\n get: function () {\n return this._initialPanelCount;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"cache\", {\n /**\r\n * Whether to cache rendered panel's innerHTML\r\n * @ko 렌더링된 패널의 innerHTML 정보를 캐시할지 여부\r\n * @type {boolean}\r\n * @default false\r\n */\n get: function () {\n return this._cache;\n },\n set: function (val) {\n this._cache = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"panelClass\", {\n /**\r\n * The class name that will be applied to rendered panel elements\r\n * @ko 렌더링되는 패널 엘리먼트에 적용될 클래스 이름\r\n * @type {string}\r\n * @default \"flicking-panel\"\r\n */\n get: function () {\n return this._panelClass;\n },\n set: function (val) {\n this._panelClass = val;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.init = function () {\n var flicking = this._flicking;\n if (!flicking.virtualEnabled) return;\n\n if (!flicking.externalRenderer && !flicking.renderExternal) {\n this._initVirtualElements();\n }\n\n var virtualElements = flicking.camera.children;\n this._elements = virtualElements.map(function (el) {\n return {\n nativeElement: el,\n visible: true\n };\n });\n };\n\n __proto.show = function (index) {\n var el = this._elements[index];\n var nativeEl = el.nativeElement;\n el.visible = true;\n\n if (nativeEl.style.display) {\n nativeEl.style.display = \"\";\n }\n };\n\n __proto.hide = function (index) {\n var el = this._elements[index];\n var nativeEl = el.nativeElement;\n el.visible = false;\n nativeEl.style.display = \"none\";\n };\n /**\r\n * Add new virtual panels at the end of the list\r\n * @ko 새로운 가상 패널들을 리스트의 끝에 추가합니다\r\n * @param {number} count The number of panels to add추가할 패널의 개수\r\n * @returns {Array} The new panels added새롭게 추가된 패널들\r\n */\n\n\n __proto.append = function (count) {\n if (count === void 0) {\n count = 1;\n }\n\n var flicking = this._flicking;\n return this.insert(flicking.panels.length, count);\n };\n /**\r\n * Add new virtual panels at the start of the list\r\n * @ko 새로운 가상 패널들을 리스트의 시작에 추가합니다\r\n * @param {number} count The number of panels to add추가할 패널의 개수\r\n * @returns {Array} The new panels added새롭게 추가된 패널들\r\n */\n\n\n __proto.prepend = function (count) {\n if (count === void 0) {\n count = 1;\n }\n\n return this.insert(0, count);\n };\n /**\r\n * Add new virtual panels at the given index\r\n * @ko 새로운 가상 패널들을 주어진 인덱스에 추가합니다\r\n * @param {number} count The number of panels to add추가할 패널의 개수\r\n * @returns {Array} The new panels added새롭게 추가된 패널들\r\n */\n\n\n __proto.insert = function (index, count) {\n if (count === void 0) {\n count = 1;\n }\n\n if (count <= 0) return [];\n var flicking = this._flicking;\n return flicking.renderer.batchInsert({\n index: index,\n elements: range(count),\n hasDOMInElements: false\n });\n };\n /**\r\n * Remove panels at the given index\r\n * @ko 주어진 인덱스에서 패널들을 삭제합니다\r\n * @param {number} count The number of panels to remove삭제할 패널의 개수\r\n * @returns {Array} The panels removed삭제된 패널들\r\n */\n\n\n __proto.remove = function (index, count) {\n if (count <= 0) return [];\n var flicking = this._flicking;\n return flicking.renderer.batchRemove({\n index: index,\n deleteCount: count,\n hasDOMInElements: false\n });\n };\n\n __proto._initVirtualElements = function () {\n var _this = this;\n\n var flicking = this._flicking;\n var cameraElement = flicking.camera.element;\n var panelsPerView = flicking.panelsPerView;\n var fragment = document.createDocumentFragment();\n var newElements = range(panelsPerView + 1).map(function (idx) {\n var panelEl = document.createElement(\"div\");\n panelEl.className = _this._panelClass;\n panelEl.dataset.elementIndex = idx.toString();\n return panelEl;\n });\n newElements.forEach(function (el) {\n fragment.appendChild(el);\n });\n cameraElement.appendChild(fragment);\n };\n\n return VirtualManager;\n}();\n/**\r\n * All possible @egjs/axes event keys\r\n * @internal\r\n */\n\n\nvar EVENT = {\n HOLD: \"hold\",\n CHANGE: \"change\",\n RELEASE: \"release\",\n ANIMATION_END: \"animationEnd\",\n FINISH: \"finish\"\n};\n/**\r\n * An Axis key that Flicking uses\r\n * @internal\r\n */\n\nvar POSITION_KEY = \"flick\";\nvar STATE_TYPE;\n\n(function (STATE_TYPE) {\n STATE_TYPE[STATE_TYPE[\"IDLE\"] = 0] = \"IDLE\";\n STATE_TYPE[STATE_TYPE[\"HOLDING\"] = 1] = \"HOLDING\";\n STATE_TYPE[STATE_TYPE[\"DRAGGING\"] = 2] = \"DRAGGING\";\n STATE_TYPE[STATE_TYPE[\"ANIMATING\"] = 3] = \"ANIMATING\";\n STATE_TYPE[STATE_TYPE[\"DISABLED\"] = 4] = \"DISABLED\";\n})(STATE_TYPE || (STATE_TYPE = {}));\n/**\r\n * A component that shows the current status of the user input or the animation\r\n * @ko 현재 사용자 입력 또는 애니메이션 상태를 나타내는 컴포넌트\r\n * @internal\r\n */\n\n\nvar State = /*#__PURE__*/function () {\n function State() {\n this._delta = 0;\n this._targetPanel = null;\n }\n\n var __proto = State.prototype;\n Object.defineProperty(__proto, \"delta\", {\n /**\r\n * A sum of delta values of change events from the last hold event of Axes\r\n * @ko 이전 hold이벤트부터 change에 의해 발생한 이동 delta값의 합산\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._delta;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"targetPanel\", {\n /**\r\n * A panel to set as {@link Control#activePanel} after the animation is finished\r\n * @ko 애니메이션 종료시 {@link Control#activePanel}로 설정할 패널\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._targetPanel;\n },\n set: function (val) {\n this._targetPanel = val;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * An callback which is called when state has changed to this state\r\n * @ko 현재 상태로 돌입했을때 호출되는 콜백 함수\r\n * @param {State} prevState An previous state이전 상태값\r\n * @return {void}\r\n */\n\n __proto.onEnter = function (prevState) {\n this._delta = prevState._delta;\n this._targetPanel = prevState._targetPanel;\n };\n /**\r\n * An event handler for Axes's {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:hold hold} event\r\n * @ko Axes의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:hold hold} 이벤트 핸들러\r\n * @param {object} [ctx] Event context이벤트 콘텍스트\r\n * @param {Flicking} [ctx.flicking] An instance of FlickingFlicking 인스턴스\r\n * @param {object} [ctx.axesEvent] A {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:hold hold} event of Axes\r\n * Axes의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:hold hold} 이벤트\r\n * @param {function} [ctx.transitTo] A function for changing current state to other state다른 상태로 변경하기 위한 함수\r\n * @return {void}\r\n */\n\n\n __proto.onHold = function (ctx) {// DO NOTHING\n };\n /**\r\n * An event handler for Axes's {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:change change} event\r\n * @ko Axes의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:change change} 이벤트 핸들러\r\n * @param {object} [ctx] Event context이벤트 콘텍스트\r\n * @param {Flicking} [ctx.flicking] An instance of FlickingFlicking 인스턴스\r\n * @param {object} [ctx.axesEvent] A {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:change change} event of Axes\r\n * Axes의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:change change} 이벤트\r\n * @param {function} [ctx.transitTo] A function for changing current state to other state다른 상태로 변경하기 위한 함수\r\n * @return {void}\r\n */\n\n\n __proto.onChange = function (ctx) {// DO NOTHING\n };\n /**\r\n * An event handler for Axes's {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} event\r\n * @ko Axes의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} 이벤트 핸들러\r\n * @param {object} [ctx] Event context이벤트 콘텍스트\r\n * @param {Flicking} [ctx.flicking] An instance of FlickingFlicking 인스턴스\r\n * @param {object} [ctx.axesEvent] A {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} event of Axes\r\n * Axes의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} 이벤트\r\n * @param {function} [ctx.transitTo] A function for changing current state to other state다른 상태로 변경하기 위한 함수\r\n * @return {void}\r\n */\n\n\n __proto.onRelease = function (ctx) {// DO NOTHING\n };\n /**\r\n * An event handler for Axes's {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:animationEnd animationEnd} event\r\n * @ko Axes의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:animationEnd animationEnd} 이벤트 핸들러\r\n * @param {object} [ctx] Event context이벤트 콘텍스트\r\n * @param {Flicking} [ctx.flicking] An instance of FlickingFlicking 인스턴스\r\n * @param {object} [ctx.axesEvent] A {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:animationEnd animationEnd} event of Axes\r\n * Axes의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:animationEnd animationEnd} 이벤트\r\n * @param {function} [ctx.transitTo] A function for changing current state to other state다른 상태로 변경하기 위한 함수\r\n * @return {void}\r\n */\n\n\n __proto.onAnimationEnd = function (ctx) {// DO NOTHING\n };\n /**\r\n * An event handler for Axes's {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:finish finish} event\r\n * @ko Axes의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:finish finish} 이벤트 핸들러\r\n * @param {object} [ctx] Event context이벤트 콘텍스트\r\n * @param {Flicking} [ctx.flicking] An instance of FlickingFlicking 인스턴스\r\n * @param {object} [ctx.axesEvent] A {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:finish finish} event of AxesAxes의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:finish finish} 이벤트\r\n * @param {function} [ctx.transitTo] A function for changing current state to other state다른 상태로 변경하기 위한 함수\r\n * @return {void}\r\n */\n\n\n __proto.onFinish = function (ctx) {// DO NOTHING\n };\n\n __proto._moveToChangedPosition = function (ctx) {\n var flicking = ctx.flicking,\n axesEvent = ctx.axesEvent,\n transitTo = ctx.transitTo;\n var delta = axesEvent.delta[POSITION_KEY];\n\n if (!delta) {\n return;\n }\n\n this._delta += delta;\n var camera = flicking.camera;\n var prevPosition = camera.position;\n var position = axesEvent.pos[POSITION_KEY];\n var newPosition = flicking.circularEnabled ? circulatePosition(position, camera.range.min, camera.range.max) : position;\n camera.lookAt(newPosition);\n var moveEvent = new ComponentEvent(EVENTS.MOVE, {\n isTrusted: axesEvent.isTrusted,\n holding: this.holding,\n direction: getDirection(0, axesEvent.delta[POSITION_KEY]),\n axesEvent: axesEvent\n });\n flicking.trigger(moveEvent);\n\n if (moveEvent.isCanceled()) {\n // Return to previous position\n camera.lookAt(prevPosition);\n transitTo(STATE_TYPE.DISABLED);\n }\n };\n\n return State;\n}();\n/**\r\n * A default state when there's no user input and no animation's playing\r\n * @ko 사용자의 입력이 없고, 애니메이션이 동작하고있지 않은 기본 상태\r\n * @internal\r\n */\n\n\nvar IdleState = /*#__PURE__*/function (_super) {\n __extends(IdleState, _super);\n\n function IdleState() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\r\n * Whether user is clicking or touching\r\n * @ko 현재 사용자가 클릭/터치중인지 여부\r\n * @type {false}\r\n * @readonly\r\n */\n\n\n _this.holding = false;\n /**\r\n * Whether Flicking's animating\r\n * @ko 현재 애니메이션 동작 여부\r\n * @type {false}\r\n * @readonly\r\n */\n\n _this.animating = false;\n return _this;\n }\n\n var __proto = IdleState.prototype;\n\n __proto.onEnter = function () {\n this._delta = 0;\n this._targetPanel = null;\n };\n\n __proto.onHold = function (ctx) {\n // Shouldn't do any action until any panels on flicking area\n var flicking = ctx.flicking,\n axesEvent = ctx.axesEvent,\n transitTo = ctx.transitTo;\n\n if (flicking.renderer.panelCount <= 0) {\n transitTo(STATE_TYPE.DISABLED);\n return;\n }\n\n var holdStartEvent = new ComponentEvent(EVENTS.HOLD_START, {\n axesEvent: axesEvent\n });\n flicking.trigger(holdStartEvent);\n\n if (holdStartEvent.isCanceled()) {\n transitTo(STATE_TYPE.DISABLED);\n } else {\n transitTo(STATE_TYPE.HOLDING);\n }\n }; // By methods call\n\n\n __proto.onChange = function (ctx) {\n var flicking = ctx.flicking,\n axesEvent = ctx.axesEvent,\n transitTo = ctx.transitTo;\n var controller = flicking.control.controller;\n var animatingContext = controller.animatingContext;\n var moveStartEvent = new ComponentEvent(EVENTS.MOVE_START, {\n isTrusted: axesEvent.isTrusted,\n holding: this.holding,\n direction: getDirection(animatingContext.start, animatingContext.end),\n axesEvent: axesEvent\n });\n flicking.trigger(moveStartEvent);\n\n if (moveStartEvent.isCanceled()) {\n transitTo(STATE_TYPE.DISABLED);\n } else {\n // Trigger AnimatingState's onChange, to trigger \"move\" event immediately\n transitTo(STATE_TYPE.ANIMATING).onChange(ctx);\n }\n };\n\n return IdleState;\n}(State);\n/**\r\n * A state that activates when user's holding the Flicking area, but not moved a single pixel yet\r\n * @ko 사용자의 입력이 시작되었으나, 아직 움직이지는 않은 상태\r\n * @internal\r\n */\n\n\nvar HoldingState = /*#__PURE__*/function (_super) {\n __extends(HoldingState, _super);\n\n function HoldingState() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\r\n * Whether user is clicking or touching\r\n * @ko 현재 사용자가 클릭/터치중인지 여부\r\n * @type {true}\r\n * @readonly\r\n */\n\n\n _this.holding = true;\n /**\r\n * Whether Flicking's animating\r\n * @ko 현재 애니메이션 동작 여부\r\n * @type {false}\r\n * @readonly\r\n */\n\n _this.animating = false;\n _this._releaseEvent = null;\n return _this;\n }\n\n var __proto = HoldingState.prototype;\n\n __proto.onChange = function (ctx) {\n var flicking = ctx.flicking,\n axesEvent = ctx.axesEvent,\n transitTo = ctx.transitTo;\n var inputEvent = axesEvent.inputEvent;\n var offset = flicking.horizontal ? inputEvent.offsetX : inputEvent.offsetY;\n var moveStartEvent = new ComponentEvent(EVENTS.MOVE_START, {\n isTrusted: axesEvent.isTrusted,\n holding: this.holding,\n direction: getDirection(0, -offset),\n axesEvent: axesEvent\n });\n flicking.trigger(moveStartEvent);\n\n if (moveStartEvent.isCanceled()) {\n transitTo(STATE_TYPE.DISABLED);\n } else {\n // Trigger DraggingState's onChange, to trigger \"move\" event immediately\n transitTo(STATE_TYPE.DRAGGING).onChange(ctx);\n }\n };\n\n __proto.onRelease = function (ctx) {\n var flicking = ctx.flicking,\n axesEvent = ctx.axesEvent,\n transitTo = ctx.transitTo;\n flicking.trigger(new ComponentEvent(EVENTS.HOLD_END, {\n axesEvent: axesEvent\n }));\n\n if (axesEvent.delta.flick !== 0) {\n // Sometimes \"release\" event on axes triggered before \"change\" event\n // Especially if user flicked panel fast in really short amount of time\n // if delta is not zero, that means above case happened.\n // Event flow should be HOLD_START -> MOVE_START -> MOVE -> HOLD_END\n // At least one move event should be included between holdStart and holdEnd\n axesEvent.setTo({\n flick: flicking.camera.position\n }, 0);\n transitTo(STATE_TYPE.IDLE);\n return;\n } // Can't handle select event here,\n // As \"finish\" axes event happens\n\n\n this._releaseEvent = axesEvent;\n };\n\n __proto.onFinish = function (ctx) {\n var e_1, _a;\n\n var flicking = ctx.flicking,\n transitTo = ctx.transitTo; // Should transite to IDLE state before select event\n // As user expects hold is already finished\n\n transitTo(STATE_TYPE.IDLE);\n\n if (!this._releaseEvent) {\n return;\n } // Handle release event here\n // To prevent finish event called twice\n\n\n var releaseEvent = this._releaseEvent; // Static click\n\n /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\n\n var srcEvent = releaseEvent.inputEvent.srcEvent;\n var clickedElement;\n\n if (srcEvent.type === \"touchend\") {\n var touchEvent = srcEvent;\n var touch = touchEvent.changedTouches[0];\n clickedElement = document.elementFromPoint(touch.clientX, touch.clientY);\n } else {\n clickedElement = srcEvent.target;\n }\n /* eslint-enable */\n\n\n var panels = flicking.renderer.panels;\n var clickedPanel = null;\n\n try {\n for (var panels_1 = __values(panels), panels_1_1 = panels_1.next(); !panels_1_1.done; panels_1_1 = panels_1.next()) {\n var panel = panels_1_1.value;\n\n if (panel.contains(clickedElement)) {\n clickedPanel = panel;\n break;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (panels_1_1 && !panels_1_1.done && (_a = panels_1.return)) _a.call(panels_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n if (clickedPanel) {\n var cameraPosition = flicking.camera.position;\n var clickedPanelPosition = clickedPanel.position;\n flicking.trigger(new ComponentEvent(EVENTS.SELECT, {\n index: clickedPanel.index,\n panel: clickedPanel,\n // Direction to the clicked panel\n direction: getDirection(cameraPosition, clickedPanelPosition)\n }));\n }\n };\n\n return HoldingState;\n}(State);\n/**\r\n * A state that activates when user's dragging the Flicking area\r\n * @ko 사용자가 드래깅중인 상태\r\n * @internal\r\n */\n\n\nvar DraggingState = /*#__PURE__*/function (_super) {\n __extends(DraggingState, _super);\n\n function DraggingState() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\r\n * Whether user is clicking or touching\r\n * @ko 현재 사용자가 클릭/터치중인지 여부\r\n * @type {true}\r\n * @readonly\r\n */\n\n\n _this.holding = true;\n /**\r\n * Whether Flicking's animating\r\n * @ko 현재 애니메이션 동작 여부\r\n * @type {true}\r\n * @readonly\r\n */\n\n _this.animating = true;\n return _this;\n }\n\n var __proto = DraggingState.prototype;\n\n __proto.onChange = function (ctx) {\n this._moveToChangedPosition(ctx);\n };\n\n __proto.onRelease = function (ctx) {\n var _a;\n\n var flicking = ctx.flicking,\n axesEvent = ctx.axesEvent,\n transitTo = ctx.transitTo; // Update last position to cope with Axes's animating behavior\n // Axes uses start position when animation start\n\n flicking.trigger(new ComponentEvent(EVENTS.HOLD_END, {\n axesEvent: axesEvent\n }));\n\n if (flicking.renderer.panelCount <= 0) {\n // There're no panels\n transitTo(STATE_TYPE.IDLE);\n return;\n }\n\n transitTo(STATE_TYPE.ANIMATING);\n var control = flicking.control;\n var position = axesEvent.destPos[POSITION_KEY];\n var duration = Math.max(axesEvent.duration, flicking.duration);\n\n try {\n void control.moveToPosition(position, duration, axesEvent);\n } catch (err) {\n transitTo(STATE_TYPE.IDLE);\n axesEvent.setTo((_a = {}, _a[POSITION_KEY] = flicking.camera.position, _a), 0);\n }\n };\n\n return DraggingState;\n}(State);\n/**\r\n * A state that activates when Flicking's animating by user input or method call\r\n * @ko 사용자 입력이나 메소드 호출에 의해 Flicking의 애니메이션이 동작중인 상태\r\n * @internal\r\n */\n\n\nvar AnimatingState = /*#__PURE__*/function (_super) {\n __extends(AnimatingState, _super);\n\n function AnimatingState() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\r\n * Whether user is clicking or touching\r\n * @ko 현재 사용자가 클릭/터치중인지 여부\r\n * @type {false}\r\n * @readonly\r\n */\n\n\n _this.holding = false;\n /**\r\n * Whether Flicking's animating\r\n * @ko 현재 애니메이션 동작 여부\r\n * @type {true}\r\n * @readonly\r\n */\n\n _this.animating = true;\n return _this;\n }\n\n var __proto = AnimatingState.prototype;\n\n __proto.onHold = function (ctx) {\n var flicking = ctx.flicking,\n axesEvent = ctx.axesEvent,\n transitTo = ctx.transitTo;\n var targetPanel = this._targetPanel;\n var control = flicking.control;\n this._delta = 0;\n flicking.control.updateInput();\n\n if (flicking.changeOnHold && targetPanel) {\n control.setActive(targetPanel, control.activePanel, axesEvent.isTrusted);\n }\n\n var holdStartEvent = new ComponentEvent(EVENTS.HOLD_START, {\n axesEvent: axesEvent\n });\n flicking.trigger(holdStartEvent);\n\n if (holdStartEvent.isCanceled()) {\n transitTo(STATE_TYPE.DISABLED);\n } else {\n transitTo(STATE_TYPE.DRAGGING);\n }\n };\n\n __proto.onChange = function (ctx) {\n this._moveToChangedPosition(ctx);\n };\n\n __proto.onFinish = function (ctx) {\n var flicking = ctx.flicking,\n axesEvent = ctx.axesEvent,\n transitTo = ctx.transitTo;\n var control = flicking.control;\n var controller = control.controller;\n var animatingContext = controller.animatingContext;\n transitTo(STATE_TYPE.IDLE);\n flicking.trigger(new ComponentEvent(EVENTS.MOVE_END, {\n isTrusted: axesEvent.isTrusted,\n direction: getDirection(animatingContext.start, animatingContext.end),\n axesEvent: axesEvent\n }));\n var targetPanel = this._targetPanel;\n\n if (targetPanel) {\n control.setActive(targetPanel, control.activePanel, axesEvent.isTrusted);\n }\n };\n\n return AnimatingState;\n}(State);\n/**\r\n * A state that activates when Flicking is stopped by event's `stop` method\r\n * @ko 이벤트의 `stop`호출에 의해 Flicking이 정지된 상태\r\n * @internal\r\n */\n\n\nvar DisabledState = /*#__PURE__*/function (_super) {\n __extends(DisabledState, _super);\n\n function DisabledState() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\r\n * Whether user is clicking or touching\r\n * @ko 현재 사용자가 클릭/터치중인지 여부\r\n * @type {false}\r\n * @readonly\r\n */\n\n\n _this.holding = false;\n /**\r\n * Whether Flicking's animating\r\n * @ko 현재 애니메이션 동작 여부\r\n * @type {true}\r\n * @readonly\r\n */\n\n _this.animating = true;\n return _this;\n }\n\n var __proto = DisabledState.prototype;\n\n __proto.onAnimationEnd = function (ctx) {\n var transitTo = ctx.transitTo;\n transitTo(STATE_TYPE.IDLE);\n };\n\n __proto.onChange = function (ctx) {\n var axesEvent = ctx.axesEvent,\n transitTo = ctx.transitTo; // Can stop Axes's change event\n\n axesEvent.stop();\n transitTo(STATE_TYPE.IDLE);\n };\n\n __proto.onRelease = function (ctx) {\n var axesEvent = ctx.axesEvent,\n transitTo = ctx.transitTo; // This is needed when stopped hold start event\n\n if (axesEvent.delta.flick === 0) {\n transitTo(STATE_TYPE.IDLE);\n }\n };\n\n return DisabledState;\n}(State);\n/**\r\n * @internal\r\n */\n\n\nvar StateMachine = /*#__PURE__*/function () {\n function StateMachine() {\n var _this = this;\n\n this.transitTo = function (nextStateType) {\n var nextState;\n\n switch (nextStateType) {\n case STATE_TYPE.IDLE:\n nextState = new IdleState();\n break;\n\n case STATE_TYPE.HOLDING:\n nextState = new HoldingState();\n break;\n\n case STATE_TYPE.DRAGGING:\n nextState = new DraggingState();\n break;\n\n case STATE_TYPE.ANIMATING:\n nextState = new AnimatingState();\n break;\n\n case STATE_TYPE.DISABLED:\n nextState = new DisabledState();\n break;\n }\n\n nextState.onEnter(_this._state);\n _this._state = nextState;\n return _this._state;\n };\n\n this._state = new IdleState();\n }\n\n var __proto = StateMachine.prototype;\n Object.defineProperty(__proto, \"state\", {\n get: function () {\n return this._state;\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.fire = function (eventType, externalCtx) {\n var currentState = this._state;\n\n var ctx = __assign(__assign({}, externalCtx), {\n transitTo: this.transitTo\n });\n\n switch (eventType) {\n case EVENT.HOLD:\n currentState.onHold(ctx);\n break;\n\n case EVENT.CHANGE:\n currentState.onChange(ctx);\n break;\n\n case EVENT.RELEASE:\n currentState.onRelease(ctx);\n break;\n\n case EVENT.ANIMATION_END:\n currentState.onAnimationEnd(ctx);\n break;\n\n case EVENT.FINISH:\n currentState.onFinish(ctx);\n break;\n }\n };\n\n return StateMachine;\n}();\n/**\r\n * A controller that handles the {@link https://naver.github.io/egjs-axes/ @egjs/axes} events\r\n * @ko {@link https://naver.github.io/egjs-axes/ @egjs/axes}의 이벤트를 처리하는 컨트롤러 컴포넌트\r\n * @internal\r\n */\n\n\nvar AxesController = /*#__PURE__*/function () {\n /** */\n function AxesController() {\n var _this = this;\n\n this._onAxesHold = function () {\n _this._dragged = false;\n };\n\n this._onAxesChange = function () {\n var _a;\n\n _this._dragged = !!((_a = _this._panInput) === null || _a === void 0 ? void 0 : _a.isEnabled());\n };\n\n this._preventClickWhenDragged = function (e) {\n if (_this._dragged) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n _this._dragged = false;\n };\n\n this._resetInternalValues();\n\n this._stateMachine = new StateMachine();\n }\n\n var __proto = AxesController.prototype;\n Object.defineProperty(__proto, \"axes\", {\n /**\r\n * An {@link https://naver.github.io/egjs-axes/docs/api/Axes Axes} instance\r\n * @ko {@link https://naver.github.io/egjs-axes/docs/api/Axes Axes}의 인스턴스\r\n * @type {Axes | null}\r\n * @see https://naver.github.io/egjs-axes/docs/api/Axes\r\n * @readonly\r\n */\n get: function () {\n return this._axes;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"panInput\", {\n /**\r\n * An {@link https://naver.github.io/egjs-axes/docs/api/PanInput PanInput} instance\r\n * @ko {@link https://naver.github.io/egjs-axes/docs/api/PanInput PanInput}의 인스턴스\r\n * @type {PanInput | null}\r\n * @see https://naver.github.io/egjs-axes/docs/api/PanInput\r\n * @readonly\r\n */\n get: function () {\n return this._panInput;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"stateMachine\", {\n /**\r\n * @internal\r\n */\n get: function () {\n return this._stateMachine;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"state\", {\n /**\r\n * A activated {@link State} that shows the current status of the user input or the animation\r\n * @ko 현재 활성화된 {@link State} 인스턴스로 사용자 입력 또는 애니메이션 상태를 나타냅니다\r\n * @type {State}\r\n */\n get: function () {\n return this._stateMachine.state;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"animatingContext\", {\n /**\r\n * A context of the current animation playing\r\n * @ko 현재 재생중인 애니메이션 정보\r\n * @type {object}\r\n * @property {number} start A start position of the animation애니메이션 시작 지점\r\n * @property {number} end A end position of the animation애니메이션 끝 지점\r\n * @property {number} offset camera offset카메라 오프셋\r\n * @readonly\r\n */\n get: function () {\n return this._animatingContext;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"controlParams\", {\n /**\r\n * A current control parameters of the Axes instance\r\n * @ko 활성화된 현재 Axes 패러미터들\r\n * @type {ControlParams}\r\n */\n get: function () {\n var axes = this._axes;\n\n if (!axes) {\n return {\n range: {\n min: 0,\n max: 0\n },\n position: 0,\n circular: false\n };\n }\n\n var axis = axes.axis[POSITION_KEY];\n return {\n range: {\n min: axis.range[0],\n max: axis.range[1]\n },\n circular: axis.circular[0],\n position: this.position\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"enabled\", {\n /**\r\n * A Boolean indicating whether the user input is enabled\r\n * @ko 현재 사용자 입력이 활성화되었는지를 나타내는 값\r\n * @type {boolean}\r\n * @readonly\r\n */\n get: function () {\n var _a, _b;\n\n return (_b = (_a = this._panInput) === null || _a === void 0 ? void 0 : _a.isEnabled()) !== null && _b !== void 0 ? _b : false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"position\", {\n /**\r\n * Current position value in {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html Axes} instance\r\n * @ko {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html Axes} 인스턴스 내부의 현재 좌표 값\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n var _a, _b;\n\n return (_b = (_a = this._axes) === null || _a === void 0 ? void 0 : _a.get([POSITION_KEY])[POSITION_KEY]) !== null && _b !== void 0 ? _b : 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"range\", {\n /**\r\n * Current range value in {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html Axes} instance\r\n * @ko {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html Axes} 인스턴스 내부의 현재 이동 범위 값\r\n * @type {number[]}\r\n * @readonly\r\n */\n get: function () {\n var _a, _b;\n\n return (_b = (_a = this._axes) === null || _a === void 0 ? void 0 : _a.axis[POSITION_KEY].range) !== null && _b !== void 0 ? _b : [0, 0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"bounce\", {\n /**\r\n * Actual bounce size(px)\r\n * @ko 적용된 bounce 크기(px 단위)\r\n * @type {number[]}\r\n * @readonly\r\n */\n get: function () {\n var _a;\n\n return (_a = this._axes) === null || _a === void 0 ? void 0 : _a.axis[POSITION_KEY].bounce;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Initialize AxesController\r\n * @ko AxesController를 초기화합니다\r\n * @param {Flicking} flicking An instance of Flicking\r\n * @chainable\r\n * @return {this}\r\n */\n\n __proto.init = function (flicking) {\n var _a;\n\n var _this = this;\n\n this._flicking = flicking;\n this._axes = new Axes((_a = {}, _a[POSITION_KEY] = {\n range: [0, 0],\n circular: false,\n bounce: [0, 0]\n }, _a), {\n deceleration: flicking.deceleration,\n interruptable: flicking.interruptable,\n nested: flicking.nested,\n easing: flicking.easing\n });\n this._panInput = new PanInput(flicking.viewport.element, {\n inputType: flicking.inputType,\n threshold: 1,\n iOSEdgeSwipeThreshold: flicking.iOSEdgeSwipeThreshold,\n preventDefaultOnDrag: flicking.preventDefaultOnDrag,\n scale: flicking.horizontal ? [flicking.camera.panelOrder === ORDER.RTL ? 1 : -1, 0] : [0, -1],\n releaseOnScroll: true\n });\n var axes = this._axes;\n axes.connect(flicking.horizontal ? [POSITION_KEY, \"\"] : [\"\", POSITION_KEY], this._panInput);\n\n var _loop_1 = function (key) {\n var eventType = EVENT[key];\n axes.on(eventType, function (e) {\n _this._stateMachine.fire(eventType, {\n flicking: flicking,\n axesEvent: e\n });\n });\n };\n\n for (var key in EVENT) {\n _loop_1(key);\n }\n\n return this;\n };\n /**\r\n * Destroy AxesController and return to initial state\r\n * @ko AxesController를 초기 상태로 되돌립니다\r\n * @return {void}\r\n */\n\n\n __proto.destroy = function () {\n var _a;\n\n if (this._axes) {\n this.removePreventClickHandler();\n\n this._axes.destroy();\n }\n\n (_a = this._panInput) === null || _a === void 0 ? void 0 : _a.destroy();\n\n this._resetInternalValues();\n };\n /**\r\n * Enable input from the user (mouse/touch)\r\n * @ko 사용자의 입력(마우스/터치)를 활성화합니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.enable = function () {\n var _a;\n\n (_a = this._panInput) === null || _a === void 0 ? void 0 : _a.enable();\n return this;\n };\n /**\r\n * Disable input from the user (mouse/touch)\r\n * @ko 사용자의 입력(마우스/터치)를 막습니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.disable = function () {\n var _a;\n\n (_a = this._panInput) === null || _a === void 0 ? void 0 : _a.disable();\n return this;\n };\n /**\r\n * Releases ongoing user input (mouse/touch)\r\n * @ko 사용자의 현재 입력(마우스/터치)를 중단시킵니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.release = function () {\n var _a;\n\n (_a = this._panInput) === null || _a === void 0 ? void 0 : _a.release();\n return this;\n };\n /**\r\n * Change the destination and duration of the animation currently playing\r\n * @ko 재생 중인 애니메이션의 목적지와 재생 시간을 변경합니다\r\n * @param {number} position A position to move이동할 좌표\r\n * @param {number} duration Duration of the animation (unit: ms)애니메이션 진행 시간 (단위: ms)\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.updateAnimation = function (position, duration) {\n var _a;\n\n var _b;\n\n this._animatingContext = __assign(__assign({}, this._animatingContext), {\n end: position\n });\n (_b = this._axes) === null || _b === void 0 ? void 0 : _b.updateAnimation({\n destPos: (_a = {}, _a[POSITION_KEY] = position, _a),\n duration: duration\n });\n return this;\n };\n /**\r\n * Stops the animation currently playing\r\n * @ko 재생 중인 애니메이션을 중단시킵니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.stopAnimation = function () {\n var _a;\n\n (_a = this._axes) === null || _a === void 0 ? void 0 : _a.stopAnimation();\n return this;\n };\n /**\r\n * Update {@link https://naver.github.io/egjs-axes/ @egjs/axes}'s state\r\n * @ko {@link https://naver.github.io/egjs-axes/ @egjs/axes}의 상태를 갱신합니다\r\n * @chainable\r\n * @throws {FlickingError}\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} When {@link AxesController#init init} is not called before\r\n * {@link AxesController#init init}이 이전에 호출되지 않은 경우\r\n * @return {this}\r\n */\n\n\n __proto.update = function (controlParams) {\n var _a;\n\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n var axes = this._axes;\n var axis = axes.axis[POSITION_KEY];\n axis.circular = [controlParams.circular, controlParams.circular];\n axis.range = [controlParams.range.min, controlParams.range.max];\n axis.bounce = parseBounce(flicking.bounce, camera.size);\n axes.axisManager.set((_a = {}, _a[POSITION_KEY] = controlParams.position, _a));\n return this;\n };\n /**\r\n * Attach a handler to the camera element to prevent click events during animation\r\n * @ko 카메라 엘리먼트에 애니메이션 도중에 클릭 이벤트를 방지하는 핸들러를 부착합니다\r\n * @return {this}\r\n */\n\n\n __proto.addPreventClickHandler = function () {\n var flicking = getFlickingAttached(this._flicking);\n var axes = this._axes;\n var cameraEl = flicking.camera.element;\n axes.on(EVENT.HOLD, this._onAxesHold);\n axes.on(EVENT.CHANGE, this._onAxesChange);\n cameraEl.addEventListener(\"click\", this._preventClickWhenDragged, true);\n return this;\n };\n /**\r\n * Detach a handler to the camera element to prevent click events during animation\r\n * @ko 카메라 엘리먼트에 애니메이션 도중에 클릭 이벤트를 방지하는 핸들러를 탈착합니다\r\n * @return {this}\r\n */\n\n\n __proto.removePreventClickHandler = function () {\n var flicking = getFlickingAttached(this._flicking);\n var axes = this._axes;\n var cameraEl = flicking.camera.element;\n axes.off(EVENT.HOLD, this._onAxesHold);\n axes.off(EVENT.CHANGE, this._onAxesChange);\n cameraEl.removeEventListener(\"click\", this._preventClickWhenDragged, true);\n return this;\n };\n /**\r\n * Run Axes's {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#setTo setTo} using the given position\r\n * @ko Axes의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#setTo setTo} 메소드를 주어진 좌표를 이용하여 수행합니다\r\n * @param {number} position A position to move이동할 좌표\r\n * @param {number} duration Duration of the animation (unit: ms)애니메이션 진행 시간 (단위: ms)\r\n * @param {number} [axesEvent] If provided, it'll use its {@link https://naver#github#io/egjs-axes/release/latest/doc/eg#Axes#html#setTo setTo} method instead이 값이 주어졌을 경우, 해당 이벤트의 {@link https://naver#github#io/egjs-axes/release/latest/doc/eg#Axes#html#setTo setTo} 메소드를 대신해서 사용합니다.\r\n * @throws {FlickingError}\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE NOT_ATTACHED_TO_FLICKING}|When {@link Control#init init} is not called before|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|When the animation is interrupted by user input|\r\n * \r\n *\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE NOT_ATTACHED_TO_FLICKING}|{@link Control#init init}이 이전에 호출되지 않은 경우|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|사용자 입력에 의해 애니메이션이 중단된 경우|\r\n *\r\n * \r\n * @return {Promise} A Promise which will be resolved after reaching the target position해당 좌표 도달시에 resolve되는 Promise\r\n */\n\n\n __proto.animateTo = function (position, duration, axesEvent) {\n var _this = this;\n\n var _a;\n\n var axes = this._axes;\n var state = this._stateMachine.state;\n\n if (!axes) {\n return Promise.reject(new FlickingError(MESSAGE.NOT_ATTACHED_TO_FLICKING, CODE.NOT_ATTACHED_TO_FLICKING));\n }\n\n var startPos = axes.get([POSITION_KEY])[POSITION_KEY];\n\n if (startPos === position) {\n var flicking = getFlickingAttached(this._flicking);\n flicking.camera.lookAt(position);\n\n if (state.targetPanel) {\n flicking.control.setActive(state.targetPanel, flicking.control.activePanel, (_a = axesEvent === null || axesEvent === void 0 ? void 0 : axesEvent.isTrusted) !== null && _a !== void 0 ? _a : false);\n }\n\n return Promise.resolve();\n }\n\n this._animatingContext = {\n start: startPos,\n end: position,\n offset: 0\n };\n\n var animate = function () {\n var _a, _b;\n\n var resetContext = function () {\n _this._animatingContext = {\n start: 0,\n end: 0,\n offset: 0\n };\n };\n\n axes.once(EVENT.FINISH, resetContext);\n\n if (axesEvent) {\n axesEvent.setTo((_a = {}, _a[POSITION_KEY] = position, _a), duration);\n } else {\n axes.setTo((_b = {}, _b[POSITION_KEY] = position, _b), duration);\n }\n };\n\n return new Promise(function (resolve, reject) {\n var animationFinishHandler = function () {\n axes.off(EVENT.HOLD, interruptionHandler);\n resolve();\n };\n\n var interruptionHandler = function () {\n axes.off(EVENT.FINISH, animationFinishHandler);\n reject(new FlickingError(MESSAGE.ANIMATION_INTERRUPTED, CODE.ANIMATION_INTERRUPTED));\n };\n\n axes.once(EVENT.FINISH, animationFinishHandler);\n axes.once(EVENT.HOLD, interruptionHandler);\n animate();\n });\n };\n\n __proto.updateDirection = function () {\n var flicking = getFlickingAttached(this._flicking);\n var axes = this._axes;\n var panInput = this._panInput;\n axes.disconnect(panInput);\n axes.connect(flicking.horizontal ? [POSITION_KEY, \"\"] : [\"\", POSITION_KEY], panInput);\n panInput.options.scale = flicking.horizontal ? [flicking.camera.panelOrder === ORDER.RTL ? 1 : -1, 0] : [0, -1];\n };\n\n __proto._resetInternalValues = function () {\n this._flicking = null;\n this._axes = null;\n this._panInput = null;\n this._animatingContext = {\n start: 0,\n end: 0,\n offset: 0\n };\n this._dragged = false;\n };\n\n return AxesController;\n}();\n/**\r\n * A component that manages inputs and animation of Flicking\r\n * @ko Flicking의 입력 장치 & 애니메이션을 담당하는 컴포넌트\r\n */\n\n\nvar Control = /*#__PURE__*/function () {\n /** */\n function Control() {\n this._flicking = null;\n this._controller = new AxesController();\n this._activePanel = null;\n }\n\n var __proto = Control.prototype;\n Object.defineProperty(__proto, \"controller\", {\n /**\r\n * A controller that handles the {@link https://naver.github.io/egjs-axes/ @egjs/axes} events\r\n * @ko {@link https://naver.github.io/egjs-axes/ @egjs/axes}의 이벤트를 처리하는 컨트롤러 컴포넌트\r\n * @type {AxesController}\r\n * @readonly\r\n */\n get: function () {\n return this._controller;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"activeIndex\", {\n /**\r\n * Index number of the {@link Flicking#currentPanel currentPanel}\r\n * @ko {@link Flicking#currentPanel currentPanel}의 인덱스 번호\r\n * @type {number}\r\n * @default 0\r\n * @readonly\r\n */\n get: function () {\n var _a, _b;\n\n return (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.index) !== null && _b !== void 0 ? _b : -1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"activePanel\", {\n /**\r\n * An active panel\r\n * @ko 현재 선택된 패널\r\n * @type {Panel | null}\r\n * @readonly\r\n */\n get: function () {\n return this._activePanel;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"animating\", {\n /**\r\n * Whether Flicking's animating\r\n * @ko 현재 애니메이션 동작 여부\r\n * @type {boolean}\r\n * @readonly\r\n */\n get: function () {\n return this._controller.state.animating;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"holding\", {\n /**\r\n * Whether user is clicking or touching\r\n * @ko 현재 사용자가 클릭/터치중인지 여부\r\n * @type {boolean}\r\n * @readonly\r\n */\n get: function () {\n return this._controller.state.holding;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Initialize Control\r\n * @ko Control을 초기화합니다\r\n * @param {Flicking} flicking An instance of {@link Flicking}Flicking의 인스턴스\r\n * @chainable\r\n * @return {this}\r\n */\n\n __proto.init = function (flicking) {\n this._flicking = flicking;\n\n this._controller.init(flicking);\n\n return this;\n };\n /**\r\n * Destroy Control and return to initial state\r\n * @ko Control을 초기 상태로 되돌립니다\r\n * @return {void}\r\n */\n\n\n __proto.destroy = function () {\n this._controller.destroy();\n\n this._flicking = null;\n this._activePanel = null;\n };\n /**\r\n * Enable input from the user (mouse/touch)\r\n * @ko 사용자의 입력(마우스/터치)를 활성화합니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.enable = function () {\n this._controller.enable();\n\n return this;\n };\n /**\r\n * Disable input from the user (mouse/touch)\r\n * @ko 사용자의 입력(마우스/터치)를 막습니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.disable = function () {\n this._controller.disable();\n\n return this;\n };\n /**\r\n * Releases ongoing user input (mouse/touch)\r\n * @ko 사용자의 현재 입력(마우스/터치)를 중단시킵니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.release = function () {\n this._controller.release();\n\n return this;\n };\n /**\r\n * Change the destination and duration of the animation currently playing\r\n * @ko 재생 중인 애니메이션의 목적지와 재생 시간을 변경합니다\r\n * @param {Panel} panel The target panel to move이동할 패널\r\n * @param {number} duration Duration of the animation (unit: ms)애니메이션 진행 시간 (단위: ms)\r\n * @param {DIRECTION} direction Direction to move, only available in the {@link Flicking#circular circular} mode이동할 방향. {@link Flicking#circular circular} 옵션 활성화시에만 사용 가능합니다\r\n * @chainable\r\n * @throws {FlickingError}\r\n * {@link ERROR_CODE POSITION_NOT_REACHABLE} When the given panel is already removed or not in the Camera's {@link Camera#range range}\r\n * {@link ERROR_CODE POSITION_NOT_REACHABLE} 주어진 패널이 제거되었거나, Camera의 {@link Camera#range range} 밖에 있을 경우\r\n * @return {this}\r\n */\n\n\n __proto.updateAnimation = function (panel, duration, direction) {\n var state = this._controller.state;\n\n var position = this._getPosition(panel, direction !== null && direction !== void 0 ? direction : DIRECTION.NONE);\n\n state.targetPanel = panel;\n\n this._controller.updateAnimation(position, duration);\n\n return this;\n };\n /**\r\n * Stops the animation currently playing\r\n * @ko 재생 중인 애니메이션을 중단시킵니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.stopAnimation = function () {\n var state = this._controller.state;\n state.targetPanel = null;\n\n this._controller.stopAnimation();\n\n return this;\n };\n /**\r\n * Update position after resizing\r\n * @ko resize 이후에 position을 업데이트합니다\r\n * @param {number} progressInPanel Previous camera's progress in active panel before resizeResize 이전 현재 선택된 패널 내에서의 카메라 progress 값\r\n * @throws {FlickingError}\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} When {@link Camera#init init} is not called before\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} {@link Camera#init init}이 이전에 호출되지 않은 경우\r\n * @chainable\r\n * @return {Promise}\r\n */\n\n\n __proto.updatePosition = function (progressInPanel) {\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n var activePanel = this._activePanel;\n\n if (activePanel) {\n camera.lookAt(camera.clampToReachablePosition(activePanel.position));\n }\n };\n /**\r\n * Update {@link Control#controller controller}'s state\r\n * @ko {@link Control#controller controller}의 내부 상태를 갱신합니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.updateInput = function () {\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n\n this._controller.update(camera.controlParams);\n\n return this;\n };\n /**\r\n * Reset {@link Control#activePanel activePanel} to `null`\r\n * @ko {@link Control#activePanel activePanel}을 `null`로 초기화합니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.resetActive = function () {\n this._activePanel = null;\n return this;\n };\n /**\r\n * Move {@link Camera} to the given panel\r\n * @ko {@link Camera}를 해당 패널 위로 이동합니다\r\n * @param {Panel} panel The target panel to move이동할 패널\r\n * @param {object} options An options object옵션 오브젝트\r\n * @param {number} duration Duration of the animation (unit: ms)애니메이션 진행 시간 (단위: ms)\r\n * @param {object} [axesEvent] {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} event of {@link https://naver.github.io/egjs-axes/ Axes}\r\n * {@link https://naver.github.io/egjs-axes/ Axes}의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} 이벤트\r\n * @param {DIRECTION} [direction=DIRECTION.NONE] Direction to move, only available in the {@link Flicking#circular circular} mode이동할 방향. {@link Flicking#circular circular} 옵션 활성화시에만 사용 가능합니다\r\n * @fires Flicking#moveStart\r\n * @fires Flicking#move\r\n * @fires Flicking#moveEnd\r\n * @fires Flicking#willChange\r\n * @fires Flicking#changed\r\n * @fires Flicking#willRestore\r\n * @fires Flicking#restored\r\n * @fires Flicking#needPanel\r\n * @fires Flicking#visibleChange\r\n * @fires Flicking#reachEdge\r\n * @throws {FlickingError}\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE POSITION_NOT_REACHABLE}|When the given panel is already removed or not in the Camera's {@link Camera#range range}|\r\n * |{@link ERROR_CODE NOT_ATTACHED_TO_FLICKING}|When {@link Control#init init} is not called before|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|When the animation is interrupted by user input|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|When the animation is interrupted by user input|\r\n * \r\n *\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE POSITION_NOT_REACHABLE}|주어진 패널이 제거되었거나, Camera의 {@link Camera#range range} 밖에 있을 경우|\r\n * |{@link ERROR_CODE NOT_ATTACHED_TO_FLICKING}|{@link Control#init init}이 이전에 호출되지 않은 경우|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|사용자 입력에 의해 애니메이션이 중단된 경우|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|발생된 이벤트들 중 하나라도 `stop()`이 호출된 경우|\r\n *\r\n * \r\n * @return {Promise} A Promise which will be resolved after reaching the target panel해당 패널 도달시에 resolve되는 Promise\r\n */\n\n\n __proto.moveToPanel = function (panel, _a) {\n var duration = _a.duration,\n _b = _a.direction,\n direction = _b === void 0 ? DIRECTION.NONE : _b,\n axesEvent = _a.axesEvent;\n return __awaiter(this, void 0, void 0, function () {\n var position;\n return __generator(this, function (_c) {\n position = this._getPosition(panel, direction);\n\n this._triggerIndexChangeEvent(panel, panel.position, axesEvent);\n\n return [2\n /*return*/\n , this._animateToPosition({\n position: position,\n duration: duration,\n newActivePanel: panel,\n axesEvent: axesEvent\n })];\n });\n });\n };\n /**\r\n * @internal\r\n */\n\n\n __proto.setActive = function (newActivePanel, prevActivePanel, isTrusted) {\n var _a;\n\n var flicking = getFlickingAttached(this._flicking);\n this._activePanel = newActivePanel;\n flicking.camera.updateAdaptiveHeight();\n\n if (newActivePanel !== prevActivePanel) {\n flicking.trigger(new ComponentEvent(EVENTS.CHANGED, {\n index: newActivePanel.index,\n panel: newActivePanel,\n prevIndex: (_a = prevActivePanel === null || prevActivePanel === void 0 ? void 0 : prevActivePanel.index) !== null && _a !== void 0 ? _a : -1,\n prevPanel: prevActivePanel,\n isTrusted: isTrusted,\n direction: prevActivePanel ? getDirection(prevActivePanel.position, newActivePanel.position) : DIRECTION.NONE\n }));\n } else {\n flicking.trigger(new ComponentEvent(EVENTS.RESTORED, {\n isTrusted: isTrusted\n }));\n }\n };\n /**\r\n * @internal\r\n */\n\n\n __proto.copy = function (control) {\n this._flicking = control._flicking;\n this._activePanel = control._activePanel;\n this._controller = control._controller;\n };\n\n __proto._triggerIndexChangeEvent = function (panel, position, axesEvent) {\n var _a;\n\n var flicking = getFlickingAttached(this._flicking);\n var triggeringEvent = panel !== this._activePanel ? EVENTS.WILL_CHANGE : EVENTS.WILL_RESTORE;\n var camera = flicking.camera;\n var activePanel = this._activePanel;\n var event = new ComponentEvent(triggeringEvent, {\n index: panel.index,\n panel: panel,\n isTrusted: (axesEvent === null || axesEvent === void 0 ? void 0 : axesEvent.isTrusted) || false,\n direction: getDirection((_a = activePanel === null || activePanel === void 0 ? void 0 : activePanel.position) !== null && _a !== void 0 ? _a : camera.position, position)\n });\n flicking.trigger(event);\n\n if (event.isCanceled()) {\n throw new FlickingError(MESSAGE.STOP_CALLED_BY_USER, CODE.STOP_CALLED_BY_USER);\n }\n };\n\n __proto._animateToPosition = function (_a) {\n var position = _a.position,\n duration = _a.duration,\n newActivePanel = _a.newActivePanel,\n axesEvent = _a.axesEvent;\n return __awaiter(this, void 0, void 0, function () {\n var flicking, animate, state;\n\n var _this = this;\n\n return __generator(this, function (_b) {\n flicking = getFlickingAttached(this._flicking);\n\n animate = function () {\n return _this._controller.animateTo(position, duration, axesEvent);\n };\n\n state = this._controller.state;\n state.targetPanel = newActivePanel;\n\n if (duration <= 0) {\n return [2\n /*return*/\n , animate()];\n } else {\n return [2\n /*return*/\n , animate().then(function () {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , flicking.renderer.render()];\n\n case 1:\n _a.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n }).catch(function (err) {\n if (axesEvent && err instanceof FlickingError && err.code === CODE.ANIMATION_INTERRUPTED) return;\n throw err;\n })];\n }\n });\n });\n };\n\n __proto._getPosition = function (panel, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n var position = panel.position;\n var nearestAnchor = camera.findNearestAnchor(position);\n\n if (panel.removed || !nearestAnchor) {\n throw new FlickingError(MESSAGE.POSITION_NOT_REACHABLE(panel.position), CODE.POSITION_NOT_REACHABLE);\n }\n\n if (!camera.canReach(panel)) {\n // Override position & panel if that panel is not reachable\n position = nearestAnchor.position;\n panel = nearestAnchor.panel;\n } else if (flicking.circularEnabled) {\n // Circular mode is enabled, find nearest distance to panel\n var camPos_1 = this._controller.position; // Actual position of the Axes\n\n var camRangeDiff = camera.rangeDiff;\n var possiblePositions = [position, position + camRangeDiff, position - camRangeDiff].filter(function (pos) {\n if (direction === DIRECTION.NONE) return true;\n return direction === DIRECTION.PREV ? pos <= camPos_1 : pos >= camPos_1;\n });\n position = possiblePositions.reduce(function (nearestPosition, pos) {\n if (Math.abs(camPos_1 - pos) < Math.abs(camPos_1 - nearestPosition)) {\n return pos;\n } else {\n return nearestPosition;\n }\n }, Infinity);\n }\n\n return position;\n };\n\n return Control;\n}();\n/**\r\n * A data component that has actual position where the camera should be stopped at\r\n * @ko 카메라가 정지해야하는 실제 위치를 담고 있는 데이터 컴포넌트\r\n */\n\n\nvar AnchorPoint = /*#__PURE__*/function () {\n /**\r\n * @param {object} options An options object옵션 객체\r\n * @param {number} [options.index] Index of AnchorPointAnchorPoint의 인덱스\r\n * @param {number} [options.position] Position of AnchorPointAnchorPoint의 좌표\r\n * @param {Panel} [options.panel] A {@link Panel} instance AnchorPoint is referencing toAnchorPoint가 참조하고 있는 {@link Panel}\r\n */\n function AnchorPoint(_a) {\n var index = _a.index,\n position = _a.position,\n panel = _a.panel;\n this._index = index;\n this._pos = position;\n this._panel = panel;\n }\n\n var __proto = AnchorPoint.prototype;\n Object.defineProperty(__proto, \"index\", {\n /**\r\n * Index of AnchorPoint\r\n * @ko AnchorPoint의 인덱스\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._index;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"position\", {\n /**\r\n * Position of AnchorPoint\r\n * @ko AnchorPoint의 좌표\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._pos;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"panel\", {\n /**\r\n * A {@link Panel} instance AnchorPoint is referencing to\r\n * @ko AnchorPoint가 참조하고 있는 {@link Panel}\r\n * @type {Panel}\r\n * @readonly\r\n */\n get: function () {\n return this._panel;\n },\n enumerable: false,\n configurable: true\n });\n return AnchorPoint;\n}();\n/**\r\n * A {@link Control} that uses a release momentum to choose destination panel\r\n * @ko 입력을 중단한 시점의 가속도에 영향받아 도달할 패널을 계산하는 이동 방식을 사용하는 {@link Control}\r\n */\n\n\nvar SnapControl = /*#__PURE__*/function (_super) {\n __extends(SnapControl, _super);\n /** */\n\n\n function SnapControl(_a) {\n var _b = (_a === void 0 ? {} : _a).count,\n count = _b === void 0 ? Infinity : _b;\n\n var _this = _super.call(this) || this;\n\n _this._count = count;\n return _this;\n }\n\n var __proto = SnapControl.prototype;\n Object.defineProperty(__proto, \"count\", {\n /**\r\n * Maximum number of panels can go after release\r\n * @ko 입력 중단 이후 통과하여 이동할 수 있는 패널의 최대 갯수\r\n * @type {number}\r\n * @default Infinity\r\n */\n get: function () {\n return this._count;\n },\n set: function (val) {\n this._count = val;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Move {@link Camera} to the given position\r\n * @ko {@link Camera}를 주어진 좌표로 이동합니다\r\n * @param {number} position The target position to move이동할 좌표\r\n * @param {number} duration Duration of the panel movement animation (unit: ms).패널 이동 애니메이션 진행 시간 (단위: ms)\r\n * @param {object} [axesEvent] {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} event of {@link https://naver.github.io/egjs-axes/ Axes}\r\n * {@link https://naver.github.io/egjs-axes/ Axes}의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} 이벤트\r\n * @fires Flicking#moveStart\r\n * @fires Flicking#move\r\n * @fires Flicking#moveEnd\r\n * @fires Flicking#willChange\r\n * @fires Flicking#changed\r\n * @fires Flicking#willRestore\r\n * @fires Flicking#restored\r\n * @fires Flicking#needPanel\r\n * @fires Flicking#visibleChange\r\n * @fires Flicking#reachEdge\r\n * @throws {FlickingError}\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE POSITION_NOT_REACHABLE}|When the given panel is already removed or not in the Camera's {@link Camera#range range}|\r\n * |{@link ERROR_CODE NOT_ATTACHED_TO_FLICKING}|When {@link Control#init init} is not called before|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|When the animation is interrupted by user input|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|When the animation is interrupted by user input|\r\n * \r\n *\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE POSITION_NOT_REACHABLE}|주어진 패널이 제거되었거나, Camera의 {@link Camera#range range} 밖에 있을 경우|\r\n * |{@link ERROR_CODE NOT_ATTACHED_TO_FLICKING}|{@link Control#init init}이 이전에 호출되지 않은 경우|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|사용자 입력에 의해 애니메이션이 중단된 경우|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|발생된 이벤트들 중 하나라도 `stop()`이 호출된 경우|\r\n *\r\n * \r\n * @return {Promise} A Promise which will be resolved after reaching the target position해당 좌표 도달시에 resolve되는 Promise\r\n */\n\n __proto.moveToPosition = function (position, duration, axesEvent) {\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n var activeAnchor = camera.findActiveAnchor();\n var anchorAtCamera = camera.findNearestAnchor(camera.position);\n var state = this._controller.state;\n\n if (!activeAnchor || !anchorAtCamera) {\n return Promise.reject(new FlickingError(MESSAGE.POSITION_NOT_REACHABLE(position), CODE.POSITION_NOT_REACHABLE));\n }\n\n var snapThreshold = this._calcSnapThreshold(position, activeAnchor);\n\n var posDelta = flicking.animating ? state.delta : position - camera.position;\n var absPosDelta = Math.abs(posDelta);\n var snapDelta = axesEvent && axesEvent.delta[POSITION_KEY] !== 0 ? Math.abs(axesEvent.delta[POSITION_KEY]) : absPosDelta;\n var targetAnchor;\n\n if (snapDelta >= snapThreshold && snapDelta > 0) {\n // Move to anchor at position\n targetAnchor = this._findSnappedAnchor(position, anchorAtCamera);\n } else if (absPosDelta >= flicking.threshold && absPosDelta > 0) {\n // Move to the adjacent panel\n targetAnchor = this._findAdjacentAnchor(position, posDelta, anchorAtCamera);\n } else {\n // Fallback to nearest panel from current camera\n return this.moveToPanel(anchorAtCamera.panel, {\n duration: duration,\n axesEvent: axesEvent\n });\n }\n\n this._triggerIndexChangeEvent(targetAnchor.panel, position, axesEvent);\n\n return this._animateToPosition({\n position: camera.clampToReachablePosition(targetAnchor.position),\n duration: duration,\n newActivePanel: targetAnchor.panel,\n axesEvent: axesEvent\n });\n };\n\n __proto._findSnappedAnchor = function (position, anchorAtCamera) {\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n var count = this._count;\n var currentPos = camera.position;\n var clampedPosition = camera.clampToReachablePosition(position);\n var anchorAtPosition = camera.findAnchorIncludePosition(clampedPosition);\n\n if (!anchorAtCamera || !anchorAtPosition) {\n throw new FlickingError(MESSAGE.POSITION_NOT_REACHABLE(position), CODE.POSITION_NOT_REACHABLE);\n }\n\n if (!isFinite(count)) {\n return anchorAtPosition;\n }\n\n var panelCount = flicking.panelCount;\n var anchors = camera.anchorPoints;\n var loopCount = Math.sign(position - currentPos) * Math.floor(Math.abs(position - currentPos) / camera.rangeDiff);\n\n if (position > currentPos && anchorAtPosition.index < anchorAtCamera.index || anchorAtPosition.position > anchorAtCamera.position && anchorAtPosition.index === anchorAtCamera.index) {\n loopCount += 1;\n } else if (position < currentPos && anchorAtPosition.index > anchorAtCamera.index || anchorAtPosition.position < anchorAtCamera.position && anchorAtPosition.index === anchorAtCamera.index) {\n loopCount -= 1;\n }\n\n var circularIndexOffset = loopCount * panelCount;\n var anchorAtPositionIndex = anchorAtPosition.index + circularIndexOffset;\n\n if (Math.abs(anchorAtPositionIndex - anchorAtCamera.index) <= count) {\n var anchor = anchors[anchorAtPosition.index];\n return new AnchorPoint({\n index: anchor.index,\n position: anchor.position + loopCount * camera.rangeDiff,\n panel: anchor.panel\n });\n }\n\n if (flicking.circularEnabled) {\n var targetAnchor = anchors[circulateIndex(anchorAtCamera.index + Math.sign(position - currentPos) * count, panelCount)];\n var loop = Math.floor(count / panelCount);\n\n if (position > currentPos && targetAnchor.index < anchorAtCamera.index) {\n loop += 1;\n } else if (position < currentPos && targetAnchor.index > anchorAtCamera.index) {\n loop -= 1;\n }\n\n return new AnchorPoint({\n index: targetAnchor.index,\n position: targetAnchor.position + loop * camera.rangeDiff,\n panel: targetAnchor.panel\n });\n } else {\n return anchors[clamp(anchorAtCamera.index + Math.sign(position - currentPos) * count, 0, anchors.length - 1)];\n }\n };\n\n __proto._findAdjacentAnchor = function (position, posDelta, anchorAtCamera) {\n var _a;\n\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n\n if (camera.circularEnabled) {\n var anchorIncludePosition = camera.findAnchorIncludePosition(position);\n\n if (anchorIncludePosition && anchorIncludePosition.position !== anchorAtCamera.position) {\n return anchorIncludePosition;\n }\n }\n\n var adjacentAnchor = (_a = posDelta > 0 ? camera.getNextAnchor(anchorAtCamera) : camera.getPrevAnchor(anchorAtCamera)) !== null && _a !== void 0 ? _a : anchorAtCamera;\n return adjacentAnchor;\n };\n\n __proto._calcSnapThreshold = function (position, activeAnchor) {\n var isNextDirection = position > activeAnchor.position;\n var panel = activeAnchor.panel;\n var panelSize = panel.size;\n var alignPos = panel.alignPosition; // Minimum distance needed to decide prev/next panel as nearest\n\n /*\r\n * | Prev | Next |\r\n * |<------>|<------------>|\r\n * [ |<-Anchor ]\r\n */\n\n return isNextDirection ? panelSize - alignPos + panel.margin.next : alignPos + panel.margin.prev;\n };\n\n return SnapControl;\n}(Control);\n/**\r\n * A {@link Control} that can be scrolled freely without alignment\r\n * @ko 패널이 정해진 지점에 정렬되지 않고, 자유롭게 스크롤할 수 있는 이동 방식을 사용하는 {@link Control}\r\n */\n\n\nvar FreeControl = /*#__PURE__*/function (_super) {\n __extends(FreeControl, _super);\n /** */\n\n\n function FreeControl(_a) {\n var _b = (_a === void 0 ? {} : _a).stopAtEdge,\n stopAtEdge = _b === void 0 ? true : _b;\n\n var _this = _super.call(this) || this;\n\n _this._stopAtEdge = stopAtEdge;\n return _this;\n }\n\n var __proto = FreeControl.prototype;\n Object.defineProperty(__proto, \"stopAtEdge\", {\n /**\r\n * Make scroll animation to stop at the start/end of the scroll area, not going out the bounce area\r\n * @ko 스크롤 애니메이션을 스크롤 영역의 시작과 끝부분에서 멈추도록 하여, 바운스 영역을 넘어가지 않도록 합니다\r\n * @type {boolean}\r\n * @default true\r\n */\n get: function () {\n return this._stopAtEdge;\n },\n set: function (val) {\n this._stopAtEdge = val;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Update position after resizing\r\n * @ko resize 이후에 position을 업데이트합니다\r\n * @param {number} progressInPanel Previous camera's progress in active panel before resizeResize 이전 현재 선택된 패널 내에서의 카메라 progress 값\r\n * @throws {FlickingError}\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} When {@link Camera#init init} is not called before\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} {@link Camera#init init}이 이전에 호출되지 않은 경우\r\n * @chainable\r\n * @return {Promise}\r\n */\n\n __proto.updatePosition = function (progressInPanel) {\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n var activePanel = this._activePanel;\n\n if (activePanel) {\n var panelRange = activePanel.range;\n var newPosition = panelRange.min + (panelRange.max - panelRange.min) * progressInPanel;\n camera.lookAt(camera.clampToReachablePosition(newPosition));\n }\n };\n /**\r\n * Move {@link Camera} to the given position\r\n * @ko {@link Camera}를 주어진 좌표로 이동합니다\r\n * @param {number} position The target position to move이동할 좌표\r\n * @param {number} duration Duration of the panel movement animation (unit: ms).패널 이동 애니메이션 진행 시간 (단위: ms)\r\n * @param {object} [axesEvent] {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} event of {@link https://naver.github.io/egjs-axes/ Axes}\r\n * {@link https://naver.github.io/egjs-axes/ Axes}의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} 이벤트\r\n * @fires Flicking#moveStart\r\n * @fires Flicking#move\r\n * @fires Flicking#moveEnd\r\n * @fires Flicking#willChange\r\n * @fires Flicking#changed\r\n * @fires Flicking#willRestore\r\n * @fires Flicking#restored\r\n * @fires Flicking#needPanel\r\n * @fires Flicking#visibleChange\r\n * @fires Flicking#reachEdge\r\n * @throws {FlickingError}\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE POSITION_NOT_REACHABLE}|When the given panel is already removed or not in the Camera's {@link Camera#range range}|\r\n * |{@link ERROR_CODE NOT_ATTACHED_TO_FLICKING}|When {@link Control#init init} is not called before|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|When the animation is interrupted by user input|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|When the animation is interrupted by user input|\r\n * \r\n *\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE POSITION_NOT_REACHABLE}|주어진 패널이 제거되었거나, Camera의 {@link Camera#range range} 밖에 있을 경우|\r\n * |{@link ERROR_CODE NOT_ATTACHED_TO_FLICKING}|{@link Control#init init}이 이전에 호출되지 않은 경우|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|사용자 입력에 의해 애니메이션이 중단된 경우|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|발생된 이벤트들 중 하나라도 `stop()`이 호출된 경우|\r\n *\r\n * \r\n * @return {Promise} A Promise which will be resolved after reaching the target position해당 좌표 도달시에 resolve되는 Promise\r\n */\n\n\n __proto.moveToPosition = function (position, duration, axesEvent) {\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n var targetPos = camera.clampToReachablePosition(position);\n var anchorAtPosition = camera.findAnchorIncludePosition(targetPos);\n\n if (!anchorAtPosition) {\n return Promise.reject(new FlickingError(MESSAGE.POSITION_NOT_REACHABLE(position), CODE.POSITION_NOT_REACHABLE));\n }\n\n var targetPanel = anchorAtPosition.panel; // Trigger only change event\n\n if (targetPanel !== this._activePanel) {\n this._triggerIndexChangeEvent(targetPanel, position, axesEvent);\n }\n\n return this._animateToPosition({\n position: this._stopAtEdge ? targetPos : position,\n duration: duration,\n newActivePanel: targetPanel,\n axesEvent: axesEvent\n });\n };\n\n return FreeControl;\n}(Control);\n/**\r\n * A {@link Control} that allow you to select the maximum number of panels to move at a time\r\n * @ko 한번에 최대로 이동할 패널의 개수를 선택 가능한 {@link Control}\r\n */\n\n\nvar StrictControl = /*#__PURE__*/function (_super) {\n __extends(StrictControl, _super);\n /** */\n\n\n function StrictControl(_a) {\n var _b = (_a === void 0 ? {} : _a).count,\n count = _b === void 0 ? 1 : _b;\n\n var _this = _super.call(this) || this;\n\n _this.setActive = function (newActivePanel, prevActivePanel, isTrusted) {\n _super.prototype.setActive.call(_this, newActivePanel, prevActivePanel, isTrusted);\n\n _this.updateInput();\n };\n\n _this._count = count;\n\n _this._resetIndexRange();\n\n return _this;\n }\n\n var __proto = StrictControl.prototype;\n Object.defineProperty(__proto, \"count\", {\n /**\r\n * Maximum number of panels that can be moved at a time\r\n * @ko 최대로 움직일 수 있는 패널의 개수\r\n * @type {number}\r\n * @default 1\r\n */\n get: function () {\n return this._count;\n },\n set: function (val) {\n this._count = val;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Destroy Control and return to initial state\r\n * @ko Control을 초기 상태로 되돌립니다\r\n * @return {void}\r\n */\n\n __proto.destroy = function () {\n _super.prototype.destroy.call(this);\n\n this._resetIndexRange();\n };\n /**\r\n * Update {@link Control#controller controller}'s state\r\n * @ko {@link Control#controller controller}의 내부 상태를 갱신합니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.updateInput = function () {\n var _a;\n\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n var renderer = flicking.renderer;\n var controller = this._controller;\n var controlParams = camera.controlParams;\n var count = this._count;\n var activePanel = controller.state.animating ? (_a = camera.findNearestAnchor(camera.position)) === null || _a === void 0 ? void 0 : _a.panel : this._activePanel;\n\n if (!activePanel) {\n controller.update(controlParams);\n\n this._resetIndexRange();\n\n return this;\n }\n\n var cameraRange = controlParams.range;\n var currentPos = activePanel.position;\n var currentIndex = activePanel.index;\n var panelCount = renderer.panelCount;\n var prevPanelIndex = currentIndex - count;\n var nextPanelIndex = currentIndex + count;\n\n if (prevPanelIndex < 0) {\n prevPanelIndex = flicking.circularEnabled ? getMinusCompensatedIndex((prevPanelIndex + 1) % panelCount - 1, panelCount) : clamp(prevPanelIndex, 0, panelCount - 1);\n }\n\n if (nextPanelIndex >= panelCount) {\n nextPanelIndex = flicking.circularEnabled ? nextPanelIndex % panelCount : clamp(nextPanelIndex, 0, panelCount - 1);\n }\n\n var prevPanel = renderer.panels[prevPanelIndex];\n var nextPanel = renderer.panels[nextPanelIndex];\n var prevPos = Math.max(prevPanel.position, cameraRange.min);\n var nextPos = Math.min(nextPanel.position, cameraRange.max);\n\n if (prevPos > currentPos) {\n prevPos -= camera.rangeDiff;\n }\n\n if (nextPos < currentPos) {\n nextPos += camera.rangeDiff;\n }\n\n controlParams.range = {\n min: prevPos,\n max: nextPos\n };\n\n if (controlParams.circular) {\n if (controlParams.position < prevPos) {\n controlParams.position += camera.rangeDiff;\n }\n\n if (controlParams.position > nextPos) {\n controlParams.position -= camera.rangeDiff;\n }\n }\n\n controlParams.circular = false;\n controller.update(controlParams);\n this._indexRange = {\n min: prevPanel.index,\n max: nextPanel.index\n };\n return this;\n };\n\n __proto.moveToPanel = function (panel, options) {\n return __awaiter(this, void 0, void 0, function () {\n var flicking, camera, controller;\n return __generator(this, function (_a) {\n flicking = getFlickingAttached(this._flicking);\n camera = flicking.camera;\n controller = this._controller;\n controller.update(camera.controlParams);\n return [2\n /*return*/\n , _super.prototype.moveToPanel.call(this, panel, options)];\n });\n });\n };\n /**\r\n * Move {@link Camera} to the given position\r\n * @ko {@link Camera}를 주어진 좌표로 이동합니다\r\n * @param {number} position The target position to move이동할 좌표\r\n * @param {number} duration Duration of the panel movement animation (unit: ms).패널 이동 애니메이션 진행 시간 (단위: ms)\r\n * @param {object} [axesEvent] {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} event of {@link https://naver.github.io/egjs-axes/ Axes}\r\n * {@link https://naver.github.io/egjs-axes/ Axes}의 {@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.html#event:release release} 이벤트\r\n * @fires Flicking#moveStart\r\n * @fires Flicking#move\r\n * @fires Flicking#moveEnd\r\n * @fires Flicking#willChange\r\n * @fires Flicking#changed\r\n * @fires Flicking#willRestore\r\n * @fires Flicking#restored\r\n * @fires Flicking#needPanel\r\n * @fires Flicking#visibleChange\r\n * @fires Flicking#reachEdge\r\n * @throws {FlickingError}\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE POSITION_NOT_REACHABLE}|When the given panel is already removed or not in the Camera's {@link Camera#range range}|\r\n * |{@link ERROR_CODE NOT_ATTACHED_TO_FLICKING}|When {@link Control#init init} is not called before|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|When the animation is interrupted by user input|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|When the animation is interrupted by user input|\r\n * \r\n *\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE POSITION_NOT_REACHABLE}|주어진 패널이 제거되었거나, Camera의 {@link Camera#range range} 밖에 있을 경우|\r\n * |{@link ERROR_CODE NOT_ATTACHED_TO_FLICKING}|{@link Control#init init}이 이전에 호출되지 않은 경우|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|사용자 입력에 의해 애니메이션이 중단된 경우|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|발생된 이벤트들 중 하나라도 `stop()`이 호출된 경우|\r\n *\r\n * \r\n * @return {Promise} A Promise which will be resolved after reaching the target position해당 좌표 도달시에 resolve되는 Promise\r\n */\n\n\n __proto.moveToPosition = function (position, duration, axesEvent) {\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n var activePanel = this._activePanel;\n var axesRange = this._controller.range;\n var indexRange = this._indexRange;\n var cameraRange = camera.range;\n var state = this._controller.state;\n var clampedPosition = clamp(camera.clampToReachablePosition(position), axesRange[0], axesRange[1]);\n var anchorAtPosition = camera.findAnchorIncludePosition(clampedPosition);\n\n if (!anchorAtPosition || !activePanel) {\n return Promise.reject(new FlickingError(MESSAGE.POSITION_NOT_REACHABLE(position), CODE.POSITION_NOT_REACHABLE));\n }\n\n var prevPos = activePanel.position;\n var posDelta = flicking.animating ? state.delta : position - camera.position;\n var isOverThreshold = Math.abs(posDelta) >= flicking.threshold;\n var adjacentAnchor = position > prevPos ? camera.getNextAnchor(anchorAtPosition) : camera.getPrevAnchor(anchorAtPosition);\n var targetPos;\n var targetPanel;\n var anchors = camera.anchorPoints;\n var firstAnchor = anchors[0];\n var lastAnchor = anchors[anchors.length - 1];\n var shouldBounceToFirst = position <= cameraRange.min && isBetween(firstAnchor.panel.index, indexRange.min, indexRange.max);\n var shouldBounceToLast = position >= cameraRange.max && isBetween(lastAnchor.panel.index, indexRange.min, indexRange.max);\n var isAdjacent = adjacentAnchor && (indexRange.min <= indexRange.max ? isBetween(adjacentAnchor.index, indexRange.min, indexRange.max) : adjacentAnchor.index >= indexRange.min || adjacentAnchor.index <= indexRange.max);\n\n if (shouldBounceToFirst || shouldBounceToLast) {\n // In bounce area\n var targetAnchor = position < cameraRange.min ? firstAnchor : lastAnchor;\n targetPanel = targetAnchor.panel;\n targetPos = targetAnchor.position;\n } else if (isOverThreshold && anchorAtPosition.position !== activePanel.position) {\n // Move to anchor at position\n targetPanel = anchorAtPosition.panel;\n targetPos = anchorAtPosition.position;\n } else if (isOverThreshold && isAdjacent) {\n // Move to adjacent anchor\n targetPanel = adjacentAnchor.panel;\n targetPos = adjacentAnchor.position;\n } else {\n // Fallback to nearest panel from current camera\n var anchorAtCamera = camera.findNearestAnchor(camera.position);\n\n if (!anchorAtCamera) {\n return Promise.reject(new FlickingError(MESSAGE.POSITION_NOT_REACHABLE(position), CODE.POSITION_NOT_REACHABLE));\n }\n\n return this.moveToPanel(anchorAtCamera.panel, {\n duration: duration,\n axesEvent: axesEvent\n });\n }\n\n this._triggerIndexChangeEvent(targetPanel, position, axesEvent);\n\n return this._animateToPosition({\n position: targetPos,\n duration: duration,\n newActivePanel: targetPanel,\n axesEvent: axesEvent\n });\n };\n\n __proto._resetIndexRange = function () {\n this._indexRange = {\n min: 0,\n max: 0\n };\n };\n\n return StrictControl;\n}(Control);\n/**\r\n * A mode of camera\r\n */\n\n\nvar CameraMode = /*#__PURE__*/function () {\n /** */\n function CameraMode(flicking) {\n this._flicking = flicking;\n }\n\n var __proto = CameraMode.prototype;\n\n __proto.getAnchors = function () {\n var panels = this._flicking.renderer.panels;\n return panels.map(function (panel, index) {\n return new AnchorPoint({\n index: index,\n position: panel.position,\n panel: panel\n });\n });\n };\n\n __proto.findAnchorIncludePosition = function (position) {\n var anchors = this._flicking.camera.anchorPoints;\n var anchorsIncludingPosition = anchors.filter(function (anchor) {\n return anchor.panel.includePosition(position, true);\n });\n return anchorsIncludingPosition.reduce(function (nearest, anchor) {\n if (!nearest) return anchor;\n return Math.abs(nearest.position - position) < Math.abs(anchor.position - position) ? nearest : anchor;\n }, null);\n };\n\n __proto.findNearestAnchor = function (position) {\n var anchors = this._flicking.camera.anchorPoints;\n if (anchors.length <= 0) return null;\n var prevDist = Infinity;\n\n for (var anchorIdx = 0; anchorIdx < anchors.length; anchorIdx++) {\n var anchor = anchors[anchorIdx];\n var dist = Math.abs(anchor.position - position);\n\n if (dist > prevDist) {\n // Return previous anchor\n return anchors[anchorIdx - 1];\n }\n\n prevDist = dist;\n } // Return last anchor\n\n\n return anchors[anchors.length - 1];\n };\n\n __proto.clampToReachablePosition = function (position) {\n var camera = this._flicking.camera;\n var range = camera.range;\n return clamp(position, range.min, range.max);\n };\n\n __proto.getCircularOffset = function () {\n return 0;\n };\n\n __proto.canReach = function (panel) {\n var camera = this._flicking.camera;\n var range = camera.range;\n if (panel.removed) return false;\n var panelPos = panel.position;\n return panelPos >= range.min && panelPos <= range.max;\n };\n\n __proto.canSee = function (panel) {\n var camera = this._flicking.camera;\n var visibleRange = camera.visibleRange; // Should not include margin, as we don't declare what the margin is visible as what the panel is visible.\n\n return panel.isVisibleOnRange(visibleRange.min, visibleRange.max);\n };\n\n return CameraMode;\n}();\n\nvar LinearCameraMode = /*#__PURE__*/function (_super) {\n __extends(LinearCameraMode, _super);\n\n function LinearCameraMode() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n var __proto = LinearCameraMode.prototype;\n\n __proto.checkAvailability = function () {\n // It's always available\n return true;\n };\n\n __proto.getRange = function () {\n var _a, _b;\n\n var renderer = this._flicking.renderer;\n var firstPanel = renderer.getPanel(0);\n var lastPanel = renderer.getPanel(renderer.panelCount - 1);\n return {\n min: (_a = firstPanel === null || firstPanel === void 0 ? void 0 : firstPanel.position) !== null && _a !== void 0 ? _a : 0,\n max: (_b = lastPanel === null || lastPanel === void 0 ? void 0 : lastPanel.position) !== null && _b !== void 0 ? _b : 0\n };\n };\n\n return LinearCameraMode;\n}(CameraMode);\n/**\r\n * A {@link Camera} mode that connects the last panel and the first panel, enabling continuous loop\r\n * @ko 첫번째 패널과 마지막 패널이 이어진 상태로, 무한히 회전할 수 있는 종류의 {@link Camera} 모드\r\n */\n\n\nvar CircularCameraMode = /*#__PURE__*/function (_super) {\n __extends(CircularCameraMode, _super);\n\n function CircularCameraMode() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n var __proto = CircularCameraMode.prototype;\n\n __proto.checkAvailability = function () {\n var flicking = this._flicking;\n var renderer = flicking.renderer;\n var panels = renderer.panels;\n\n if (panels.length <= 0) {\n return false;\n }\n\n var firstPanel = panels[0];\n var lastPanel = panels[panels.length - 1];\n var firstPanelPrev = firstPanel.range.min - firstPanel.margin.prev;\n var lastPanelNext = lastPanel.range.max + lastPanel.margin.next;\n var visibleSize = flicking.camera.size;\n var panelSizeSum = lastPanelNext - firstPanelPrev;\n var canSetCircularMode = panels.every(function (panel) {\n return panelSizeSum - panel.size >= visibleSize;\n });\n return canSetCircularMode;\n };\n\n __proto.getRange = function () {\n var flicking = this._flicking;\n var panels = flicking.renderer.panels;\n\n if (panels.length <= 0) {\n return {\n min: 0,\n max: 0\n };\n }\n\n var firstPanel = panels[0];\n var lastPanel = panels[panels.length - 1];\n var firstPanelPrev = firstPanel.range.min - firstPanel.margin.prev;\n var lastPanelNext = lastPanel.range.max + lastPanel.margin.next;\n return {\n min: firstPanelPrev,\n max: lastPanelNext\n };\n };\n\n __proto.getAnchors = function () {\n var flicking = this._flicking;\n var panels = flicking.renderer.panels;\n return panels.map(function (panel, index) {\n return new AnchorPoint({\n index: index,\n position: panel.position,\n panel: panel\n });\n });\n };\n\n __proto.findNearestAnchor = function (position) {\n var camera = this._flicking.camera;\n var anchors = camera.anchorPoints;\n if (anchors.length <= 0) return null;\n var camRange = camera.range;\n var minDist = Infinity;\n var minDistIndex = -1;\n\n for (var anchorIdx = 0; anchorIdx < anchors.length; anchorIdx++) {\n var anchor = anchors[anchorIdx];\n var dist = Math.min(Math.abs(anchor.position - position), Math.abs(anchor.position - camRange.min + camRange.max - position), Math.abs(position - camRange.min + camRange.max - anchor.position));\n\n if (dist < minDist) {\n minDist = dist;\n minDistIndex = anchorIdx;\n }\n } // Return last anchor\n\n\n return anchors[minDistIndex];\n };\n\n __proto.findAnchorIncludePosition = function (position) {\n var camera = this._flicking.camera;\n var range = camera.range;\n var anchors = camera.anchorPoints;\n var rangeDiff = camera.rangeDiff;\n var anchorCount = anchors.length;\n var positionInRange = circulatePosition(position, range.min, range.max);\n\n var anchorInRange = _super.prototype.findAnchorIncludePosition.call(this, positionInRange);\n\n if (anchorCount > 0 && (position === range.min || position === range.max)) {\n var possibleAnchors = [anchorInRange, new AnchorPoint({\n index: 0,\n position: anchors[0].position + rangeDiff,\n panel: anchors[0].panel\n }), new AnchorPoint({\n index: anchorCount - 1,\n position: anchors[anchorCount - 1].position - rangeDiff,\n panel: anchors[anchorCount - 1].panel\n })].filter(function (anchor) {\n return !!anchor;\n });\n anchorInRange = possibleAnchors.reduce(function (nearest, anchor) {\n if (!nearest) return anchor;\n return Math.abs(nearest.position - position) < Math.abs(anchor.position - position) ? nearest : anchor;\n }, null);\n }\n\n if (!anchorInRange) return null;\n\n if (position < range.min) {\n var loopCount = -Math.floor((range.min - position) / rangeDiff) - 1;\n return new AnchorPoint({\n index: anchorInRange.index,\n position: anchorInRange.position + rangeDiff * loopCount,\n panel: anchorInRange.panel\n });\n } else if (position > range.max) {\n var loopCount = Math.floor((position - range.max) / rangeDiff) + 1;\n return new AnchorPoint({\n index: anchorInRange.index,\n position: anchorInRange.position + rangeDiff * loopCount,\n panel: anchorInRange.panel\n });\n }\n\n return anchorInRange;\n };\n\n __proto.getCircularOffset = function () {\n var flicking = this._flicking;\n var camera = flicking.camera;\n if (!camera.circularEnabled) return 0;\n var toggled = flicking.panels.filter(function (panel) {\n return panel.toggled;\n });\n var toggledPrev = toggled.filter(function (panel) {\n return panel.toggleDirection === DIRECTION.PREV;\n });\n var toggledNext = toggled.filter(function (panel) {\n return panel.toggleDirection === DIRECTION.NEXT;\n });\n return this._calcPanelAreaSum(toggledPrev) - this._calcPanelAreaSum(toggledNext);\n };\n\n __proto.clampToReachablePosition = function (position) {\n // Basically all position is reachable for circular camera\n return position;\n };\n\n __proto.canReach = function (panel) {\n if (panel.removed) return false; // Always reachable on circular mode\n\n return true;\n };\n\n __proto.canSee = function (panel) {\n var camera = this._flicking.camera;\n var range = camera.range;\n var rangeDiff = camera.rangeDiff;\n var visibleRange = camera.visibleRange;\n\n var visibleInCurrentRange = _super.prototype.canSee.call(this, panel); // Check looped visible area for circular case\n\n\n if (visibleRange.min < range.min) {\n return visibleInCurrentRange || panel.isVisibleOnRange(visibleRange.min + rangeDiff, visibleRange.max + rangeDiff);\n } else if (visibleRange.max > range.max) {\n return visibleInCurrentRange || panel.isVisibleOnRange(visibleRange.min - rangeDiff, visibleRange.max - rangeDiff);\n }\n\n return visibleInCurrentRange;\n };\n\n __proto._calcPanelAreaSum = function (panels) {\n return panels.reduce(function (sum, panel) {\n return sum + panel.sizeIncludingMargin;\n }, 0);\n };\n\n return CircularCameraMode;\n}(CameraMode);\n\nvar BoundCameraMode = /*#__PURE__*/function (_super) {\n __extends(BoundCameraMode, _super);\n\n function BoundCameraMode() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n var __proto = BoundCameraMode.prototype;\n\n __proto.checkAvailability = function () {\n var flicking = this._flicking;\n var renderer = flicking.renderer;\n var firstPanel = renderer.getPanel(0);\n var lastPanel = renderer.getPanel(renderer.panelCount - 1);\n\n if (!firstPanel || !lastPanel) {\n return false;\n }\n\n var viewportSize = flicking.camera.size;\n var firstPanelPrev = firstPanel.range.min;\n var lastPanelNext = lastPanel.range.max;\n var panelAreaSize = lastPanelNext - firstPanelPrev;\n var isBiggerThanViewport = viewportSize < panelAreaSize;\n return isBiggerThanViewport;\n };\n\n __proto.getRange = function () {\n var flicking = this._flicking;\n var renderer = flicking.renderer;\n var alignPos = flicking.camera.alignPosition;\n var firstPanel = renderer.getPanel(0);\n var lastPanel = renderer.getPanel(renderer.panelCount - 1);\n\n if (!firstPanel || !lastPanel) {\n return {\n min: 0,\n max: 0\n };\n }\n\n var viewportSize = flicking.camera.size;\n var firstPanelPrev = firstPanel.range.min;\n var lastPanelNext = lastPanel.range.max;\n var panelAreaSize = lastPanelNext - firstPanelPrev;\n var isBiggerThanViewport = viewportSize < panelAreaSize;\n var firstPos = firstPanelPrev + alignPos;\n var lastPos = lastPanelNext - viewportSize + alignPos;\n\n if (isBiggerThanViewport) {\n return {\n min: firstPos,\n max: lastPos\n };\n } else {\n var align = flicking.camera.align;\n var alignVal = typeof align === \"object\" ? align.camera : align;\n var pos = firstPos + parseAlign$1(alignVal, lastPos - firstPos);\n return {\n min: pos,\n max: pos\n };\n }\n };\n\n __proto.getAnchors = function () {\n var flicking = this._flicking;\n var camera = flicking.camera;\n var panels = flicking.renderer.panels;\n\n if (panels.length <= 0) {\n return [];\n }\n\n var range = flicking.camera.range;\n var reachablePanels = panels.filter(function (panel) {\n return camera.canReach(panel);\n });\n\n if (reachablePanels.length > 0) {\n var shouldPrependBoundAnchor = reachablePanels[0].position !== range.min;\n var shouldAppendBoundAnchor = reachablePanels[reachablePanels.length - 1].position !== range.max;\n var indexOffset_1 = shouldPrependBoundAnchor ? 1 : 0;\n var newAnchors = reachablePanels.map(function (panel, idx) {\n return new AnchorPoint({\n index: idx + indexOffset_1,\n position: panel.position,\n panel: panel\n });\n });\n\n if (shouldPrependBoundAnchor) {\n newAnchors.splice(0, 0, new AnchorPoint({\n index: 0,\n position: range.min,\n panel: panels[reachablePanels[0].index - 1]\n }));\n }\n\n if (shouldAppendBoundAnchor) {\n newAnchors.push(new AnchorPoint({\n index: newAnchors.length,\n position: range.max,\n panel: panels[reachablePanels[reachablePanels.length - 1].index + 1]\n }));\n }\n\n return newAnchors;\n } else if (range.min !== range.max) {\n // There're more than 2 panels\n var nearestPanelAtMin = this._findNearestPanel(range.min, panels);\n\n var panelAtMin = nearestPanelAtMin.index === panels.length - 1 ? nearestPanelAtMin.prev() : nearestPanelAtMin;\n var panelAtMax = panelAtMin.next();\n return [new AnchorPoint({\n index: 0,\n position: range.min,\n panel: panelAtMin\n }), new AnchorPoint({\n index: 1,\n position: range.max,\n panel: panelAtMax\n })];\n } else {\n return [new AnchorPoint({\n index: 0,\n position: range.min,\n panel: this._findNearestPanel(range.min, panels)\n })];\n }\n };\n\n __proto.findAnchorIncludePosition = function (position) {\n var camera = this._flicking.camera;\n var range = camera.range;\n var anchors = camera.anchorPoints;\n if (anchors.length <= 0) return null;\n\n if (position <= range.min) {\n return anchors[0];\n } else if (position >= range.max) {\n return anchors[anchors.length - 1];\n } else {\n return _super.prototype.findAnchorIncludePosition.call(this, position);\n }\n };\n\n __proto._findNearestPanel = function (pos, panels) {\n var prevDist = Infinity;\n\n for (var panelIdx = 0; panelIdx < panels.length; panelIdx++) {\n var panel = panels[panelIdx];\n var dist = Math.abs(panel.position - pos);\n\n if (dist > prevDist) {\n // Return previous anchor\n return panels[panelIdx - 1];\n }\n\n prevDist = dist;\n } // Return last anchor\n\n\n return panels[panels.length - 1];\n };\n\n return BoundCameraMode;\n}(CameraMode);\n/**\r\n * A component that manages actual movement inside the viewport\r\n * @ko 뷰포트 내에서의 실제 움직임을 담당하는 컴포넌트\r\n */\n\n\nvar Camera = /*#__PURE__*/function () {\n /** */\n function Camera(flicking, _a) {\n var _this = this;\n\n var _b = (_a === void 0 ? {} : _a).align,\n align = _b === void 0 ? ALIGN.CENTER : _b;\n\n this._checkTranslateSupport = function () {\n var e_1, _a;\n\n var transforms = [\"webkitTransform\", \"msTransform\", \"MozTransform\", \"OTransform\", \"transform\"];\n var supportedStyle = document.documentElement.style;\n var transformName = \"\";\n\n try {\n for (var transforms_1 = __values(transforms), transforms_1_1 = transforms_1.next(); !transforms_1_1.done; transforms_1_1 = transforms_1.next()) {\n var prefixedTransform = transforms_1_1.value;\n\n if (prefixedTransform in supportedStyle) {\n transformName = prefixedTransform;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (transforms_1_1 && !transforms_1_1.done && (_a = transforms_1.return)) _a.call(transforms_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n if (!transformName) {\n throw new FlickingError(MESSAGE.TRANSFORM_NOT_SUPPORTED, CODE.TRANSFORM_NOT_SUPPORTED);\n }\n\n _this._transform = transformName;\n };\n\n this._flicking = flicking;\n\n this._resetInternalValues(); // Options\n\n\n this._align = align;\n }\n\n var __proto = Camera.prototype;\n Object.defineProperty(__proto, \"element\", {\n // Internal states getter\n\n /**\r\n * The camera element(`.flicking-camera`)\r\n * @ko 카메라 엘리먼트(`.flicking-camera`)\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\n get: function () {\n return this._el;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"children\", {\n /**\r\n * An array of the child elements of the camera element(`.flicking-camera`)\r\n * @ko 카메라 엘리먼트(`.flicking-camera`)의 자식 엘리먼트 배열\r\n * @type {HTMLElement[]}\r\n * @readonly\r\n */\n get: function () {\n return toArray(this._el.children);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"position\", {\n /**\r\n * Current position of the camera\r\n * @ko Camera의 현재 좌표\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._position;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"alignPosition\", {\n /**\r\n * Align position inside the viewport where {@link Panel}'s {@link Panel#alignPosition alignPosition} should be located at\r\n * @ko 패널의 정렬 기준 위치. 뷰포트 내에서 {@link Panel}의 {@link Panel#alignPosition alignPosition}이 위치해야 하는 곳입니다\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._alignPos;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"offset\", {\n /**\r\n * Position offset, used for the {@link Flicking#renderOnlyVisible renderOnlyVisible} option\r\n * @ko Camera의 좌표 오프셋. {@link Flicking#renderOnlyVisible renderOnlyVisible} 옵션을 위해 사용됩니다.\r\n * @type {number}\r\n * @default 0\r\n * @readonly\r\n */\n get: function () {\n return this._offset - this._circularOffset;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"circularEnabled\", {\n /**\r\n * Whether the `circular` option is enabled.\r\n * The {@link Flicking#circular circular} option can't be enabled when sum of the panel sizes are too small.\r\n * @ko {@link Flicking#circular circular} 옵션이 활성화되었는지 여부를 나타내는 멤버 변수.\r\n * {@link Flicking#circular circular} 옵션은 패널의 크기의 합이 충분하지 않을 경우 비활성화됩니다.\r\n * @type {boolean}\r\n * @default false\r\n * @readonly\r\n */\n get: function () {\n return this._circularEnabled;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"mode\", {\n /**\r\n * A current camera mode\r\n * @type {CameraMode}\r\n * @readonly\r\n */\n get: function () {\n return this._mode;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"range\", {\n /**\r\n * A range that Camera's {@link Camera#position position} can reach\r\n * @ko Camera의 {@link Camera#position position}이 도달 가능한 범위\r\n * @type {object}\r\n * @property {number} min A minimum position최소 위치\r\n * @property {number} max A maximum position최대 위치\r\n * @readonly\r\n */\n get: function () {\n return this._range;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"rangeDiff\", {\n /**\r\n * A difference between Camera's minimum and maximum position that can reach\r\n * @ko Camera가 도달 가능한 최소/최대 좌표의 차이\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._range.max - this._range.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"visiblePanels\", {\n /**\r\n * An array of visible panels from the current position\r\n * @ko 현재 보이는 패널들의 배열\r\n * @type {Panel[]}\r\n * @readonly\r\n */\n get: function () {\n return this._visiblePanels;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"visibleRange\", {\n /**\r\n * A range of the visible area from the current position\r\n * @ko 현재 위치에서 보이는 범위\r\n * @type {object}\r\n * @property {number} min A minimum position최소 위치\r\n * @property {number} min A maximum position최대 위치\r\n * @readonly\r\n */\n get: function () {\n return {\n min: this._position - this._alignPos,\n max: this._position - this._alignPos + this.size\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"anchorPoints\", {\n /**\r\n * An array of {@link AnchorPoint}s that Camera can be stopped at\r\n * @ko 카메라가 도달 가능한 {@link AnchorPoint}의 목록\r\n * @type {AnchorPoint[]}\r\n * @readonly\r\n */\n get: function () {\n return this._anchors;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"controlParams\", {\n /**\r\n * A current parameters of the Camera for updating {@link AxesController}\r\n * @ko {@link AxesController}를 업데이트하기 위한 현재 Camera 패러미터들\r\n * @type {ControlParams}\r\n * @readonly\r\n */\n get: function () {\n return {\n range: this._range,\n position: this._position,\n circular: this._circularEnabled\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"atEdge\", {\n /**\r\n * A Boolean value indicating whether Camera's over the minimum or maximum position reachable\r\n * @ko 현재 카메라가 도달 가능한 범위의 최소 혹은 최대점을 넘어섰는지를 나타냅니다\r\n * @type {boolean}\r\n * @readonly\r\n */\n get: function () {\n return this._position <= this._range.min || this._position >= this._range.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"size\", {\n /**\r\n * Return the size of the viewport\r\n * @ko 뷰포트 크기를 반환합니다\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n var flicking = this._flicking;\n return flicking ? flicking.horizontal ? flicking.viewport.width : flicking.viewport.height : 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"progress\", {\n /**\r\n * Return the camera's position progress from the first panel to last panel\r\n * Range is from 0 to last panel's index\r\n * @ko 첫번째 패널로부터 마지막 패널까지의 카메라 위치의 진행도를 반환합니다\r\n * 범위는 0부터 마지막 패널의 인덱스까지입니다\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n var flicking = this._flicking;\n var position = this._position + this._offset;\n var nearestAnchor = this.findNearestAnchor(this._position);\n\n if (!flicking || !nearestAnchor) {\n return NaN;\n }\n\n var nearestPanel = nearestAnchor.panel;\n var panelPos = nearestPanel.position + nearestPanel.offset;\n var bounceSize = flicking.control.controller.bounce;\n var _a = this.range,\n prevRange = _a.min,\n nextRange = _a.max;\n var rangeDiff = this.rangeDiff;\n\n if (position === panelPos) {\n return nearestPanel.index;\n }\n\n if (position < panelPos) {\n var prevPanel = nearestPanel.prev();\n var prevPosition = prevPanel ? prevPanel.position + prevPanel.offset : prevRange - bounceSize[0]; // Looped\n\n if (prevPosition > panelPos) {\n prevPosition -= rangeDiff;\n }\n\n return nearestPanel.index - 1 + getProgress(position, prevPosition, panelPos);\n } else {\n var nextPanel = nearestPanel.next();\n var nextPosition = nextPanel ? nextPanel.position + nextPanel.offset : nextRange + bounceSize[1]; // Looped\n\n if (nextPosition < panelPos) {\n nextPosition += rangeDiff;\n }\n\n return nearestPanel.index + getProgress(position, panelPos, nextPosition);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"panelOrder\", {\n /**\r\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/direction direction} CSS property applied to the camera element(`.flicking-camera`)\r\n * @ko 카메라 엘리먼트(`.flicking-camera`)에 적용된 {@link https://developer.mozilla.org/en-US/docs/Web/CSS/direction direction} CSS 속성\r\n * @type {string}\r\n * @readonly\r\n */\n get: function () {\n return this._panelOrder;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"align\", {\n // Options Getter\n\n /**\r\n * A value indicating where the {@link Camera#alignPosition alignPosition} should be located at inside the viewport element\r\n * @ko {@link Camera#alignPosition alignPosition}이 뷰포트 엘리먼트 내의 어디에 위치해야 하는지를 나타내는 값\r\n * @type {ALIGN | string | number}\r\n */\n get: function () {\n return this._align;\n },\n // Options Setter\n set: function (val) {\n this._align = val;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Initialize Camera\r\n * @ko Camera를 초기화합니다\r\n * @throws {FlickingError}\r\n * {@link ERROR_CODE VAL_MUST_NOT_NULL} If the camera element(`.flicking-camera`) does not exist inside viewport element\r\n * {@link ERROR_CODE VAL_MUST_NOT_NULL} 뷰포트 엘리먼트 내부에 카메라 엘리먼트(`.flicking-camera`)가 존재하지 않을 경우\r\n * @return {this}\r\n */\n\n __proto.init = function () {\n var viewportEl = this._flicking.viewport.element;\n checkExistence(viewportEl.firstElementChild, \"First element child of the viewport element\");\n this._el = viewportEl.firstElementChild;\n\n this._checkTranslateSupport();\n\n this._updateMode();\n\n this.updatePanelOrder();\n return this;\n };\n /**\r\n * Destroy Camera and return to initial state\r\n * @ko Camera를 초기 상태로 되돌립니다\r\n * @return {void}\r\n */\n\n\n __proto.destroy = function () {\n this._resetInternalValues();\n\n return this;\n };\n /**\r\n * Move to the given position and apply CSS transform\r\n * @ko 해당 좌표로 이동하고, CSS transform을 적용합니다\r\n * @param {number} pos A new position움직일 위치\r\n * @throws {FlickingError}\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} When {@link Camera#init init} is not called before\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} {@link Camera#init init}이 이전에 호출되지 않은 경우\r\n * @return {this}\r\n */\n\n\n __proto.lookAt = function (pos) {\n var _this = this;\n\n var flicking = getFlickingAttached(this._flicking);\n var prevPos = this._position;\n this._position = pos;\n\n var toggled = this._togglePanels(prevPos, pos);\n\n this._refreshVisiblePanels();\n\n this._checkNeedPanel();\n\n this._checkReachEnd(prevPos, pos);\n\n if (toggled) {\n void flicking.renderer.render().then(function () {\n _this.updateOffset();\n });\n } else {\n this.applyTransform();\n }\n };\n /**\r\n * Return a previous {@link AnchorPoint} of given {@link AnchorPoint}\r\n * If it does not exist, return `null` instead\r\n * @ko 주어진 {@link AnchorPoint}의 이전 {@link AnchorPoint}를 반환합니다\r\n * 존재하지 않을 경우 `null`을 반환합니다\r\n * @param {AnchorPoint} anchor A reference {@link AnchorPoint}기준 {@link AnchorPoint}\r\n * @return {AnchorPoint | null} The previous {@link AnchorPoint}이전 {@link AnchorPoint}\r\n */\n\n\n __proto.getPrevAnchor = function (anchor) {\n if (!this._circularEnabled || anchor.index !== 0) {\n return this._anchors[anchor.index - 1] || null;\n } else {\n var anchors = this._anchors;\n var rangeDiff = this.rangeDiff;\n var lastAnchor = anchors[anchors.length - 1];\n return new AnchorPoint({\n index: lastAnchor.index,\n position: lastAnchor.position - rangeDiff,\n panel: lastAnchor.panel\n });\n }\n };\n /**\r\n * Return a next {@link AnchorPoint} of given {@link AnchorPoint}\r\n * If it does not exist, return `null` instead\r\n * @ko 주어진 {@link AnchorPoint}의 다음 {@link AnchorPoint}를 반환합니다\r\n * 존재하지 않을 경우 `null`을 반환합니다\r\n * @param {AnchorPoint} anchor A reference {@link AnchorPoint}기준 {@link AnchorPoint}\r\n * @return {AnchorPoint | null} The next {@link AnchorPoint}다음 {@link AnchorPoint}\r\n */\n\n\n __proto.getNextAnchor = function (anchor) {\n var anchors = this._anchors;\n\n if (!this._circularEnabled || anchor.index !== anchors.length - 1) {\n return anchors[anchor.index + 1] || null;\n } else {\n var rangeDiff = this.rangeDiff;\n var firstAnchor = anchors[0];\n return new AnchorPoint({\n index: firstAnchor.index,\n position: firstAnchor.position + rangeDiff,\n panel: firstAnchor.panel\n });\n }\n };\n /**\r\n * Return the camera's position progress in the panel below\r\n * Value is from 0 to 1 when the camera's inside panel\r\n * Value can be lower than 0 or bigger than 1 when it's in the margin area\r\n * @ko 현재 카메라 아래 패널에서의 위치 진행도를 반환합니다\r\n * 반환값은 카메라가 패널 내부에 있을 경우 0부터 1까지의 값을 갖습니다\r\n * 패널의 margin 영역에 있을 경우 0보다 작거나 1보다 큰 값을 반환할 수 있습니다\r\n */\n\n\n __proto.getProgressInPanel = function (panel) {\n var panelRange = panel.range;\n return (this._position - panelRange.min) / (panelRange.max - panelRange.min);\n };\n /**\r\n * Return {@link AnchorPoint} that includes given position\r\n * If there's no {@link AnchorPoint} that includes the given position, return `null` instead\r\n * @ko 주어진 좌표를 포함하는 {@link AnchorPoint}를 반환합니다\r\n * 주어진 좌표를 포함하는 {@link AnchorPoint}가 없을 경우 `null`을 반환합니다\r\n * @param {number} position A position to check확인할 좌표\r\n * @return {AnchorPoint | null} The {@link AnchorPoint} that includes the given position해당 좌표를 포함하는 {@link AnchorPoint}\r\n */\n\n\n __proto.findAnchorIncludePosition = function (position) {\n return this._mode.findAnchorIncludePosition(position);\n };\n /**\r\n * Return {@link AnchorPoint} nearest to given position\r\n * If there're no {@link AnchorPoint}s, return `null` instead\r\n * @ko 해당 좌표에서 가장 가까운 {@link AnchorPoint}를 반환합니다\r\n * {@link AnchorPoint}가 하나도 없을 경우 `null`을 반환합니다\r\n * @param {number} position A position to check확인할 좌표\r\n * @return {AnchorPoint | null} The {@link AnchorPoint} nearest to the given position해당 좌표에 가장 인접한 {@link AnchorPoint}\r\n */\n\n\n __proto.findNearestAnchor = function (position) {\n return this._mode.findNearestAnchor(position);\n };\n /**\r\n * Return {@link AnchorPoint} that matches {@link Flicking#currentPanel}\r\n * @ko 현재 {@link Flicking#currentPanel}에 해당하는 {@link AnchorPoint}를 반환합니다\r\n * @return {AnchorPoint | null}\r\n */\n\n\n __proto.findActiveAnchor = function () {\n var flicking = getFlickingAttached(this._flicking);\n var activeIndex = flicking.control.activeIndex;\n return find(this._anchors, function (anchor) {\n return anchor.panel.index === activeIndex;\n });\n };\n /**\r\n * Clamp the given position between camera's range\r\n * @ko 주어진 좌표를 Camera가 도달 가능한 범위 사이의 값으로 만듭니다\r\n * @param {number} position A position to clamp범위를 제한할 좌표\r\n * @return {number} A clamped position범위 제한된 좌표\r\n */\n\n\n __proto.clampToReachablePosition = function (position) {\n return this._mode.clampToReachablePosition(position);\n };\n /**\r\n * Check whether the given panel is inside of the Camera's range\r\n * @ko 해당 {@link Panel}이 Camera가 도달 가능한 범위 내에 있는지를 반환합니다\r\n * @param panel An instance of {@link Panel} to check확인할 {@link Panel}의 인스턴스\r\n * @return {boolean} Whether the panel's inside Camera's range도달 가능한 범위 내에 해당 패널이 존재하는지 여부\r\n */\n\n\n __proto.canReach = function (panel) {\n return this._mode.canReach(panel);\n };\n /**\r\n * Check whether the given panel element is visible at the current position\r\n * @ko 현재 좌표에서 해당 패널 엘리먼트를 볼 수 있는지 여부를 반환합니다\r\n * @param panel An instance of {@link Panel} to check확인할 {@link Panel}의 인스턴스\r\n * @return Whether the panel element is visible at the current position현재 위치에서 해당 패널 엘리먼트가 보이는지 여부\r\n */\n\n\n __proto.canSee = function (panel) {\n return this._mode.canSee(panel);\n };\n /**\r\n * Update {@link Camera#range range} of Camera\r\n * @ko Camera의 {@link Camera#range range}를 업데이트합니다\r\n * @method\r\n * @abstract\r\n * @memberof Camera\r\n * @instance\r\n * @name updateRange\r\n * @chainable\r\n * @throws {FlickingError}\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} When {@link Camera#init init} is not called before\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} {@link Camera#init init}이 이전에 호출되지 않은 경우\r\n * @return {this}\r\n */\n\n\n __proto.updateRange = function () {\n var flicking = getFlickingAttached(this._flicking);\n var renderer = flicking.renderer;\n var panels = renderer.panels;\n\n this._updateMode();\n\n this._range = this._mode.getRange();\n panels.forEach(function (panel) {\n return panel.updateCircularToggleDirection();\n });\n return this;\n };\n /**\r\n * Update Camera's {@link Camera#alignPosition alignPosition}\r\n * @ko Camera의 {@link Camera#alignPosition alignPosition}을 업데이트합니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.updateAlignPos = function () {\n var align = this._align;\n var alignVal = typeof align === \"object\" ? align.camera : align;\n this._alignPos = parseAlign$1(alignVal, this.size);\n return this;\n };\n /**\r\n * Update Camera's {@link Camera#anchorPoints anchorPoints}\r\n * @ko Camera의 {@link Camera#anchorPoints anchorPoints}를 업데이트합니다\r\n * @throws {FlickingError}\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} When {@link Camera#init init} is not called before\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} {@link Camera#init init}이 이전에 호출되지 않은 경우\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.updateAnchors = function () {\n this._anchors = this._mode.getAnchors();\n return this;\n };\n /**\r\n * Update Viewport's height to active panel's height\r\n * @ko 현재 선택된 패널의 높이와 동일하도록 뷰포트의 높이를 업데이트합니다\r\n * @throws {FlickingError}\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} When {@link Camera#init init} is not called before\r\n * {@link ERROR_CODE NOT_ATTACHED_TO_FLICKING} {@link Camera#init init}이 이전에 호출되지 않은 경우\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.updateAdaptiveHeight = function () {\n var flicking = getFlickingAttached(this._flicking);\n var activePanel = flicking.control.activePanel;\n if (!flicking.horizontal || !flicking.adaptive || !activePanel) return;\n flicking.viewport.setSize({\n height: activePanel.height\n });\n };\n /**\r\n * Update current offset of the camera\r\n * @ko 현재 카메라의 오프셋을 업데이트합니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.updateOffset = function () {\n var flicking = getFlickingAttached(this._flicking);\n var position = this._position;\n var unRenderedPanels = flicking.panels.filter(function (panel) {\n return !panel.rendered;\n });\n this._offset = unRenderedPanels.filter(function (panel) {\n return panel.position + panel.offset < position;\n }).reduce(function (offset, panel) {\n return offset + panel.sizeIncludingMargin;\n }, 0);\n this._circularOffset = this._mode.getCircularOffset();\n this.applyTransform();\n return this;\n };\n /**\r\n * Update direction to match the {@link https://developer.mozilla.org/en-US/docs/Web/CSS/direction direction} CSS property applied to the camera element\r\n * @ko 카메라 엘리먼트에 적용된 {@link https://developer.mozilla.org/en-US/docs/Web/CSS/direction direction} CSS 속성에 맞게 방향을 업데이트합니다\r\n * @return {this}\r\n */\n\n\n __proto.updatePanelOrder = function () {\n var flicking = getFlickingAttached(this._flicking);\n if (!flicking.horizontal) return this;\n var el = this._el;\n var direction = getStyle(el).direction;\n\n if (direction !== this._panelOrder) {\n this._panelOrder = direction === ORDER.RTL ? ORDER.RTL : ORDER.LTR;\n\n if (flicking.initialized) {\n flicking.control.controller.updateDirection();\n }\n }\n\n return this;\n };\n /**\r\n * Reset the history of {@link Flicking#event:needPanel needPanel} events so it can be triggered again\r\n * @ko 발생한 {@link Flicking#event:needPanel needPanel} 이벤트들을 초기화하여 다시 발생할 수 있도록 합니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.resetNeedPanelHistory = function () {\n this._needPanelTriggered = {\n prev: false,\n next: false\n };\n return this;\n };\n /**\r\n * Apply \"transform\" style with the current position to camera element\r\n * @ko 현재 위치를 기준으로한 transform 스타일을 카메라 엘리먼트에 적용합니다.\r\n * @return {this}\r\n */\n\n\n __proto.applyTransform = function () {\n var el = this._el;\n var flicking = getFlickingAttached(this._flicking);\n var renderer = flicking.renderer;\n if (renderer.rendering || !flicking.initialized) return this;\n var actualPosition = this._position - this._alignPos - this._offset + this._circularOffset;\n el.style[this._transform] = flicking.horizontal ? \"translate(\" + (this._panelOrder === ORDER.RTL ? actualPosition : -actualPosition) + \"px)\" : \"translate(0, \" + -actualPosition + \"px)\";\n return this;\n };\n\n __proto._resetInternalValues = function () {\n this._position = 0;\n this._alignPos = 0;\n this._offset = 0;\n this._circularOffset = 0;\n this._circularEnabled = false;\n this._range = {\n min: 0,\n max: 0\n };\n this._visiblePanels = [];\n this._anchors = [];\n this._needPanelTriggered = {\n prev: false,\n next: false\n };\n };\n\n __proto._refreshVisiblePanels = function () {\n var _this = this;\n\n var flicking = getFlickingAttached(this._flicking);\n var panels = flicking.renderer.panels;\n var newVisiblePanels = panels.filter(function (panel) {\n return _this.canSee(panel);\n });\n var prevVisiblePanels = this._visiblePanels;\n this._visiblePanels = newVisiblePanels;\n var added = newVisiblePanels.filter(function (panel) {\n return !includes(prevVisiblePanels, panel);\n });\n var removed = prevVisiblePanels.filter(function (panel) {\n return !includes(newVisiblePanels, panel);\n });\n\n if (added.length > 0 || removed.length > 0) {\n void flicking.renderer.render().then(function () {\n flicking.trigger(new ComponentEvent(EVENTS.VISIBLE_CHANGE, {\n added: added,\n removed: removed,\n visiblePanels: newVisiblePanels\n }));\n });\n }\n };\n\n __proto._checkNeedPanel = function () {\n var needPanelTriggered = this._needPanelTriggered;\n if (needPanelTriggered.prev && needPanelTriggered.next) return;\n var flicking = getFlickingAttached(this._flicking);\n var panels = flicking.renderer.panels;\n\n if (panels.length <= 0) {\n if (!needPanelTriggered.prev) {\n flicking.trigger(new ComponentEvent(EVENTS.NEED_PANEL, {\n direction: DIRECTION.PREV\n }));\n needPanelTriggered.prev = true;\n }\n\n if (!needPanelTriggered.next) {\n flicking.trigger(new ComponentEvent(EVENTS.NEED_PANEL, {\n direction: DIRECTION.NEXT\n }));\n needPanelTriggered.next = true;\n }\n\n return;\n }\n\n var cameraPosition = this._position;\n var cameraSize = this.size;\n var cameraRange = this._range;\n var needPanelThreshold = flicking.needPanelThreshold;\n var cameraPrev = cameraPosition - this._alignPos;\n var cameraNext = cameraPrev + cameraSize;\n var firstPanel = panels[0];\n var lastPanel = panels[panels.length - 1];\n\n if (!needPanelTriggered.prev) {\n var firstPanelPrev = firstPanel.range.min;\n\n if (cameraPrev <= firstPanelPrev + needPanelThreshold || cameraPosition <= cameraRange.min + needPanelThreshold) {\n flicking.trigger(new ComponentEvent(EVENTS.NEED_PANEL, {\n direction: DIRECTION.PREV\n }));\n needPanelTriggered.prev = true;\n }\n }\n\n if (!needPanelTriggered.next) {\n var lastPanelNext = lastPanel.range.max;\n\n if (cameraNext >= lastPanelNext - needPanelThreshold || cameraPosition >= cameraRange.max - needPanelThreshold) {\n flicking.trigger(new ComponentEvent(EVENTS.NEED_PANEL, {\n direction: DIRECTION.NEXT\n }));\n needPanelTriggered.next = true;\n }\n }\n };\n\n __proto._checkReachEnd = function (prevPos, newPos) {\n var flicking = getFlickingAttached(this._flicking);\n var range = this._range;\n var wasBetweenRange = prevPos > range.min && prevPos < range.max;\n var isBetweenRange = newPos > range.min && newPos < range.max;\n if (!wasBetweenRange || isBetweenRange) return;\n var direction = newPos <= range.min ? DIRECTION.PREV : DIRECTION.NEXT;\n flicking.trigger(new ComponentEvent(EVENTS.REACH_EDGE, {\n direction: direction\n }));\n };\n\n __proto._updateMode = function () {\n var flicking = getFlickingAttached(this._flicking);\n\n if (flicking.circular) {\n var circularMode = new CircularCameraMode(flicking);\n var canSetCircularMode = circularMode.checkAvailability();\n\n if (canSetCircularMode) {\n this._mode = circularMode;\n } else {\n var fallbackMode = flicking.circularFallback;\n this._mode = fallbackMode === CIRCULAR_FALLBACK.BOUND ? new BoundCameraMode(flicking) : new LinearCameraMode(flicking);\n }\n\n this._circularEnabled = canSetCircularMode;\n } else {\n this._mode = flicking.bound ? new BoundCameraMode(flicking) : new LinearCameraMode(flicking);\n this._circularEnabled = false;\n }\n };\n\n __proto._togglePanels = function (prevPos, pos) {\n if (pos === prevPos) return false;\n var flicking = getFlickingAttached(this._flicking);\n var panels = flicking.renderer.panels;\n var toggled = panels.map(function (panel) {\n return panel.toggle(prevPos, pos);\n });\n return toggled.some(function (isToggled) {\n return isToggled;\n });\n };\n\n return Camera;\n}();\n/**\r\n * A component that manages {@link Panel} and its elements\r\n * @ko {@link Panel}과 그 엘리먼트들을 관리하는 컴포넌트\r\n */\n\n\nvar Renderer = /*#__PURE__*/function () {\n /**\r\n * @param {object} options An options object옵션 오브젝트\r\n * @param {Constants.ALIGN | string | number} [options.align=\"center\"] An {@link Flicking#align align} value that will be applied to all panels전체 패널에 적용될 {@link Flicking#align align} 값\r\n * @param {object} [options.strategy] An instance of RenderingStrategy(internal module)RenderingStrategy의 인스턴스(내부 모듈)\r\n */\n function Renderer(_a) {\n var _b = _a.align,\n align = _b === void 0 ? ALIGN.CENTER : _b,\n strategy = _a.strategy;\n this._flicking = null;\n this._panels = [];\n this._rendering = false; // Bind options\n\n this._align = align;\n this._strategy = strategy;\n }\n\n var __proto = Renderer.prototype;\n Object.defineProperty(__proto, \"panels\", {\n // Internal states Getter\n\n /**\r\n * Array of panels\r\n * @ko 전체 패널들의 배열\r\n * @type {Panel[]}\r\n * @readonly\r\n * @see Panel\r\n */\n get: function () {\n return this._panels;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"rendering\", {\n /**\r\n * A boolean value indicating whether rendering is in progress\r\n * @ko 현재 렌더링이 시작되어 끝나기 전까지의 상태인지의 여부\r\n * @type {boolean}\r\n * @readonly\r\n * @internal\r\n */\n get: function () {\n return this._rendering;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"panelCount\", {\n /**\r\n * Count of panels\r\n * @ko 전체 패널의 개수\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._panels.length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"strategy\", {\n /**\r\n * @internal\r\n */\n get: function () {\n return this._strategy;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"align\", {\n // Options Getter\n\n /**\r\n * A {@link Panel}'s {@link Panel#align align} value that applied to all panels\r\n * @ko {@link Panel}에 공통적으로 적용할 {@link Panel#align align} 값\r\n * @type {Constants.ALIGN | string | number}\r\n */\n get: function () {\n return this._align;\n },\n // Options Setter\n set: function (val) {\n this._align = val;\n var panelAlign = parsePanelAlign(val);\n\n this._panels.forEach(function (panel) {\n panel.align = panelAlign;\n });\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Initialize Renderer\r\n * @ko Renderer를 초기화합니다\r\n * @param {Flicking} flicking An instance of {@link Flicking}Flicking의 인스턴스\r\n * @chainable\r\n * @return {this}\r\n */\n\n __proto.init = function (flicking) {\n this._flicking = flicking;\n\n this._collectPanels();\n\n return this;\n };\n /**\r\n * Destroy Renderer and return to initial state\r\n * @ko Renderer를 초기 상태로 되돌립니다\r\n * @return {void}\r\n */\n\n\n __proto.destroy = function () {\n this._flicking = null;\n this._panels = [];\n };\n /**\r\n * Return the {@link Panel} at the given index. `null` if it doesn't exists.\r\n * @ko 주어진 인덱스에 해당하는 {@link Panel}을 반환합니다. 주어진 인덱스에 해당하는 패널이 존재하지 않을 경우 `null`을 반환합니다.\r\n * @return {Panel | null} Panel at the given index주어진 인덱스에 해당하는 패널\r\n * @see Panel\r\n */\n\n\n __proto.getPanel = function (index) {\n return this._panels[index] || null;\n };\n\n __proto.forceRenderAllPanels = function () {\n this._panels.forEach(function (panel) {\n return panel.markForShow();\n });\n\n return Promise.resolve();\n };\n /**\r\n * Update all panel sizes\r\n * @ko 모든 패널의 크기를 업데이트합니다\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.updatePanelSize = function () {\n var flicking = getFlickingAttached(this._flicking);\n var panels = this._panels;\n if (panels.length <= 0) return this;\n\n if (flicking.panelsPerView > 0) {\n var firstPanel = panels[0];\n firstPanel.resize();\n\n this._updatePanelSizeByGrid(firstPanel, panels);\n } else {\n flicking.panels.forEach(function (panel) {\n return panel.resize();\n });\n }\n\n return this;\n };\n /**\r\n * Insert new panels at given index\r\n * This will increase index of panels after by the number of panels added\r\n * @ko 주어진 인덱스에 새로운 패널들을 추가합니다\r\n * 해당 인덱스보다 같거나 큰 인덱스를 가진 기존 패널들은 추가한 패널의 개수만큼 인덱스가 증가합니다.\r\n * @param {Array} items An array of items to insert추가할 아이템들의 배열\r\n * @param {number} [items.index] Index to insert new panels at새로 패널들을 추가할 인덱스\r\n * @param {any[]} [items.elements] An array of element or framework component with element in it엘리먼트의 배열 혹은 프레임워크에서 엘리먼트를 포함한 컴포넌트들의 배열\r\n * @param {boolean} [items.hasDOMInElements] Whether it contains actual DOM elements. If set to true, renderer will add them to the camera element내부에 실제 DOM 엘리먼트들을 포함하고 있는지 여부. true로 설정할 경우, 렌더러는 해당 엘리먼트들을 카메라 엘리먼트 내부에 추가합니다\r\n * @return {Panel[]} An array of prepended panels추가된 패널들의 배열\r\n */\n\n\n __proto.batchInsert = function () {\n var items = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n\n var allPanelsInserted = this.batchInsertDefer.apply(this, __spread(items));\n if (allPanelsInserted.length <= 0) return [];\n this.updateAfterPanelChange(allPanelsInserted, []);\n return allPanelsInserted;\n };\n /**\r\n * Defers update\r\n * camera position & others will be updated after calling updateAfterPanelChange\r\n * @internal\r\n */\n\n\n __proto.batchInsertDefer = function () {\n var _this = this;\n\n var items = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n\n var panels = this._panels;\n var flicking = getFlickingAttached(this._flicking);\n var prevFirstPanel = panels[0];\n var align = parsePanelAlign(this._align);\n var allPanelsInserted = items.reduce(function (addedPanels, item) {\n var _a;\n\n var insertingIdx = getMinusCompensatedIndex(item.index, panels.length);\n var panelsPushed = panels.slice(insertingIdx);\n var panelsInserted = item.elements.map(function (el, idx) {\n return _this._createPanel(el, {\n index: insertingIdx + idx,\n align: align,\n flicking: flicking\n });\n });\n panels.splice.apply(panels, __spread([insertingIdx, 0], panelsInserted));\n\n if (item.hasDOMInElements) {\n // Insert the actual elements as camera element's children\n _this._insertPanelElements(panelsInserted, (_a = panelsPushed[0]) !== null && _a !== void 0 ? _a : null);\n } // Resize the newly added panels\n\n\n if (flicking.panelsPerView > 0) {\n var firstPanel = prevFirstPanel || panelsInserted[0].resize();\n\n _this._updatePanelSizeByGrid(firstPanel, panelsInserted);\n } else {\n panelsInserted.forEach(function (panel) {\n return panel.resize();\n });\n } // Update panel indexes & positions\n\n\n panelsPushed.forEach(function (panel) {\n panel.increaseIndex(panelsInserted.length);\n panel.updatePosition();\n });\n return __spread(addedPanels, panelsInserted);\n }, []);\n return allPanelsInserted;\n };\n /**\r\n * Remove the panel at the given index\r\n * This will decrease index of panels after by the number of panels removed\r\n * @ko 주어진 인덱스의 패널을 제거합니다\r\n * 해당 인덱스보다 큰 인덱스를 가진 기존 패널들은 제거한 패널의 개수만큼 인덱스가 감소합니다\r\n * @param {Array} items An array of items to remove제거할 아이템들의 배열\r\n * @param {number} [items.index] Index of panel to remove제거할 패널의 인덱스\r\n * @param {number} [items.deleteCount=1] Number of panels to remove from index`index` 이후로 제거할 패널의 개수\r\n * @param {boolean} [items.hasDOMInElements=1] Whether it contains actual DOM elements. If set to true, renderer will remove them from the camera element내부에 실제 DOM 엘리먼트들을 포함하고 있는지 여부. true로 설정할 경우, 렌더러는 해당 엘리먼트들을 카메라 엘리먼트 내부에서 제거합니다\r\n * @return An array of removed panels제거된 패널들의 배열\r\n */\n\n\n __proto.batchRemove = function () {\n var items = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n\n var allPanelsRemoved = this.batchRemoveDefer.apply(this, __spread(items));\n if (allPanelsRemoved.length <= 0) return [];\n this.updateAfterPanelChange([], allPanelsRemoved);\n return allPanelsRemoved;\n };\n /**\r\n * Defers update\r\n * camera position & others will be updated after calling updateAfterPanelChange\r\n * @internal\r\n */\n\n\n __proto.batchRemoveDefer = function () {\n var _this = this;\n\n var items = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n\n var panels = this._panels;\n var flicking = getFlickingAttached(this._flicking);\n var control = flicking.control;\n var activePanel = control.activePanel;\n var allPanelsRemoved = items.reduce(function (removed, item) {\n var index = item.index,\n deleteCount = item.deleteCount;\n var removingIdx = getMinusCompensatedIndex(index, panels.length);\n var panelsPulled = panels.slice(removingIdx + deleteCount);\n var panelsRemoved = panels.splice(removingIdx, deleteCount);\n if (panelsRemoved.length <= 0) return []; // Update panel indexes & positions\n\n panelsPulled.forEach(function (panel) {\n panel.decreaseIndex(panelsRemoved.length);\n panel.updatePosition();\n });\n\n if (item.hasDOMInElements) {\n _this._removePanelElements(panelsRemoved);\n } // Remove panel elements\n\n\n panelsRemoved.forEach(function (panel) {\n return panel.destroy();\n });\n\n if (includes(panelsRemoved, activePanel)) {\n control.resetActive();\n }\n\n return __spread(removed, panelsRemoved);\n }, []);\n return allPanelsRemoved;\n };\n /**\r\n * @internal\r\n */\n\n\n __proto.updateAfterPanelChange = function (panelsAdded, panelsRemoved) {\n var _a;\n\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera,\n control = flicking.control;\n var panels = this._panels;\n var activePanel = control.activePanel; // Update camera & control\n\n this._updateCameraAndControl();\n\n void this.render();\n\n if (!flicking.animating) {\n if (!activePanel || activePanel.removed) {\n if (panels.length <= 0) {\n // All panels removed\n camera.lookAt(0);\n } else {\n var targetIndex = (_a = activePanel === null || activePanel === void 0 ? void 0 : activePanel.index) !== null && _a !== void 0 ? _a : 0;\n\n if (targetIndex > panels.length - 1) {\n targetIndex = panels.length - 1;\n }\n\n void control.moveToPanel(panels[targetIndex], {\n duration: 0\n }).catch(function () {\n return void 0;\n });\n }\n } else {\n void control.moveToPanel(activePanel, {\n duration: 0\n }).catch(function () {\n return void 0;\n });\n }\n }\n\n flicking.camera.updateOffset();\n\n if (panelsAdded.length > 0 || panelsRemoved.length > 0) {\n flicking.trigger(new ComponentEvent(EVENTS.PANEL_CHANGE, {\n added: panelsAdded,\n removed: panelsRemoved\n }));\n this.checkPanelContentsReady(__spread(panelsAdded, panelsRemoved));\n }\n };\n /**\r\n * @internal\r\n */\n\n\n __proto.checkPanelContentsReady = function (checkingPanels) {\n var _this = this;\n\n var flicking = getFlickingAttached(this._flicking);\n var resizeOnContentsReady = flicking.resizeOnContentsReady;\n var panels = this._panels;\n if (!resizeOnContentsReady || flicking.virtualEnabled) return;\n\n var hasContents = function (panel) {\n return panel.element && !!panel.element.querySelector(\"img, video\");\n };\n\n checkingPanels = checkingPanels.filter(function (panel) {\n return hasContents(panel);\n });\n if (checkingPanels.length <= 0) return;\n var contentsReadyChecker = new ImReady();\n checkingPanels.forEach(function (panel) {\n panel.loading = true;\n });\n contentsReadyChecker.on(\"readyElement\", function (e) {\n if (!_this._flicking) {\n // Renderer's destroy() is called before\n contentsReadyChecker.destroy();\n return;\n }\n\n var panel = checkingPanels[e.index];\n var camera = flicking.camera;\n var control = flicking.control;\n var prevProgressInPanel = control.activePanel ? camera.getProgressInPanel(control.activePanel) : 0;\n panel.loading = false;\n panel.resize();\n panels.slice(panel.index + 1).forEach(function (panelBehind) {\n return panelBehind.updatePosition();\n });\n if (!flicking.initialized) return;\n camera.updateRange();\n camera.updateOffset();\n camera.updateAnchors();\n if (control.animating) ;else {\n control.updatePosition(prevProgressInPanel);\n control.updateInput();\n }\n });\n contentsReadyChecker.on(\"preReady\", function (e) {\n if (_this._flicking) {\n void _this.render();\n }\n\n if (e.readyCount === e.totalCount) {\n contentsReadyChecker.destroy();\n }\n });\n contentsReadyChecker.on(\"ready\", function () {\n if (_this._flicking) {\n void _this.render();\n }\n\n contentsReadyChecker.destroy();\n });\n contentsReadyChecker.check(checkingPanels.map(function (panel) {\n return panel.element;\n }));\n };\n\n __proto._updateCameraAndControl = function () {\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera,\n control = flicking.control;\n camera.updateRange();\n camera.updateOffset();\n camera.updateAnchors();\n camera.resetNeedPanelHistory();\n control.updateInput();\n };\n\n __proto._showOnlyVisiblePanels = function (flicking) {\n var panels = flicking.renderer.panels;\n var camera = flicking.camera;\n var visibleIndexes = camera.visiblePanels.reduce(function (visibles, panel) {\n visibles[panel.index] = true;\n return visibles;\n }, {});\n panels.forEach(function (panel) {\n if (panel.index in visibleIndexes || panel.loading) {\n panel.markForShow();\n } else if (!flicking.holding) {\n // During the input sequence,\n // Do not remove panel elements as it won't trigger touchend event.\n panel.markForHide();\n }\n });\n };\n\n __proto._updatePanelSizeByGrid = function (referencePanel, panels) {\n var flicking = getFlickingAttached(this._flicking);\n var panelsPerView = flicking.panelsPerView;\n\n if (panelsPerView <= 0) {\n throw new FlickingError(MESSAGE.WRONG_OPTION(\"panelsPerView\", panelsPerView), CODE.WRONG_OPTION);\n }\n\n if (panels.length <= 0) return;\n var viewportSize = flicking.camera.size;\n var gap = referencePanel.margin.prev + referencePanel.margin.next;\n var panelSize = (viewportSize - gap * (panelsPerView - 1)) / panelsPerView;\n var panelSizeObj = flicking.horizontal ? {\n width: panelSize\n } : {\n height: panelSize\n };\n\n var firstPanelSizeObj = __assign({\n size: panelSize,\n margin: referencePanel.margin\n }, !flicking.horizontal && {\n height: referencePanel.height\n });\n\n if (!flicking.noPanelStyleOverride) {\n this._strategy.updatePanelSizes(flicking, panelSizeObj);\n }\n\n flicking.panels.forEach(function (panel) {\n return panel.resize(firstPanelSizeObj);\n });\n };\n\n __proto._removeAllChildsFromCamera = function () {\n var flicking = getFlickingAttached(this._flicking);\n var cameraElement = flicking.camera.element; // Remove other elements\n\n while (cameraElement.firstChild) {\n cameraElement.removeChild(cameraElement.firstChild);\n }\n };\n\n __proto._insertPanelElements = function (panels, nextSibling) {\n if (nextSibling === void 0) {\n nextSibling = null;\n }\n\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n var cameraElement = camera.element;\n var nextSiblingElement = (nextSibling === null || nextSibling === void 0 ? void 0 : nextSibling.element) || null;\n var fragment = document.createDocumentFragment();\n panels.forEach(function (panel) {\n return fragment.appendChild(panel.element);\n });\n cameraElement.insertBefore(fragment, nextSiblingElement);\n };\n\n __proto._removePanelElements = function (panels) {\n var flicking = getFlickingAttached(this._flicking);\n var cameraElement = flicking.camera.element;\n panels.forEach(function (panel) {\n cameraElement.removeChild(panel.element);\n });\n };\n\n __proto._afterRender = function () {\n var flicking = getFlickingAttached(this._flicking);\n flicking.camera.applyTransform();\n };\n\n return Renderer;\n}();\n/**\r\n *\r\n */\n\n\nvar VanillaRenderer = /*#__PURE__*/function (_super) {\n __extends(VanillaRenderer, _super);\n\n function VanillaRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n } // eslint-disable-next-line @typescript-eslint/require-await\n\n\n var __proto = VanillaRenderer.prototype;\n\n __proto.render = function () {\n return __awaiter(this, void 0, void 0, function () {\n var flicking, strategy;\n return __generator(this, function (_a) {\n flicking = getFlickingAttached(this._flicking);\n strategy = this._strategy;\n strategy.updateRenderingPanels(flicking);\n strategy.renderPanels(flicking);\n\n this._resetPanelElementOrder();\n\n this._afterRender();\n\n return [2\n /*return*/\n ];\n });\n });\n };\n\n __proto._collectPanels = function () {\n var flicking = getFlickingAttached(this._flicking);\n var camera = flicking.camera;\n\n this._removeAllTextNodes();\n\n this._panels = this._strategy.collectPanels(flicking, camera.children);\n };\n\n __proto._createPanel = function (el, options) {\n return this._strategy.createPanel(el, options);\n };\n\n __proto._resetPanelElementOrder = function () {\n var flicking = getFlickingAttached(this._flicking);\n var cameraEl = flicking.camera.element; // We're using reversed panels here as last panel should be the last element of camera element\n\n var reversedElements = this._strategy.getRenderingElementsByOrder(flicking).reverse();\n\n reversedElements.forEach(function (el, idx) {\n var nextEl = reversedElements[idx - 1] ? reversedElements[idx - 1] : null;\n\n if (el.nextElementSibling !== nextEl) {\n cameraEl.insertBefore(el, nextEl);\n }\n });\n };\n\n __proto._removeAllTextNodes = function () {\n var flicking = getFlickingAttached(this._flicking);\n var cameraElement = flicking.camera.element; // Remove all text nodes in the camera element\n\n toArray(cameraElement.childNodes).forEach(function (node) {\n if (node.nodeType === Node.TEXT_NODE) {\n cameraElement.removeChild(node);\n }\n });\n };\n\n return VanillaRenderer;\n}(Renderer);\n/**\r\n * @internal\r\n */\n\n\nvar ExternalRenderer = /*#__PURE__*/function (_super) {\n __extends(ExternalRenderer, _super);\n\n function ExternalRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n\n var __proto = ExternalRenderer.prototype;\n\n __proto._removePanelElements = function (panels) {// DO NOTHING, overrided to prevent an unexpected error\n };\n\n __proto._removeAllChildsFromCamera = function () {// DO NOTHING, overrided to prevent an unexpected error\n };\n\n return ExternalRenderer;\n}(Renderer);\n/**\r\n * A slide data component that holds information of a single HTMLElement\r\n * @ko 슬라이드 데이터 컴포넌트로, 단일 HTMLElement의 정보를 갖고 있습니다\r\n */\n\n\nvar Panel = /*#__PURE__*/function () {\n /**\r\n * @param {object} options An options object옵션 오브젝트\r\n * @param {number} [options.index] An initial index of the panel패널의 초기 인덱스\r\n * @param {Constants.ALIGN | string | number} [options.align] An initial {@link Flicking#align align} value of the panel패널의 초기 {@link Flicking#align align}값\r\n * @param {Flicking} [options.flicking] A Flicking instance panel's referencing패널이 참조하는 {@link Flicking} 인스턴스\r\n * @param {Flicking} [options.elementProvider] A provider instance that redirects elements실제 엘리먼트를 반환하는 엘리먼트 공급자의 인스턴스\r\n */\n function Panel(_a) {\n var index = _a.index,\n align = _a.align,\n flicking = _a.flicking,\n elementProvider = _a.elementProvider;\n this._index = index;\n this._flicking = flicking;\n this._elProvider = elementProvider;\n this._align = align;\n this._removed = false;\n this._rendered = true;\n this._loading = false;\n\n this._resetInternalStates();\n }\n\n var __proto = Panel.prototype;\n Object.defineProperty(__proto, \"element\", {\n // Internal States Getter\n\n /**\r\n * `HTMLElement` that panel's referencing\r\n * @ko 패널이 참조하고 있는 `HTMLElement`\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\n get: function () {\n return this._elProvider.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"elementProvider\", {\n /**\r\n * @internal\r\n * @readonly\r\n */\n get: function () {\n return this._elProvider;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"index\", {\n /**\r\n * Index of the panel\r\n * @ko 패널의 인덱스\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._index;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"position\", {\n /**\r\n * Position of the panel, including {@link Panel#alignPosition alignPosition}\r\n * @ko 패널의 현재 좌표, {@link Panel#alignPosition alignPosition}을 포함하고 있습니다\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._pos + this._alignPos;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"size\", {\n /**\r\n * Cached size of the panel element\r\n * This is equal to {@link Panel#element element}'s `offsetWidth` if {@link Flicking#horizontal horizontal} is `true`, and `offsetHeight` else\r\n * @ko 패널 엘리먼트의 캐시된 크기\r\n * 이 값은 {@link Flicking#horizontal horizontal}이 `true`일 경우 {@link Panel#element element}의 `offsetWidth`와 동일하고, `false`일 경우 `offsetHeight`와 동일합니다\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._size;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"sizeIncludingMargin\", {\n /**\r\n * Panel's size including CSS `margin`\r\n * This value includes {@link Panel#element element}'s margin left/right if {@link Flicking#horizontal horizontal} is `true`, and margin top/bottom else\r\n * @ko CSS `margin`을 포함한 패널의 크기\r\n * 이 값은 {@link Flicking#horizontal horizontal}이 `true`일 경우 margin left/right을 포함하고, `false`일 경우 margin top/bottom을 포함합니다\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._size + this._margin.prev + this._margin.next;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"height\", {\n /**\r\n * Height of the panel element\r\n * @ko 패널 엘리먼트의 높이\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._height;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"margin\", {\n /**\r\n * Cached CSS `margin` value of the panel element\r\n * @ko 패널 엘리먼트의 CSS `margin` 값\r\n * @type {object}\r\n * @property {number} prev CSS `margin-left` when the {@link Flicking#horizontal horizontal} is `true`, and `margin-top` else\r\n * {@link Flicking#horizontal horizontal}이 `true`일 경우 `margin-left`, `false`일 경우 `margin-top`에 해당하는 값\r\n * @property {number} next CSS `margin-right` when the {@link Flicking#horizontal horizontal} is `true`, and `margin-bottom` else\r\n * {@link Flicking#horizontal horizontal}이 `true`일 경우 `margin-right`, `false`일 경우 `margin-bottom`에 해당하는 값\r\n * @readonly\r\n */\n get: function () {\n return this._margin;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"alignPosition\", {\n /**\r\n * Align position inside the panel where {@link Camera}'s {@link Camera#alignPosition alignPosition} inside viewport should be located at\r\n * @ko 패널의 정렬 기준 위치. {@link Camera}의 뷰포트 내에서의 {@link Camera#alignPosition alignPosition}이 위치해야 하는 곳입니다\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._alignPos;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"removed\", {\n /**\r\n * A value indicating whether the panel's {@link Flicking#remove remove}d\r\n * @ko 패널이 {@link Flicking#remove remove}되었는지 여부를 나타내는 값\r\n * @type {boolean}\r\n * @readonly\r\n */\n get: function () {\n return this._removed;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"rendered\", {\n /**\r\n * A value indicating whether the panel's element is being rendered on the screen\r\n * @ko 패널의 엘리먼트가 화면상에 렌더링되고있는지 여부를 나타내는 값\r\n * @type {boolean}\r\n * @readonly\r\n */\n get: function () {\n return this._rendered;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"loading\", {\n /**\r\n * A value indicating whether the panel's image/video is not loaded and waiting for resize\r\n * @ko 패널 내부의 이미지/비디오가 아직 로드되지 않아 {@link Panel#resize resize}될 것인지를 나타내는 값\r\n * @type {boolean}\r\n * @readonly\r\n */\n get: function () {\n return this._loading;\n },\n set: function (val) {\n this._loading = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"range\", {\n /**\r\n * Panel element's range of the bounding box\r\n * @ko 패널 엘리먼트의 Bounding box 범위\r\n * @type {object}\r\n * @property {number} [min] Bounding box's left({@link Flicking#horizontal horizontal}: true) / top({@link Flicking#horizontal horizontal}: false)\r\n * @property {number} [max] Bounding box's right({@link Flicking#horizontal horizontal}: true) / bottom({@link Flicking#horizontal horizontal}: false)\r\n * @readonly\r\n */\n get: function () {\n return {\n min: this._pos,\n max: this._pos + this._size\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"toggled\", {\n /**\r\n * A value indicating whether the panel's position is toggled by circular behavior\r\n * @ko 패널의 위치가 circular 동작에 의해 토글되었는지 여부를 나타내는 값\r\n * @type {boolean}\r\n * @readonly\r\n */\n get: function () {\n return this._toggled;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"toggleDirection\", {\n /**\r\n * A direction where the panel's position is toggled\r\n * @ko 패널의 위치가 circular 동작에 의해 토글되는 방향\r\n * @type {DIRECTION}\r\n * @readonly\r\n */\n get: function () {\n return this._toggleDirection;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"offset\", {\n /**\r\n * Actual position offset determined by {@link Panel#order}\r\n * @ko {@link Panel#order}에 의한 실제 위치 변경값\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n var toggleDirection = this._toggleDirection;\n var cameraRangeDiff = this._flicking.camera.rangeDiff;\n return toggleDirection === DIRECTION.NONE || !this._toggled ? 0 : toggleDirection === DIRECTION.PREV ? -cameraRangeDiff : cameraRangeDiff;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"progress\", {\n /**\r\n * Progress of movement between previous or next panel relative to current panel\r\n * @ko 이 패널로부터 이전/다음 패널으로의 이동 진행률\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n var flicking = this._flicking;\n return this.index - flicking.camera.progress;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"outsetProgress\", {\n /**\r\n * Progress of movement between points that panel is completely invisible outside of viewport(prev direction: -1, selected point: 0, next direction: 1)\r\n * @ko 현재 패널이 뷰포트 영역 밖으로 완전히 사라지는 지점을 기준으로 하는 진행도(prev방향: -1, 선택 지점: 0, next방향: 1)\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n var position = this.position + this.offset;\n var alignPosition = this._alignPos;\n var camera = this._flicking.camera;\n var camPos = camera.position;\n\n if (camPos === position) {\n return 0;\n }\n\n if (camPos < position) {\n var disappearPosNext = position + (camera.size - camera.alignPosition) + alignPosition;\n return -getProgress(camPos, position, disappearPosNext);\n } else {\n var disappearPosPrev = position - (camera.alignPosition + this._size - alignPosition);\n return 1 - getProgress(camPos, disappearPosPrev, position);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"visibleRatio\", {\n /**\r\n * Percentage of area where panel is visible in the viewport\r\n * @ko 뷰포트 안에서 패널이 보이는 영역의 비율\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n var range = this.range;\n var size = this._size;\n var offset = this.offset;\n var visibleRange = this._flicking.camera.visibleRange;\n var checkingRange = {\n min: range.min + offset,\n max: range.max + offset\n };\n\n if (checkingRange.max <= visibleRange.min || checkingRange.min >= visibleRange.max) {\n return 0;\n }\n\n var visibleSize = size;\n\n if (visibleRange.min > checkingRange.min) {\n visibleSize -= visibleRange.min - checkingRange.min;\n }\n\n if (visibleRange.max < checkingRange.max) {\n visibleSize -= checkingRange.max - visibleRange.max;\n }\n\n return visibleSize / size;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"align\", {\n // Options Getter\n\n /**\r\n * A value indicating where the {@link Panel#alignPosition alignPosition} should be located at inside the panel element\r\n * @ko {@link Panel#alignPosition alignPosition}이 패널 내의 어디에 위치해야 하는지를 나타내는 값\r\n * @type {Constants.ALIGN | string | number}\r\n */\n get: function () {\n return this._align;\n },\n // Options Setter\n set: function (val) {\n this._align = val;\n\n this._updateAlignPos();\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Mark panel element to be appended on the camera element\r\n * @internal\r\n */\n\n __proto.markForShow = function () {\n this._rendered = true;\n\n this._elProvider.show(this._flicking);\n };\n /**\r\n * Mark panel element to be removed from the camera element\r\n * @internal\r\n */\n\n\n __proto.markForHide = function () {\n this._rendered = false;\n\n this._elProvider.hide(this._flicking);\n };\n /**\r\n * Update size of the panel\r\n * @ko 패널의 크기를 갱신합니다\r\n * @param {object} cached Predefined cached size of the panel사전에 캐시된 패널의 크기 정보\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.resize = function (cached) {\n var _a;\n\n var el = this.element;\n var flicking = this._flicking;\n var horizontal = flicking.horizontal,\n useFractionalSize = flicking.useFractionalSize;\n\n if (cached) {\n this._size = cached.size;\n this._margin = __assign({}, cached.margin);\n this._height = (_a = cached.height) !== null && _a !== void 0 ? _a : getElementSize({\n el: el,\n horizontal: false,\n useFractionalSize: useFractionalSize,\n useOffset: true,\n style: getStyle(el)\n });\n } else {\n var elStyle = getStyle(el);\n this._size = getElementSize({\n el: el,\n horizontal: horizontal,\n useFractionalSize: useFractionalSize,\n useOffset: true,\n style: elStyle\n });\n this._margin = horizontal ? {\n prev: parseFloat(elStyle.marginLeft || \"0\"),\n next: parseFloat(elStyle.marginRight || \"0\")\n } : {\n prev: parseFloat(elStyle.marginTop || \"0\"),\n next: parseFloat(elStyle.marginBottom || \"0\")\n };\n this._height = horizontal ? getElementSize({\n el: el,\n horizontal: false,\n useFractionalSize: useFractionalSize,\n useOffset: true,\n style: elStyle\n }) : this._size;\n }\n\n this.updatePosition();\n\n this._updateAlignPos();\n\n return this;\n };\n /**\r\n * Change panel's size. This will change the actual size of the panel element by changing its CSS width/height property\r\n * @ko 패널 크기를 변경합니다. 패널 엘리먼트에 해당 크기의 CSS width/height를 적용합니다\r\n * @param {object} [size] New panel size새 패널 크기\r\n * @param {number|string} [size.width] CSS string or number(in px)CSS 문자열 또는 숫자(px)\r\n * @param {number|string} [size.height] CSS string or number(in px)CSS 문자열 또는 숫자(px)\r\n * @chainable\r\n * @return {this}\r\n */\n\n\n __proto.setSize = function (size) {\n setSize(this.element, size);\n return this;\n };\n /**\r\n * Check whether the given element is inside of this panel's {@link Panel#element element}\r\n * @ko 해당 엘리먼트가 이 패널의 {@link Panel#element element} 내에 포함되어 있는지를 반환합니다\r\n * @param {HTMLElement} element The HTMLElement to check확인하고자 하는 HTMLElement\r\n * @return {boolean} A Boolean value indicating the element is inside of this panel {@link Panel#element element}패널의 {@link Panel#element element}내에 해당 엘리먼트 포함 여부\r\n */\n\n\n __proto.contains = function (element) {\n var _a;\n\n return !!((_a = this.element) === null || _a === void 0 ? void 0 : _a.contains(element));\n };\n /**\r\n * Reset internal state and set {@link Panel#removed removed} to `true`\r\n * @ko 내부 상태를 초기화하고 {@link Panel#removed removed}를 `true`로 설정합니다.\r\n * @return {void}\r\n */\n\n\n __proto.destroy = function () {\n this._resetInternalStates();\n\n this._removed = true;\n };\n /**\r\n * Check whether the given position is inside of this panel's {@link Panel#range range}\r\n * @ko 주어진 좌표가 현재 패널의 {@link Panel#range range}내에 속해있는지를 반환합니다.\r\n * @param {number} pos A position to check확인하고자 하는 좌표\r\n * @param {boolean} [includeMargin=false] Include {@link Panel#margin margin} to the range패널 영역에 {@link Panel#margin margin}값을 포함시킵니다\r\n * @return {boolean} A Boolean value indicating whether the given position is included in the panel range해당 좌표가 패널 영역 내에 속해있는지 여부\r\n */\n\n\n __proto.includePosition = function (pos, includeMargin) {\n if (includeMargin === void 0) {\n includeMargin = false;\n }\n\n return this.includeRange(pos, pos, includeMargin);\n };\n /**\r\n * Check whether the given range is fully included in this panel's area (inclusive)\r\n * @ko 주어진 범위가 이 패널 내부에 완전히 포함되는지를 반환합니다\r\n * @param {number} min Minimum value of the range to check확인하고자 하는 최소 범위\r\n * @param {number} max Maximum value of the range to check확인하고자 하는 최대 범위\r\n * @param {boolean} [includeMargin=false] Include {@link Panel#margin margin} to the range패널 영역에 {@link Panel#margin margin}값을 포함시킵니다\r\n * @returns {boolean} A Boolean value indicating whether the given range is fully included in the panel range해당 범위가 패널 영역 내에 완전히 속해있는지 여부\r\n */\n\n\n __proto.includeRange = function (min, max, includeMargin) {\n if (includeMargin === void 0) {\n includeMargin = false;\n }\n\n var margin = this._margin;\n var panelRange = this.range;\n\n if (includeMargin) {\n panelRange.min -= margin.prev;\n panelRange.max += margin.next;\n }\n\n return max >= panelRange.min && min <= panelRange.max;\n };\n /**\r\n * Check whether the panel is visble in the given range (exclusive)\r\n * @ko 주어진 범위 내에서 이 패널의 일부가 보여지는지를 반환합니다\r\n * @param {number} min Minimum value of the range to check확인하고자 하는 최소 범위\r\n * @param {number} max Maximum value of the range to check확인하고자 하는 최대 범위\r\n * @returns {boolean} A Boolean value indicating whether the panel is visible해당 범위 내에서 패널을 볼 수 있는지 여부\r\n */\n\n\n __proto.isVisibleOnRange = function (min, max) {\n var panelRange = this.range;\n return max > panelRange.min && min < panelRange.max;\n };\n /**\r\n * Move {@link Camera} to this panel\r\n * @ko {@link Camera}를 이 패널로 이동합니다\r\n * @param {number} [duration] Duration of the animation (unit: ms)애니메이션 진행 시간 (단위: ms)\r\n * @returns {Promise} A Promise which will be resolved after reaching the panel패널 도달시에 resolve되는 Promise\r\n */\n\n\n __proto.focus = function (duration) {\n return this._flicking.moveTo(this._index, duration);\n };\n /**\r\n * Get previous(`index - 1`) panel. When the previous panel does not exist, this will return `null` instead\r\n * If the {@link Flicking#circularEnabled circular} is enabled, this will return the last panel if called from the first panel\r\n * @ko 이전(`index - 1`) 패널을 반환합니다. 이전 패널이 없을 경우 `null`을 반환합니다\r\n * {@link Flicking#circularEnabled circular} 모드가 활성화되었을 때 첫번째 패널에서 이 메소드를 호출할 경우 마지막 패널을 반환합니다\r\n * @returns {Panel | null} The previous panel이전 패널\r\n */\n\n\n __proto.prev = function () {\n var index = this._index;\n var flicking = this._flicking;\n var renderer = flicking.renderer;\n var panelCount = renderer.panelCount;\n if (panelCount === 1) return null;\n return flicking.circularEnabled ? renderer.getPanel(index === 0 ? panelCount - 1 : index - 1) : renderer.getPanel(index - 1);\n };\n /**\r\n * Get next(`index + 1`) panel. When the next panel does not exist, this will return `null` instead\r\n * If the {@link Flicking#circularEnabled circular} is enabled, this will return the first panel if called from the last panel\r\n * @ko 다음(`index + 1`) 패널을 반환합니다. 다음 패널이 없을 경우 `null`을 반환합니다\r\n * {@link Flicking#circularEnabled circular} 모드가 활성화되었을 때 마지막 패널에서 이 메소드를 호출할 경우 첫번째 패널을 반환합니다\r\n * @returns {Panel | null} The previous panel다음 패널\r\n */\n\n\n __proto.next = function () {\n var index = this._index;\n var flicking = this._flicking;\n var renderer = flicking.renderer;\n var panelCount = renderer.panelCount;\n if (panelCount === 1) return null;\n return flicking.circularEnabled ? renderer.getPanel(index === panelCount - 1 ? 0 : index + 1) : renderer.getPanel(index + 1);\n };\n /**\r\n * Increase panel's index by the given value\r\n * @ko 패널의 인덱스를 주어진 값만큼 증가시킵니다\r\n * @internal\r\n * @chainable\r\n * @param val An integer greater than or equal to 00보다 같거나 큰 정수\r\n * @returns {this}\r\n */\n\n\n __proto.increaseIndex = function (val) {\n this._index += Math.max(val, 0);\n return this;\n };\n /**\r\n * Decrease panel's index by the given value\r\n * @ko 패널의 인덱스를 주어진 값만큼 감소시킵니다\r\n * @internal\r\n * @chainable\r\n * @param val An integer greater than or equal to 00보다 같거나 큰 정수\r\n * @returns {this}\r\n */\n\n\n __proto.decreaseIndex = function (val) {\n this._index -= Math.max(val, 0);\n return this;\n };\n /**\r\n * @internal\r\n */\n\n\n __proto.updatePosition = function () {\n var prevPanel = this._flicking.renderer.panels[this._index - 1];\n this._pos = prevPanel ? prevPanel.range.max + prevPanel.margin.next + this._margin.prev : this._margin.prev;\n return this;\n };\n /**\r\n * @internal\r\n * @return {boolean} toggled\r\n */\n\n\n __proto.toggle = function (prevPos, newPos) {\n var toggleDirection = this._toggleDirection;\n var togglePosition = this._togglePosition;\n if (toggleDirection === DIRECTION.NONE || newPos === prevPos) return false;\n var prevToggled = this._toggled;\n\n if (newPos > prevPos) {\n if (togglePosition >= prevPos && togglePosition <= newPos) {\n this._toggled = toggleDirection === DIRECTION.NEXT;\n }\n } else {\n if (togglePosition <= prevPos && togglePosition >= newPos) {\n this._toggled = toggleDirection !== DIRECTION.NEXT;\n }\n }\n\n return prevToggled !== this._toggled;\n };\n /**\r\n * @internal\r\n */\n\n\n __proto.updateCircularToggleDirection = function () {\n var flicking = this._flicking;\n\n if (!flicking.circularEnabled) {\n this._toggleDirection = DIRECTION.NONE;\n this._togglePosition = 0;\n this._toggled = false;\n return this;\n }\n\n var camera = flicking.camera;\n var camRange = camera.range;\n var camAlignPosition = camera.alignPosition;\n var camVisibleRange = camera.visibleRange;\n var camVisibleSize = camVisibleRange.max - camVisibleRange.min;\n var minimumVisible = camRange.min - camAlignPosition;\n var maximumVisible = camRange.max - camAlignPosition + camVisibleSize;\n var shouldBeVisibleAtMin = this.includeRange(maximumVisible - camVisibleSize, maximumVisible, false);\n var shouldBeVisibleAtMax = this.includeRange(minimumVisible, minimumVisible + camVisibleSize, false);\n this._toggled = false;\n\n if (shouldBeVisibleAtMin) {\n this._toggleDirection = DIRECTION.PREV;\n this._togglePosition = this.range.max + camRange.min - camRange.max + camAlignPosition;\n this.toggle(Infinity, camera.position);\n } else if (shouldBeVisibleAtMax) {\n this._toggleDirection = DIRECTION.NEXT;\n this._togglePosition = this.range.min + camRange.max - camVisibleSize + camAlignPosition;\n this.toggle(-Infinity, camera.position);\n } else {\n this._toggleDirection = DIRECTION.NONE;\n this._togglePosition = 0;\n }\n\n return this;\n };\n\n __proto._updateAlignPos = function () {\n this._alignPos = parseAlign$1(this._align, this._size);\n };\n\n __proto._resetInternalStates = function () {\n this._size = 0;\n this._pos = 0;\n this._margin = {\n prev: 0,\n next: 0\n };\n this._height = 0;\n this._alignPos = 0;\n this._toggled = false;\n this._togglePosition = 0;\n this._toggleDirection = DIRECTION.NONE;\n };\n\n return Panel;\n}();\n\nvar NormalRenderingStrategy = /*#__PURE__*/function () {\n function NormalRenderingStrategy(_a) {\n var providerCtor = _a.providerCtor;\n this._providerCtor = providerCtor;\n }\n\n var __proto = NormalRenderingStrategy.prototype;\n\n __proto.renderPanels = function () {// DO_NOTHING\n };\n\n __proto.getRenderingIndexesByOrder = function (flicking) {\n var renderedPanels = flicking.renderer.panels.filter(function (panel) {\n return panel.rendered;\n });\n var toggledPrev = renderedPanels.filter(function (panel) {\n return panel.toggled && panel.toggleDirection === DIRECTION.PREV;\n });\n var toggledNext = renderedPanels.filter(function (panel) {\n return panel.toggled && panel.toggleDirection === DIRECTION.NEXT;\n });\n var notToggled = renderedPanels.filter(function (panel) {\n return !panel.toggled;\n });\n return __spread(toggledPrev, notToggled, toggledNext).map(function (panel) {\n return panel.index;\n });\n };\n\n __proto.getRenderingElementsByOrder = function (flicking) {\n var panels = flicking.panels;\n return this.getRenderingIndexesByOrder(flicking).map(function (index) {\n return panels[index].element;\n });\n };\n\n __proto.updateRenderingPanels = function (flicking) {\n if (flicking.renderOnlyVisible) {\n this._showOnlyVisiblePanels(flicking);\n } else {\n flicking.panels.forEach(function (panel) {\n return panel.markForShow();\n });\n }\n };\n\n __proto.collectPanels = function (flicking, elements) {\n var _this = this;\n\n var align = parsePanelAlign(flicking.renderer.align);\n return elements.map(function (el, index) {\n return new Panel({\n index: index,\n elementProvider: new _this._providerCtor(el),\n align: align,\n flicking: flicking\n });\n });\n };\n\n __proto.createPanel = function (element, options) {\n return new Panel(__assign(__assign({}, options), {\n elementProvider: new this._providerCtor(element)\n }));\n };\n\n __proto.updatePanelSizes = function (flicking, size) {\n flicking.panels.forEach(function (panel) {\n return panel.setSize(size);\n });\n };\n\n __proto._showOnlyVisiblePanels = function (flicking) {\n var panels = flicking.renderer.panels;\n var camera = flicking.camera;\n var visibleIndexes = camera.visiblePanels.reduce(function (visibles, panel) {\n visibles[panel.index] = true;\n return visibles;\n }, {});\n panels.forEach(function (panel) {\n if (panel.index in visibleIndexes || panel.loading) {\n panel.markForShow();\n } else if (!flicking.holding) {\n // During the input sequence,\n // Do not remove panel elements as it won't trigger touchend event.\n panel.markForHide();\n }\n });\n camera.updateOffset();\n };\n\n return NormalRenderingStrategy;\n}();\n/**\r\n * An slide data component that holds information of a single HTMLElement\r\n * @ko 슬라이드 데이터 컴포넌트로, 단일 HTMLElement의 정보를 갖고 있습니다\r\n */\n\n\nvar VirtualPanel = /*#__PURE__*/function (_super) {\n __extends(VirtualPanel, _super);\n /**\r\n * @param {object} options An options object옵션 오브젝트\r\n * @param {number} [options.index] An initial index of the panel패널의 초기 인덱스\r\n * @param {Constants.ALIGN | string | number} [options.align] An initial {@link Flicking#align align} value of the panel패널의 초기 {@link Flicking#align align}값\r\n * @param {Flicking} [options.flicking] A Flicking instance panel's referencing패널이 참조하는 {@link Flicking} 인스턴스\r\n */\n\n\n function VirtualPanel(options) {\n var _this = _super.call(this, options) || this;\n\n options.elementProvider.init(_this);\n _this._elProvider = options.elementProvider;\n _this._cachedInnerHTML = null;\n return _this;\n }\n\n var __proto = VirtualPanel.prototype;\n Object.defineProperty(__proto, \"element\", {\n /**\r\n * `HTMLElement` that panel's referencing\r\n * @ko 패널이 참조하고 있는 `HTMLElement`\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\n get: function () {\n return this._elProvider.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"cachedInnerHTML\", {\n /**\r\n * Cached innerHTML by the previous render function\r\n * @ko 이전 렌더링에서 캐시된 innerHTML 정보\r\n * @type {string|null}\r\n * @readonly\r\n */\n get: function () {\n return this._cachedInnerHTML;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"elementIndex\", {\n /**\r\n * An number for indexing which element it will be rendered on\r\n * @ko 몇 번째 엘리먼트에 렌더링될 것인지를 나타내는 숫자\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n var flicking = this._flicking;\n var virtualElCount = flicking.panelsPerView + 1;\n var panelCount = flicking.panelCount;\n var index = this._index;\n\n if (this._toggled) {\n // To prevent element duplication\n index = this._toggleDirection === DIRECTION.NEXT ? index + panelCount : index - panelCount;\n }\n\n return circulateIndex(index, virtualElCount);\n },\n enumerable: false,\n configurable: true\n });\n\n __proto.cacheRenderResult = function (result) {\n this._cachedInnerHTML = result;\n };\n\n __proto.uncacheRenderResult = function () {\n this._cachedInnerHTML = null;\n };\n\n __proto.render = function () {\n var flicking = this._flicking;\n var _a = flicking.virtual,\n renderPanel = _a.renderPanel,\n cache = _a.cache;\n var element = this._elProvider.element;\n var newInnerHTML = this._cachedInnerHTML || renderPanel(this, this._index);\n if (newInnerHTML === element.innerHTML) return;\n element.innerHTML = newInnerHTML;\n\n if (cache) {\n this.cacheRenderResult(newInnerHTML);\n }\n };\n\n __proto.increaseIndex = function (val) {\n this.uncacheRenderResult();\n return _super.prototype.increaseIndex.call(this, val);\n };\n\n __proto.decreaseIndex = function (val) {\n this.uncacheRenderResult();\n return _super.prototype.decreaseIndex.call(this, val);\n };\n\n return VirtualPanel;\n}(Panel);\n\nvar VirtualRenderingStrategy = /*#__PURE__*/function () {\n function VirtualRenderingStrategy() {}\n\n var __proto = VirtualRenderingStrategy.prototype;\n\n __proto.renderPanels = function (flicking) {\n var virtualManager = flicking.virtual;\n var visiblePanels = flicking.visiblePanels;\n var invisibleIndexes = range(flicking.panelsPerView + 1);\n visiblePanels.forEach(function (panel) {\n var elementIndex = panel.elementIndex;\n panel.render();\n virtualManager.show(elementIndex);\n invisibleIndexes[elementIndex] = -1;\n });\n invisibleIndexes.filter(function (val) {\n return val >= 0;\n }).forEach(function (idx) {\n virtualManager.hide(idx);\n });\n };\n\n __proto.getRenderingIndexesByOrder = function (flicking) {\n var virtualManager = flicking.virtual;\n\n var visiblePanels = __spread(flicking.visiblePanels).filter(function (panel) {\n return panel.rendered;\n }).sort(function (panel1, panel2) {\n return panel1.position + panel1.offset - (panel2.position + panel2.offset);\n });\n\n if (visiblePanels.length <= 0) return virtualManager.elements.map(function (_, idx) {\n return idx;\n });\n var visibleIndexes = visiblePanels.map(function (panel) {\n return panel.elementIndex;\n });\n var invisibleIndexes = virtualManager.elements.map(function (el, idx) {\n return __assign(__assign({}, el), {\n idx: idx\n });\n }).filter(function (el) {\n return !el.visible;\n }).map(function (el) {\n return el.idx;\n });\n return __spread(visibleIndexes, invisibleIndexes);\n };\n\n __proto.getRenderingElementsByOrder = function (flicking) {\n var virtualManager = flicking.virtual;\n var elements = virtualManager.elements;\n return this.getRenderingIndexesByOrder(flicking).map(function (index) {\n return elements[index].nativeElement;\n });\n };\n\n __proto.updateRenderingPanels = function (flicking) {\n var panels = flicking.renderer.panels;\n var camera = flicking.camera;\n var visibleIndexes = camera.visiblePanels.reduce(function (visibles, panel) {\n visibles[panel.index] = true;\n return visibles;\n }, {});\n panels.forEach(function (panel) {\n if (panel.index in visibleIndexes || panel.loading) {\n panel.markForShow();\n } else {\n panel.markForHide();\n }\n });\n camera.updateOffset();\n };\n\n __proto.collectPanels = function (flicking) {\n var align = parsePanelAlign(flicking.renderer.align);\n return range(flicking.virtual.initialPanelCount).map(function (index) {\n return new VirtualPanel({\n index: index,\n elementProvider: new VirtualElementProvider(flicking),\n align: align,\n flicking: flicking\n });\n });\n };\n\n __proto.createPanel = function (_el, options) {\n return new VirtualPanel(__assign(__assign({}, options), {\n elementProvider: new VirtualElementProvider(options.flicking)\n }));\n };\n\n __proto.updatePanelSizes = function (flicking, size) {\n flicking.virtual.elements.forEach(function (el) {\n setSize(el.nativeElement, size);\n });\n flicking.panels.forEach(function (panel) {\n return panel.setSize(size);\n });\n };\n\n return VirtualRenderingStrategy;\n}();\n/**\r\n * @extends Component\r\n * @support {\"ie\": \"9+(with polyfill)\", \"ch\" : \"latest\", \"ff\" : \"latest\", \"sf\" : \"latest\", \"edge\" : \"latest\", \"ios\" : \"7+\", \"an\" : \"4.X+\"}\r\n * @requires {@link https://github.com/naver/egjs-component|@egjs/component}\r\n * @requires {@link https://github.com/naver/egjs-axes|@egjs/axes}\r\n */\n\n\nvar Flicking = /*#__PURE__*/function (_super) {\n __extends(Flicking, _super);\n /**\r\n * @param root A root HTMLElement to initialize Flicking on it. When it's a typeof `string`, it should be a css selector string\r\n * Flicking을 초기화할 HTMLElement로, `string` 타입으로 지정시 css 선택자 문자열을 지정해야 합니다.\r\n * @param {object} [options={}] An options object for Flicking.Flicking에 적용할 옵션 오브젝트\r\n * @throws {FlickingError}\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE WRONG_TYPE}|When the root is not either string or HTMLElement|\r\n * |{@link ERROR_CODE ELEMENT_NOT_FOUND}|When the element with given CSS selector does not exist|\r\n * \r\n *\r\n * |code|조건|\r\n * |---|---|\r\n * |{@link ERROR_CODE WRONG_TYPE}|루트 엘리먼트가 string이나 HTMLElement가 아닐 경우|\r\n * |{@link ERROR_CODE ELEMENT_NOT_FOUND}|주어진 CSS selector로 엘리먼트를 찾지 못했을 경우|\r\n *\r\n * \r\n * @example\r\n * ```ts\r\n * import Flicking from \"@egjs/flicking\";\r\n *\r\n * // Creating new instance of Flicking with HTMLElement\r\n * const flicking = new Flicking(document.querySelector(\".flicking-viewport\"), { circular: true });\r\n *\r\n * // Creating new instance of Flicking with CSS selector\r\n * const flicking2 = new Flicking(\".flicking-viewport\", { circular: true });\r\n * ```\r\n */\n\n\n function Flicking(root, _a) {\n var _b = _a === void 0 ? {} : _a,\n _c = _b.align,\n align = _c === void 0 ? ALIGN.CENTER : _c,\n _d = _b.defaultIndex,\n defaultIndex = _d === void 0 ? 0 : _d,\n _e = _b.horizontal,\n horizontal = _e === void 0 ? true : _e,\n _f = _b.circular,\n circular = _f === void 0 ? false : _f,\n _g = _b.circularFallback,\n circularFallback = _g === void 0 ? CIRCULAR_FALLBACK.LINEAR : _g,\n _h = _b.bound,\n bound = _h === void 0 ? false : _h,\n _j = _b.adaptive,\n adaptive = _j === void 0 ? false : _j,\n _k = _b.panelsPerView,\n panelsPerView = _k === void 0 ? -1 : _k,\n _l = _b.noPanelStyleOverride,\n noPanelStyleOverride = _l === void 0 ? false : _l,\n _m = _b.resizeOnContentsReady,\n resizeOnContentsReady = _m === void 0 ? false : _m,\n _o = _b.nested,\n nested = _o === void 0 ? false : _o,\n _p = _b.needPanelThreshold,\n needPanelThreshold = _p === void 0 ? 0 : _p,\n _q = _b.preventEventsBeforeInit,\n preventEventsBeforeInit = _q === void 0 ? true : _q,\n _r = _b.deceleration,\n deceleration = _r === void 0 ? 0.0075 : _r,\n _s = _b.duration,\n duration = _s === void 0 ? 500 : _s,\n _t = _b.easing,\n easing = _t === void 0 ? function (x) {\n return 1 - Math.pow(1 - x, 3);\n } : _t,\n _u = _b.inputType,\n inputType = _u === void 0 ? [\"mouse\", \"touch\"] : _u,\n _v = _b.moveType,\n moveType = _v === void 0 ? \"snap\" : _v,\n _w = _b.threshold,\n threshold = _w === void 0 ? 40 : _w,\n _x = _b.interruptable,\n interruptable = _x === void 0 ? true : _x,\n _y = _b.bounce,\n bounce = _y === void 0 ? \"20%\" : _y,\n _z = _b.iOSEdgeSwipeThreshold,\n iOSEdgeSwipeThreshold = _z === void 0 ? 30 : _z,\n _0 = _b.preventClickOnDrag,\n preventClickOnDrag = _0 === void 0 ? true : _0,\n _1 = _b.preventDefaultOnDrag,\n preventDefaultOnDrag = _1 === void 0 ? false : _1,\n _2 = _b.disableOnInit,\n disableOnInit = _2 === void 0 ? false : _2,\n _3 = _b.changeOnHold,\n changeOnHold = _3 === void 0 ? false : _3,\n _4 = _b.renderOnlyVisible,\n renderOnlyVisible = _4 === void 0 ? false : _4,\n _5 = _b.virtual,\n virtual = _5 === void 0 ? null : _5,\n _6 = _b.autoInit,\n autoInit = _6 === void 0 ? true : _6,\n _7 = _b.autoResize,\n autoResize = _7 === void 0 ? true : _7,\n _8 = _b.useResizeObserver,\n useResizeObserver = _8 === void 0 ? true : _8,\n _9 = _b.resizeDebounce,\n resizeDebounce = _9 === void 0 ? 0 : _9,\n _10 = _b.maxResizeDebounce,\n maxResizeDebounce = _10 === void 0 ? 100 : _10,\n _11 = _b.useFractionalSize,\n useFractionalSize = _11 === void 0 ? false : _11,\n _12 = _b.externalRenderer,\n externalRenderer = _12 === void 0 ? null : _12,\n _13 = _b.renderExternal,\n renderExternal = _13 === void 0 ? null : _13;\n\n var _this = _super.call(this) || this; // Internal states\n\n\n _this._initialized = false;\n _this._plugins = []; // Bind options\n\n _this._align = align;\n _this._defaultIndex = defaultIndex;\n _this._horizontal = horizontal;\n _this._circular = circular;\n _this._circularFallback = circularFallback;\n _this._bound = bound;\n _this._adaptive = adaptive;\n _this._panelsPerView = panelsPerView;\n _this._noPanelStyleOverride = noPanelStyleOverride;\n _this._resizeOnContentsReady = resizeOnContentsReady;\n _this._nested = nested;\n _this._virtual = virtual;\n _this._needPanelThreshold = needPanelThreshold;\n _this._preventEventsBeforeInit = preventEventsBeforeInit;\n _this._deceleration = deceleration;\n _this._duration = duration;\n _this._easing = easing;\n _this._inputType = inputType;\n _this._moveType = moveType;\n _this._threshold = threshold;\n _this._interruptable = interruptable;\n _this._bounce = bounce;\n _this._iOSEdgeSwipeThreshold = iOSEdgeSwipeThreshold;\n _this._preventClickOnDrag = preventClickOnDrag;\n _this._preventDefaultOnDrag = preventDefaultOnDrag;\n _this._disableOnInit = disableOnInit;\n _this._changeOnHold = changeOnHold;\n _this._renderOnlyVisible = renderOnlyVisible;\n _this._autoInit = autoInit;\n _this._autoResize = autoResize;\n _this._useResizeObserver = useResizeObserver;\n _this._resizeDebounce = resizeDebounce;\n _this._maxResizeDebounce = maxResizeDebounce;\n _this._useFractionalSize = useFractionalSize;\n _this._externalRenderer = externalRenderer;\n _this._renderExternal = renderExternal; // Create core components\n\n _this._viewport = new Viewport(_this, getElement(root));\n _this._autoResizer = new AutoResizer(_this);\n _this._renderer = _this._createRenderer();\n _this._camera = _this._createCamera();\n _this._control = _this._createControl();\n _this._virtualManager = new VirtualManager(_this, virtual);\n\n if (_this._autoInit) {\n void _this.init();\n }\n\n return _this;\n }\n\n var __proto = Flicking.prototype;\n Object.defineProperty(__proto, \"control\", {\n // Components\n\n /**\r\n * {@link Control} instance of the Flicking\r\n * @ko 현재 Flicking에 활성화된 {@link Control} 인스턴스\r\n * @type {Control}\r\n * @default SnapControl\r\n * @readonly\r\n * @see Control\r\n * @see SnapControl\r\n * @see FreeControl\r\n */\n get: function () {\n return this._control;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"camera\", {\n /**\r\n * {@link Camera} instance of the Flicking\r\n * @ko 현재 Flicking에 활성화된 {@link Camera} 인스턴스\r\n * @type {Camera}\r\n * @default LinearCamera\r\n * @readonly\r\n * @see Camera\r\n * @see LinearCamera\r\n * @see BoundCamera\r\n * @see CircularCamera\r\n */\n get: function () {\n return this._camera;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"renderer\", {\n /**\r\n * {@link Renderer} instance of the Flicking\r\n * @ko 현재 Flicking에 활성화된 {@link Renderer} 인스턴스\r\n * @type {Renderer}\r\n * @default VanillaRenderer\r\n * @readonly\r\n * @see Renderer\r\n * @see VanillaRenderer\r\n * @see ExternalRenderer\r\n */\n get: function () {\n return this._renderer;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"viewport\", {\n /**\r\n * A component that manages viewport size\r\n * @ko 뷰포트 크기 정보를 담당하는 컴포넌트\r\n * @type {Viewport}\r\n * @readonly\r\n * @see Viewport\r\n */\n get: function () {\n return this._viewport;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"initialized\", {\n // Internal States\n\n /**\r\n * Whether Flicking's {@link Flicking#init init()} is called.\r\n * This is `true` when {@link Flicking#init init()} is called, and is `false` after calling {@link Flicking#destroy destroy()}.\r\n * @ko Flicking의 {@link Flicking#init init()}이 호출되었는지를 나타내는 멤버 변수.\r\n * 이 값은 {@link Flicking#init init()}이 호출되었으면 `true`로 변하고, {@link Flicking#destroy destroy()}호출 이후에 다시 `false`로 변경됩니다.\r\n * @type {boolean}\r\n * @default false\r\n * @readonly\r\n */\n get: function () {\n return this._initialized;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"circularEnabled\", {\n /**\r\n * Whether the `circular` option is enabled.\r\n * The {@link Flicking#circular circular} option can't be enabled when sum of the panel sizes are too small.\r\n * @ko {@link Flicking#circular circular} 옵션이 활성화되었는지 여부를 나타내는 멤버 변수.\r\n * {@link Flicking#circular circular} 옵션은 패널의 크기의 합이 충분하지 않을 경우 비활성화됩니다.\r\n * @type {boolean}\r\n * @default false\r\n * @readonly\r\n */\n get: function () {\n return this._camera.circularEnabled;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"virtualEnabled\", {\n /**\r\n * Whether the `virtual` option is enabled.\r\n * The {@link Flicking#virtual virtual} option can't be enabled when {@link Flicking#panelsPerView panelsPerView} is less or equal than zero.\r\n * @ko {@link Flicking#virtual virtual} 옵션이 활성화되었는지 여부를 나타내는 멤버 변수.\r\n * {@link Flicking#virtual virtual} 옵션은 {@link Flicking#panelsPerView panelsPerView} 옵션의 값이 0보다 같거나 작으면 비활성화됩니다.\r\n * @type {boolean}\r\n * @default false\r\n * @readonly\r\n */\n get: function () {\n return this._panelsPerView > 0 && this._virtual != null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"index\", {\n /**\r\n * Index number of the {@link Flicking#currentPanel currentPanel}\r\n * @ko {@link Flicking#currentPanel currentPanel}의 인덱스 번호\r\n * @type {number}\r\n * @default 0\r\n * @readonly\r\n */\n get: function () {\n return this._control.activeIndex;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"element\", {\n /**\r\n * The root(`.flicking-viewport`) element\r\n * @ko root(`.flicking-viewport`) 엘리먼트\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\n get: function () {\n return this._viewport.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"currentPanel\", {\n /**\r\n * Currently active panel\r\n * @ko 현재 선택된 패널\r\n * @type {Panel}\r\n * @readonly\r\n * @see Panel\r\n */\n get: function () {\n return this._control.activePanel;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"panels\", {\n /**\r\n * Array of panels\r\n * @ko 전체 패널들의 배열\r\n * @type {Panel[]}\r\n * @readonly\r\n * @see Panel\r\n */\n get: function () {\n return this._renderer.panels;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"panelCount\", {\n /**\r\n * Count of panels\r\n * @ko 전체 패널의 개수\r\n * @type {number}\r\n * @readonly\r\n */\n get: function () {\n return this._renderer.panelCount;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"visiblePanels\", {\n /**\r\n * Array of panels that is visible at the current position\r\n * @ko 현재 보이는 패널의 배열\r\n * @type {Panel[]}\r\n * @readonly\r\n * @see Panel\r\n */\n get: function () {\n return this._camera.visiblePanels;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"animating\", {\n /**\r\n * Whether Flicking's animating\r\n * @ko 현재 애니메이션 동작 여부\r\n * @type {boolean}\r\n * @readonly\r\n */\n get: function () {\n return this._control.animating;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"holding\", {\n /**\r\n * Whether user is clicking or touching\r\n * @ko 현재 사용자가 클릭/터치중인지 여부\r\n * @type {boolean}\r\n * @readonly\r\n */\n get: function () {\n return this._control.holding;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"activePlugins\", {\n /**\r\n * A current list of activated plugins\r\n * @ko 현재 활성화된 플러그인 목록\r\n * @type {Plugin[]}\r\n * @readonly\r\n */\n get: function () {\n return this._plugins;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"align\", {\n // Options Getter\n // UI / LAYOUT\n\n /**\r\n * Align position of the panels within viewport. You can set different values each for the panel and camera\r\n * @ko 뷰포트 내에서 패널 정렬방식을 설정하는 옵션. 카메라와 패널 개별로 옵션을 설정할 수도 있습니다\r\n * @type {ALIGN | string | number | { panel: string | number, camera: string | number }}\r\n * @property {ALIGN | string | number} panel The align value for each {@link Panel}s개개의 {@link Panel}에 적용할 값\r\n * @property {ALIGN | string | number} camera The align value for {@link Camera}{@link Camera}에 적용할 값\r\n * @default \"center\"\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#align align ( Options )}\r\n * @example\r\n * ```ts\r\n * const possibleOptions = [\r\n * // Literal strings\r\n * \"prev\", \"center\", \"next\",\r\n * // % values, applied to both panel & camera\r\n * \"0%\", \"25%\", \"42%\",\r\n * // px values, arithmetic calculation with (+/-) is also allowed.\r\n * \"0px\", \"100px\", \"50% - 25px\",\r\n * // numbers, same to number + px (\"0px\", \"100px\")\r\n * 0, 100, 1000,\r\n * // Setting a different value for panel & camera\r\n * { panel: \"10%\", camera: \"25%\" }\r\n * ];\r\n *\r\n * possibleOptions.forEach(align => {\r\n * new Flicking(\"#el\", { align });\r\n * });\r\n * ```\r\n */\n get: function () {\n return this._align;\n },\n // Options Setter\n // UI / LAYOUT\n set: function (val) {\n this._align = val;\n this._renderer.align = val;\n this._camera.align = val;\n void this.resize();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"defaultIndex\", {\n /**\r\n * Index of the panel to move when Flicking's {@link Flicking#init init()} is called. A zero-based integer\r\n * @ko Flicking의 {@link Flicking#init init()}이 호출될 때 이동할 디폴트 패널의 인덱스로, 0부터 시작하는 정수입니다\r\n * @type {number}\r\n * @default 0\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#defaultindex defaultIndex ( Options )}\r\n */\n get: function () {\n return this._defaultIndex;\n },\n set: function (val) {\n this._defaultIndex = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"horizontal\", {\n /**\r\n * Direction of panel movement (true: horizontal, false: vertical)\r\n * @ko 패널 이동 방향 (true: 가로방향, false: 세로방향)\r\n * @type {boolean}\r\n * @default true\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#horizontal horizontal ( Options )}\r\n */\n get: function () {\n return this._horizontal;\n },\n set: function (val) {\n this._horizontal = val;\n\n this._control.controller.updateDirection();\n\n void this.resize();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"circular\", {\n /**\r\n * Enables circular(continuous loop) mode, which connects first/last panel for continuous scrolling.\r\n * @ko 순환 모드를 활성화합니다. 순환 모드에서는 양 끝의 패널이 서로 연결되어 끊김없는 스크롤이 가능합니다.\r\n * @type {boolean}\r\n * @default false\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#circular circular ( Options )}\r\n */\n get: function () {\n return this._circular;\n },\n set: function (val) {\n this._circular = val;\n void this.resize();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"circularFallback\", {\n /**\r\n * Set panel control mode for the case when circular cannot be enabled.\r\n * \"linear\" will set the view's range from the top of the first panel to the top of the last panel.\r\n * \"bound\" will prevent the view from going out of the first/last panel, so it won't show empty spaces before/after the first/last panel.\r\n * @ko 순환 모드 사용 불가능시 사용할 패널 조작 범위 설정 방식을 변경합니다.\r\n * \"linear\" 사용시 시점이 첫번째 엘리먼트 위에서부터 마지막 엘리먼트 위까지 움직일 수 있도록 설정합니다.\r\n * \"bound\" 사용시 시점이 첫번째 엘리먼트와 마지막 엘리먼트의 끝과 끝 사이에서 움직일 수 있도록 설정합니다.\r\n * @see CIRCULAR_FALLBACK\r\n * @type {string}\r\n * @default \"linear\"\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#circularfallback circularFallback ( Options )}\r\n */\n get: function () {\n return this._circularFallback;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"bound\", {\n /**\r\n * Prevent the view(camera element) from going out of the first/last panel, so it won't show empty spaces before/after the first/last panel\r\n * Only can be enabled when `circular=false`\r\n * @ko 뷰(카메라 엘리먼트)가 첫번째와 마지막 패널 밖으로 넘어가지 못하게 하여, 첫번째/마지막 패널 전/후의 빈 공간을 보이지 않도록 하는 옵션입니다\r\n * `circular=false`인 경우에만 사용할 수 있습니다\r\n * @type {boolean}\r\n * @default false\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#bound bound ( Options )}\r\n */\n get: function () {\n return this._bound;\n },\n set: function (val) {\n this._bound = val;\n void this.resize();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"adaptive\", {\n /**\r\n * Update height of the viewport element after movement same to the height of the panel below. This can be only enabled when `horizontal=true`\r\n * @ko 이동한 후 뷰포트 엘리먼트의 크기를 현재 패널의 높이와 동일하게 설정합니다. `horizontal=true`인 경우에만 사용할 수 있습니다.\r\n * @type {boolean}\r\n * @default false\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#adaptive adaptive ( Options )}\r\n */\n get: function () {\n return this._adaptive;\n },\n set: function (val) {\n this._adaptive = val;\n void this.resize();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"panelsPerView\", {\n /**\r\n * A visible number of panels on viewport. Enabling this option will automatically resize panel size\r\n * @ko 한 화면에 보이는 패널의 개수. 이 옵션을 활성화할 경우 패널의 크기를 강제로 재조정합니다\r\n * @type {number}\r\n * @default -1\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#panelsperview panelsPerView ( Options )}\r\n */\n get: function () {\n return this._panelsPerView;\n },\n set: function (val) {\n this._panelsPerView = val;\n void this.resize();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"noPanelStyleOverride\", {\n /**\r\n * Enabling this option will not change `width/height` style of the panels if {@link Flicking#panelsPerView} is enabled.\r\n * This behavior can be useful in terms of performance when you're manually managing all panel sizes\r\n * @ko 이 옵션을 활성화할 경우, {@link Flicking#panelsPerView} 옵션이 활성화되었을 때 패널의 `width/height` 스타일을 변경하지 않도록 설정합니다.\r\n * 모든 패널들의 크기를 직접 관리하고 있을 경우, 이 옵션을 활성화하면 성능면에서 유리할 수 있습니다\r\n * @type {boolean}\r\n * @default false\r\n */\n get: function () {\n return this._noPanelStyleOverride;\n },\n set: function (val) {\n this._noPanelStyleOverride = val;\n void this.resize();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"resizeOnContentsReady\", {\n /**\r\n * Enabling this option will automatically call {@link Flicking#resize} when all image/video inside panels are loaded.\r\n * This can be useful when you have contents inside Flicking that changes its size when it's loaded\r\n * @ko 이 옵션을 활성화할 경우, Flicking 패널 내부의 이미지/비디오들이 로드되었을 때 자동으로 {@link Flicking#resize}를 호출합니다.\r\n * 이 동작은 Flicking 내부에 로드 전/후로 크기가 변하는 콘텐츠를 포함하고 있을 때 유용하게 사용하실 수 있습니다.\r\n * @type {boolean}\r\n * @default false\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#resizeOnContentsReady resizeOnContentsReady ( Options )}\r\n */\n get: function () {\n return this._resizeOnContentsReady;\n },\n set: function (val) {\n this._resizeOnContentsReady = val;\n\n if (val) {\n this._renderer.checkPanelContentsReady(this._renderer.panels);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"nested\", {\n /**\r\n * If you enable this option on child Flicking when the Flicking is placed inside the Flicking, the parent Flicking will move in the same direction after the child Flicking reaches the first/last panel.\r\n * If the parent Flicking and child Flicking have different horizontal option, you do not need to set this option.\r\n * @ko Flicking 내부에 Flicking이 배치될 때 하위 Flicking에서 이 옵션을 활성화하면 하위 Flicking이 첫/마지막 패널에 도달한 뒤부터 같은 방향으로 상위 Flicking이 움직입니다.\r\n * 만약 상위 Flicking과 하위 Flicking이 서로 다른 horizontal 옵션을 가지고 있다면 이 옵션을 설정할 필요가 없습니다.\r\n * @type {boolean}\r\n * @default false\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#nested nested ( Options )}\r\n */\n get: function () {\n return this._nested;\n },\n set: function (val) {\n this._nested = val;\n var axes = this._control.controller.axes;\n\n if (axes) {\n axes.options.nested = val;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"needPanelThreshold\", {\n // EVENTS\n\n /**\r\n * A Threshold from viewport edge before triggering `needPanel` event\r\n * @ko `needPanel`이벤트가 발생하기 위한 뷰포트 끝으로부터의 최대 거리\r\n * @type {number}\r\n * @default 0\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#needpanelthreshold needPanelThreshold ( Options )}\r\n */\n get: function () {\n return this._needPanelThreshold;\n },\n // EVENTS\n set: function (val) {\n this._needPanelThreshold = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"preventEventsBeforeInit\", {\n /**\r\n * When enabled, events are not triggered before `ready` when initializing\r\n * @ko 활성화할 경우 초기화시 `ready` 이벤트 이전의 이벤트가 발생하지 않습니다.\r\n * @type {boolean}\r\n * @default true\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#preventeventsbeforeinit preventEventsBeforeInit ( Options )}\r\n */\n get: function () {\n return this._preventEventsBeforeInit;\n },\n set: function (val) {\n this._preventEventsBeforeInit = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"deceleration\", {\n // ANIMATION\n\n /**\r\n * Deceleration value for panel movement animation which is triggered by user input. A higher value means a shorter animation time\r\n * @ko 사용자의 동작으로 가속도가 적용된 패널 이동 애니메이션의 감속도. 값이 높을수록 애니메이션 실행 시간이 짧아집니다\r\n * @type {number}\r\n * @default 0.0075\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#deceleration deceleration ( Options )}\r\n */\n get: function () {\n return this._deceleration;\n },\n // ANIMATION\n set: function (val) {\n this._deceleration = val;\n var axes = this._control.controller.axes;\n\n if (axes) {\n axes.options.deceleration = val;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"easing\", {\n /**\r\n * An easing function applied to the panel movement animation. Default value is `easeOutCubic`\r\n * @ko 패널 이동 애니메이션에 적용할 easing 함수. 기본값은 `easeOutCubic`이다\r\n * @type {function}\r\n * @default x => 1 - Math.pow(1 - x, 3)\r\n * @see Easing Functions Cheat Sheet {@link http://easings.net/} 이징 함수 Cheat Sheet {@link http://easings.net/}\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#easing Easing ( Options )}\r\n */\n get: function () {\n return this._easing;\n },\n set: function (val) {\n this._easing = val;\n var axes = this._control.controller.axes;\n\n if (axes) {\n axes.options.easing = val;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"duration\", {\n /**\r\n * Default duration of the animation (ms)\r\n * @ko 디폴트 애니메이션 재생 시간 (ms)\r\n * @type {number}\r\n * @default 500\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#duration duration ( Options )}\r\n */\n get: function () {\n return this._duration;\n },\n set: function (val) {\n this._duration = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"inputType\", {\n // INPUT\n\n /**\r\n * Types of input devices to enable\r\n * @ko 활성화할 입력 장치 종류\r\n * @type {string[]}\r\n * @default [\"touch\", \"mouse\"]\r\n * @see {@link https://naver.github.io/egjs-axes/Options#paninput-options Possible values (PanInputOption#inputType)}\r\n * {@link https://naver.github.io/egjs-axes/Options#paninput-options 가능한 값들 (PanInputOption#inputType)}\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#inputtype inputType ( Options )}\r\n */\n get: function () {\n return this._inputType;\n },\n // INPUT\n set: function (val) {\n this._inputType = val;\n var panInput = this._control.controller.panInput;\n\n if (panInput) {\n panInput.options.inputType = val;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"moveType\", {\n /**\r\n * Movement style by user input. This will change instance type of {@link Flicking#control}\r\n * You can use the values of the constant {@link MOVE_TYPE}\r\n * @ko 사용자 입력에 의한 이동 방식. 이 값에 따라 {@link Flicking#control}의 인스턴스 타입이 결정됩니다\r\n * 상수 {@link MOVE_TYPE}에 정의된 값들을 이용할 수 있습니다\r\n * @type {MOVE_TYPE | Pair}\r\n * @default \"snap\"\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#movetype moveType ( Options )}\r\n * @example\r\n * |moveType|control|options|\r\n * |:---:|:---:|:---:|\r\n * |\"snap\"|{@link SnapControl}||\r\n * |\"freeScroll\"|{@link FreeControl}|{@link FreeControlOptions}|\r\n *\r\n * ```ts\r\n * import Flicking, { MOVE_TYPE } from \"@egjs/flicking\";\r\n *\r\n * const flicking = new Flicking({\r\n * moveType: MOVE_TYPE.SNAP\r\n * });\r\n * ```\r\n *\r\n * ```ts\r\n * const flicking = new Flicking({\r\n * // If you want more specific settings for the moveType\r\n * // [moveType, options for that moveType]\r\n * // In this case, it's [\"freeScroll\", FreeControlOptions]\r\n * moveType: [MOVE_TYPE.FREE_SCROLL, { stopAtEdge: true }]\r\n * });\r\n * ```\r\n */\n get: function () {\n return this._moveType;\n },\n set: function (val) {\n this._moveType = val;\n var prevControl = this._control;\n\n var newControl = this._createControl();\n\n var activePanel = prevControl.activePanel;\n newControl.copy(prevControl);\n var prevProgressInPanel = activePanel ? this._camera.getProgressInPanel(activePanel) : 0;\n this._control = newControl;\n\n this._control.updatePosition(prevProgressInPanel);\n\n this._control.updateInput();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"threshold\", {\n /**\r\n * Movement threshold to change panel (unit: px). It should be dragged above the threshold to change the current panel.\r\n * @ko 패널 변경을 위한 이동 임계값 (단위: px). 주어진 값 이상으로 스크롤해야만 패널 변경이 가능하다.\r\n * @type {number}\r\n * @default 40\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#threshold Threshold ( Options )}\r\n */\n get: function () {\n return this._threshold;\n },\n set: function (val) {\n this._threshold = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"interruptable\", {\n /**\r\n * Set animation to be interruptable by click/touch.\r\n * @ko 사용자의 클릭/터치로 인해 애니메이션을 도중에 멈출 수 있도록 설정합니다.\r\n * @type {boolean}\r\n * @default true\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#interruptable Interruptable ( Options )}\r\n */\n get: function () {\n return this._interruptable;\n },\n set: function (val) {\n this._interruptable = val;\n var axes = this._control.controller.axes;\n\n if (axes) {\n axes.options.interruptable = val;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"bounce\", {\n /**\r\n * The size value of the bounce area. Only can be enabled when `circular=false`.\r\n * You can set different bounce value for prev/next direction by using array.\r\n * `number` for px value, and `string` for px, and % value relative to viewport size.\r\n * You have to call {@link Control#updateInput} after changing this to take effect.\r\n * @ko Flicking이 최대 영역을 넘어서 갈 수 있는 최대 크기. `circular=false`인 경우에만 사용할 수 있습니다.\r\n * 배열을 통해 prev/next 방향에 대해 서로 다른 바운스 값을 지정할 수 있습니다.\r\n * `number`를 통해 px값을, `stirng`을 통해 px 혹은 뷰포트 크기 대비 %값을 사용할 수 있습니다.\r\n * 이 값을 변경시 {@link Control#updateInput}를 호출해야 합니다.\r\n * @type {string | number | Array}\r\n * @default \"20%\"\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#bounce bounce ( Options )}\r\n * @example\r\n * ```ts\r\n * const possibleOptions = [\r\n * // % values, relative to viewport element(\".flicking-viewport\")'s size\r\n * \"0%\", \"25%\", \"42%\",\r\n * // px values, arithmetic calculation with (+/-) is also allowed.\r\n * \"0px\", \"100px\", \"50% - 25px\",\r\n * // numbers, same to number + px (\"0px\", \"100px\")\r\n * 0, 100, 1000\r\n * ];\r\n * ```\r\n *\r\n * @example\r\n * ```ts\r\n * const flicking = new Flicking(\"#el\", { bounce: \"20%\" });\r\n *\r\n * flicking.bounce = \"100%\";\r\n * flicking.control.updateInput(); // Call this to update!\r\n * ```\r\n */\n get: function () {\n return this._bounce;\n },\n set: function (val) {\n this._bounce = val;\n\n this._control.updateInput();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"iOSEdgeSwipeThreshold\", {\n /**\r\n * Size of the area from the right edge in iOS safari (in px) which enables swipe-back or swipe-forward\r\n * @ko iOS Safari에서 swipe를 통한 뒤로가기/앞으로가기를 활성화하는 오른쪽 끝으로부터의 영역의 크기 (px)\r\n * @type {number}\r\n * @default 30\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#iosedgeswipethreshold iOSEdgeSwipeThreshold ( Options )}\r\n */\n get: function () {\n return this._iOSEdgeSwipeThreshold;\n },\n set: function (val) {\n this._iOSEdgeSwipeThreshold = val;\n var panInput = this._control.controller.panInput;\n\n if (panInput) {\n panInput.options.iOSEdgeSwipeThreshold = val;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"preventClickOnDrag\", {\n /**\r\n * Automatically prevent `click` event if the user has dragged at least a single pixel on the viewport element\r\n * @ko 사용자가 뷰포트 영역을 1픽셀이라도 드래그했을 경우 자동으로 {@link https://developer.mozilla.org/ko/docs/Web/API/Element/click_event click} 이벤트를 취소합니다\r\n * @type {boolean}\r\n * @default true\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#preventclickondrag preventClickOnDrag ( Options )}\r\n */\n get: function () {\n return this._preventClickOnDrag;\n },\n set: function (val) {\n var prevVal = this._preventClickOnDrag;\n if (val === prevVal) return;\n var controller = this._control.controller;\n\n if (val) {\n controller.addPreventClickHandler();\n } else {\n controller.removePreventClickHandler();\n }\n\n this._preventClickOnDrag = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"preventDefaultOnDrag\", {\n /**\r\n * Whether to use the {@link https://developer.mozilla.org/ko/docs/Web/API/Event/preventDefault preventDefault} when the user starts dragging\r\n * @ko 사용자가 드래그를 시작할 때 {@link https://developer.mozilla.org/ko/docs/Web/API/Event/preventDefault preventDefault} 실행 여부\r\n * @type {boolean}\r\n * @default false\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#preventDefaultOnDrag preventDefaultOnDrag ( Options )}\r\n */\n get: function () {\n return this._preventDefaultOnDrag;\n },\n set: function (val) {\n this._preventDefaultOnDrag = val;\n var panInput = this._control.controller.panInput;\n\n if (panInput) {\n panInput.options.preventDefaultOnDrag = val;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"disableOnInit\", {\n /**\r\n * Automatically call {@link Flicking#disableInput disableInput()} on initialization\r\n * @ko Flicking init시에 {@link Flicking#disableInput disableInput()}을 바로 호출합니다\r\n * @type {boolean}\r\n * @default false\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#disableoninit disableOnInit ( Options )}\r\n */\n get: function () {\n return this._disableOnInit;\n },\n set: function (val) {\n this._disableOnInit = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"changeOnHold\", {\n /**\r\n * Change active panel index on mouse/touch hold while animating.\r\n * `index` of the `willChange`/`willRestore` event will be used as new index.\r\n * @ko 애니메이션 도중 마우스/터치 입력시 현재 활성화된 패널의 인덱스를 변경합니다.\r\n * `willChange`/`willRestore` 이벤트의 `index`값이 새로운 인덱스로 사용될 것입니다.\r\n * @type {boolean}\r\n * @default false\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#changeonhold changeOnHold ( Options )}\r\n */\n get: function () {\n return this._changeOnHold;\n },\n set: function (val) {\n this._changeOnHold = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"renderOnlyVisible\", {\n // PERFORMANCE\n\n /**\r\n * Whether to render visible panels only. This can dramatically increase performance when there're many panels\r\n * @ko 보이는 패널만 렌더링할지 여부를 설정합니다. 패널이 많을 경우에 퍼포먼스를 크게 향상시킬 수 있습니다\r\n * @type {boolean}\r\n * @default false\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#renderonlyvisible renderOnlyVisible ( Options )}\r\n */\n get: function () {\n return this._renderOnlyVisible;\n },\n // PERFORMANCE\n set: function (val) {\n this._renderOnlyVisible = val;\n void this._renderer.render();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"virtual\", {\n /**\r\n * By enabling this option, it will reduce memory consumption by restricting the number of DOM elements to `panelsPerView + 1`\r\n * Must be used with `panelsPerview`.\r\n * After Flicking's initialized, this property can be used to add/remove the panel count.\r\n * @ko 이 옵션을 활성화할 경우 패널 엘리먼트의 개수를 `panelsPerView + 1` 개로 고정함으로써, 메모리 사용량을 줄일 수 있습니다.\r\n * `panelsPerView` 옵션과 함께 사용되어야만 합니다.\r\n * Flicking 초기화 이후에, 이 프로퍼티는 렌더링하는 패널의 개수를 추가/제거하기 위해 사용될 수 있습니다.\r\n * @type {VirtualManager}\r\n * @property {function} renderPanel A rendering function for the panel element's innerHTML패널 엘리먼트의 innerHTML을 렌더링하는 함수\r\n * @property {number} initialPanelCount Initial panel count to render최초로 렌더링할 패널의 개수\r\n * @property {boolean} [cache=false] Whether to cache rendered panel's innerHTML렌더링된 패널의 innerHTML 정보를 캐시할지 여부\r\n * @property {string} [panelClass=\"flicking-panel\"] The class name that will be applied to rendered panel elements렌더링되는 패널 엘리먼트에 적용될 클래스 이름\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#virtual virtual ( Options )}\r\n * @example\r\n * ```ts\r\n * import Flicking, { VirtualPanel } from \"@egjs/flicking\";\r\n *\r\n * const flicking = new Flicking(\"#some_el\", {\r\n * panelsPerView: 3,\r\n * virtual: {\r\n * renderPanel: (panel: VirtualPanel, index: number) => `Panel ${index}`,\r\n * initialPanelCount: 100\r\n * }\r\n * });\r\n *\r\n * // Add 100 virtual panels (at the end)\r\n * flicking.virtual.append(100);\r\n *\r\n * // Remove 100 virtual panels from 0 to 100\r\n * flicking.virtual.remove(0, 100);\r\n * ```\r\n */\n get: function () {\n return this._virtualManager;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"autoInit\", {\n // OTHERS\n\n /**\r\n * Call {@link Flicking#init init()} automatically when creating Flicking's instance\r\n * @ko Flicking 인스턴스를 생성할 때 자동으로 {@link Flicking#init init()}를 호출합니다\r\n * @type {boolean}\r\n * @default true\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#autoinit autoInit ( Options )}\r\n * @readonly\r\n */\n get: function () {\n return this._autoInit;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"autoResize\", {\n /**\r\n * Whether to automatically call {@link Flicking#resize resize()} when the viewport element(.flicking-viewport)'s size is changed\r\n * @ko 뷰포트 엘리먼트(.flicking-viewport)의 크기 변경시 {@link Flicking#resize resize()} 메소드를 자동으로 호출할지 여부를 설정합니다\r\n * @type {boolean}\r\n * @default true\r\n */\n get: function () {\n return this._autoResize;\n },\n // OTHERS\n set: function (val) {\n this._autoResize = val;\n\n if (val) {\n this._autoResizer.enable();\n } else {\n this._autoResizer.disable();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"useResizeObserver\", {\n /**\r\n * Whether to listen {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver ResizeObserver}'s event instead of Window's {@link https://developer.mozilla.org/ko/docs/Web/API/Window/resize_event resize} event when using the `autoResize` option\r\n * @ko autoResize 옵션 사용시 {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver ResizeObserver}의 이벤트를 Window객체의 {@link https://developer.mozilla.org/ko/docs/Web/API/Window/resize_event resize} 이벤트 대신 수신할지 여부를 설정합니다\r\n * @type {boolean}\r\n * @default true\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#useresizeobserver useResizeObserver ( Options )}\r\n */\n get: function () {\n return this._useResizeObserver;\n },\n set: function (val) {\n this._useResizeObserver = val;\n\n if (this._autoResize) {\n this._autoResizer.enable();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"resizeDebounce\", {\n /**\r\n * Delays size recalculation from `autoResize` by the given time in milisecond.\r\n * If the size is changed again while being delayed, it cancels the previous one and delays from the beginning again.\r\n * This can increase performance by preventing `resize` being called too often.\r\n * @ko `autoResize` 설정시에 호출되는 크기 재계산을 주어진 시간(단위: ms)만큼 지연시킵니다.\r\n * 지연시키는 도중 크기가 다시 변경되었을 경우, 이전 것을 취소하고 주어진 시간만큼 다시 지연시킵니다.\r\n * 이를 통해 `resize`가 너무 많이 호출되는 것을 방지하여 성능을 향상시킬 수 있습니다.\r\n * @type {number}\r\n * @default 0\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#resizedebounce resizeDebounce ( Options )}\r\n */\n get: function () {\n return this._resizeDebounce;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"maxResizeDebounce\", {\n /**\r\n * The maximum time for size recalculation delay when using `resizeDebounce`, in milisecond.\r\n * This guarantees that size recalculation is performed at least once every (n)ms.\r\n * @ko `resizeDebounce` 사용시에 크기 재계산이 지연되는 최대 시간을 지정합니다. (단위: ms)\r\n * 이를 통해, 적어도 (n)ms에 한번은 크기 재계산을 수행하는 것을 보장할 수 있습니다.\r\n * @type {number}\r\n * @default 100\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#maxresizedebounce maxResizeDebounce ( Options )}\r\n */\n get: function () {\n return this._maxResizeDebounce;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"useFractionalSize\", {\n /**\r\n * By enabling this, Flicking will calculate all internal size with CSS width computed with getComputedStyle.\r\n * This can prevent 1px offset issue in some cases where panel size has the fractional part.\r\n * All sizes will have the original size before CSS {@link https://developer.mozilla.org/en-US/docs/Web/CSS/transform transform} is applied on the element.\r\n * @ko 이 옵션을 활성화할 경우, Flicking은 내부의 모든 크기를 {@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect getBoundingClientRect}를 이용하여 계산합니다.\r\n * 이를 통해, 패널 크기에 소수점을 포함할 경우에 발생할 수 있는 일부 1px 오프셋 이슈를 해결 가능합니다.\r\n * 모든 크기는 CSS {@link https://developer.mozilla.org/en-US/docs/Web/CSS/transform transform}이 엘리먼트에 적용되기 이전의 크기를 사용할 것입니다.\r\n * @type {boolean}\r\n * @default false\r\n * @see {@link https://naver.github.io/egjs-flicking/Options#usefractionalsize useFractionalSize ( Options )}\r\n */\n get: function () {\n return this._useFractionalSize;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"externalRenderer\", {\n /**\r\n * This is an option for the frameworks(React, Vue, Angular, ...). Don't set it as it's automatically managed by Flicking.\r\n * @ko 프레임워크(React, Vue, Angular, ...)에서만 사용하는 옵션으로, 자동으로 설정되므로 따로 사용하실 필요 없습니다!\r\n * @default null\r\n * @internal\r\n * @readonly\r\n */\n get: function () {\n return this._externalRenderer;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(__proto, \"renderExternal\", {\n /**\r\n * This is an option for the frameworks(React, Vue, Angular, ...). Don't set it as it's automatically managed by Flicking.\r\n * @ko 프레임워크(React, Vue, Angular, ...)에서만 사용하는 옵션으로, 자동으로 설정되므로 따로 사용하실 필요 없습니다!\r\n * @default null\r\n * @internal\r\n * @readonly\r\n * @deprecated\r\n */\n get: function () {\n return this._renderExternal;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Initialize Flicking and move to the default index\r\n * This is automatically called on Flicking's constructor when `autoInit` is true(default)\r\n * @ko Flicking을 초기화하고, 디폴트 인덱스로 이동합니다\r\n * 이 메소드는 `autoInit` 옵션이 true(default)일 경우 Flicking이 생성될 때 자동으로 호출됩니다\r\n * @fires Flicking#ready\r\n * @return {Promise}\r\n */\n\n __proto.init = function () {\n var _this = this;\n\n if (this._initialized) return Promise.resolve();\n var camera = this._camera;\n var renderer = this._renderer;\n var control = this._control;\n var virtualManager = this._virtualManager;\n var originalTrigger = this.trigger;\n var preventEventsBeforeInit = this._preventEventsBeforeInit;\n camera.init();\n virtualManager.init();\n renderer.init(this);\n control.init(this);\n\n if (preventEventsBeforeInit) {\n this.trigger = function () {\n return _this;\n };\n }\n\n this._initialResize(); // Look at initial panel\n\n\n this._moveToInitialPanel();\n\n if (this._autoResize) {\n this._autoResizer.enable();\n }\n\n if (this._preventClickOnDrag) {\n control.controller.addPreventClickHandler();\n }\n\n if (this._disableOnInit) {\n this.disableInput();\n }\n\n renderer.checkPanelContentsReady(renderer.panels);\n this._initialized = true;\n return renderer.render().then(function () {\n // Done initializing & emit ready event\n _this._plugins.forEach(function (plugin) {\n return plugin.init(_this);\n });\n\n if (preventEventsBeforeInit) {\n _this.trigger = originalTrigger;\n }\n\n _this.trigger(new ComponentEvent(EVENTS.READY));\n });\n };\n /**\r\n * Destroy Flicking and remove all event handlers\r\n * @ko Flicking과 하위 컴포넌트들을 초기 상태로 되돌리고, 부착된 모든 이벤트 핸들러를 제거합니다\r\n * @return {void}\r\n */\n\n\n __proto.destroy = function () {\n this.off();\n\n this._autoResizer.disable();\n\n this._control.destroy();\n\n this._camera.destroy();\n\n this._renderer.destroy();\n\n this._plugins.forEach(function (plugin) {\n return plugin.destroy();\n });\n\n this._initialized = false;\n };\n /**\r\n * Move to the previous panel (current index - 1)\r\n * @ko 이전 패널로 이동합니다 (현재 인덱스 - 1)\r\n * @param {number} [duration={@link Flicking#duration options.duration}] Duration of the panel movement animation (unit: ms)패널 이동 애니메이션 진행 시간 (단위: ms)\r\n * @async\r\n * @fires Flicking#moveStart\r\n * @fires Flicking#move\r\n * @fires Flicking#moveEnd\r\n * @fires Flicking#willChange\r\n * @fires Flicking#changed\r\n * @fires Flicking#willRestore\r\n * @fires Flicking#restored\r\n * @fires Flicking#needPanel\r\n * @fires Flicking#visibleChange\r\n * @fires Flicking#reachEdge\r\n * @throws {FlickingError}\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE INDEX_OUT_OF_RANGE}|When the previous panel does not exist|\r\n * |{@link ERROR_CODE ANIMATION_ALREADY_PLAYING}|When the animation is already playing|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|When the animation is interrupted by user input|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|When the any of the event's `stop()` is called|\r\n * \r\n *\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE INDEX_OUT_OF_RANGE}|이전 패널이 존재하지 않을 경우|\r\n * |{@link ERROR_CODE ANIMATION_ALREADY_PLAYING}|애니메이션이 이미 진행중인 경우|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|사용자 입력에 의해 애니메이션이 중단된 경우|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|발생된 이벤트들 중 하나라도 `stop()`이 호출된 경우|\r\n * \r\n * @return {Promise} A Promise which will be resolved after reaching the previous panel이전 패널 도달시에 resolve되는 Promise\r\n */\n\n\n __proto.prev = function (duration) {\n var _a, _b, _c;\n\n if (duration === void 0) {\n duration = this._duration;\n }\n\n return this.moveTo((_c = (_b = (_a = this._control.activePanel) === null || _a === void 0 ? void 0 : _a.prev()) === null || _b === void 0 ? void 0 : _b.index) !== null && _c !== void 0 ? _c : -1, duration, DIRECTION.PREV);\n };\n /**\r\n * Move to the next panel (current index + 1)\r\n * @ko 다음 패널로 이동합니다 (현재 인덱스 + 1)\r\n * @param {number} [duration={@link Flicking#duration options.duration}] Duration of the panel movement animation (unit: ms).패널 이동 애니메이션 진행 시간 (단위: ms)\r\n * @async\r\n * @fires Flicking#moveStart\r\n * @fires Flicking#move\r\n * @fires Flicking#moveEnd\r\n * @fires Flicking#willChange\r\n * @fires Flicking#changed\r\n * @fires Flicking#willRestore\r\n * @fires Flicking#restored\r\n * @fires Flicking#needPanel\r\n * @fires Flicking#visibleChange\r\n * @fires Flicking#reachEdge\r\n * @throws {FlickingError}\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE INDEX_OUT_OF_RANGE}|When the next panel does not exist|\r\n * |{@link ERROR_CODE ANIMATION_ALREADY_PLAYING}|When the animation is already playing|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|When the animation is interrupted by user input|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|When the any of the event's `stop()` is called|\r\n * \r\n *\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE INDEX_OUT_OF_RANGE}|다음 패널이 존재하지 않을 경우|\r\n * |{@link ERROR_CODE ANIMATION_ALREADY_PLAYING}|애니메이션이 이미 진행중인 경우|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|사용자 입력에 의해 애니메이션이 중단된 경우|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|발생된 이벤트들 중 하나라도 `stop()`이 호출된 경우|\r\n *\r\n * \r\n * @return {Promise} A Promise which will be resolved after reaching the next panel다음 패널 도달시에 resolve되는 Promise\r\n */\n\n\n __proto.next = function (duration) {\n var _a, _b, _c;\n\n if (duration === void 0) {\n duration = this._duration;\n }\n\n return this.moveTo((_c = (_b = (_a = this._control.activePanel) === null || _a === void 0 ? void 0 : _a.next()) === null || _b === void 0 ? void 0 : _b.index) !== null && _c !== void 0 ? _c : this._renderer.panelCount, duration, DIRECTION.NEXT);\n };\n /**\r\n * Move to the panel with given index\r\n * @ko 주어진 인덱스에 해당하는 패널로 이동합니다\r\n * @param {number} index The index of the panel to move이동할 패널의 인덱스\r\n * @param {number} [duration={@link Flicking#duration options.duration}] Duration of the animation (unit: ms)애니메이션 진행 시간 (단위: ms)\r\n * @param {DIRECTION} [direction=DIRECTION.NONE] Direction to move, only available in the {@link Flicking#circular circular} mode이동할 방향. {@link Flicking#circular circular} 옵션 활성화시에만 사용 가능합니다\r\n * @async\r\n * @fires Flicking#moveStart\r\n * @fires Flicking#move\r\n * @fires Flicking#moveEnd\r\n * @fires Flicking#willChange\r\n * @fires Flicking#changed\r\n * @fires Flicking#willRestore\r\n * @fires Flicking#restored\r\n * @fires Flicking#needPanel\r\n * @fires Flicking#visibleChange\r\n * @fires Flicking#reachEdge\r\n * @throws {FlickingError}\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE INDEX_OUT_OF_RANGE}|When the root is not either string or HTMLElement|\r\n * |{@link ERROR_CODE ANIMATION_ALREADY_PLAYING}|When the animation is already playing|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|When the animation is interrupted by user input|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|When the any of the event's `stop()` is called|\r\n * \r\n *\r\n * |code|condition|\r\n * |---|---|\r\n * |{@link ERROR_CODE INDEX_OUT_OF_RANGE}|해당 인덱스를 가진 패널이 존재하지 않을 경우|\r\n * |{@link ERROR_CODE ANIMATION_ALREADY_PLAYING}|애니메이션이 이미 진행중인 경우|\r\n * |{@link ERROR_CODE ANIMATION_INTERRUPTED}|사용자 입력에 의해 애니메이션이 중단된 경우|\r\n * |{@link ERROR_CODE STOP_CALLED_BY_USER}|발생된 이벤트들 중 하나라도 `stop()`이 호출된 경우|\r\n *\r\n * \r\n * @return {Promise} A Promise which will be resolved after reaching the target panel해당 패널 도달시에 resolve되는 Promise\r\n */\n\n\n __proto.moveTo = function (index, duration, direction) {\n if (duration === void 0) {\n duration = this._duration;\n }\n\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n\n var renderer = this._renderer;\n var panelCount = renderer.panelCount;\n var panel = renderer.getPanel(index);\n\n if (!panel) {\n return Promise.reject(new FlickingError(MESSAGE.INDEX_OUT_OF_RANGE(index, 0, panelCount - 1), CODE.INDEX_OUT_OF_RANGE));\n }\n\n if (this._control.animating) {\n return Promise.reject(new FlickingError(MESSAGE.ANIMATION_ALREADY_PLAYING, CODE.ANIMATION_ALREADY_PLAYING));\n }\n\n if (this._control.holding) {\n this._control.controller.release();\n }\n\n return this._control.moveToPanel(panel, {\n duration: duration,\n direction: direction\n });\n };\n /**\r\n * Change the destination and duration of the animation currently playing\r\n * @ko 재생 중인 애니메이션의 목적지와 재생 시간을 변경합니다\r\n * @param {number} index The index of the panel to move이동할 패널의 인덱스\r\n * @param {number} duration Duration of the animation (unit: ms)애니메이션 진행 시간 (단위: ms)\r\n * @param {DIRECTION} direction Direction to move, only available in the {@link Flicking#circular circular} mode이동할 방향. {@link Flicking#circular circular} 옵션 활성화시에만 사용 가능합니다\r\n * @throws {FlickingError}\r\n * {@link ERROR_CODE INDEX_OUT_OF_RANGE} When the root is not either string or HTMLElement\r\n * {@link ERROR_CODE INDEX_OUT_OF_RANGE} 해당 인덱스를 가진 패널이 존재하지 않을 경우\r\n * @return {void}\r\n */\n\n\n __proto.updateAnimation = function (index, duration, direction) {\n if (!this._control.animating) {\n return;\n }\n\n var renderer = this._renderer;\n var panelCount = renderer.panelCount;\n var panel = renderer.getPanel(index);\n\n if (!panel) {\n throw new FlickingError(MESSAGE.INDEX_OUT_OF_RANGE(index, 0, panelCount - 1), CODE.INDEX_OUT_OF_RANGE);\n }\n\n this._control.updateAnimation(panel, duration, direction);\n };\n /**\r\n * Stops the animation currently playing\r\n * @ko 재생 중인 애니메이션을 중단시킵니다\r\n * @fires Flicking#moveEnd\r\n * @return {void}\r\n */\n\n\n __proto.stopAnimation = function () {\n if (!this._control.animating) {\n return;\n }\n\n this._control.stopAnimation();\n };\n /**\r\n * Return the {@link Panel} at the given index. `null` if it doesn't exists.\r\n * @ko 주어진 인덱스에 해당하는 {@link Panel}을 반환합니다. 주어진 인덱스에 해당하는 패널이 존재하지 않을 경우 `null`을 반환합니다.\r\n * @return {Panel | null} Panel at the given index주어진 인덱스에 해당하는 패널\r\n * @see Panel\r\n * @example\r\n * ```ts\r\n * const panel = flicking.getPanel(0);\r\n * // Which is a shorthand to...\r\n * const samePanel = flicking.panels[0];\r\n * ```\r\n */\n\n\n __proto.getPanel = function (index) {\n return this._renderer.getPanel(index);\n };\n /**\r\n * Enable input from the user (mouse/touch)\r\n * @ko 사용자의 입력(마우스/터치)를 활성화합니다\r\n * @return {this}\r\n */\n\n\n __proto.enableInput = function () {\n this._control.enable();\n\n return this;\n };\n /**\r\n * Disable input from the user (mouse/touch)\r\n * @ko 사용자의 입력(마우스/터치)를 막습니다\r\n * @return {this}\r\n */\n\n\n __proto.disableInput = function () {\n this._control.disable();\n\n return this;\n };\n /**\r\n * Get current flicking status. You can restore current state by giving returned value to {@link Flicking#setStatus setStatus()}\r\n * @ko 현재 상태를 반환합니다. 반환받은 값을 {@link Flicking#setStatus setStatus()} 메소드의 인자로 지정하면 현재 상태를 복원할 수 있습니다\r\n * @param {object} options Status retrieving optionsStatus 반환 옵션\r\n * @param {boolean} [options.index=true] Include current panel index to the returning status. Camera will automatically move to the given index when the {@link Flicking#setStatus setStatus} is called현재 패널 인덱스를 반환값에 포함시킵니다. {@link Flicking#setStatus setStatus} 호출시 자동으로 해당 인덱스로 카메라를 움직입니다\r\n * @param {boolean} [options.position=true] Include camera position to the returning status. This works only when the {@link Flicking#moveType moveType} is `freeScroll`카메라의 현재 위치를 반환값에 포함시킵니다. 이 옵션은 {@link Flicking#moveType moveType}이 `freeScroll`일 경우에만 동작합니다\r\n * @param {boolean} [options.includePanelHTML=false] Include panel's `outerHTML` to the returning status패널의 `outerHTML`을 반환값에 포함시킵니다\r\n * @param {boolean} [options.visiblePanelsOnly=false] Include only {@link Flicking#visiblePanel visiblePanel}'s HTML. This option is available only when the `includePanelHTML` is true\r\n * 현재 보이는 패널({@link Flicking#visiblePanel visiblePanel})의 HTML만 반환합니다. `includePanelHTML`이 `true`일 경우에만 동작합니다.\r\n * @return {Status} An object with current status value information현재 상태값 정보를 가진 객체.\r\n */\n\n\n __proto.getStatus = function (_a) {\n var _b, _c;\n\n var _d = _a === void 0 ? {} : _a,\n _e = _d.index,\n index = _e === void 0 ? true : _e,\n _f = _d.position,\n position = _f === void 0 ? true : _f,\n _g = _d.includePanelHTML,\n includePanelHTML = _g === void 0 ? false : _g,\n _h = _d.visiblePanelsOnly,\n visiblePanelsOnly = _h === void 0 ? false : _h;\n\n var camera = this._camera;\n var panels = visiblePanelsOnly ? this.visiblePanels : this.panels;\n var status = {\n panels: panels.map(function (panel) {\n var panelInfo = {\n index: panel.index\n };\n\n if (includePanelHTML) {\n panelInfo.html = panel.element.outerHTML;\n }\n\n return panelInfo;\n })\n };\n\n if (index) {\n status.index = this.index;\n }\n\n if (position) {\n var nearestAnchor = camera.findNearestAnchor(camera.position);\n\n if (nearestAnchor) {\n status.position = {\n panel: nearestAnchor.panel.index,\n progressInPanel: camera.getProgressInPanel(nearestAnchor.panel)\n };\n }\n }\n\n if (visiblePanelsOnly) {\n var visiblePanels = this.visiblePanels;\n status.visibleOffset = (_c = (_b = visiblePanels[0]) === null || _b === void 0 ? void 0 : _b.index) !== null && _c !== void 0 ? _c : 0;\n }\n\n return status;\n };\n /**\r\n * Restore to the state of the given {@link Status}\r\n * @ko 주어진 {@link Status}의 상태로 복원합니다\r\n * @param {Partial} status Status value to be restored. You should use the return value of the {@link Flicking#getStatus getStatus()} method복원할 상태 값. {@link Flicking#getStatus getStatus()} 메서드의 반환값을 지정하면 됩니다\r\n * @return {void}\r\n */\n\n\n __proto.setStatus = function (status) {\n var _a;\n\n if (!this._initialized) {\n throw new FlickingError(MESSAGE.NOT_INITIALIZED, CODE.NOT_INITIALIZED);\n }\n\n var index = status.index,\n position = status.position,\n visibleOffset = status.visibleOffset,\n panels = status.panels;\n var renderer = this._renderer;\n var control = this._control; // Can't add/remove panels on external rendering\n\n if (((_a = panels[0]) === null || _a === void 0 ? void 0 : _a.html) && !this._renderExternal) {\n renderer.batchRemove({\n index: 0,\n deleteCount: this.panels.length,\n hasDOMInElements: true\n });\n renderer.batchInsert({\n index: 0,\n elements: parseElement(panels.map(function (panel) {\n return panel.html;\n })),\n hasDOMInElements: true\n });\n }\n\n if (index != null) {\n var panelIndex = visibleOffset ? index - visibleOffset : index;\n void this.moveTo(panelIndex, 0).catch(function () {\n return void 0;\n });\n }\n\n if (position && this._moveType === MOVE_TYPE.FREE_SCROLL) {\n var panel = position.panel,\n progressInPanel = position.progressInPanel;\n var panelIndex = visibleOffset ? panel - visibleOffset : panel;\n var panelRange = renderer.panels[panelIndex].range;\n var newCameraPos = panelRange.min + (panelRange.max - panelRange.min) * progressInPanel;\n void control.moveToPosition(newCameraPos, 0).catch(function () {\n return void 0;\n });\n }\n };\n /**\r\n * Add plugins that can have different effects on Flicking\r\n * @ko 플리킹에 다양한 효과를 부여할 수 있는 플러그인을 추가합니다\r\n * @param {...Plugin} plugins The plugin(s) to add추가할 플러그인(들)\r\n * @return {this}\r\n * @see https://github.com/naver/egjs-flicking-plugins\r\n */\n\n\n __proto.addPlugins = function () {\n var _a;\n\n var _this = this;\n\n var plugins = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n plugins[_i] = arguments[_i];\n }\n\n if (this._initialized) {\n plugins.forEach(function (item) {\n return item.init(_this);\n });\n }\n\n (_a = this._plugins).push.apply(_a, __spread(plugins));\n\n return this;\n };\n /**\r\n * Remove plugins from Flicking.\r\n * @ko 플리킹으로부터 플러그인들을 제거합니다.\r\n * @param {...Plugin} plugin The plugin(s) to remove.제거 플러그인(들).\r\n * @return {this}\r\n * @see https://github.com/naver/egjs-flicking-plugins\r\n */\n\n\n __proto.removePlugins = function () {\n var _this = this;\n\n var plugins = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n plugins[_i] = arguments[_i];\n }\n\n plugins.forEach(function (item) {\n var foundIndex = findIndex(_this._plugins, function (val) {\n return val === item;\n });\n\n if (foundIndex >= 0) {\n item.destroy();\n\n _this._plugins.splice(foundIndex, 1);\n }\n });\n return this;\n };\n /**\r\n * Update viewport/panel sizes\r\n * @ko 패널 및 뷰포트의 크기를 갱신합니다\r\n * @method\r\n * @fires Flicking#beforeResize\r\n * @fires Flicking#afterResize\r\n * @return {this}\r\n */\n\n\n __proto.resize = function () {\n return __awaiter(this, void 0, void 0, function () {\n var viewport, renderer, camera, control, activePanel, prevWidth, prevHeight, prevProgressInPanel, newWidth, newHeight, sizeChanged;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n viewport = this._viewport;\n renderer = this._renderer;\n camera = this._camera;\n control = this._control;\n activePanel = control.activePanel;\n prevWidth = viewport.width;\n prevHeight = viewport.height;\n prevProgressInPanel = activePanel ? camera.getProgressInPanel(activePanel) : 0;\n this.trigger(new ComponentEvent(EVENTS.BEFORE_RESIZE, {\n width: prevWidth,\n height: prevHeight,\n element: viewport.element\n }));\n viewport.resize();\n return [4\n /*yield*/\n , renderer.forceRenderAllPanels()];\n\n case 1:\n _a.sent(); // Render all panel elements, to update sizes\n\n\n renderer.updatePanelSize();\n camera.updateAlignPos();\n camera.updateRange();\n camera.updateAnchors();\n camera.updateAdaptiveHeight();\n camera.updatePanelOrder();\n camera.updateOffset();\n return [4\n /*yield*/\n , renderer.render()];\n\n case 2:\n _a.sent();\n\n if (control.animating) ;else {\n control.updatePosition(prevProgressInPanel);\n control.updateInput();\n }\n newWidth = viewport.width;\n newHeight = viewport.height;\n sizeChanged = newWidth !== prevWidth || newHeight !== prevHeight;\n this.trigger(new ComponentEvent(EVENTS.AFTER_RESIZE, {\n width: viewport.width,\n height: viewport.height,\n prev: {\n width: prevWidth,\n height: prevHeight\n },\n sizeChanged: sizeChanged,\n element: viewport.element\n }));\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n /**\r\n * Add new panels after the last panel\r\n * @ko 패널 목록의 제일 끝에 새로운 패널들을 추가합니다\r\n * @param {ElementLike | ElementLike[]} element A new HTMLElement, a outerHTML of element, or an array of both\r\n * 새로운 HTMLElement, 혹은 엘리먼트의 outerHTML, 혹은 그것들의 배열\r\n * @return {Panel[]} An array of appended panels추가된 패널들의 배열\r\n * @see Panel\r\n * @see ElementLike\r\n * @throws {FlickingError} {@link ERROR_CODE ERROR_CODE.NOT_ALLOWED_IN_FRAMEWORK} if called on frameworks (React, Angular, Vue...)\r\n * @example\r\n * ```ts\r\n * const flicking = new Flicking(\"#flick\");\r\n * // These are possible parameters\r\n * flicking.append(document.createElement(\"div\"));\r\n * flicking.append(\"\\Panel\\\");\r\n * flicking.append([\"\\Panel\\\", document.createElement(\"div\")]);\r\n * // Even this is possible\r\n * flicking.append(\"\\Panel 1\\\\Panel 2\\\");\r\n * ```\r\n */\n\n\n __proto.append = function (element) {\n return this.insert(this._renderer.panelCount, element);\n };\n /**\r\n * Add new panels before the first panel\r\n * This will increase index of panels after by the number of panels added\r\n * @ko 패널 목록의 제일 앞(index 0)에 새로운 패널들을 추가합니다\r\n * 추가한 패널의 개수만큼 기존 패널들의 인덱스가 증가합니다.\r\n * @param {ElementLike | ElementLike[]} element A new HTMLElement, a outerHTML of element, or an array of both\r\n * 새로운 HTMLElement, 혹은 엘리먼트의 outerHTML, 혹은 그것들의 배열\r\n * @return {Panel[]} An array of prepended panels추가된 패널들의 배열\r\n * @see Panel\r\n * @see ElementLike\r\n * @throws {FlickingError} {@link ERROR_CODE ERROR_CODE.NOT_ALLOWED_IN_FRAMEWORK} if called on frameworks (React, Angular, Vue...)\r\n * @example\r\n * ```ts\r\n * const flicking = new eg.Flicking(\"#flick\");\r\n * flicking.prepend(document.createElement(\"div\"));\r\n * flicking.prepend(\"\\Panel\\\");\r\n * flicking.prepend([\"\\Panel\\\", document.createElement(\"div\")]);\r\n * // Even this is possible\r\n * flicking.prepend(\"\\Panel 1\\\\Panel 2\\\");\r\n * ```\r\n */\n\n\n __proto.prepend = function (element) {\n return this.insert(0, element);\n };\n /**\r\n * Insert new panels at given index\r\n * This will increase index of panels after by the number of panels added\r\n * @ko 주어진 인덱스에 새로운 패널들을 추가합니다\r\n * 해당 인덱스보다 같거나 큰 인덱스를 가진 기존 패널들은 추가한 패널의 개수만큼 인덱스가 증가합니다.\r\n * @param {number} index Index to insert new panels at새로 패널들을 추가할 인덱스\r\n * @param {ElementLike | ElementLike[]} element A new HTMLElement, a outerHTML of element, or an array of both\r\n * 새로운 HTMLElement, 혹은 엘리먼트의 outerHTML, 혹은 그것들의 배열\r\n * @return {Panel[]} An array of prepended panels추가된 패널들의 배열\r\n * @throws {FlickingError} {@link ERROR_CODE ERROR_CODE.NOT_ALLOWED_IN_FRAMEWORK} if called on frameworks (React, Angular, Vue...)\r\n * @example\r\n * ```ts\r\n * const flicking = new eg.Flicking(\"#flick\");\r\n * flicking.insert(0, document.createElement(\"div\"));\r\n * flicking.insert(2, \"\\Panel\\\");\r\n * flicking.insert(1, [\"\\Panel\\\", document.createElement(\"div\")]);\r\n * // Even this is possible\r\n * flicking.insert(3, \"\\Panel 1\\\\Panel 2\\\");\r\n * ```\r\n */\n\n\n __proto.insert = function (index, element) {\n if (this._renderExternal) {\n throw new FlickingError(MESSAGE.NOT_ALLOWED_IN_FRAMEWORK, CODE.NOT_ALLOWED_IN_FRAMEWORK);\n }\n\n return this._renderer.batchInsert({\n index: index,\n elements: parseElement(element),\n hasDOMInElements: true\n });\n };\n /**\r\n * Remove the panel at the given index\r\n * This will decrease index of panels after by the number of panels removed\r\n * @ko 주어진 인덱스의 패널을 제거합니다\r\n * 해당 인덱스보다 큰 인덱스를 가진 기존 패널들은 제거한 패널의 개수만큼 인덱스가 감소합니다\r\n * @param {number} index Index of panel to remove제거할 패널의 인덱스\r\n * @param {number} [deleteCount=1] Number of panels to remove from index`index` 이후로 제거할 패널의 개수\r\n * @return {Panel[]} An array of removed panels제거된 패널들의 배열\r\n */\n\n\n __proto.remove = function (index, deleteCount) {\n if (deleteCount === void 0) {\n deleteCount = 1;\n }\n\n if (this._renderExternal) {\n throw new FlickingError(MESSAGE.NOT_ALLOWED_IN_FRAMEWORK, CODE.NOT_ALLOWED_IN_FRAMEWORK);\n }\n\n return this._renderer.batchRemove({\n index: index,\n deleteCount: deleteCount,\n hasDOMInElements: true\n });\n };\n\n __proto._createControl = function () {\n var _a;\n\n var moveType = this._moveType;\n var moveTypes = Object.keys(MOVE_TYPE).map(function (key) {\n return MOVE_TYPE[key];\n });\n var moveTypeStr = Array.isArray(moveType) ? moveType[0] : moveType;\n var moveTypeOptions = Array.isArray(moveType) ? (_a = moveType[1]) !== null && _a !== void 0 ? _a : {} : {};\n\n if (!includes(moveTypes, moveTypeStr)) {\n throw new FlickingError(MESSAGE.WRONG_OPTION(\"moveType\", JSON.stringify(moveType)), CODE.WRONG_OPTION);\n }\n\n switch (moveTypeStr) {\n case MOVE_TYPE.SNAP:\n return new SnapControl(moveTypeOptions);\n\n case MOVE_TYPE.FREE_SCROLL:\n return new FreeControl(moveTypeOptions);\n\n case MOVE_TYPE.STRICT:\n return new StrictControl(moveTypeOptions);\n }\n };\n\n __proto._createCamera = function () {\n if (this._circular && this._bound) {\n // eslint-disable-next-line no-console\n console.warn(\"\\\"circular\\\" and \\\"bound\\\" option cannot be used together, ignoring bound.\");\n }\n\n return new Camera(this, {\n align: this._align\n });\n };\n\n __proto._createRenderer = function () {\n var externalRenderer = this._externalRenderer;\n\n if (this._virtual && this._panelsPerView <= 0) {\n // eslint-disable-next-line no-console\n console.warn(\"\\\"virtual\\\" and \\\"panelsPerView\\\" option should be used together, ignoring virtual.\");\n }\n\n return externalRenderer ? externalRenderer : this._renderExternal ? this._createExternalRenderer() : this._createVanillaRenderer();\n };\n\n __proto._createExternalRenderer = function () {\n var _a = this._renderExternal,\n renderer = _a.renderer,\n rendererOptions = _a.rendererOptions;\n return new renderer(__assign({\n align: this._align\n }, rendererOptions));\n };\n\n __proto._createVanillaRenderer = function () {\n var virtual = this.virtualEnabled;\n return new VanillaRenderer({\n align: this._align,\n strategy: virtual ? new VirtualRenderingStrategy() : new NormalRenderingStrategy({\n providerCtor: VanillaElementProvider\n })\n });\n };\n\n __proto._moveToInitialPanel = function () {\n var renderer = this._renderer;\n var control = this._control;\n var camera = this._camera;\n var defaultPanel = renderer.getPanel(this._defaultIndex) || renderer.getPanel(0);\n if (!defaultPanel) return;\n var nearestAnchor = camera.findNearestAnchor(defaultPanel.position);\n var initialPanel = nearestAnchor && defaultPanel.index !== nearestAnchor.panel.index ? nearestAnchor.panel : defaultPanel;\n control.setActive(initialPanel, null, false);\n\n if (!nearestAnchor) {\n throw new FlickingError(MESSAGE.POSITION_NOT_REACHABLE(initialPanel.position), CODE.POSITION_NOT_REACHABLE);\n }\n\n var position = initialPanel.position;\n\n if (!camera.canReach(initialPanel)) {\n position = nearestAnchor.position;\n }\n\n camera.lookAt(position);\n control.updateInput();\n camera.updateOffset();\n };\n\n __proto._initialResize = function () {\n var viewport = this._viewport;\n var renderer = this._renderer;\n var camera = this._camera;\n var control = this._control;\n this.trigger(new ComponentEvent(EVENTS.BEFORE_RESIZE, {\n width: 0,\n height: 0,\n element: viewport.element\n }));\n viewport.resize();\n renderer.updatePanelSize();\n camera.updateAlignPos();\n camera.updateRange();\n camera.updateAnchors();\n camera.updateOffset();\n control.updateInput();\n var newWidth = viewport.width;\n var newHeight = viewport.height;\n var sizeChanged = newWidth !== 0 || newHeight !== 0;\n this.trigger(new ComponentEvent(EVENTS.AFTER_RESIZE, {\n width: viewport.width,\n height: viewport.height,\n prev: {\n width: 0,\n height: 0\n },\n sizeChanged: sizeChanged,\n element: viewport.element\n }));\n };\n /**\r\n * Version info string\r\n * @ko 버전정보 문자열\r\n * @type {string}\r\n * @readonly\r\n * @example\r\n * ```ts\r\n * Flicking.VERSION; // ex) 4.0.0\r\n * ```\r\n */\n\n\n Flicking.VERSION = \"4.11.1\";\n return Flicking;\n}(Component);\n/**\r\n * Decorator that makes the method of flicking available in the framework.\r\n * @ko 프레임워크에서 플리킹의 메소드를 사용할 수 있게 하는 데코레이터.\r\n * @memberof eg.Flicking\r\n * @private\r\n * @example\r\n * ```js\r\n * import Flicking, { withFlickingMethods } from \"@egjs/flicking\";\r\n *\r\n * class Flicking extends React.Component> {\r\n * @withFlickingMethods\r\n * private flicking: Flicking;\r\n * }\r\n * ```\r\n */\n\n\nvar withFlickingMethods = function (prototype, flickingName) {\n [Component.prototype, Flicking.prototype].forEach(function (proto) {\n Object.getOwnPropertyNames(proto).filter(function (name) {\n return !prototype[name] && name.indexOf(\"_\") !== 0 && name !== \"constructor\";\n }).forEach(function (name) {\n var descriptor = Object.getOwnPropertyDescriptor(proto, name);\n\n if (descriptor.value) {\n // Public Function\n Object.defineProperty(prototype, name, {\n value: function () {\n var _a;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return (_a = descriptor.value).call.apply(_a, __spread([this[flickingName]], args));\n }\n });\n } else {\n var getterDescriptor = {};\n\n if (descriptor.get) {\n getterDescriptor.get = function () {\n var _a;\n\n var flicking = this[flickingName];\n return flicking && ((_a = descriptor.get) === null || _a === void 0 ? void 0 : _a.call(flicking));\n };\n }\n\n if (descriptor.set) {\n getterDescriptor.set = function () {\n var _a;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return (_a = descriptor.set) === null || _a === void 0 ? void 0 : _a.call.apply(_a, __spread([this[flickingName]], args));\n };\n }\n\n Object.defineProperty(prototype, name, getterDescriptor);\n }\n });\n });\n};\n\nvar sync = function (flicking, diffResult, rendered) {\n var renderer = flicking.renderer;\n var panels = renderer.panels;\n\n var prevList = __spread(diffResult.prevList);\n\n var added = [];\n var removed = [];\n\n if (diffResult.removed.length > 0) {\n var endIdx_1 = -1;\n var prevIdx_1 = -1;\n diffResult.removed.forEach(function (removedIdx) {\n if (endIdx_1 < 0) {\n endIdx_1 = removedIdx;\n }\n\n if (prevIdx_1 >= 0 && removedIdx !== prevIdx_1 - 1) {\n removed.push.apply(removed, __spread(batchRemove(renderer, prevIdx_1, endIdx_1 + 1)));\n endIdx_1 = removedIdx;\n prevIdx_1 = removedIdx;\n } else {\n prevIdx_1 = removedIdx;\n }\n\n prevList.splice(removedIdx, 1);\n });\n removed.push.apply(removed, __spread(batchRemove(renderer, prevIdx_1, endIdx_1 + 1)));\n }\n\n diffResult.ordered.forEach(function (_a) {\n var _b = __read(_a, 2),\n from = _b[0],\n to = _b[1];\n\n var prevPanel = panels.splice(from, 1)[0];\n panels.splice(to, 0, prevPanel);\n });\n\n if (diffResult.ordered.length > 0) {\n panels.forEach(function (panel, idx) {\n var indexDiff = idx - panel.index;\n\n if (indexDiff > 0) {\n panel.increaseIndex(indexDiff);\n } else {\n panel.decreaseIndex(-indexDiff);\n }\n });\n panels.sort(function (panel1, panel2) {\n return panel1.index - panel2.index;\n });\n panels.forEach(function (panel) {\n panel.updatePosition();\n });\n }\n\n if (diffResult.added.length > 0) {\n var startIdx_1 = -1;\n var prevIdx_2 = -1;\n var addedElements_1 = rendered.slice(prevList.length);\n diffResult.added.forEach(function (addedIdx, idx) {\n if (startIdx_1 < 0) {\n startIdx_1 = idx;\n }\n\n if (prevIdx_2 >= 0 && addedIdx !== prevIdx_2 + 1) {\n added.push.apply(added, __spread(batchInsert(renderer, diffResult, addedElements_1, startIdx_1, idx + 1)));\n startIdx_1 = -1;\n prevIdx_2 = -1;\n } else {\n prevIdx_2 = addedIdx;\n }\n });\n\n if (startIdx_1 >= 0) {\n added.push.apply(added, __spread(batchInsert(renderer, diffResult, addedElements_1, startIdx_1)));\n }\n }\n\n if (diffResult.added.length > 0 || diffResult.removed.length > 0) {\n renderer.updateAfterPanelChange(added, removed);\n }\n};\n\nvar batchInsert = function (renderer, diffResult, addedElements, startIdx, endIdx) {\n return renderer.batchInsertDefer.apply(renderer, __spread(diffResult.added.slice(startIdx, endIdx).map(function (index, elIdx) {\n return {\n index: index,\n elements: [addedElements[elIdx]],\n hasDOMInElements: false\n };\n })));\n};\n\nvar batchRemove = function (renderer, startIdx, endIdx) {\n var removed = renderer.panels.slice(startIdx, endIdx);\n return renderer.batchRemoveDefer({\n index: startIdx,\n deleteCount: removed.length,\n hasDOMInElements: false\n });\n};\n\nvar getRenderingPanels = function (flicking, diffResult) {\n var removedPanels = diffResult.removed.reduce(function (map, idx) {\n map[idx] = true;\n return map;\n }, {});\n var maintainedMap = diffResult.maintained.reduce(function (map, _a) {\n var _b = __read(_a, 2),\n prev = _b[0],\n current = _b[1];\n\n map[prev] = current;\n return map;\n }, {});\n return __spread(flicking.panels.filter(function (panel) {\n return !removedPanels[panel.index];\n }) // Sort panels by position\n .sort(function (panel1, panel2) {\n return panel1.position + panel1.offset - (panel2.position + panel2.offset);\n }).map(function (panel) {\n return diffResult.list[maintainedMap[panel.index]];\n }), diffResult.added.map(function (idx) {\n return diffResult.list[idx];\n }));\n};\n\nvar getDefaultCameraTransform = function (align, horizontal, firstPanelSize) {\n if (align === void 0) {\n align = ALIGN.CENTER;\n }\n\n if (horizontal === void 0) {\n horizontal = true;\n }\n\n var cameraAlign = getCameraAlign(align);\n var panelAlign = getPanelAlign(align);\n if (panelAlign == null) return \"\";\n var camPosition = \"calc(\" + cameraAlign + \" - (\" + (firstPanelSize || \"0px\") + \" * \" + panelAlign.percentage + \") - \" + panelAlign.absolute + \"px)\";\n return horizontal ? \"translate(\" + camPosition + \")\" : \"translate(0, \" + camPosition + \")\";\n};\n\nvar getCameraAlign = function (align) {\n var alignVal = typeof align === \"object\" ? align.camera : align;\n return parseAlign(alignVal);\n};\n\nvar getPanelAlign = function (align) {\n var alignVal = typeof align === \"object\" ? align.panel : align;\n return parseArithmeticExpression(parseAlign(alignVal));\n};\n\nvar parseAlign = function (alignVal) {\n if (typeof alignVal === \"number\") {\n return alignVal + \"px\";\n }\n\n switch (alignVal) {\n case ALIGN.CENTER:\n return \"50%\";\n\n case ALIGN.NEXT:\n return \"100%\";\n\n case ALIGN.PREV:\n return \"0%\";\n\n default:\n return alignVal;\n }\n};\n/*\r\n * Copyright (c) 2015 NAVER Corp.\r\n * egjs projects are licensed under the MIT license\r\n */\n\n\nexport { ALIGN, AnchorPoint, AnimatingState, AxesController, BoundCameraMode, CIRCULAR_FALLBACK, CLASS, Camera, CircularCameraMode, Control, DIRECTION, DisabledState, DraggingState, CODE as ERROR_CODE, EVENTS, ExternalRenderer, FlickingError, FreeControl, HoldingState, IdleState, LinearCameraMode, MOVE_TYPE, NormalRenderingStrategy, ORDER, Panel, Renderer, SnapControl, State, StateMachine, StrictControl, VanillaElementProvider, VanillaRenderer, Viewport, VirtualElementProvider, VirtualManager, VirtualPanel, VirtualRenderingStrategy, checkExistence, circulateIndex, circulatePosition, clamp, Flicking as default, find, findIndex, findRight, getDefaultCameraTransform, getDirection, getElement, getElementSize, getFlickingAttached, getMinusCompensatedIndex, getProgress, getRenderingPanels, getStyle, includes, isBetween, isString, merge, parseAlign$1 as parseAlign, parseArithmeticExpression, parseArithmeticSize, parseBounce, parseCSSSizeValue, parseElement, parsePanelAlign, range, setPrototypeOf, setSize, sync, toArray, withFlickingMethods };","export default {\n computed: {\n telNoToHref: function () {\n return function (telNo) {\n return `tel:${telNo.replace(/[^+0-9]/g, '')}`\n }\n },\n },\n\n methods: {\n statusClass(status) {\n const conf = {\n Employed: 'employed',\n Reviewing: 'reviewing',\n 'Under selection': 'selection',\n 'Interview requested': 'request',\n 'Interview scheduled': 'scheduled',\n 'Waiting for interview result': 'waiting',\n Offering: 'offering',\n Refused: 'refused',\n }\n return conf[status]\n },\n\n closedStatus(closed) {\n const conf = {\n no: 'In Progress',\n yes: 'Closed',\n }\n return conf[closed]\n },\n },\n}\n","/*!\n * Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"fab\";\nvar fa500px = {\n prefix: 'fab',\n iconName: '500px',\n icon: [448, 512, [], \"f26e\", \"M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z\"]\n};\nvar faAccessibleIcon = {\n prefix: 'fab',\n iconName: 'accessible-icon',\n icon: [448, 512, [], \"f368\", \"M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z\"]\n};\nvar faAccusoft = {\n prefix: 'fab',\n iconName: 'accusoft',\n icon: [640, 512, [], \"f369\", \"M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z\"]\n};\nvar faAcquisitionsIncorporated = {\n prefix: 'fab',\n iconName: 'acquisitions-incorporated',\n icon: [384, 512, [], \"f6af\", \"M357.45 468.2c-1.2-7.7-1.3-7.6-9.6-7.6-99.8.2-111.8-2.4-112.7-2.6-12.3-1.7-20.6-10.5-21-23.1-.1-1.6-.2-71.6-1-129.1-.1-4.7 1.6-6.4 5.9-7.5 12.5-3 24.9-6.1 37.3-9.7 4.3-1.3 6.8-.2 8.4 3.5 4.5 10.3 8.8 20.6 13.2 30.9 1.6 3.7.1 4.4-3.4 4.4-10-.2-20-.1-30.4-.1v27h116c-1.4-9.5-2.7-18.1-4-27.5-7 0-13.8.4-20.4-.1-22.6-1.6-18.3-4.4-84-158.6-8.8-20.1-27.9-62.1-36.5-89.2-4.4-14 5.5-25.4 18.9-26.6 18.6-1.7 37.5-1.6 56.2-2 20.6-.4 41.2-.4 61.8-.5 3.1 0 4-1.4 4.3-4.3 1.2-9.8 2.7-19.5 4-29.2.8-5.3 1.6-10.7 2.4-16.1L23.75 0c-3.6 0-5.3 1.1-4.6 5.3 2.2 13.2-.8.8 6.4 45.3 63.4 0 71.8.9 101.8.5 12.3-.2 37 3.5 37.7 22.1.4 11.4-1.1 11.3-32.6 87.4-53.8 129.8-50.7 120.3-67.3 161-1.7 4.1-3.6 5.2-7.6 5.2-8.5-.2-17-.3-25.4.1-1.9.1-5.2 1.8-5.5 3.2-1.5 8.1-2.2 16.3-3.2 24.9h114.3v-27.6c-6.9 0-33.5.4-35.3-2.9 5.3-12.3 10.4-24.4 15.7-36.7 16.3 4 31.9 7.8 47.6 11.7 3.4.9 4.6 3 4.6 6.8-.1 42.9.1 85.9.2 128.8 0 10.2-5.5 19.1-14.9 23.1-6.5 2.7-3.3 3.4-121.4 2.4-5.3 0-7.1 2-7.6 6.8-1.5 12.9-2.9 25.9-5 38.8-.8 5 1.3 5.7 5.3 5.7 183.2.6-30.7 0 337.1 0-2.5-15-4.4-29.4-6.6-43.7zm-174.9-205.7c-13.3-4.2-26.6-8.2-39.9-12.5a44.53 44.53 0 0 1-5.8-2.9c17.2-44.3 34.2-88.1 51.3-132.1 7.5 2.4 7.9-.8 9.4 0 9.3 22.5 18.1 60.1 27 82.8 6.6 16.7 13 33.5 19.7 50.9a35.78 35.78 0 0 1-3.9 2.1c-13.1 3.9-26.4 7.5-39.4 11.7a27.66 27.66 0 0 1-18.4 0z\"]\n};\nvar faAdn = {\n prefix: 'fab',\n iconName: 'adn',\n icon: [496, 512, [], \"f170\", \"M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z\"]\n};\nvar faAdversal = {\n prefix: 'fab',\n iconName: 'adversal',\n icon: [512, 512, [], \"f36a\", \"M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z\"]\n};\nvar faAffiliatetheme = {\n prefix: 'fab',\n iconName: 'affiliatetheme',\n icon: [512, 512, [], \"f36b\", \"M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z\"]\n};\nvar faAirbnb = {\n prefix: 'fab',\n iconName: 'airbnb',\n icon: [448, 512, [], \"f834\", \"M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z\"]\n};\nvar faAlgolia = {\n prefix: 'fab',\n iconName: 'algolia',\n icon: [448, 512, [], \"f36c\", \"M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z\"]\n};\nvar faAlipay = {\n prefix: 'fab',\n iconName: 'alipay',\n icon: [448, 512, [], \"f642\", \"M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z\"]\n};\nvar faAmazon = {\n prefix: 'fab',\n iconName: 'amazon',\n icon: [448, 512, [], \"f270\", \"M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z\"]\n};\nvar faAmazonPay = {\n prefix: 'fab',\n iconName: 'amazon-pay',\n icon: [640, 512, [], \"f42c\", \"M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z\"]\n};\nvar faAmilia = {\n prefix: 'fab',\n iconName: 'amilia',\n icon: [448, 512, [], \"f36d\", \"M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z\"]\n};\nvar faAndroid = {\n prefix: 'fab',\n iconName: 'android',\n icon: [576, 512, [], \"f17b\", \"M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55\"]\n};\nvar faAngellist = {\n prefix: 'fab',\n iconName: 'angellist',\n icon: [448, 512, [], \"f209\", \"M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z\"]\n};\nvar faAngrycreative = {\n prefix: 'fab',\n iconName: 'angrycreative',\n icon: [640, 512, [], \"f36e\", \"M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z\"]\n};\nvar faAngular = {\n prefix: 'fab',\n iconName: 'angular',\n icon: [448, 512, [], \"f420\", \"M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z\"]\n};\nvar faAppStore = {\n prefix: 'fab',\n iconName: 'app-store',\n icon: [512, 512, [], \"f36f\", \"M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z\"]\n};\nvar faAppStoreIos = {\n prefix: 'fab',\n iconName: 'app-store-ios',\n icon: [448, 512, [], \"f370\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z\"]\n};\nvar faApper = {\n prefix: 'fab',\n iconName: 'apper',\n icon: [640, 512, [], \"f371\", \"M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z\"]\n};\nvar faApple = {\n prefix: 'fab',\n iconName: 'apple',\n icon: [384, 512, [], \"f179\", \"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\"]\n};\nvar faApplePay = {\n prefix: 'fab',\n iconName: 'apple-pay',\n icon: [640, 512, [], \"f415\", \"M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z\"]\n};\nvar faArtstation = {\n prefix: 'fab',\n iconName: 'artstation',\n icon: [512, 512, [], \"f77a\", \"M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z\"]\n};\nvar faAsymmetrik = {\n prefix: 'fab',\n iconName: 'asymmetrik',\n icon: [576, 512, [], \"f372\", \"M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z\"]\n};\nvar faAtlassian = {\n prefix: 'fab',\n iconName: 'atlassian',\n icon: [512, 512, [], \"f77b\", \"M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z\"]\n};\nvar faAudible = {\n prefix: 'fab',\n iconName: 'audible',\n icon: [640, 512, [], \"f373\", \"M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z\"]\n};\nvar faAutoprefixer = {\n prefix: 'fab',\n iconName: 'autoprefixer',\n icon: [640, 512, [], \"f41c\", \"M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z\"]\n};\nvar faAvianex = {\n prefix: 'fab',\n iconName: 'avianex',\n icon: [512, 512, [], \"f374\", \"M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z\"]\n};\nvar faAviato = {\n prefix: 'fab',\n iconName: 'aviato',\n icon: [640, 512, [], \"f421\", \"M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z\"]\n};\nvar faAws = {\n prefix: 'fab',\n iconName: 'aws',\n icon: [640, 512, [], \"f375\", \"M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z\"]\n};\nvar faBandcamp = {\n prefix: 'fab',\n iconName: 'bandcamp',\n icon: [512, 512, [], \"f2d5\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm48.2,326.1h-181L207.9,178h181Z\"]\n};\nvar faBattleNet = {\n prefix: 'fab',\n iconName: 'battle-net',\n icon: [512, 512, [], \"f835\", \"M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8\"]\n};\nvar faBehance = {\n prefix: 'fab',\n iconName: 'behance',\n icon: [576, 512, [], \"f1b4\", \"M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z\"]\n};\nvar faBehanceSquare = {\n prefix: 'fab',\n iconName: 'behance-square',\n icon: [448, 512, [], \"f1b5\", \"M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z\"]\n};\nvar faBimobject = {\n prefix: 'fab',\n iconName: 'bimobject',\n icon: [448, 512, [], \"f378\", \"M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z\"]\n};\nvar faBitbucket = {\n prefix: 'fab',\n iconName: 'bitbucket',\n icon: [512, 512, [], \"f171\", \"M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z\"]\n};\nvar faBitcoin = {\n prefix: 'fab',\n iconName: 'bitcoin',\n icon: [512, 512, [], \"f379\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z\"]\n};\nvar faBity = {\n prefix: 'fab',\n iconName: 'bity',\n icon: [496, 512, [], \"f37a\", \"M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z\"]\n};\nvar faBlackTie = {\n prefix: 'fab',\n iconName: 'black-tie',\n icon: [448, 512, [], \"f27e\", \"M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z\"]\n};\nvar faBlackberry = {\n prefix: 'fab',\n iconName: 'blackberry',\n icon: [512, 512, [], \"f37b\", \"M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z\"]\n};\nvar faBlogger = {\n prefix: 'fab',\n iconName: 'blogger',\n icon: [448, 512, [], \"f37c\", \"M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z\"]\n};\nvar faBloggerB = {\n prefix: 'fab',\n iconName: 'blogger-b',\n icon: [448, 512, [], \"f37d\", \"M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z\"]\n};\nvar faBluetooth = {\n prefix: 'fab',\n iconName: 'bluetooth',\n icon: [448, 512, [], \"f293\", \"M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z\"]\n};\nvar faBluetoothB = {\n prefix: 'fab',\n iconName: 'bluetooth-b',\n icon: [320, 512, [], \"f294\", \"M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z\"]\n};\nvar faBootstrap = {\n prefix: 'fab',\n iconName: 'bootstrap',\n icon: [448, 512, [], \"f836\", \"M292.3 311.93c0 42.41-39.72 41.43-43.92 41.43h-80.89v-81.69h80.89c42.56 0 43.92 31.9 43.92 40.26zm-50.15-73.13c.67 0 38.44 1 38.44-36.31 0-15.52-3.51-35.87-38.44-35.87h-74.66v72.18h74.66zM448 106.67v298.66A74.89 74.89 0 0 1 373.33 480H74.67A74.89 74.89 0 0 1 0 405.33V106.67A74.89 74.89 0 0 1 74.67 32h298.66A74.89 74.89 0 0 1 448 106.67zM338.05 317.86c0-21.57-6.65-58.29-49.05-67.35v-.73c22.91-9.78 37.34-28.25 37.34-55.64 0-7 2-64.78-77.6-64.78h-127v261.33c128.23 0 139.87 1.68 163.6-5.71 14.21-4.42 52.71-17.98 52.71-67.12z\"]\n};\nvar faBtc = {\n prefix: 'fab',\n iconName: 'btc',\n icon: [384, 512, [], \"f15a\", \"M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z\"]\n};\nvar faBuffer = {\n prefix: 'fab',\n iconName: 'buffer',\n icon: [448, 512, [], \"f837\", \"M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z\"]\n};\nvar faBuromobelexperte = {\n prefix: 'fab',\n iconName: 'buromobelexperte',\n icon: [448, 512, [], \"f37f\", \"M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z\"]\n};\nvar faBuyNLarge = {\n prefix: 'fab',\n iconName: 'buy-n-large',\n icon: [576, 512, [], \"f8a6\", \"M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z\"]\n};\nvar faBuysellads = {\n prefix: 'fab',\n iconName: 'buysellads',\n icon: [448, 512, [], \"f20d\", \"M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z\"]\n};\nvar faCanadianMapleLeaf = {\n prefix: 'fab',\n iconName: 'canadian-maple-leaf',\n icon: [512, 512, [], \"f785\", \"M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z\"]\n};\nvar faCcAmazonPay = {\n prefix: 'fab',\n iconName: 'cc-amazon-pay',\n icon: [576, 512, [], \"f42d\", \"M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z\"]\n};\nvar faCcAmex = {\n prefix: 'fab',\n iconName: 'cc-amex',\n icon: [576, 512, [], \"f1f3\", \"M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z\"]\n};\nvar faCcApplePay = {\n prefix: 'fab',\n iconName: 'cc-apple-pay',\n icon: [576, 512, [], \"f416\", \"M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z\"]\n};\nvar faCcDinersClub = {\n prefix: 'fab',\n iconName: 'cc-diners-club',\n icon: [576, 512, [], \"f24c\", \"M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z\"]\n};\nvar faCcDiscover = {\n prefix: 'fab',\n iconName: 'cc-discover',\n icon: [576, 512, [], \"f1f2\", \"M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z\"]\n};\nvar faCcJcb = {\n prefix: 'fab',\n iconName: 'cc-jcb',\n icon: [576, 512, [], \"f24b\", \"M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z\"]\n};\nvar faCcMastercard = {\n prefix: 'fab',\n iconName: 'cc-mastercard',\n icon: [576, 512, [], \"f1f1\", \"M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z\"]\n};\nvar faCcPaypal = {\n prefix: 'fab',\n iconName: 'cc-paypal',\n icon: [576, 512, [], \"f1f4\", \"M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z\"]\n};\nvar faCcStripe = {\n prefix: 'fab',\n iconName: 'cc-stripe',\n icon: [576, 512, [], \"f1f5\", \"M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z\"]\n};\nvar faCcVisa = {\n prefix: 'fab',\n iconName: 'cc-visa',\n icon: [576, 512, [], \"f1f0\", \"M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z\"]\n};\nvar faCentercode = {\n prefix: 'fab',\n iconName: 'centercode',\n icon: [512, 512, [], \"f380\", \"M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z\"]\n};\nvar faCentos = {\n prefix: 'fab',\n iconName: 'centos',\n icon: [448, 512, [], \"f789\", \"M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z\"]\n};\nvar faChrome = {\n prefix: 'fab',\n iconName: 'chrome',\n icon: [496, 512, [], \"f268\", \"M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z\"]\n};\nvar faChromecast = {\n prefix: 'fab',\n iconName: 'chromecast',\n icon: [512, 512, [], \"f838\", \"M447.8,64H64c-23.6,0-42.7,19.1-42.7,42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6,0,42.7-19.1,42.7-42.7V106.7 C490.7,83.1,471.4,64,447.8,64z M21.3,383.6L21.3,383.6l0,63.9h63.9C85.2,412.2,56.6,383.6,21.3,383.6L21.3,383.6z M21.3,298.6V341 c58.9,0,106.6,48.1,106.6,107h42.7C170.7,365.6,103.7,298.7,21.3,298.6z M213.4,448h42.7c-0.5-129.5-105.3-234.3-234.8-234.6l0,42.4 C127.3,255.6,213.3,342,213.4,448z\"]\n};\nvar faCloudflare = {\n prefix: 'fab',\n iconName: 'cloudflare',\n icon: [640, 512, [], \"e07d\", \"M407.906,319.913l-230.8-2.928a4.58,4.58,0,0,1-3.632-1.926,4.648,4.648,0,0,1-.494-4.147,6.143,6.143,0,0,1,5.361-4.076L411.281,303.9c27.631-1.26,57.546-23.574,68.022-50.784l13.286-34.542a7.944,7.944,0,0,0,.524-2.936,7.735,7.735,0,0,0-.164-1.631A151.91,151.91,0,0,0,201.257,198.4,68.12,68.12,0,0,0,94.2,269.59C41.924,271.106,0,313.728,0,366.12a96.054,96.054,0,0,0,1.029,13.958,4.508,4.508,0,0,0,4.445,3.871l426.1.051c.043,0,.08-.019.122-.02a5.606,5.606,0,0,0,5.271-4l3.273-11.265c3.9-13.4,2.448-25.8-4.1-34.9C430.124,325.423,420.09,320.487,407.906,319.913ZM513.856,221.1c-2.141,0-4.271.062-6.391.164a3.771,3.771,0,0,0-3.324,2.653l-9.077,31.193c-3.9,13.4-2.449,25.786,4.1,34.89,6.02,8.4,16.054,13.323,28.238,13.9l49.2,2.939a4.491,4.491,0,0,1,3.51,1.894,4.64,4.64,0,0,1,.514,4.169,6.153,6.153,0,0,1-5.351,4.075l-51.125,2.939c-27.754,1.27-57.669,23.574-68.145,50.784l-3.695,9.606a2.716,2.716,0,0,0,2.427,3.68c.046,0,.088.017.136.017h175.91a4.69,4.69,0,0,0,4.539-3.37,124.807,124.807,0,0,0,4.682-34C640,277.3,583.524,221.1,513.856,221.1Z\"]\n};\nvar faCloudscale = {\n prefix: 'fab',\n iconName: 'cloudscale',\n icon: [448, 512, [], \"f383\", \"M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z\"]\n};\nvar faCloudsmith = {\n prefix: 'fab',\n iconName: 'cloudsmith',\n icon: [332, 512, [], \"f384\", \"M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z\"]\n};\nvar faCloudversify = {\n prefix: 'fab',\n iconName: 'cloudversify',\n icon: [616, 512, [], \"f385\", \"M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z\"]\n};\nvar faCodepen = {\n prefix: 'fab',\n iconName: 'codepen',\n icon: [512, 512, [], \"f1cb\", \"M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z\"]\n};\nvar faCodiepie = {\n prefix: 'fab',\n iconName: 'codiepie',\n icon: [472, 512, [], \"f284\", \"M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z\"]\n};\nvar faConfluence = {\n prefix: 'fab',\n iconName: 'confluence',\n icon: [512, 512, [], \"f78d\", \"M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z\"]\n};\nvar faConnectdevelop = {\n prefix: 'fab',\n iconName: 'connectdevelop',\n icon: [576, 512, [], \"f20e\", \"M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z\"]\n};\nvar faContao = {\n prefix: 'fab',\n iconName: 'contao',\n icon: [512, 512, [], \"f26d\", \"M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z\"]\n};\nvar faCottonBureau = {\n prefix: 'fab',\n iconName: 'cotton-bureau',\n icon: [512, 512, [], \"f89e\", \"M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z\"]\n};\nvar faCpanel = {\n prefix: 'fab',\n iconName: 'cpanel',\n icon: [640, 512, [], \"f388\", \"M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z\"]\n};\nvar faCreativeCommons = {\n prefix: 'fab',\n iconName: 'creative-commons',\n icon: [496, 512, [], \"f25e\", \"M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z\"]\n};\nvar faCreativeCommonsBy = {\n prefix: 'fab',\n iconName: 'creative-commons-by',\n icon: [496, 512, [], \"f4e7\", \"M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z\"]\n};\nvar faCreativeCommonsNc = {\n prefix: 'fab',\n iconName: 'creative-commons-nc',\n icon: [496, 512, [], \"f4e8\", \"M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z\"]\n};\nvar faCreativeCommonsNcEu = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-eu',\n icon: [496, 512, [], \"f4e9\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z\"]\n};\nvar faCreativeCommonsNcJp = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-jp',\n icon: [496, 512, [], \"f4ea\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z\"]\n};\nvar faCreativeCommonsNd = {\n prefix: 'fab',\n iconName: 'creative-commons-nd',\n icon: [496, 512, [], \"f4eb\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z\"]\n};\nvar faCreativeCommonsPd = {\n prefix: 'fab',\n iconName: 'creative-commons-pd',\n icon: [496, 512, [], \"f4ec\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z\"]\n};\nvar faCreativeCommonsPdAlt = {\n prefix: 'fab',\n iconName: 'creative-commons-pd-alt',\n icon: [496, 512, [], \"f4ed\", \"M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z\"]\n};\nvar faCreativeCommonsRemix = {\n prefix: 'fab',\n iconName: 'creative-commons-remix',\n icon: [496, 512, [], \"f4ee\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z\"]\n};\nvar faCreativeCommonsSa = {\n prefix: 'fab',\n iconName: 'creative-commons-sa',\n icon: [496, 512, [], \"f4ef\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z\"]\n};\nvar faCreativeCommonsSampling = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling',\n icon: [496, 512, [], \"f4f0\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z\"]\n};\nvar faCreativeCommonsSamplingPlus = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling-plus',\n icon: [496, 512, [], \"f4f1\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z\"]\n};\nvar faCreativeCommonsShare = {\n prefix: 'fab',\n iconName: 'creative-commons-share',\n icon: [496, 512, [], \"f4f2\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z\"]\n};\nvar faCreativeCommonsZero = {\n prefix: 'fab',\n iconName: 'creative-commons-zero',\n icon: [496, 512, [], \"f4f3\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z\"]\n};\nvar faCriticalRole = {\n prefix: 'fab',\n iconName: 'critical-role',\n icon: [448, 512, [], \"f6c9\", \"M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z\"]\n};\nvar faCss3 = {\n prefix: 'fab',\n iconName: 'css3',\n icon: [512, 512, [], \"f13c\", \"M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z\"]\n};\nvar faCss3Alt = {\n prefix: 'fab',\n iconName: 'css3-alt',\n icon: [384, 512, [], \"f38b\", \"M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z\"]\n};\nvar faCuttlefish = {\n prefix: 'fab',\n iconName: 'cuttlefish',\n icon: [440, 512, [], \"f38c\", \"M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z\"]\n};\nvar faDAndD = {\n prefix: 'fab',\n iconName: 'd-and-d',\n icon: [576, 512, [], \"f38d\", \"M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z\"]\n};\nvar faDAndDBeyond = {\n prefix: 'fab',\n iconName: 'd-and-d-beyond',\n icon: [640, 512, [], \"f6ca\", \"M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z\"]\n};\nvar faDailymotion = {\n prefix: 'fab',\n iconName: 'dailymotion',\n icon: [448, 512, [], \"e052\", \"M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z\"]\n};\nvar faDashcube = {\n prefix: 'fab',\n iconName: 'dashcube',\n icon: [448, 512, [], \"f210\", \"M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z\"]\n};\nvar faDeezer = {\n prefix: 'fab',\n iconName: 'deezer',\n icon: [576, 512, [], \"e077\", \"M451.46,244.71H576V172H451.46Zm0-173.89v72.67H576V70.82Zm0,275.06H576V273.2H451.46ZM0,447.09H124.54V374.42H0Zm150.47,0H275V374.42H150.47Zm150.52,0H425.53V374.42H301Zm150.47,0H576V374.42H451.46ZM301,345.88H425.53V273.2H301Zm-150.52,0H275V273.2H150.47Zm0-101.17H275V172H150.47Z\"]\n};\nvar faDelicious = {\n prefix: 'fab',\n iconName: 'delicious',\n icon: [448, 512, [], \"f1a5\", \"M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z\"]\n};\nvar faDeploydog = {\n prefix: 'fab',\n iconName: 'deploydog',\n icon: [512, 512, [], \"f38e\", \"M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z\"]\n};\nvar faDeskpro = {\n prefix: 'fab',\n iconName: 'deskpro',\n icon: [480, 512, [], \"f38f\", \"M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z\"]\n};\nvar faDev = {\n prefix: 'fab',\n iconName: 'dev',\n icon: [448, 512, [], \"f6cc\", \"M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z\"]\n};\nvar faDeviantart = {\n prefix: 'fab',\n iconName: 'deviantart',\n icon: [320, 512, [], \"f1bd\", \"M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z\"]\n};\nvar faDhl = {\n prefix: 'fab',\n iconName: 'dhl',\n icon: [640, 512, [], \"f790\", \"M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z\"]\n};\nvar faDiaspora = {\n prefix: 'fab',\n iconName: 'diaspora',\n icon: [512, 512, [], \"f791\", \"M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z\"]\n};\nvar faDigg = {\n prefix: 'fab',\n iconName: 'digg',\n icon: [512, 512, [], \"f1a6\", \"M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z\"]\n};\nvar faDigitalOcean = {\n prefix: 'fab',\n iconName: 'digital-ocean',\n icon: [512, 512, [], \"f391\", \"M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z\"]\n};\nvar faDiscord = {\n prefix: 'fab',\n iconName: 'discord',\n icon: [448, 512, [], \"f392\", \"M297.216 243.2c0 15.616-11.52 28.416-26.112 28.416-14.336 0-26.112-12.8-26.112-28.416s11.52-28.416 26.112-28.416c14.592 0 26.112 12.8 26.112 28.416zm-119.552-28.416c-14.592 0-26.112 12.8-26.112 28.416s11.776 28.416 26.112 28.416c14.592 0 26.112-12.8 26.112-28.416.256-15.616-11.52-28.416-26.112-28.416zM448 52.736V512c-64.494-56.994-43.868-38.128-118.784-107.776l13.568 47.36H52.48C23.552 451.584 0 428.032 0 398.848V52.736C0 23.552 23.552 0 52.48 0h343.04C424.448 0 448 23.552 448 52.736zm-72.96 242.688c0-82.432-36.864-149.248-36.864-149.248-36.864-27.648-71.936-26.88-71.936-26.88l-3.584 4.096c43.52 13.312 63.744 32.512 63.744 32.512-60.811-33.329-132.244-33.335-191.232-7.424-9.472 4.352-15.104 7.424-15.104 7.424s21.248-20.224 67.328-33.536l-2.56-3.072s-35.072-.768-71.936 26.88c0 0-36.864 66.816-36.864 149.248 0 0 21.504 37.12 78.08 38.912 0 0 9.472-11.52 17.152-21.248-32.512-9.728-44.8-30.208-44.8-30.208 3.766 2.636 9.976 6.053 10.496 6.4 43.21 24.198 104.588 32.126 159.744 8.96 8.96-3.328 18.944-8.192 29.44-15.104 0 0-12.8 20.992-46.336 30.464 7.68 9.728 16.896 20.736 16.896 20.736 56.576-1.792 78.336-38.912 78.336-38.912z\"]\n};\nvar faDiscourse = {\n prefix: 'fab',\n iconName: 'discourse',\n icon: [448, 512, [], \"f393\", \"M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z\"]\n};\nvar faDochub = {\n prefix: 'fab',\n iconName: 'dochub',\n icon: [416, 512, [], \"f394\", \"M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z\"]\n};\nvar faDocker = {\n prefix: 'fab',\n iconName: 'docker',\n icon: [640, 512, [], \"f395\", \"M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z\"]\n};\nvar faDraft2digital = {\n prefix: 'fab',\n iconName: 'draft2digital',\n icon: [480, 512, [], \"f396\", \"M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z\"]\n};\nvar faDribbble = {\n prefix: 'fab',\n iconName: 'dribbble',\n icon: [512, 512, [], \"f17d\", \"M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z\"]\n};\nvar faDribbbleSquare = {\n prefix: 'fab',\n iconName: 'dribbble-square',\n icon: [448, 512, [], \"f397\", \"M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z\"]\n};\nvar faDropbox = {\n prefix: 'fab',\n iconName: 'dropbox',\n icon: [528, 512, [], \"f16b\", \"M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z\"]\n};\nvar faDrupal = {\n prefix: 'fab',\n iconName: 'drupal',\n icon: [448, 512, [], \"f1a9\", \"M319.5 114.7c-22.2-14-43.5-19.5-64.7-33.5-13-8.8-31.3-30-46.5-48.3-2.7 29.3-11.5 41.2-22 49.5-21.3 17-34.8 22.2-53.5 32.3C117 123 32 181.5 32 290.5 32 399.7 123.8 480 225.8 480 327.5 480 416 406 416 294c0-112.3-83-171-96.5-179.3zm2.5 325.6c-20.1 20.1-90.1 28.7-116.7 4.2-4.8-4.8.3-12 6.5-12 0 0 17 13.3 51.5 13.3 27 0 46-7.7 54.5-14 6.1-4.6 8.4 4.3 4.2 8.5zm-54.5-52.6c8.7-3.6 29-3.8 36.8 1.3 4.1 2.8 16.1 18.8 6.2 23.7-8.4 4.2-1.2-15.7-26.5-15.7-14.7 0-19.5 5.2-26.7 11-7 6-9.8 8-12.2 4.7-6-8.2 15.9-22.3 22.4-25zM360 405c-15.2-1-45.5-48.8-65-49.5-30.9-.9-104.1 80.7-161.3 42-38.8-26.6-14.6-104.8 51.8-105.2 49.5-.5 83.8 49 108.5 48.5 21.3-.3 61.8-41.8 81.8-41.8 48.7 0 23.3 109.3-15.8 106z\"]\n};\nvar faDyalog = {\n prefix: 'fab',\n iconName: 'dyalog',\n icon: [416, 512, [], \"f399\", \"M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z\"]\n};\nvar faEarlybirds = {\n prefix: 'fab',\n iconName: 'earlybirds',\n icon: [480, 512, [], \"f39a\", \"M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z\"]\n};\nvar faEbay = {\n prefix: 'fab',\n iconName: 'ebay',\n icon: [640, 512, [], \"f4f4\", \"M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z\"]\n};\nvar faEdge = {\n prefix: 'fab',\n iconName: 'edge',\n icon: [512, 512, [], \"f282\", \"M481.92,134.48C440.87,54.18,352.26,8,255.91,8,137.05,8,37.51,91.68,13.47,203.66c26-46.49,86.22-79.14,149.46-79.14,79.27,0,121.09,48.93,122.25,50.18,22,23.8,33,50.39,33,83.1,0,10.4-5.31,25.82-15.11,38.57-1.57,2-6.39,4.84-6.39,11,0,5.06,3.29,9.92,9.14,14,27.86,19.37,80.37,16.81,80.51,16.81A115.39,115.39,0,0,0,444.94,322a118.92,118.92,0,0,0,58.95-102.44C504.39,176.13,488.39,147.26,481.92,134.48ZM212.77,475.67a154.88,154.88,0,0,1-46.64-45c-32.94-47.42-34.24-95.6-20.1-136A155.5,155.5,0,0,1,203,215.75c59-45.2,94.84-5.65,99.06-1a80,80,0,0,0-4.89-10.14c-9.24-15.93-24-36.41-56.56-53.51-33.72-17.69-70.59-18.59-77.64-18.59-38.71,0-77.9,13-107.53,35.69C35.68,183.3,12.77,208.72,8.6,243c-1.08,12.31-2.75,62.8,23,118.27a248,248,0,0,0,248.3,141.61C241.78,496.26,214.05,476.24,212.77,475.67Zm250.72-98.33a7.76,7.76,0,0,0-7.92-.23,181.66,181.66,0,0,1-20.41,9.12,197.54,197.54,0,0,1-69.55,12.52c-91.67,0-171.52-63.06-171.52-144A61.12,61.12,0,0,1,200.61,228,168.72,168.72,0,0,0,161.85,278c-14.92,29.37-33,88.13,13.33,151.66,6.51,8.91,23,30,56,47.67,23.57,12.65,49,19.61,71.7,19.61,35.14,0,115.43-33.44,163-108.87A7.75,7.75,0,0,0,463.49,377.34Z\"]\n};\nvar faEdgeLegacy = {\n prefix: 'fab',\n iconName: 'edge-legacy',\n icon: [512, 512, [], \"e078\", \"M25.71,228.16l.35-.48c0,.16,0,.32-.07.48Zm460.58,15.51c0-44-7.76-84.46-28.81-122.4C416.5,47.88,343.91,8,258.89,8,119,7.72,40.62,113.21,26.06,227.68c42.42-61.31,117.07-121.38,220.37-125,0,0,109.67,0,99.42,105H170c6.37-37.39,18.55-59,34.34-78.93-75.05,34.9-121.85,96.1-120.75,188.32.83,71.45,50.13,144.84,120.75,172,83.35,31.84,192.77,7.2,240.13-21.33V363.31C363.6,419.8,173.6,424.23,172.21,295.74H486.29V243.67Z\"]\n};\nvar faElementor = {\n prefix: 'fab',\n iconName: 'elementor',\n icon: [448, 512, [], \"f430\", \"M425.6 32H22.4C10 32 0 42 0 54.4v403.2C0 470 10 480 22.4 480h403.2c12.4 0 22.4-10 22.4-22.4V54.4C448 42 438 32 425.6 32M164.3 355.5h-39.8v-199h39.8v199zm159.3 0H204.1v-39.8h119.5v39.8zm0-79.6H204.1v-39.8h119.5v39.8zm0-79.7H204.1v-39.8h119.5v39.8z\"]\n};\nvar faEllo = {\n prefix: 'fab',\n iconName: 'ello',\n icon: [496, 512, [], \"f5f1\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z\"]\n};\nvar faEmber = {\n prefix: 'fab',\n iconName: 'ember',\n icon: [640, 512, [], \"f423\", \"M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z\"]\n};\nvar faEmpire = {\n prefix: 'fab',\n iconName: 'empire',\n icon: [496, 512, [], \"f1d1\", \"M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z\"]\n};\nvar faEnvira = {\n prefix: 'fab',\n iconName: 'envira',\n icon: [448, 512, [], \"f299\", \"M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z\"]\n};\nvar faErlang = {\n prefix: 'fab',\n iconName: 'erlang',\n icon: [640, 512, [], \"f39d\", \"M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z\"]\n};\nvar faEthereum = {\n prefix: 'fab',\n iconName: 'ethereum',\n icon: [320, 512, [], \"f42e\", \"M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z\"]\n};\nvar faEtsy = {\n prefix: 'fab',\n iconName: 'etsy',\n icon: [384, 512, [], \"f2d7\", \"M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z\"]\n};\nvar faEvernote = {\n prefix: 'fab',\n iconName: 'evernote',\n icon: [384, 512, [], \"f839\", \"M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z\"]\n};\nvar faExpeditedssl = {\n prefix: 'fab',\n iconName: 'expeditedssl',\n icon: [496, 512, [], \"f23e\", \"M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z\"]\n};\nvar faFacebook = {\n prefix: 'fab',\n iconName: 'facebook',\n icon: [512, 512, [], \"f09a\", \"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z\"]\n};\nvar faFacebookF = {\n prefix: 'fab',\n iconName: 'facebook-f',\n icon: [320, 512, [], \"f39e\", \"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\"]\n};\nvar faFacebookMessenger = {\n prefix: 'fab',\n iconName: 'facebook-messenger',\n icon: [512, 512, [], \"f39f\", \"M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z\"]\n};\nvar faFacebookSquare = {\n prefix: 'fab',\n iconName: 'facebook-square',\n icon: [448, 512, [], \"f082\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z\"]\n};\nvar faFantasyFlightGames = {\n prefix: 'fab',\n iconName: 'fantasy-flight-games',\n icon: [512, 512, [], \"f6dc\", \"M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99a42569.01 42569.01 0 0 1-41.13-40.72zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z\"]\n};\nvar faFedex = {\n prefix: 'fab',\n iconName: 'fedex',\n icon: [640, 512, [], \"f797\", \"M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z\"]\n};\nvar faFedora = {\n prefix: 'fab',\n iconName: 'fedora',\n icon: [448, 512, [], \"f798\", \"M225 32C101.3 31.7.8 131.7.4 255.4L0 425.7a53.6 53.6 0 0 0 53.6 53.9l170.2.4c123.7.3 224.3-99.7 224.6-223.4S348.7 32.3 225 32zm169.8 157.2L333 126.6c2.3-4.7 3.8-9.2 3.8-14.3v-1.6l55.2 56.1a101 101 0 0 1 2.8 22.4zM331 94.3a106.06 106.06 0 0 1 58.5 63.8l-54.3-54.6a26.48 26.48 0 0 0-4.2-9.2zM118.1 247.2a49.66 49.66 0 0 0-7.7 11.4l-8.5-8.5a85.78 85.78 0 0 1 16.2-2.9zM97 251.4l11.8 11.9-.9 8a34.74 34.74 0 0 0 2.4 12.5l-27-27.2a80.6 80.6 0 0 1 13.7-5.2zm-18.2 7.4l38.2 38.4a53.17 53.17 0 0 0-14.1 4.7L67.6 266a107 107 0 0 1 11.2-7.2zm-15.2 9.8l35.3 35.5a67.25 67.25 0 0 0-10.5 8.5L53.5 278a64.33 64.33 0 0 1 10.1-9.4zm-13.3 12.3l34.9 35a56.84 56.84 0 0 0-7.7 11.4l-35.8-35.9c2.8-3.8 5.7-7.2 8.6-10.5zm-11 14.3l36.4 36.6a48.29 48.29 0 0 0-3.6 15.2l-39.5-39.8a99.81 99.81 0 0 1 6.7-12zm-8.8 16.3l41.3 41.8a63.47 63.47 0 0 0 6.7 26.2L25.8 326c1.4-4.9 2.9-9.6 4.7-14.5zm-7.9 43l61.9 62.2a31.24 31.24 0 0 0-3.6 14.3v1.1l-55.4-55.7a88.27 88.27 0 0 1-2.9-21.9zm5.3 30.7l54.3 54.6a28.44 28.44 0 0 0 4.2 9.2 106.32 106.32 0 0 1-58.5-63.8zm-5.3-37a80.69 80.69 0 0 1 2.1-17l72.2 72.5a37.59 37.59 0 0 0-9.9 8.7zm253.3-51.8l-42.6-.1-.1 56c-.2 69.3-64.4 115.8-125.7 102.9-5.7 0-19.9-8.7-19.9-24.2a24.89 24.89 0 0 1 24.5-24.6c6.3 0 6.3 1.6 15.7 1.6a55.91 55.91 0 0 0 56.1-55.9l.1-47c0-4.5-4.5-9-8.9-9l-33.6-.1c-32.6-.1-32.5-49.4.1-49.3l42.6.1.1-56a105.18 105.18 0 0 1 105.6-105 86.35 86.35 0 0 1 20.2 2.3c11.2 1.8 19.9 11.9 19.9 24 0 15.5-14.9 27.8-30.3 23.9-27.4-5.9-65.9 14.4-66 54.9l-.1 47a8.94 8.94 0 0 0 8.9 9l33.6.1c32.5.2 32.4 49.5-.2 49.4zm23.5-.3a35.58 35.58 0 0 0 7.6-11.4l8.5 8.5a102 102 0 0 1-16.1 2.9zm21-4.2L308.6 280l.9-8.1a34.74 34.74 0 0 0-2.4-12.5l27 27.2a74.89 74.89 0 0 1-13.7 5.3zm18-7.4l-38-38.4c4.9-1.1 9.6-2.4 13.7-4.7l36.2 35.9c-3.8 2.5-7.9 5-11.9 7.2zm15.5-9.8l-35.3-35.5a61.06 61.06 0 0 0 10.5-8.5l34.9 35a124.56 124.56 0 0 1-10.1 9zm13.2-12.3l-34.9-35a63.18 63.18 0 0 0 7.7-11.4l35.8 35.9a130.28 130.28 0 0 1-8.6 10.5zm11-14.3l-36.4-36.6a48.29 48.29 0 0 0 3.6-15.2l39.5 39.8a87.72 87.72 0 0 1-6.7 12zm13.5-30.9a140.63 140.63 0 0 1-4.7 14.3L345.6 190a58.19 58.19 0 0 0-7.1-26.2zm1-5.6l-71.9-72.1a32 32 0 0 0 9.9-9.2l64.3 64.7a90.93 90.93 0 0 1-2.3 16.6z\"]\n};\nvar faFigma = {\n prefix: 'fab',\n iconName: 'figma',\n icon: [384, 512, [], \"f799\", \"M277 170.7A85.35 85.35 0 0 0 277 0H106.3a85.3 85.3 0 0 0 0 170.6 85.35 85.35 0 0 0 0 170.7 85.35 85.35 0 1 0 85.3 85.4v-256zm0 0a85.3 85.3 0 1 0 85.3 85.3 85.31 85.31 0 0 0-85.3-85.3z\"]\n};\nvar faFirefox = {\n prefix: 'fab',\n iconName: 'firefox',\n icon: [512, 512, [], \"f269\", \"M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z\"]\n};\nvar faFirefoxBrowser = {\n prefix: 'fab',\n iconName: 'firefox-browser',\n icon: [512, 512, [], \"e007\", \"M189.37,152.86Zm-58.74-29.37C130.79,123.5,130.71,123.5,130.63,123.49Zm351.42,45.35c-10.61-25.5-32.08-53-48.94-61.73,13.72,26.89,21.67,53.88,24.7,74,0,0,0,.14.05.41-27.58-68.75-74.35-96.47-112.55-156.83-1.93-3.05-3.86-6.11-5.74-9.33-1-1.65-1.86-3.34-2.69-5.05A44.88,44.88,0,0,1,333.24.69a.63.63,0,0,0-.55-.66.9.9,0,0,0-.46,0l-.12.07-.18.1.1-.14c-54.23,31.77-76.72,87.38-82.5,122.78a130,130,0,0,0-48.33,12.33,6.25,6.25,0,0,0-3.09,7.75,6.13,6.13,0,0,0,7.79,3.79l.52-.21a117.84,117.84,0,0,1,42.11-11l1.42-.1c2-.12,4-.2,6-.22A122.61,122.61,0,0,1,291,140c.67.2,1.32.42,2,.63,1.89.57,3.76,1.2,5.62,1.87,1.36.5,2.71,1,4.05,1.58,1.09.44,2.18.88,3.25,1.35q2.52,1.13,5,2.35c.75.37,1.5.74,2.25,1.13q2.4,1.26,4.74,2.63,1.51.87,3,1.8a124.89,124.89,0,0,1,42.66,44.13c-13-9.15-36.35-18.19-58.82-14.28,87.74,43.86,64.18,194.9-57.39,189.2a108.43,108.43,0,0,1-31.74-6.12c-2.42-.91-4.8-1.89-7.16-2.93-1.38-.63-2.76-1.27-4.12-2C174.5,346,149.9,316.92,146.83,281.59c0,0,11.25-41.95,80.62-41.95,7.5,0,28.93-20.92,29.33-27-.09-2-42.54-18.87-59.09-35.18-8.85-8.71-13.05-12.91-16.77-16.06a69.58,69.58,0,0,0-6.31-4.77A113.05,113.05,0,0,1,173.92,97c-25.06,11.41-44.55,29.45-58.71,45.37h-.12c-9.67-12.25-9-52.65-8.43-61.08-.12-.53-7.22,3.68-8.15,4.31a178.54,178.54,0,0,0-23.84,20.43A214,214,0,0,0,51.9,133.36l0,0a.08.08,0,0,1,0,0,205.84,205.84,0,0,0-32.73,73.9c-.06.27-2.33,10.21-4,22.48q-.42,2.87-.78,5.74c-.57,3.69-1,7.71-1.44,14,0,.24,0,.48-.05.72-.18,2.71-.34,5.41-.49,8.12,0,.41,0,.82,0,1.24,0,134.7,109.21,243.89,243.92,243.89,120.64,0,220.82-87.58,240.43-202.62.41-3.12.74-6.26,1.11-9.41,4.85-41.83-.54-85.79-15.82-122.55Z\"]\n};\nvar faFirstOrder = {\n prefix: 'fab',\n iconName: 'first-order',\n icon: [448, 512, [], \"f2b0\", \"M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z\"]\n};\nvar faFirstOrderAlt = {\n prefix: 'fab',\n iconName: 'first-order-alt',\n icon: [496, 512, [], \"f50a\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z\"]\n};\nvar faFirstdraft = {\n prefix: 'fab',\n iconName: 'firstdraft',\n icon: [384, 512, [], \"f3a1\", \"M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z\"]\n};\nvar faFlickr = {\n prefix: 'fab',\n iconName: 'flickr',\n icon: [448, 512, [], \"f16e\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z\"]\n};\nvar faFlipboard = {\n prefix: 'fab',\n iconName: 'flipboard',\n icon: [448, 512, [], \"f44d\", \"M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z\"]\n};\nvar faFly = {\n prefix: 'fab',\n iconName: 'fly',\n icon: [384, 512, [], \"f417\", \"M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z\"]\n};\nvar faFontAwesome = {\n prefix: 'fab',\n iconName: 'font-awesome',\n icon: [448, 512, [], \"f2b4\", \"M397.8 32H50.2C22.7 32 0 54.7 0 82.2v347.6C0 457.3 22.7 480 50.2 480h347.6c27.5 0 50.2-22.7 50.2-50.2V82.2c0-27.5-22.7-50.2-50.2-50.2zm-45.4 284.3c0 4.2-3.6 6-7.8 7.8-16.7 7.2-34.6 13.7-53.8 13.7-26.9 0-39.4-16.7-71.7-16.7-23.3 0-47.8 8.4-67.5 17.3-1.2.6-2.4.6-3.6 1.2V385c0 1.8 0 3.6-.6 4.8v1.2c-2.4 8.4-10.2 14.3-19.1 14.3-11.3 0-20.3-9-20.3-20.3V166.4c-7.8-6-13.1-15.5-13.1-26.3 0-18.5 14.9-33.5 33.5-33.5 18.5 0 33.5 14.9 33.5 33.5 0 10.8-4.8 20.3-13.1 26.3v18.5c1.8-.6 3.6-1.2 5.4-2.4 18.5-7.8 40.6-14.3 61.5-14.3 22.7 0 40.6 6 60.9 13.7 4.2 1.8 8.4 2.4 13.1 2.4 22.7 0 47.8-16.1 53.8-16.1 4.8 0 9 3.6 9 7.8v140.3z\"]\n};\nvar faFontAwesomeAlt = {\n prefix: 'fab',\n iconName: 'font-awesome-alt',\n icon: [448, 512, [], \"f35c\", \"M339.3 171.2c-6 0-29.9 15.5-52.6 15.5-4.2 0-8.4-.6-12.5-2.4-19.7-7.8-37-13.7-59.1-13.7-20.3 0-41.8 6.6-59.7 13.7-1.8.6-3.6 1.2-4.8 1.8v-17.9c7.8-6 12.5-14.9 12.5-25.7 0-17.9-14.3-32.3-32.3-32.3s-32.3 14.3-32.3 32.3c0 10.2 4.8 19.7 12.5 25.7v212.1c0 10.8 9 19.7 19.7 19.7 9 0 16.1-6 18.5-13.7V385c.6-1.8.6-3 .6-4.8V336c1.2 0 2.4-.6 3-1.2 19.7-8.4 43-16.7 65.7-16.7 31.1 0 43 16.1 69.3 16.1 18.5 0 36.4-6.6 52-13.7 4.2-1.8 7.2-3.6 7.2-7.8V178.3c1.8-4.1-2.3-7.1-7.7-7.1zM397.8 32H50.2C22.7 32 0 54.7 0 82.2v347.6C0 457.3 22.7 480 50.2 480h347.6c27.5 0 50.2-22.7 50.2-50.2V82.2c0-27.5-22.7-50.2-50.2-50.2zm14.3 397.7c0 7.8-6.6 14.3-14.3 14.3H50.2c-7.8 0-14.3-6.6-14.3-14.3V82.2c0-7.8 6.6-14.3 14.3-14.3h347.6v-.1c7.8 0 14.3 6.6 14.3 14.3z\"]\n};\nvar faFontAwesomeFlag = {\n prefix: 'fab',\n iconName: 'font-awesome-flag',\n icon: [448, 512, [], \"f425\", \"M444.373 359.424c0 7.168-6.144 10.24-13.312 13.312-28.672 12.288-59.392 23.552-92.16 23.552-46.08 0-67.584-28.672-122.88-28.672-39.936 0-81.92 14.336-115.712 29.696-2.048 1.024-4.096 1.024-6.144 2.048v77.824c0 21.405-16.122 34.816-33.792 34.816-19.456 0-34.816-15.36-34.816-34.816V102.4C12.245 92.16 3.029 75.776 3.029 57.344 3.029 25.6 28.629 0 60.373 0s57.344 25.6 57.344 57.344c0 18.432-8.192 34.816-22.528 45.056v31.744c4.124-1.374 58.768-28.672 114.688-28.672 65.27 0 97.676 27.648 126.976 27.648 38.912 0 81.92-27.648 92.16-27.648 8.192 0 15.36 6.144 15.36 13.312v240.64z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'fab',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFonticons = {\n prefix: 'fab',\n iconName: 'fonticons',\n icon: [448, 512, [], \"f280\", \"M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z\"]\n};\nvar faFonticonsFi = {\n prefix: 'fab',\n iconName: 'fonticons-fi',\n icon: [384, 512, [], \"f3a2\", \"M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z\"]\n};\nvar faFortAwesome = {\n prefix: 'fab',\n iconName: 'fort-awesome',\n icon: [512, 512, [], \"f286\", \"M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z\"]\n};\nvar faFortAwesomeAlt = {\n prefix: 'fab',\n iconName: 'fort-awesome-alt',\n icon: [512, 512, [], \"f3a3\", \"M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z\"]\n};\nvar faForumbee = {\n prefix: 'fab',\n iconName: 'forumbee',\n icon: [448, 512, [], \"f211\", \"M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z\"]\n};\nvar faFoursquare = {\n prefix: 'fab',\n iconName: 'foursquare',\n icon: [368, 512, [], \"f180\", \"M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z\"]\n};\nvar faFreeCodeCamp = {\n prefix: 'fab',\n iconName: 'free-code-camp',\n icon: [576, 512, [], \"f2c5\", \"M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z\"]\n};\nvar faFreebsd = {\n prefix: 'fab',\n iconName: 'freebsd',\n icon: [448, 512, [], \"f3a4\", \"M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z\"]\n};\nvar faFulcrum = {\n prefix: 'fab',\n iconName: 'fulcrum',\n icon: [320, 512, [], \"f50b\", \"M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z\"]\n};\nvar faGalacticRepublic = {\n prefix: 'fab',\n iconName: 'galactic-republic',\n icon: [496, 512, [], \"f50c\", \"M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z\"]\n};\nvar faGalacticSenate = {\n prefix: 'fab',\n iconName: 'galactic-senate',\n icon: [512, 512, [], \"f50d\", \"M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z\"]\n};\nvar faGetPocket = {\n prefix: 'fab',\n iconName: 'get-pocket',\n icon: [448, 512, [], \"f265\", \"M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z\"]\n};\nvar faGg = {\n prefix: 'fab',\n iconName: 'gg',\n icon: [512, 512, [], \"f260\", \"M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z\"]\n};\nvar faGgCircle = {\n prefix: 'fab',\n iconName: 'gg-circle',\n icon: [512, 512, [], \"f261\", \"M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z\"]\n};\nvar faGit = {\n prefix: 'fab',\n iconName: 'git',\n icon: [512, 512, [], \"f1d3\", \"M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z\"]\n};\nvar faGitAlt = {\n prefix: 'fab',\n iconName: 'git-alt',\n icon: [448, 512, [], \"f841\", \"M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z\"]\n};\nvar faGitSquare = {\n prefix: 'fab',\n iconName: 'git-square',\n icon: [448, 512, [], \"f1d2\", \"M100.59 334.24c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52.01-5.09 3.29-9.4 6.6-13.46zm27.95-116.64c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47.75-44.47zM448 80v352a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.62 127 243.88 127c-14.48 0-22.88 7.84-22.88 22.31zM199.18 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z\"]\n};\nvar faGithub = {\n prefix: 'fab',\n iconName: 'github',\n icon: [496, 512, [], \"f09b\", \"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\"]\n};\nvar faGithubAlt = {\n prefix: 'fab',\n iconName: 'github-alt',\n icon: [480, 512, [], \"f113\", \"M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z\"]\n};\nvar faGithubSquare = {\n prefix: 'fab',\n iconName: 'github-square',\n icon: [448, 512, [], \"f092\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z\"]\n};\nvar faGitkraken = {\n prefix: 'fab',\n iconName: 'gitkraken',\n icon: [592, 512, [], \"f3a6\", \"M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z\"]\n};\nvar faGitlab = {\n prefix: 'fab',\n iconName: 'gitlab',\n icon: [512, 512, [], \"f296\", \"M105.2 24.9c-3.1-8.9-15.7-8.9-18.9 0L29.8 199.7h132c-.1 0-56.6-174.8-56.6-174.8zM.9 287.7c-2.6 8 .3 16.9 7.1 22l247.9 184-226.2-294zm160.8-88l94.3 294 94.3-294zm349.4 88l-28.8-88-226.3 294 247.9-184c6.9-5.1 9.7-14 7.2-22zM425.7 24.9c-3.1-8.9-15.7-8.9-18.9 0l-56.6 174.8h132z\"]\n};\nvar faGitter = {\n prefix: 'fab',\n iconName: 'gitter',\n icon: [384, 512, [], \"f426\", \"M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z\"]\n};\nvar faGlide = {\n prefix: 'fab',\n iconName: 'glide',\n icon: [448, 512, [], \"f2a5\", \"M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z\"]\n};\nvar faGlideG = {\n prefix: 'fab',\n iconName: 'glide-g',\n icon: [448, 512, [], \"f2a6\", \"M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z\"]\n};\nvar faGofore = {\n prefix: 'fab',\n iconName: 'gofore',\n icon: [400, 512, [], \"f3a7\", \"M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z\"]\n};\nvar faGoodreads = {\n prefix: 'fab',\n iconName: 'goodreads',\n icon: [448, 512, [], \"f3a8\", \"M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z\"]\n};\nvar faGoodreadsG = {\n prefix: 'fab',\n iconName: 'goodreads-g',\n icon: [384, 512, [], \"f3a9\", \"M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z\"]\n};\nvar faGoogle = {\n prefix: 'fab',\n iconName: 'google',\n icon: [488, 512, [], \"f1a0\", \"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\"]\n};\nvar faGoogleDrive = {\n prefix: 'fab',\n iconName: 'google-drive',\n icon: [512, 512, [], \"f3aa\", \"M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z\"]\n};\nvar faGooglePay = {\n prefix: 'fab',\n iconName: 'google-pay',\n icon: [640, 512, [], \"e079\", \"M105.72,215v41.25h57.1a49.66,49.66,0,0,1-21.14,32.6c-9.54,6.55-21.72,10.28-36,10.28-27.6,0-50.93-18.91-59.3-44.22a65.61,65.61,0,0,1,0-41l0,0c8.37-25.46,31.7-44.37,59.3-44.37a56.43,56.43,0,0,1,40.51,16.08L176.47,155a101.24,101.24,0,0,0-70.75-27.84,105.55,105.55,0,0,0-94.38,59.11,107.64,107.64,0,0,0,0,96.18v.15a105.41,105.41,0,0,0,94.38,59c28.47,0,52.55-9.53,70-25.91,20-18.61,31.41-46.15,31.41-78.91A133.76,133.76,0,0,0,205.38,215Zm389.41-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46,0-39.34,8.34-50.5,24.86l20.85,13.26q11.45-17,31.26-17a34.05,34.05,0,0,1,22.75,8.79A28.14,28.14,0,0,1,487.79,248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44,0-29.65,3.88-39.49,11.77s-14.82,18.31-14.82,31.56a39.74,39.74,0,0,0,13.94,31.27c9.25,8.34,21,12.51,34.79,12.51,16.29,0,29.21-7.3,39-21.89h1v17.72h22.61V250C510.25,233.45,505.26,220.34,495.13,211ZM475.9,300.3a37.32,37.32,0,0,1-26.57,11.16A28.61,28.61,0,0,1,431,305.21a19.41,19.41,0,0,1-7.77-15.63c0-7,3.22-12.81,9.54-17.42s14.53-7,24.07-7C470,265,480.3,268,487.64,273.94,487.64,284.07,483.68,292.85,475.9,300.3Zm-93.65-142A55.71,55.71,0,0,0,341.74,142H279.07V328.74H302.7V253.1h39c16,0,29.5-5.36,40.51-15.93.88-.89,1.76-1.79,2.65-2.68A54.45,54.45,0,0,0,382.25,158.26Zm-16.58,62.23a30.65,30.65,0,0,1-23.34,9.68H302.7V165h39.63a32,32,0,0,1,22.6,9.23A33.18,33.18,0,0,1,365.67,220.49ZM614.31,201,577.77,292.7h-.45L539.9,201H514.21L566,320.55l-29.35,64.32H561L640,201Z\"]\n};\nvar faGooglePlay = {\n prefix: 'fab',\n iconName: 'google-play',\n icon: [512, 512, [], \"f3ab\", \"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\"]\n};\nvar faGooglePlus = {\n prefix: 'fab',\n iconName: 'google-plus',\n icon: [512, 512, [], \"f2b3\", \"M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z\"]\n};\nvar faGooglePlusG = {\n prefix: 'fab',\n iconName: 'google-plus-g',\n icon: [640, 512, [], \"f0d5\", \"M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z\"]\n};\nvar faGooglePlusSquare = {\n prefix: 'fab',\n iconName: 'google-plus-square',\n icon: [448, 512, [], \"f0d4\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z\"]\n};\nvar faGoogleWallet = {\n prefix: 'fab',\n iconName: 'google-wallet',\n icon: [448, 512, [], \"f1ee\", \"M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z\"]\n};\nvar faGratipay = {\n prefix: 'fab',\n iconName: 'gratipay',\n icon: [496, 512, [], \"f184\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z\"]\n};\nvar faGrav = {\n prefix: 'fab',\n iconName: 'grav',\n icon: [512, 512, [], \"f2d6\", \"M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z\"]\n};\nvar faGripfire = {\n prefix: 'fab',\n iconName: 'gripfire',\n icon: [384, 512, [], \"f3ac\", \"M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z\"]\n};\nvar faGrunt = {\n prefix: 'fab',\n iconName: 'grunt',\n icon: [384, 512, [], \"f3ad\", \"M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z\"]\n};\nvar faGuilded = {\n prefix: 'fab',\n iconName: 'guilded',\n icon: [448, 512, [], \"e07e\", \"M443.427,64H4.571c0,103.26,22.192,180.06,43.418,222.358C112.046,414.135,224,448,225.256,448a312.824,312.824,0,0,0,140.55-103.477c25.907-33.923,53.1-87.19,65.916-145.761H171.833c4.14,36.429,22.177,67.946,45.1,86.944h88.589c-17.012,28.213-48.186,54.4-80.456,69.482-31.232-13.259-69.09-46.544-96.548-98.362-26.726-53.833-27.092-105.883-27.092-105.883H437.573A625.91,625.91,0,0,0,443.427,64Z\"]\n};\nvar faGulp = {\n prefix: 'fab',\n iconName: 'gulp',\n icon: [256, 512, [], \"f3ae\", \"M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z\"]\n};\nvar faHackerNews = {\n prefix: 'fab',\n iconName: 'hacker-news',\n icon: [448, 512, [], \"f1d4\", \"M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faHackerNewsSquare = {\n prefix: 'fab',\n iconName: 'hacker-news-square',\n icon: [448, 512, [], \"f3af\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faHackerrank = {\n prefix: 'fab',\n iconName: 'hackerrank',\n icon: [512, 512, [], \"f5f7\", \"M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z\"]\n};\nvar faHips = {\n prefix: 'fab',\n iconName: 'hips',\n icon: [640, 512, [], \"f452\", \"M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z\"]\n};\nvar faHireAHelper = {\n prefix: 'fab',\n iconName: 'hire-a-helper',\n icon: [512, 512, [], \"f3b0\", \"M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z\"]\n};\nvar faHive = {\n prefix: 'fab',\n iconName: 'hive',\n icon: [512, 512, [], \"e07f\", \"M260.353,254.878,131.538,33.1a2.208,2.208,0,0,0-3.829.009L.3,254.887A2.234,2.234,0,0,0,.3,257.122L129.116,478.9a2.208,2.208,0,0,0,3.83-.009L260.358,257.113A2.239,2.239,0,0,0,260.353,254.878Zm39.078-25.713a2.19,2.19,0,0,0,1.9,1.111h66.509a2.226,2.226,0,0,0,1.9-3.341L259.115,33.111a2.187,2.187,0,0,0-1.9-1.111H190.707a2.226,2.226,0,0,0-1.9,3.341ZM511.7,254.886,384.9,33.112A2.2,2.2,0,0,0,382.99,32h-66.6a2.226,2.226,0,0,0-1.906,3.34L440.652,256,314.481,476.66a2.226,2.226,0,0,0,1.906,3.34h66.6a2.2,2.2,0,0,0,1.906-1.112L511.7,257.114A2.243,2.243,0,0,0,511.7,254.886ZM366.016,284.917H299.508a2.187,2.187,0,0,0-1.9,1.111l-108.8,190.631a2.226,2.226,0,0,0,1.9,3.341h66.509a2.187,2.187,0,0,0,1.9-1.111l108.8-190.631A2.226,2.226,0,0,0,366.016,284.917Z\"]\n};\nvar faHooli = {\n prefix: 'fab',\n iconName: 'hooli',\n icon: [640, 512, [], \"f427\", \"M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z\"]\n};\nvar faHornbill = {\n prefix: 'fab',\n iconName: 'hornbill',\n icon: [512, 512, [], \"f592\", \"M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z\"]\n};\nvar faHotjar = {\n prefix: 'fab',\n iconName: 'hotjar',\n icon: [448, 512, [], \"f3b1\", \"M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z\"]\n};\nvar faHouzz = {\n prefix: 'fab',\n iconName: 'houzz',\n icon: [448, 512, [], \"f27c\", \"M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z\"]\n};\nvar faHtml5 = {\n prefix: 'fab',\n iconName: 'html5',\n icon: [384, 512, [], \"f13b\", \"M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z\"]\n};\nvar faHubspot = {\n prefix: 'fab',\n iconName: 'hubspot',\n icon: [512, 512, [], \"f3b2\", \"M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z\"]\n};\nvar faIdeal = {\n prefix: 'fab',\n iconName: 'ideal',\n icon: [576, 512, [], \"e013\", \"M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z\"]\n};\nvar faImdb = {\n prefix: 'fab',\n iconName: 'imdb',\n icon: [448, 512, [], \"f2d8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.3 229.2H21c.1-.1.2-.3.3-.4zM97 319.8H64V192h33zm113.2 0h-28.7v-86.4l-11.6 86.4h-20.6l-12.2-84.5v84.5h-29V192h42.8c3.3 19.8 6 39.9 8.7 59.9l7.6-59.9h43zm11.4 0V192h24.6c17.6 0 44.7-1.6 49 20.9 1.7 7.6 1.4 16.3 1.4 24.4 0 88.5 11.1 82.6-75 82.5zm160.9-29.2c0 15.7-2.4 30.9-22.2 30.9-9 0-15.2-3-20.9-9.8l-1.9 8.1h-29.8V192h31.7v41.7c6-6.5 12-9.2 20.9-9.2 21.4 0 22.2 12.8 22.2 30.1zM265 229.9c0-9.7 1.6-16-10.3-16v83.7c12.2.3 10.3-8.7 10.3-18.4zm85.5 26.1c0-5.4 1.1-12.7-6.2-12.7-6 0-4.9 8.9-4.9 12.7 0 .6-1.1 39.6 1.1 44.7.8 1.6 2.2 2.4 3.8 2.4 7.8 0 6.2-9 6.2-14.4z\"]\n};\nvar faInnosoft = {\n prefix: 'fab',\n iconName: 'innosoft',\n icon: [448, 512, [], \"e080\", \"M422.559,159.71a27.379,27.379,0,0,0-13.866-23.337,26.42,26.42,0,0,0-26.211.133L73.943,314.647V176.261a11.955,11.955,0,0,1,6.047-10.34L218.066,86.208a12.153,12.153,0,0,1,11.922.025l32.656,18.853L112.581,191.723v56L359.642,105.086,241.129,36.679c-10.992-6.129-22.3-6.255-33.8-.27l-164.6,95.026c-10.634,6.12-16.771,16.39-17.29,29.124l0,191.5c.17,10.135,5.08,18.672,13.474,23.428a27.037,27.037,0,0,0,26.736-.045L374.057,197.376V335.657a11.976,11.976,0,0,1-5.92,10.368L230.025,425.77a12.175,12.175,0,0,1-11.937.062l-32.723-18.9,150.051-86.627v-56L88.367,406.932l118.794,68.583a33.88,33.88,0,0,0,34.25-.327l164.527-94.995c10.746-6.631,16.649-17.118,16.624-29.528Z\"]\n};\nvar faInstagram = {\n prefix: 'fab',\n iconName: 'instagram',\n icon: [448, 512, [], \"f16d\", \"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\"]\n};\nvar faInstagramSquare = {\n prefix: 'fab',\n iconName: 'instagram-square',\n icon: [448, 512, [], \"e055\", \"M224,202.66A53.34,53.34,0,1,0,277.36,256,53.38,53.38,0,0,0,224,202.66Zm124.71-41a54,54,0,0,0-30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31,6.43a54,54,0,0,0-30.41,30.41c-8.28,21-6.43,71.05-6.43,94.33S91,329.26,99.32,350.33a54,54,0,0,0,30.41,30.41c21,8.29,71,6.43,94.31,6.43s73.24,1.93,94.3-6.43a54,54,0,0,0,30.41-30.41c8.35-21,6.43-71.05,6.43-94.33S357.1,182.74,348.75,161.67ZM224,338a82,82,0,1,1,82-82A81.9,81.9,0,0,1,224,338Zm85.38-148.3a19.14,19.14,0,1,1,19.13-19.14A19.1,19.1,0,0,1,309.42,189.74ZM400,32H48A48,48,0,0,0,0,80V432a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V80A48,48,0,0,0,400,32ZM382.88,322c-1.29,25.63-7.14,48.34-25.85,67s-41.4,24.63-67,25.85c-26.41,1.49-105.59,1.49-132,0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.61,0-132,1.29-25.63,7.07-48.34,25.85-67s41.47-24.56,67-25.78c26.41-1.49,105.59-1.49,132,0,25.63,1.29,48.33,7.15,67,25.85s24.63,41.42,25.85,67.05C384.37,216.44,384.37,295.56,382.88,322Z\"]\n};\nvar faInstalod = {\n prefix: 'fab',\n iconName: 'instalod',\n icon: [512, 512, [], \"e081\", \"M153.384,480H387.113L502.554,275.765,204.229,333.211ZM504.726,240.078,387.113,32H155.669L360.23,267.9ZM124.386,48.809,7.274,256,123.236,461.154,225.627,165.561Z\"]\n};\nvar faIntercom = {\n prefix: 'fab',\n iconName: 'intercom',\n icon: [448, 512, [], \"f7af\", \"M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z\"]\n};\nvar faInternetExplorer = {\n prefix: 'fab',\n iconName: 'internet-explorer',\n icon: [512, 512, [], \"f26b\", \"M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z\"]\n};\nvar faInvision = {\n prefix: 'fab',\n iconName: 'invision',\n icon: [448, 512, [], \"f7b0\", \"M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z\"]\n};\nvar faIoxhost = {\n prefix: 'fab',\n iconName: 'ioxhost',\n icon: [640, 512, [], \"f208\", \"M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z\"]\n};\nvar faItchIo = {\n prefix: 'fab',\n iconName: 'itch-io',\n icon: [512, 512, [], \"f83a\", \"M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z\"]\n};\nvar faItunes = {\n prefix: 'fab',\n iconName: 'itunes',\n icon: [448, 512, [], \"f3b4\", \"M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z\"]\n};\nvar faItunesNote = {\n prefix: 'fab',\n iconName: 'itunes-note',\n icon: [384, 512, [], \"f3b5\", \"M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z\"]\n};\nvar faJava = {\n prefix: 'fab',\n iconName: 'java',\n icon: [384, 512, [], \"f4e4\", \"M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z\"]\n};\nvar faJediOrder = {\n prefix: 'fab',\n iconName: 'jedi-order',\n icon: [448, 512, [], \"f50e\", \"M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z\"]\n};\nvar faJenkins = {\n prefix: 'fab',\n iconName: 'jenkins',\n icon: [512, 512, [], \"f3b6\", \"M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z\"]\n};\nvar faJira = {\n prefix: 'fab',\n iconName: 'jira',\n icon: [496, 512, [], \"f7b1\", \"M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z\"]\n};\nvar faJoget = {\n prefix: 'fab',\n iconName: 'joget',\n icon: [496, 512, [], \"f3b7\", \"M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z\"]\n};\nvar faJoomla = {\n prefix: 'fab',\n iconName: 'joomla',\n icon: [448, 512, [], \"f1aa\", \"M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z\"]\n};\nvar faJs = {\n prefix: 'fab',\n iconName: 'js',\n icon: [448, 512, [], \"f3b8\", \"M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faJsSquare = {\n prefix: 'fab',\n iconName: 'js-square',\n icon: [448, 512, [], \"f3b9\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faJsfiddle = {\n prefix: 'fab',\n iconName: 'jsfiddle',\n icon: [576, 512, [], \"f1cc\", \"M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z\"]\n};\nvar faKaggle = {\n prefix: 'fab',\n iconName: 'kaggle',\n icon: [320, 512, [], \"f5fa\", \"M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z\"]\n};\nvar faKeybase = {\n prefix: 'fab',\n iconName: 'keybase',\n icon: [448, 512, [], \"f4f5\", \"M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z\"]\n};\nvar faKeycdn = {\n prefix: 'fab',\n iconName: 'keycdn',\n icon: [512, 512, [], \"f3ba\", \"M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160\"]\n};\nvar faKickstarter = {\n prefix: 'fab',\n iconName: 'kickstarter',\n icon: [448, 512, [], \"f3bb\", \"M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z\"]\n};\nvar faKickstarterK = {\n prefix: 'fab',\n iconName: 'kickstarter-k',\n icon: [384, 512, [], \"f3bc\", \"M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z\"]\n};\nvar faKorvue = {\n prefix: 'fab',\n iconName: 'korvue',\n icon: [446, 512, [], \"f42f\", \"M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z\"]\n};\nvar faLaravel = {\n prefix: 'fab',\n iconName: 'laravel',\n icon: [512, 512, [], \"f3bd\", \"M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z\"]\n};\nvar faLastfm = {\n prefix: 'fab',\n iconName: 'lastfm',\n icon: [512, 512, [], \"f202\", \"M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z\"]\n};\nvar faLastfmSquare = {\n prefix: 'fab',\n iconName: 'lastfm-square',\n icon: [448, 512, [], \"f203\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z\"]\n};\nvar faLeanpub = {\n prefix: 'fab',\n iconName: 'leanpub',\n icon: [576, 512, [], \"f212\", \"M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z\"]\n};\nvar faLess = {\n prefix: 'fab',\n iconName: 'less',\n icon: [640, 512, [], \"f41d\", \"M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z\"]\n};\nvar faLine = {\n prefix: 'fab',\n iconName: 'line',\n icon: [448, 512, [], \"f3c0\", \"M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z\"]\n};\nvar faLinkedin = {\n prefix: 'fab',\n iconName: 'linkedin',\n icon: [448, 512, [], \"f08c\", \"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\"]\n};\nvar faLinkedinIn = {\n prefix: 'fab',\n iconName: 'linkedin-in',\n icon: [448, 512, [], \"f0e1\", \"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\"]\n};\nvar faLinode = {\n prefix: 'fab',\n iconName: 'linode',\n icon: [448, 512, [], \"f2b8\", \"M437.4 226.3c-.3-.9-.9-1.4-1.4-2l-70-38.6c-.9-.6-2-.6-3.1 0l-58.9 36c-.9.6-1.4 1.7-1.4 2.6l-.9 31.4-24-16c-.9-.6-2.3-.6-3.1 0L240 260.9l-1.4-35.1c0-.9-.6-2-1.4-2.3l-36-24.3 33.7-17.4c1.1-.6 1.7-1.7 1.7-2.9l-5.7-132.3c0-.9-.9-2-1.7-2.6L138.6.3c-.9-.3-1.7-.3-2.3-.3L12.6 38.6c-1.4.6-2.3 2-2 3.7L38 175.4c.9 3.4 34 27.4 38.6 30.9l-26.9 12.9c-1.4.9-2 2.3-1.7 3.4l20.6 100.3c.6 2.9 23.7 23.1 27.1 26.3l-17.4 10.6c-.9.6-1.7 2-1.4 3.1 1.4 7.1 15.4 77.7 16.9 79.1l65.1 69.1c.6.6 1.4.6 2.3.9.6 0 1.1-.3 1.7-.6l83.7-66.9c.9-.6 1.1-1.4 1.1-2.3l-2-46 28 23.7c1.1.9 2.9.9 4 0l66.9-53.4c.9-.6 1.1-1.4 1.1-2.3l2.3-33.4 20.3 14c1.1.9 2.6.9 3.7 0l54.6-43.7c.6-.3 1.1-1.1 1.1-2 .9-6.5 10.3-70.8 9.7-72.8zm-204.8 4.8l4 92.6-90.6 61.2-14-96.6 100.6-57.2zm-7.7-180l5.4 126-106.6 55.4L104 97.7l120.9-46.6zM44 173.1L18 48l79.7 49.4 19.4 132.9L44 173.1zm30.6 147.8L55.7 230l70 58.3 13.7 93.4-64.8-60.8zm24.3 117.7l-13.7-67.1 61.7 60.9 9.7 67.4-57.7-61.2zm64.5 64.5l-10.6-70.9 85.7-61.4 3.1 70-78.2 62.3zm82-115.1c0-3.4.9-22.9-2-25.1l-24.3-20 22.3-14.9c2.3-1.7 1.1-5.7 1.1-8l29.4 22.6.6 68.3-27.1-22.9zm94.3-25.4l-60.9 48.6-.6-68.6 65.7-46.9-4.2 66.9zm27.7-25.7l-19.1-13.4 2-34c.3-.9-.3-2-1.1-2.6L308 259.7l.6-30 64.6 40.6-5.8 66.6zm54.6-39.8l-48.3 38.3 5.7-65.1 51.1-36.6-8.5 63.4z\"]\n};\nvar faLinux = {\n prefix: 'fab',\n iconName: 'linux',\n icon: [448, 512, [], \"f17c\", \"M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z\"]\n};\nvar faLyft = {\n prefix: 'fab',\n iconName: 'lyft',\n icon: [512, 512, [], \"f3c3\", \"M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z\"]\n};\nvar faMagento = {\n prefix: 'fab',\n iconName: 'magento',\n icon: [448, 512, [], \"f3c4\", \"M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z\"]\n};\nvar faMailchimp = {\n prefix: 'fab',\n iconName: 'mailchimp',\n icon: [448, 512, [], \"f59e\", \"M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z\"]\n};\nvar faMandalorian = {\n prefix: 'fab',\n iconName: 'mandalorian',\n icon: [448, 512, [], \"f50f\", \"M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z\"]\n};\nvar faMarkdown = {\n prefix: 'fab',\n iconName: 'markdown',\n icon: [640, 512, [], \"f60f\", \"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z\"]\n};\nvar faMastodon = {\n prefix: 'fab',\n iconName: 'mastodon',\n icon: [448, 512, [], \"f4f6\", \"M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z\"]\n};\nvar faMaxcdn = {\n prefix: 'fab',\n iconName: 'maxcdn',\n icon: [512, 512, [], \"f136\", \"M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z\"]\n};\nvar faMdb = {\n prefix: 'fab',\n iconName: 'mdb',\n icon: [576, 512, [], \"f8ca\", \"M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z\"]\n};\nvar faMedapps = {\n prefix: 'fab',\n iconName: 'medapps',\n icon: [320, 512, [], \"f3c6\", \"M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z\"]\n};\nvar faMedium = {\n prefix: 'fab',\n iconName: 'medium',\n icon: [448, 512, [], \"f23a\", \"M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z\"]\n};\nvar faMediumM = {\n prefix: 'fab',\n iconName: 'medium-m',\n icon: [512, 512, [], \"f3c7\", \"M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z\"]\n};\nvar faMedrt = {\n prefix: 'fab',\n iconName: 'medrt',\n icon: [544, 512, [], \"f3c8\", \"M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z\"]\n};\nvar faMeetup = {\n prefix: 'fab',\n iconName: 'meetup',\n icon: [512, 512, [], \"f2e0\", \"M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z\"]\n};\nvar faMegaport = {\n prefix: 'fab',\n iconName: 'megaport',\n icon: [496, 512, [], \"f5a3\", \"M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z\"]\n};\nvar faMendeley = {\n prefix: 'fab',\n iconName: 'mendeley',\n icon: [640, 512, [], \"f7b3\", \"M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z\"]\n};\nvar faMicroblog = {\n prefix: 'fab',\n iconName: 'microblog',\n icon: [448, 512, [], \"e01a\", \"M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z\"]\n};\nvar faMicrosoft = {\n prefix: 'fab',\n iconName: 'microsoft',\n icon: [448, 512, [], \"f3ca\", \"M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z\"]\n};\nvar faMix = {\n prefix: 'fab',\n iconName: 'mix',\n icon: [448, 512, [], \"f3cb\", \"M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z\"]\n};\nvar faMixcloud = {\n prefix: 'fab',\n iconName: 'mixcloud',\n icon: [640, 512, [], \"f289\", \"M424.43 219.729C416.124 134.727 344.135 68 256.919 68c-72.266 0-136.224 46.516-159.205 114.074-54.545 8.029-96.63 54.822-96.63 111.582 0 62.298 50.668 112.966 113.243 112.966h289.614c52.329 0 94.969-42.362 94.969-94.693 0-45.131-32.118-83.063-74.48-92.2zm-20.489 144.53H114.327c-39.04 0-70.881-31.564-70.881-70.604s31.841-70.604 70.881-70.604c18.827 0 36.548 7.475 49.838 20.766 19.963 19.963 50.133-10.227 30.18-30.18-14.675-14.398-32.672-24.365-52.053-29.349 19.935-44.3 64.79-73.926 114.628-73.926 69.496 0 125.979 56.483 125.979 125.702 0 13.568-2.215 26.857-6.369 39.594-8.943 27.517 32.133 38.939 40.147 13.29 2.769-8.306 4.984-16.889 6.369-25.472 19.381 7.476 33.502 26.303 33.502 48.453 0 28.795-23.535 52.33-52.607 52.33zm235.069-52.33c0 44.024-12.737 86.386-37.102 122.657-4.153 6.092-10.798 9.414-17.72 9.414-16.317 0-27.127-18.826-17.443-32.949 19.381-29.349 29.903-63.682 29.903-99.122s-10.521-69.773-29.903-98.845c-15.655-22.831 19.361-47.24 35.163-23.534 24.366 35.993 37.102 78.356 37.102 122.379zm-70.88 0c0 31.565-9.137 62.021-26.857 88.325-4.153 6.091-10.798 9.136-17.72 9.136-17.201 0-27.022-18.979-17.443-32.948 13.013-19.104 19.658-41.255 19.658-64.513 0-22.981-6.645-45.408-19.658-64.512-15.761-22.986 19.008-47.095 35.163-23.535 17.719 26.026 26.857 56.483 26.857 88.047z\"]\n};\nvar faMixer = {\n prefix: 'fab',\n iconName: 'mixer',\n icon: [512, 512, [], \"e056\", \"M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z\"]\n};\nvar faMizuni = {\n prefix: 'fab',\n iconName: 'mizuni',\n icon: [496, 512, [], \"f3cc\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z\"]\n};\nvar faModx = {\n prefix: 'fab',\n iconName: 'modx',\n icon: [448, 512, [], \"f285\", \"M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z\"]\n};\nvar faMonero = {\n prefix: 'fab',\n iconName: 'monero',\n icon: [496, 512, [], \"f3d0\", \"M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z\"]\n};\nvar faNapster = {\n prefix: 'fab',\n iconName: 'napster',\n icon: [496, 512, [], \"f3d2\", \"M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z\"]\n};\nvar faNeos = {\n prefix: 'fab',\n iconName: 'neos',\n icon: [512, 512, [], \"f612\", \"M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z\"]\n};\nvar faNimblr = {\n prefix: 'fab',\n iconName: 'nimblr',\n icon: [384, 512, [], \"f5a8\", \"M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z\"]\n};\nvar faNode = {\n prefix: 'fab',\n iconName: 'node',\n icon: [640, 512, [], \"f419\", \"M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z\"]\n};\nvar faNodeJs = {\n prefix: 'fab',\n iconName: 'node-js',\n icon: [448, 512, [], \"f3d3\", \"M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z\"]\n};\nvar faNpm = {\n prefix: 'fab',\n iconName: 'npm',\n icon: [576, 512, [], \"f3d4\", \"M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z\"]\n};\nvar faNs8 = {\n prefix: 'fab',\n iconName: 'ns8',\n icon: [640, 512, [], \"f3d5\", \"M104.324,269.172h26.067V242.994H104.324Zm52.466-26.178-.055-26.178v-.941a39.325,39.325,0,0,0-78.644.941v.166h26.4v-.166a12.98,12.98,0,0,1,25.956,0v26.178Zm52.356,25.846a91.1,91.1,0,0,1-91.1,91.1h-.609a91.1,91.1,0,0,1-91.1-91.1H0v.166A117.33,117.33,0,0,0,117.44,386.28h.775A117.331,117.331,0,0,0,235.49,268.84V242.828H209.146Zm-157.233,0a65.362,65.362,0,0,0,130.723,0H156.292a39.023,39.023,0,0,1-78.035,0V242.883H51.968v-26.62A65.42,65.42,0,0,1,182.8,217.48v25.293h26.344V217.48a91.761,91.761,0,0,0-183.522,0v25.4H51.913Zm418.4-71.173c13.67,0,24.573,6.642,30.052,18.264l.719,1.549,23.245-11.511-.609-1.439c-8.025-19.26-28.5-31.27-53.407-31.27-23.134,0-43.611,11.4-50.972,28.447-.123,26.876-.158,23.9,0,24.85,4.7,11.013,14.555,19.37,28.668,24.241a102.033,102.033,0,0,0,19.813,3.984c5.479.72,10.626,1.384,15.829,3.1,6.364,2.1,10.46,5.257,12.84,9.851v9.851c-3.708,7.527-13.781,12.342-25.791,12.342-14.334,0-25.956-6.918-31.933-19.039l-.72-1.494L415.026,280.9l.553,1.439c7.915,19.426,29.609,32.044,55.289,32.044,23.632,0,44.608-11.4,52.3-28.447l.166-25.9-.166-.664c-4.87-11.014-15.219-19.647-28.944-24.241-7.693-2.712-14.335-3.6-20.7-4.427a83.777,83.777,0,0,1-14.832-2.878c-6.31-1.937-10.4-5.092-12.619-9.63v-8.412C449.45,202.427,458.969,197.667,470.315,197.667ZM287.568,311.344h26.067v-68.4H287.568Zm352.266-53.3c-2.933-6.254-8.3-12.01-15.441-16.714A37.99,37.99,0,0,0,637.4,226l.166-25.347-.166-.664C630.038,184,610.667,173.26,589.25,173.26S548.461,184,541.1,199.992l-.166,25.347.166.664a39.643,39.643,0,0,0,13.006,15.331c-7.2,4.7-12.508,10.46-15.441,16.714l-.166,28.889.166.72c7.582,15.994,27.893,26.731,50.585,26.731s43.057-10.737,50.584-26.731l.166-28.89Zm-73.22-50.806c3.6-6.31,12.563-10.516,22.58-10.516s19.038,4.206,22.636,10.516v13.725c-3.542,6.2-12.563,10.349-22.636,10.349s-19.094-4.15-22.58-10.349Zm47.319,72.169c-3.764,6.641-13.338,10.9-24.683,10.9-11.125,0-20.976-4.372-24.684-10.9V263.25c3.708-6.309,13.5-10.515,24.684-10.515,11.345,0,20.919,4.15,24.683,10.515ZM376.4,265.962l-59.827-89.713h-29v40.623h26.51v.387l62.539,94.085H402.3V176.249H376.4Z\"]\n};\nvar faNutritionix = {\n prefix: 'fab',\n iconName: 'nutritionix',\n icon: [400, 512, [], \"f3d6\", \"M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z\"]\n};\nvar faOctopusDeploy = {\n prefix: 'fab',\n iconName: 'octopus-deploy',\n icon: [512, 512, [], \"e082\", \"M455.6,349.2c-45.891-39.09-36.67-77.877-16.095-128.11C475.16,134.04,415.967,34.14,329.93,8.3,237.04-19.6,134.252,24.341,99.677,117.147a180.862,180.862,0,0,0-10.988,73.544c1.733,29.543,14.717,52.97,24.09,80.3,17.2,50.161-28.1,92.743-66.662,117.582-46.806,30.2-36.319,39.857-8.428,41.858,23.378,1.68,44.478-4.548,65.265-15.045,9.2-4.647,40.687-18.931,45.13-28.588C135.9,413.388,111.122,459.5,126.621,488.9c19.1,36.229,67.112-31.77,76.709-45.812,8.591-12.572,42.963-81.279,63.627-46.926,18.865,31.361,8.6,76.391,35.738,104.622,32.854,34.2,51.155-18.312,51.412-44.221.163-16.411-6.1-95.852,29.9-59.944C405.428,418,436.912,467.8,472.568,463.642c38.736-4.516-22.123-67.967-28.262-78.695,5.393,4.279,53.665,34.128,53.818,9.52C498.234,375.678,468.039,359.8,455.6,349.2Z\"]\n};\nvar faOdnoklassniki = {\n prefix: 'fab',\n iconName: 'odnoklassniki',\n icon: [320, 512, [], \"f263\", \"M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z\"]\n};\nvar faOdnoklassnikiSquare = {\n prefix: 'fab',\n iconName: 'odnoklassniki-square',\n icon: [448, 512, [], \"f264\", \"M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z\"]\n};\nvar faOldRepublic = {\n prefix: 'fab',\n iconName: 'old-republic',\n icon: [496, 512, [], \"f510\", \"M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z\"]\n};\nvar faOpencart = {\n prefix: 'fab',\n iconName: 'opencart',\n icon: [640, 512, [], \"f23d\", \"M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z\"]\n};\nvar faOpenid = {\n prefix: 'fab',\n iconName: 'openid',\n icon: [448, 512, [], \"f19b\", \"M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z\"]\n};\nvar faOpera = {\n prefix: 'fab',\n iconName: 'opera',\n icon: [496, 512, [], \"f26a\", \"M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z\"]\n};\nvar faOptinMonster = {\n prefix: 'fab',\n iconName: 'optin-monster',\n icon: [576, 512, [], \"f23c\", \"M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z\"]\n};\nvar faOrcid = {\n prefix: 'fab',\n iconName: 'orcid',\n icon: [512, 512, [], \"f8d2\", \"M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z\"]\n};\nvar faOsi = {\n prefix: 'fab',\n iconName: 'osi',\n icon: [512, 512, [], \"f41a\", \"M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z\"]\n};\nvar faPage4 = {\n prefix: 'fab',\n iconName: 'page4',\n icon: [496, 512, [], \"f3d7\", \"M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z\"]\n};\nvar faPagelines = {\n prefix: 'fab',\n iconName: 'pagelines',\n icon: [384, 512, [], \"f18c\", \"M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z\"]\n};\nvar faPalfed = {\n prefix: 'fab',\n iconName: 'palfed',\n icon: [576, 512, [], \"f3d8\", \"M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z\"]\n};\nvar faPatreon = {\n prefix: 'fab',\n iconName: 'patreon',\n icon: [512, 512, [], \"f3d9\", \"M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z\"]\n};\nvar faPaypal = {\n prefix: 'fab',\n iconName: 'paypal',\n icon: [384, 512, [], \"f1ed\", \"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z\"]\n};\nvar faPennyArcade = {\n prefix: 'fab',\n iconName: 'penny-arcade',\n icon: [640, 512, [], \"f704\", \"M421.91 164.27c-4.49 19.45-1.4 6.06-15.1 65.29l39.73-10.61c-22.34-49.61-17.29-38.41-24.63-54.68zm-206.09 51.11c-20.19 5.4-11.31 3.03-39.63 10.58l4.46 46.19c28.17-7.59 20.62-5.57 34.82-9.34 42.3-9.79 32.85-56.42.35-47.43zm326.16-26.19l-45.47-99.2c-5.69-12.37-19.46-18.84-32.62-15.33-70.27 18.75-38.72 10.32-135.59 36.23a27.618 27.618 0 0 0-18.89 17.41C144.26 113.27 0 153.75 0 226.67c0 33.5 30.67 67.11 80.9 95.37l1.74 17.88a27.891 27.891 0 0 0-17.77 28.67l4.3 44.48c1.39 14.31 13.43 25.21 27.8 25.2 5.18-.01-3.01 1.78 122.53-31.76 12.57-3.37 21.12-15.02 20.58-28.02 216.59 45.5 401.99-5.98 399.89-84.83.01-28.15-22.19-66.56-97.99-104.47zM255.14 298.3l-21.91 5.88-48.44 12.91 2.46 23.55 20.53-5.51 4.51 44.51-115.31 30.78-4.3-44.52 20.02-5.35-11.11-114.64-20.12 5.39-4.35-44.5c178.15-47.54 170.18-46.42 186.22-46.65 56.66-1.13 64.15 71.84 42.55 104.43a86.7 86.7 0 0 1-50.75 33.72zm199.18 16.62l-3.89-39.49 14.9-3.98-6.61-14.68-57.76 15.42-4.1 17.54 19.2-5.12 4.05 39.54-112.85 30.07-4.46-44.43 20.99-5.59 33.08-126.47-17.15 4.56-4.2-44.48c93.36-24.99 65.01-17.41 135.59-36.24l66.67 145.47 20.79-5.56 4.3 44.48-108.55 28.96z\"]\n};\nvar faPerbyte = {\n prefix: 'fab',\n iconName: 'perbyte',\n icon: [448, 512, [], \"e083\", \"M305.314,284.578H246.6V383.3h58.711q24.423,0,38.193-13.77t13.77-36.11q0-21.826-14.032-35.335T305.314,284.578ZM149.435,128.7H90.724v98.723h58.711q24.42,0,38.19-13.773t13.77-36.107q0-21.826-14.029-35.338T149.435,128.7ZM366.647,32H81.353A81.445,81.445,0,0,0,0,113.352V398.647A81.445,81.445,0,0,0,81.353,480H366.647A81.445,81.445,0,0,0,448,398.647V113.352A81.445,81.445,0,0,0,366.647,32Zm63.635,366.647a63.706,63.706,0,0,1-63.635,63.635H81.353a63.706,63.706,0,0,1-63.635-63.635V113.352A63.706,63.706,0,0,1,81.353,49.718H366.647a63.706,63.706,0,0,1,63.635,63.634ZM305.314,128.7H246.6v98.723h58.711q24.423,0,38.193-13.773t13.77-36.107q0-21.826-14.032-35.338T305.314,128.7Z\"]\n};\nvar faPeriscope = {\n prefix: 'fab',\n iconName: 'periscope',\n icon: [448, 512, [], \"f3da\", \"M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z\"]\n};\nvar faPhabricator = {\n prefix: 'fab',\n iconName: 'phabricator',\n icon: [496, 512, [], \"f3db\", \"M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z\"]\n};\nvar faPhoenixFramework = {\n prefix: 'fab',\n iconName: 'phoenix-framework',\n icon: [640, 512, [], \"f3dc\", \"M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z\"]\n};\nvar faPhoenixSquadron = {\n prefix: 'fab',\n iconName: 'phoenix-squadron',\n icon: [512, 512, [], \"f511\", \"M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z\"]\n};\nvar faPhp = {\n prefix: 'fab',\n iconName: 'php',\n icon: [640, 512, [], \"f457\", \"M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z\"]\n};\nvar faPiedPiper = {\n prefix: 'fab',\n iconName: 'pied-piper',\n icon: [480, 512, [], \"f2ae\", \"M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z\"]\n};\nvar faPiedPiperAlt = {\n prefix: 'fab',\n iconName: 'pied-piper-alt',\n icon: [576, 512, [], \"f1a8\", \"M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z\"]\n};\nvar faPiedPiperHat = {\n prefix: 'fab',\n iconName: 'pied-piper-hat',\n icon: [640, 512, [], \"f4e5\", \"M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z\"]\n};\nvar faPiedPiperPp = {\n prefix: 'fab',\n iconName: 'pied-piper-pp',\n icon: [448, 512, [], \"f1a7\", \"M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z\"]\n};\nvar faPiedPiperSquare = {\n prefix: 'fab',\n iconName: 'pied-piper-square',\n icon: [448, 512, [], \"e01e\", \"M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z\"]\n};\nvar faPinterest = {\n prefix: 'fab',\n iconName: 'pinterest',\n icon: [496, 512, [], \"f0d2\", \"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\"]\n};\nvar faPinterestP = {\n prefix: 'fab',\n iconName: 'pinterest-p',\n icon: [384, 512, [], \"f231\", \"M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z\"]\n};\nvar faPinterestSquare = {\n prefix: 'fab',\n iconName: 'pinterest-square',\n icon: [448, 512, [], \"f0d3\", \"M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z\"]\n};\nvar faPlaystation = {\n prefix: 'fab',\n iconName: 'playstation',\n icon: [576, 512, [], \"f3df\", \"M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z\"]\n};\nvar faProductHunt = {\n prefix: 'fab',\n iconName: 'product-hunt',\n icon: [512, 512, [], \"f288\", \"M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z\"]\n};\nvar faPushed = {\n prefix: 'fab',\n iconName: 'pushed',\n icon: [432, 512, [], \"f3e1\", \"M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z\"]\n};\nvar faPython = {\n prefix: 'fab',\n iconName: 'python',\n icon: [448, 512, [], \"f3e2\", \"M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z\"]\n};\nvar faQq = {\n prefix: 'fab',\n iconName: 'qq',\n icon: [448, 512, [], \"f1d6\", \"M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z\"]\n};\nvar faQuinscape = {\n prefix: 'fab',\n iconName: 'quinscape',\n icon: [512, 512, [], \"f459\", \"M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z\"]\n};\nvar faQuora = {\n prefix: 'fab',\n iconName: 'quora',\n icon: [448, 512, [], \"f2c4\", \"M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z\"]\n};\nvar faRProject = {\n prefix: 'fab',\n iconName: 'r-project',\n icon: [581, 512, [], \"f4f7\", \"M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z\"]\n};\nvar faRaspberryPi = {\n prefix: 'fab',\n iconName: 'raspberry-pi',\n icon: [407, 512, [], \"f7bb\", \"M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z\"]\n};\nvar faRavelry = {\n prefix: 'fab',\n iconName: 'ravelry',\n icon: [512, 512, [], \"f2d9\", \"M498.252,234.223c-1.208-10.34-1.7-20.826-3.746-31a310.306,310.306,0,0,0-9.622-36.6,184.068,184.068,0,0,0-30.874-57.5,251.154,251.154,0,0,0-18.818-21.689,237.362,237.362,0,0,0-47.113-36.116A240.8,240.8,0,0,0,331.356,26.65c-11.018-3.1-22.272-5.431-33.515-7.615-6.78-1.314-13.749-1.667-20.627-2.482-.316-.036-.6-.358-.9-.553q-16.143.009-32.288.006c-2.41.389-4.808.925-7.236,1.15a179.331,179.331,0,0,0-34.256,7.1,221.5,221.5,0,0,0-39.768,16.355,281.385,281.385,0,0,0-38.08,24.158c-6.167,4.61-12.268,9.36-17.974,14.518C96.539,88.494,86.34,97.72,76.785,107.555a243.878,243.878,0,0,0-33.648,43.95,206.488,206.488,0,0,0-20.494,44.6,198.2,198.2,0,0,0-7.691,34.759A201.13,201.13,0,0,0,13.4,266.385a299.716,299.716,0,0,0,4.425,40.24,226.865,226.865,0,0,0,16.73,53.3,210.543,210.543,0,0,0,24,39.528,213.589,213.589,0,0,0,26.358,28.416A251.313,251.313,0,0,0,126.7,458.455a287.831,287.831,0,0,0,55.9,25.277,269.5,269.5,0,0,0,40.641,9.835c6.071,1.01,12.275,1.253,18.412,1.873a4.149,4.149,0,0,1,1.19.56h32.289c2.507-.389,5-.937,7.527-1.143,16.336-1.332,32.107-5.335,47.489-10.717A219.992,219.992,0,0,0,379.1,460.322c9.749-6.447,19.395-13.077,28.737-20.1,5.785-4.348,10.988-9.5,16.3-14.457,3.964-3.7,7.764-7.578,11.51-11.5a232.162,232.162,0,0,0,31.427-41.639c9.542-16.045,17.355-32.905,22.3-50.926,2.859-10.413,4.947-21.045,7.017-31.652,1.032-5.279,1.251-10.723,1.87-16.087.036-.317.358-.6.552-.9V236.005A9.757,9.757,0,0,1,498.252,234.223Zm-161.117-1.15s-16.572-2.98-28.47-2.98c-27.2,0-33.57,14.9-33.57,37.04V360.8H201.582V170.062H275.1v31.931c8.924-26.822,26.771-36.189,62.04-36.189Z\"]\n};\nvar faReact = {\n prefix: 'fab',\n iconName: 'react',\n icon: [512, 512, [], \"f41b\", \"M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z\"]\n};\nvar faReacteurope = {\n prefix: 'fab',\n iconName: 'reacteurope',\n icon: [576, 512, [], \"f75d\", \"M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z\"]\n};\nvar faReadme = {\n prefix: 'fab',\n iconName: 'readme',\n icon: [576, 512, [], \"f4d5\", \"M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z\"]\n};\nvar faRebel = {\n prefix: 'fab',\n iconName: 'rebel',\n icon: [512, 512, [], \"f1d0\", \"M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z\"]\n};\nvar faRedRiver = {\n prefix: 'fab',\n iconName: 'red-river',\n icon: [448, 512, [], \"f3e3\", \"M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z\"]\n};\nvar faReddit = {\n prefix: 'fab',\n iconName: 'reddit',\n icon: [512, 512, [], \"f1a1\", \"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z\"]\n};\nvar faRedditAlien = {\n prefix: 'fab',\n iconName: 'reddit-alien',\n icon: [512, 512, [], \"f281\", \"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\"]\n};\nvar faRedditSquare = {\n prefix: 'fab',\n iconName: 'reddit-square',\n icon: [448, 512, [], \"f1a2\", \"M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z\"]\n};\nvar faRedhat = {\n prefix: 'fab',\n iconName: 'redhat',\n icon: [512, 512, [], \"f7bc\", \"M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24\"]\n};\nvar faRenren = {\n prefix: 'fab',\n iconName: 'renren',\n icon: [512, 512, [], \"f18b\", \"M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z\"]\n};\nvar faReplyd = {\n prefix: 'fab',\n iconName: 'replyd',\n icon: [448, 512, [], \"f3e6\", \"M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z\"]\n};\nvar faResearchgate = {\n prefix: 'fab',\n iconName: 'researchgate',\n icon: [448, 512, [], \"f4f8\", \"M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z\"]\n};\nvar faResolving = {\n prefix: 'fab',\n iconName: 'resolving',\n icon: [496, 512, [], \"f3e7\", \"M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z\"]\n};\nvar faRev = {\n prefix: 'fab',\n iconName: 'rev',\n icon: [448, 512, [], \"f5b2\", \"M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z\"]\n};\nvar faRocketchat = {\n prefix: 'fab',\n iconName: 'rocketchat',\n icon: [576, 512, [], \"f3e8\", \"M284.046,224.8a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,284.046,224.8Zm-110.45,0a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,173.6,224.8Zm220.923,0a34.114,34.114,0,1,0,34.317,34.113A34.215,34.215,0,0,0,394.519,224.8Zm153.807-55.319c-15.535-24.172-37.31-45.57-64.681-63.618-52.886-34.817-122.374-54-195.666-54a405.975,405.975,0,0,0-72.032,6.357,238.524,238.524,0,0,0-49.51-36.588C99.684-11.7,40.859.711,11.135,11.421A14.291,14.291,0,0,0,5.58,34.782C26.542,56.458,61.222,99.3,52.7,138.252c-33.142,33.9-51.112,74.776-51.112,117.337,0,43.372,17.97,84.248,51.112,118.148,8.526,38.956-26.154,81.816-47.116,103.491a14.284,14.284,0,0,0,5.555,23.34c29.724,10.709,88.549,23.147,155.324-10.2a238.679,238.679,0,0,0,49.51-36.589A405.972,405.972,0,0,0,288,460.14c73.313,0,142.8-19.159,195.667-53.975,27.371-18.049,49.145-39.426,64.679-63.619,17.309-26.923,26.07-55.916,26.07-86.125C574.394,225.4,565.634,196.43,548.326,169.485ZM284.987,409.9a345.65,345.65,0,0,1-89.446-11.5l-20.129,19.393a184.366,184.366,0,0,1-37.138,27.585,145.767,145.767,0,0,1-52.522,14.87c.983-1.771,1.881-3.563,2.842-5.356q30.258-55.68,16.325-100.078c-32.992-25.962-52.778-59.2-52.778-95.4,0-83.1,104.254-150.469,232.846-150.469s232.867,67.373,232.867,150.469C517.854,342.525,413.6,409.9,284.987,409.9Z\"]\n};\nvar faRockrms = {\n prefix: 'fab',\n iconName: 'rockrms',\n icon: [496, 512, [], \"f3e9\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z\"]\n};\nvar faRust = {\n prefix: 'fab',\n iconName: 'rust',\n icon: [512, 512, [], \"e07a\", \"M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z\"]\n};\nvar faSafari = {\n prefix: 'fab',\n iconName: 'safari',\n icon: [512, 512, [], \"f267\", \"M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z\"]\n};\nvar faSalesforce = {\n prefix: 'fab',\n iconName: 'salesforce',\n icon: [640, 512, [], \"f83b\", \"M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z\"]\n};\nvar faSass = {\n prefix: 'fab',\n iconName: 'sass',\n icon: [640, 512, [], \"f41e\", \"M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z\"]\n};\nvar faSchlix = {\n prefix: 'fab',\n iconName: 'schlix',\n icon: [448, 512, [], \"f3ea\", \"M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z\"]\n};\nvar faScribd = {\n prefix: 'fab',\n iconName: 'scribd',\n icon: [384, 512, [], \"f28a\", \"M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z\"]\n};\nvar faSearchengin = {\n prefix: 'fab',\n iconName: 'searchengin',\n icon: [460, 512, [], \"f3eb\", \"M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z\"]\n};\nvar faSellcast = {\n prefix: 'fab',\n iconName: 'sellcast',\n icon: [448, 512, [], \"f2da\", \"M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z\"]\n};\nvar faSellsy = {\n prefix: 'fab',\n iconName: 'sellsy',\n icon: [640, 512, [], \"f213\", \"M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z\"]\n};\nvar faServicestack = {\n prefix: 'fab',\n iconName: 'servicestack',\n icon: [496, 512, [], \"f3ec\", \"M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z\"]\n};\nvar faShirtsinbulk = {\n prefix: 'fab',\n iconName: 'shirtsinbulk',\n icon: [448, 512, [], \"f214\", \"M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z\"]\n};\nvar faShopify = {\n prefix: 'fab',\n iconName: 'shopify',\n icon: [448, 512, [], \"e057\", \"M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z\"]\n};\nvar faShopware = {\n prefix: 'fab',\n iconName: 'shopware',\n icon: [512, 512, [], \"f5b5\", \"M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z\"]\n};\nvar faSimplybuilt = {\n prefix: 'fab',\n iconName: 'simplybuilt',\n icon: [512, 512, [], \"f215\", \"M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z\"]\n};\nvar faSistrix = {\n prefix: 'fab',\n iconName: 'sistrix',\n icon: [448, 512, [], \"f3ee\", \"M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z\"]\n};\nvar faSith = {\n prefix: 'fab',\n iconName: 'sith',\n icon: [448, 512, [], \"f512\", \"M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z\"]\n};\nvar faSketch = {\n prefix: 'fab',\n iconName: 'sketch',\n icon: [512, 512, [], \"f7c6\", \"M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z\"]\n};\nvar faSkyatlas = {\n prefix: 'fab',\n iconName: 'skyatlas',\n icon: [640, 512, [], \"f216\", \"M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z\"]\n};\nvar faSkype = {\n prefix: 'fab',\n iconName: 'skype',\n icon: [448, 512, [], \"f17e\", \"M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z\"]\n};\nvar faSlack = {\n prefix: 'fab',\n iconName: 'slack',\n icon: [448, 512, [], \"f198\", \"M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z\"]\n};\nvar faSlackHash = {\n prefix: 'fab',\n iconName: 'slack-hash',\n icon: [448, 512, [], \"f3ef\", \"M446.2 270.4c-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-30.3-90 45.4-15.1c19.1-6.2 29.1-26.8 23-45.9-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-93.4 31.2-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-45.3 15c-19.1 6.2-29.1 26.8-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l30.3 90L78 354.8c-19 6.2-29.1 26.9-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 93.6-31.3 15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 45.4-15.1c19-6 29.1-26.7 22.9-45.7zm-254.1 47.2l-30.3-90.2 93.5-31.3 30.3 90.2-93.5 31.3z\"]\n};\nvar faSlideshare = {\n prefix: 'fab',\n iconName: 'slideshare',\n icon: [512, 512, [], \"f1e7\", \"M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z\"]\n};\nvar faSnapchat = {\n prefix: 'fab',\n iconName: 'snapchat',\n icon: [496, 512, [], \"f2ab\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\"]\n};\nvar faSnapchatGhost = {\n prefix: 'fab',\n iconName: 'snapchat-ghost',\n icon: [512, 512, [], \"f2ac\", \"M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-36.053-19.796-23.715-9.366-27.015-20.128-25.612-27.504 2.437-12.836 21.725-20.735 33.002-15.453 8.919 4.181 16.843 6.297 23.547 6.297 5.022 0 8.212-1.204 9.96-2.171-2.043-35.936-7.101-87.29 5.687-115.969C158.122 21.304 229.705 15.42 250.826 15.42c.944 0 9.141-.089 10.11-.089 52.148 0 102.254 26.78 126.723 81.643 12.777 28.65 7.749 79.792 5.695 116.009 1.582.872 4.357 1.942 8.599 2.139 6.397-.286 13.815-2.389 22.069-6.257 6.085-2.846 14.406-2.461 20.48.058l.029.01c9.476 3.385 15.439 10.215 15.589 17.87.184 9.747-8.522 18.165-25.878 25.018-2.118.835-4.694 1.655-7.434 2.525-9.797 3.106-24.6 7.805-28.616 17.271-2.079 4.904-1.256 11.211 2.46 18.748.087.168.166.342.239.515 1.301 3.03 32.615 74.46 102.23 85.934 6.427 1.058 11.163 7.877 7.725 15.859z\"]\n};\nvar faSnapchatSquare = {\n prefix: 'fab',\n iconName: 'snapchat-square',\n icon: [448, 512, [], \"f2ad\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6.5 314.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C159.1 100 206.7 96 220.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\"]\n};\nvar faSoundcloud = {\n prefix: 'fab',\n iconName: 'soundcloud',\n icon: [640, 512, [], \"f1be\", \"M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z\"]\n};\nvar faSourcetree = {\n prefix: 'fab',\n iconName: 'sourcetree',\n icon: [448, 512, [], \"f7d3\", \"M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z\"]\n};\nvar faSpeakap = {\n prefix: 'fab',\n iconName: 'speakap',\n icon: [448, 512, [], \"f3f3\", \"M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z\"]\n};\nvar faSpeakerDeck = {\n prefix: 'fab',\n iconName: 'speaker-deck',\n icon: [512, 512, [], \"f83c\", \"M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z\"]\n};\nvar faSpotify = {\n prefix: 'fab',\n iconName: 'spotify',\n icon: [496, 512, [], \"f1bc\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z\"]\n};\nvar faSquarespace = {\n prefix: 'fab',\n iconName: 'squarespace',\n icon: [512, 512, [], \"f5be\", \"M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z\"]\n};\nvar faStackExchange = {\n prefix: 'fab',\n iconName: 'stack-exchange',\n icon: [448, 512, [], \"f18d\", \"M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z\"]\n};\nvar faStackOverflow = {\n prefix: 'fab',\n iconName: 'stack-overflow',\n icon: [384, 512, [], \"f16c\", \"M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z\"]\n};\nvar faStackpath = {\n prefix: 'fab',\n iconName: 'stackpath',\n icon: [448, 512, [], \"f842\", \"M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z\"]\n};\nvar faStaylinked = {\n prefix: 'fab',\n iconName: 'staylinked',\n icon: [440, 512, [], \"f3f5\", \"M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z\"]\n};\nvar faSteam = {\n prefix: 'fab',\n iconName: 'steam',\n icon: [496, 512, [], \"f1b6\", \"M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z\"]\n};\nvar faSteamSquare = {\n prefix: 'fab',\n iconName: 'steam-square',\n icon: [448, 512, [], \"f1b7\", \"M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z\"]\n};\nvar faSteamSymbol = {\n prefix: 'fab',\n iconName: 'steam-symbol',\n icon: [448, 512, [], \"f3f6\", \"M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z\"]\n};\nvar faStickerMule = {\n prefix: 'fab',\n iconName: 'sticker-mule',\n icon: [576, 512, [], \"f3f7\", \"M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z\"]\n};\nvar faStrava = {\n prefix: 'fab',\n iconName: 'strava',\n icon: [384, 512, [], \"f428\", \"M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z\"]\n};\nvar faStripe = {\n prefix: 'fab',\n iconName: 'stripe',\n icon: [640, 512, [], \"f429\", \"M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z\"]\n};\nvar faStripeS = {\n prefix: 'fab',\n iconName: 'stripe-s',\n icon: [384, 512, [], \"f42a\", \"M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z\"]\n};\nvar faStudiovinari = {\n prefix: 'fab',\n iconName: 'studiovinari',\n icon: [512, 512, [], \"f3f8\", \"M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z\"]\n};\nvar faStumbleupon = {\n prefix: 'fab',\n iconName: 'stumbleupon',\n icon: [512, 512, [], \"f1a4\", \"M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z\"]\n};\nvar faStumbleuponCircle = {\n prefix: 'fab',\n iconName: 'stumbleupon-circle',\n icon: [496, 512, [], \"f1a3\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z\"]\n};\nvar faSuperpowers = {\n prefix: 'fab',\n iconName: 'superpowers',\n icon: [448, 512, [], \"f2dd\", \"M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z\"]\n};\nvar faSupple = {\n prefix: 'fab',\n iconName: 'supple',\n icon: [640, 512, [], \"f3f9\", \"M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z\"]\n};\nvar faSuse = {\n prefix: 'fab',\n iconName: 'suse',\n icon: [640, 512, [], \"f7d6\", \"M471.08 102.66s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.06a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2.3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9.5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5.4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3.5-76.2-25.4-81.6-28.2-.3-.4.1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7.8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3.1-.1-.9-.3-.9.7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0-25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z\"]\n};\nvar faSwift = {\n prefix: 'fab',\n iconName: 'swift',\n icon: [448, 512, [], \"f8e1\", \"M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z\"]\n};\nvar faSymfony = {\n prefix: 'fab',\n iconName: 'symfony',\n icon: [512, 512, [], \"f83d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z\"]\n};\nvar faTeamspeak = {\n prefix: 'fab',\n iconName: 'teamspeak',\n icon: [512, 512, [], \"f4f9\", \"M244.2 346.79c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6.6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0-8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.64 222.64 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.59 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.29v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.79c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z\"]\n};\nvar faTelegram = {\n prefix: 'fab',\n iconName: 'telegram',\n icon: [496, 512, [], \"f2c6\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z\"]\n};\nvar faTelegramPlane = {\n prefix: 'fab',\n iconName: 'telegram-plane',\n icon: [448, 512, [], \"f3fe\", \"M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z\"]\n};\nvar faTencentWeibo = {\n prefix: 'fab',\n iconName: 'tencent-weibo',\n icon: [384, 512, [], \"f1d5\", \"M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z\"]\n};\nvar faTheRedYeti = {\n prefix: 'fab',\n iconName: 'the-red-yeti',\n icon: [512, 512, [], \"f69d\", \"M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z\"]\n};\nvar faThemeco = {\n prefix: 'fab',\n iconName: 'themeco',\n icon: [448, 512, [], \"f5c6\", \"M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z\"]\n};\nvar faThemeisle = {\n prefix: 'fab',\n iconName: 'themeisle',\n icon: [512, 512, [], \"f2b2\", \"M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z\"]\n};\nvar faThinkPeaks = {\n prefix: 'fab',\n iconName: 'think-peaks',\n icon: [576, 512, [], \"f731\", \"M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z\"]\n};\nvar faTiktok = {\n prefix: 'fab',\n iconName: 'tiktok',\n icon: [448, 512, [], \"e07b\", \"M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z\"]\n};\nvar faTradeFederation = {\n prefix: 'fab',\n iconName: 'trade-federation',\n icon: [496, 512, [], \"f513\", \"M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z\"]\n};\nvar faTrello = {\n prefix: 'fab',\n iconName: 'trello',\n icon: [448, 512, [], \"f181\", \"M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z\"]\n};\nvar faTripadvisor = {\n prefix: 'fab',\n iconName: 'tripadvisor',\n icon: [576, 512, [], \"f262\", \"M528.91,178.82,576,127.58H471.66a326.11,326.11,0,0,0-367,0H0l47.09,51.24A143.911,143.911,0,0,0,241.86,390.73L288,440.93l46.11-50.17A143.94,143.94,0,0,0,575.88,285.18h-.03A143.56,143.56,0,0,0,528.91,178.82ZM144.06,382.57a97.39,97.39,0,1,1,97.39-97.39A97.39,97.39,0,0,1,144.06,382.57ZM288,282.37c0-64.09-46.62-119.08-108.09-142.59a281,281,0,0,1,216.17,0C334.61,163.3,288,218.29,288,282.37Zm143.88,100.2h-.01a97.405,97.405,0,1,1,.01,0ZM144.06,234.12h-.01a51.06,51.06,0,1,0,51.06,51.06v-.11A51,51,0,0,0,144.06,234.12Zm287.82,0a51.06,51.06,0,1,0,51.06,51.06A51.06,51.06,0,0,0,431.88,234.12Z\"]\n};\nvar faTumblr = {\n prefix: 'fab',\n iconName: 'tumblr',\n icon: [320, 512, [], \"f173\", \"M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z\"]\n};\nvar faTumblrSquare = {\n prefix: 'fab',\n iconName: 'tumblr-square',\n icon: [448, 512, [], \"f174\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z\"]\n};\nvar faTwitch = {\n prefix: 'fab',\n iconName: 'twitch',\n icon: [512, 512, [], \"f1e8\", \"M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z\"]\n};\nvar faTwitter = {\n prefix: 'fab',\n iconName: 'twitter',\n icon: [512, 512, [], \"f099\", \"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"]\n};\nvar faTwitterSquare = {\n prefix: 'fab',\n iconName: 'twitter-square',\n icon: [448, 512, [], \"f081\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z\"]\n};\nvar faTypo3 = {\n prefix: 'fab',\n iconName: 'typo3',\n icon: [448, 512, [], \"f42b\", \"M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z\"]\n};\nvar faUber = {\n prefix: 'fab',\n iconName: 'uber',\n icon: [448, 512, [], \"f402\", \"M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z\"]\n};\nvar faUbuntu = {\n prefix: 'fab',\n iconName: 'ubuntu',\n icon: [496, 512, [], \"f7df\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z\"]\n};\nvar faUikit = {\n prefix: 'fab',\n iconName: 'uikit',\n icon: [448, 512, [], \"f403\", \"M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z\"]\n};\nvar faUmbraco = {\n prefix: 'fab',\n iconName: 'umbraco',\n icon: [510, 512, [], \"f8e8\", \"M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z\"]\n};\nvar faUncharted = {\n prefix: 'fab',\n iconName: 'uncharted',\n icon: [448, 512, [], \"e084\", \"M171.73,232.813A5.381,5.381,0,0,0,176.7,229.5,48.081,48.081,0,0,1,191.6,204.244c1.243-.828,1.657-2.484,1.657-4.141a4.22,4.22,0,0,0-2.071-3.312L74.429,128.473,148.958,85a9.941,9.941,0,0,0,4.968-8.281,9.108,9.108,0,0,0-4.968-8.281L126.6,55.6a9.748,9.748,0,0,0-9.523,0l-100.2,57.966a9.943,9.943,0,0,0-4.969,8.281V236.954a9.109,9.109,0,0,0,4.969,8.281L39.235,258.07a8.829,8.829,0,0,0,4.968,1.242,9.4,9.4,0,0,0,6.625-2.484,10.8,10.8,0,0,0,2.9-7.039V164.5L169.66,232.4A4.5,4.5,0,0,0,171.73,232.813ZM323.272,377.73a12.478,12.478,0,0,0-4.969,1.242l-74.528,43.062V287.882c0-2.9-2.9-5.8-6.211-4.555a53.036,53.036,0,0,1-28.984.414,4.86,4.86,0,0,0-6.21,4.555V421.619l-74.529-43.061a8.83,8.83,0,0,0-4.969-1.242,9.631,9.631,0,0,0-9.523,9.523v26.085a9.107,9.107,0,0,0,4.969,8.281l100.2,57.553A8.829,8.829,0,0,0,223.486,480a11.027,11.027,0,0,0,4.969-1.242l100.2-57.553a9.941,9.941,0,0,0,4.968-8.281V386.839C332.8,382.285,328.24,377.73,323.272,377.73ZM286.007,78a23,23,0,1,0-23-23A23,23,0,0,0,286.007,78Zm63.627-10.086a23,23,0,1,0,23,23A23,23,0,0,0,349.634,67.914ZM412.816,151.6a23,23,0,1,0-23-23A23,23,0,0,0,412.816,151.6Zm-63.182-9.2a23,23,0,1,0,23,23A23,23,0,0,0,349.634,142.4Zm-63.627,83.244a23,23,0,1,0-23-23A23,23,0,0,0,286.007,225.648Zm-62.074,36.358a23,23,0,1,0-23-23A23,23,0,0,0,223.933,262.006Zm188.883-82.358a23,23,0,1,0,23,23A23,23,0,0,0,412.816,179.648Zm0,72.272a23,23,0,1,0,23,23A23,23,0,0,0,412.816,251.92Z\"]\n};\nvar faUniregistry = {\n prefix: 'fab',\n iconName: 'uniregistry',\n icon: [384, 512, [], \"f404\", \"M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z\"]\n};\nvar faUnity = {\n prefix: 'fab',\n iconName: 'unity',\n icon: [576, 512, [], \"e049\", \"M498.11,206.4,445.31,14.72,248.2,66.08,219,116.14l-59.2-.43L15.54,256,159.82,396.32l59.17-.43,29.24,50,197.08,51.36,52.8-191.62-30-49.63ZM223.77,124.2,374.55,86.51,288,232.33H114.87Zm0,263.63L114.87,279.71H288l86.55,145.81Zm193,14L330.17,256l86.58-145.84L458.56,256Z\"]\n};\nvar faUnsplash = {\n prefix: 'fab',\n iconName: 'unsplash',\n icon: [448, 512, [], \"e07c\", \"M448,230.17V480H0V230.17H141.13V355.09H306.87V230.17ZM306.87,32H141.13V156.91H306.87Z\"]\n};\nvar faUntappd = {\n prefix: 'fab',\n iconName: 'untappd',\n icon: [640, 512, [], \"f405\", \"M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z\"]\n};\nvar faUps = {\n prefix: 'fab',\n iconName: 'ups',\n icon: [384, 512, [], \"f7e0\", \"M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z\"]\n};\nvar faUsb = {\n prefix: 'fab',\n iconName: 'usb',\n icon: [640, 512, [], \"f287\", \"M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z\"]\n};\nvar faUsps = {\n prefix: 'fab',\n iconName: 'usps',\n icon: [576, 512, [], \"f7e1\", \"M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z\"]\n};\nvar faUssunnah = {\n prefix: 'fab',\n iconName: 'ussunnah',\n icon: [512, 512, [], \"f407\", \"M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z\"]\n};\nvar faVaadin = {\n prefix: 'fab',\n iconName: 'vaadin',\n icon: [448, 512, [], \"f408\", \"M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z\"]\n};\nvar faViacoin = {\n prefix: 'fab',\n iconName: 'viacoin',\n icon: [384, 512, [], \"f237\", \"M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z\"]\n};\nvar faViadeo = {\n prefix: 'fab',\n iconName: 'viadeo',\n icon: [448, 512, [], \"f2a9\", \"M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z\"]\n};\nvar faViadeoSquare = {\n prefix: 'fab',\n iconName: 'viadeo-square',\n icon: [448, 512, [], \"f2aa\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z\"]\n};\nvar faViber = {\n prefix: 'fab',\n iconName: 'viber',\n icon: [512, 512, [], \"f409\", \"M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z\"]\n};\nvar faVimeo = {\n prefix: 'fab',\n iconName: 'vimeo',\n icon: [448, 512, [], \"f40a\", \"M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z\"]\n};\nvar faVimeoSquare = {\n prefix: 'fab',\n iconName: 'vimeo-square',\n icon: [448, 512, [], \"f194\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z\"]\n};\nvar faVimeoV = {\n prefix: 'fab',\n iconName: 'vimeo-v',\n icon: [448, 512, [], \"f27d\", \"M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z\"]\n};\nvar faVine = {\n prefix: 'fab',\n iconName: 'vine',\n icon: [384, 512, [], \"f1ca\", \"M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z\"]\n};\nvar faVk = {\n prefix: 'fab',\n iconName: 'vk',\n icon: [576, 512, [], \"f189\", \"M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7 0 0-30 73.1-72.4 120.5-13.7 13.7-20 18.1-27.5 18.1-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5 0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5-20 0-68.6-73.4-97.4-157.4-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7 0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9 0-66.8-3.4-73.1 15.4-73.1 8.7 0 23.7 4.4 58.7 38.1 40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25-11.2-34.9-86.9-106.7-90.3-111.5-8.7-11.2-6.2-16.2 0-26.2.1-.1 72-101.3 79.4-135.6z\"]\n};\nvar faVnv = {\n prefix: 'fab',\n iconName: 'vnv',\n icon: [640, 512, [], \"f40b\", \"M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z\"]\n};\nvar faVuejs = {\n prefix: 'fab',\n iconName: 'vuejs',\n icon: [448, 512, [], \"f41f\", \"M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z\"]\n};\nvar faWatchmanMonitoring = {\n prefix: 'fab',\n iconName: 'watchman-monitoring',\n icon: [512, 512, [], \"e087\", \"M256,16C123.452,16,16,123.452,16,256S123.452,496,256,496,496,388.548,496,256,388.548,16,256,16ZM121.69,429.122C70.056,388.972,36.741,326.322,36.741,256a218.519,218.519,0,0,1,9.587-64.122l102.9-17.895-.121,10.967-13.943,2.013s-.144,12.5-.144,19.549a12.778,12.778,0,0,0,4.887,10.349l9.468,7.4Zm105.692-283.27,8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46,0,0,0-32.342,30.474-39.529,34.5-7.078,3.964-.144,9.344-.144,9.344l8.481,7.618-.048,4.369L75.982,131.045c39.644-56.938,105.532-94.3,180.018-94.3A218.754,218.754,0,0,1,420.934,111.77l-193.512,37.7Zm34.063,329.269-33.9-250.857,9.467-7.4a12.778,12.778,0,0,0,4.888-10.349c0-7.044-.144-19.549-.144-19.549l-13.943-2.013-.116-10.474,241.711,31.391A218.872,218.872,0,0,1,475.259,256C475.259,375.074,379.831,472.212,261.445,475.121Z\"]\n};\nvar faWaze = {\n prefix: 'fab',\n iconName: 'waze',\n icon: [512, 512, [], \"f83f\", \"M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z\"]\n};\nvar faWeebly = {\n prefix: 'fab',\n iconName: 'weebly',\n icon: [512, 512, [], \"f5cc\", \"M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z\"]\n};\nvar faWeibo = {\n prefix: 'fab',\n iconName: 'weibo',\n icon: [512, 512, [], \"f18a\", \"M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z\"]\n};\nvar faWeixin = {\n prefix: 'fab',\n iconName: 'weixin',\n icon: [576, 512, [], \"f1d7\", \"M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z\"]\n};\nvar faWhatsapp = {\n prefix: 'fab',\n iconName: 'whatsapp',\n icon: [448, 512, [], \"f232\", \"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"]\n};\nvar faWhatsappSquare = {\n prefix: 'fab',\n iconName: 'whatsapp-square',\n icon: [448, 512, [], \"f40c\", \"M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z\"]\n};\nvar faWhmcs = {\n prefix: 'fab',\n iconName: 'whmcs',\n icon: [448, 512, [], \"f40d\", \"M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z\"]\n};\nvar faWikipediaW = {\n prefix: 'fab',\n iconName: 'wikipedia-w',\n icon: [640, 512, [], \"f266\", \"M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z\"]\n};\nvar faWindows = {\n prefix: 'fab',\n iconName: 'windows',\n icon: [448, 512, [], \"f17a\", \"M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z\"]\n};\nvar faWix = {\n prefix: 'fab',\n iconName: 'wix',\n icon: [640, 512, [], \"f5cf\", \"M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z\"]\n};\nvar faWizardsOfTheCoast = {\n prefix: 'fab',\n iconName: 'wizards-of-the-coast',\n icon: [640, 512, [], \"f730\", \"M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z\"]\n};\nvar faWodu = {\n prefix: 'fab',\n iconName: 'wodu',\n icon: [640, 512, [], \"e088\", \"M178.414 339.706H141.1L112.166 223.475h-.478L83.228 339.706H45.2L0 168.946H37.548L64.574 285.177h.478L94.707 168.946h35.157l29.178 117.667h.479L187.5 168.946h36.831zM271.4 212.713c38.984 0 64.1 25.828 64.1 65.291 0 39.222-25.111 65.05-64.1 65.05-38.743 0-63.855-25.828-63.855-65.05C207.547 238.541 232.659 212.713 271.4 212.713zm0 104.753c23.2 0 30.133-19.852 30.133-39.462 0-19.852-6.934-39.7-30.133-39.7-27.7 0-29.894 19.85-29.894 39.7C241.508 297.614 248.443 317.466 271.4 317.466zM435.084 323.922h-.478c-7.893 13.392-21.765 19.132-37.548 19.132-37.31 0-55.485-32.045-55.485-66.246 0-33.243 18.415-64.095 54.767-64.095 14.589 0 28.938 6.218 36.831 18.416h.24V168.946h33.96v170.76H435.084zM405.428 238.3c-22.24 0-29.894 19.134-29.894 39.463 0 19.371 8.848 39.7 29.894 39.7 22.482 0 29.178-19.613 29.178-39.94C434.606 257.436 427.432 238.3 405.428 238.3zM592.96 339.706H560.673V322.487h-.718c-8.609 13.87-23.436 20.567-37.786 20.567-36.113 0-45.2-20.328-45.2-50.941V216.061h33.959V285.9c0 20.329 5.979 30.372 21.765 30.372 18.415 0 26.306-10.283 26.306-35.393V216.061H592.96zM602.453 302.876H640v36.83H602.453z\"]\n};\nvar faWolfPackBattalion = {\n prefix: 'fab',\n iconName: 'wolf-pack-battalion',\n icon: [512, 512, [], \"f514\", \"M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z\"]\n};\nvar faWordpress = {\n prefix: 'fab',\n iconName: 'wordpress',\n icon: [512, 512, [], \"f19a\", \"M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z\"]\n};\nvar faWordpressSimple = {\n prefix: 'fab',\n iconName: 'wordpress-simple',\n icon: [512, 512, [], \"f411\", \"M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z\"]\n};\nvar faWpbeginner = {\n prefix: 'fab',\n iconName: 'wpbeginner',\n icon: [512, 512, [], \"f297\", \"M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z\"]\n};\nvar faWpexplorer = {\n prefix: 'fab',\n iconName: 'wpexplorer',\n icon: [512, 512, [], \"f2de\", \"M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z\"]\n};\nvar faWpforms = {\n prefix: 'fab',\n iconName: 'wpforms',\n icon: [448, 512, [], \"f298\", \"M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z\"]\n};\nvar faWpressr = {\n prefix: 'fab',\n iconName: 'wpressr',\n icon: [496, 512, [], \"f3e4\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z\"]\n};\nvar faXbox = {\n prefix: 'fab',\n iconName: 'xbox',\n icon: [512, 512, [], \"f412\", \"M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z\"]\n};\nvar faXing = {\n prefix: 'fab',\n iconName: 'xing',\n icon: [384, 512, [], \"f168\", \"M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z\"]\n};\nvar faXingSquare = {\n prefix: 'fab',\n iconName: 'xing-square',\n icon: [448, 512, [], \"f169\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z\"]\n};\nvar faYCombinator = {\n prefix: 'fab',\n iconName: 'y-combinator',\n icon: [448, 512, [], \"f23b\", \"M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z\"]\n};\nvar faYahoo = {\n prefix: 'fab',\n iconName: 'yahoo',\n icon: [512, 512, [], \"f19e\", \"M223.69,141.06,167,284.23,111,141.06H14.93L120.76,390.19,82.19,480h94.17L317.27,141.06Zm105.4,135.79a58.22,58.22,0,1,0,58.22,58.22A58.22,58.22,0,0,0,329.09,276.85ZM394.65,32l-93,223.47H406.44L499.07,32Z\"]\n};\nvar faYammer = {\n prefix: 'fab',\n iconName: 'yammer',\n icon: [512, 512, [], \"f840\", \"M421.78 152.17A23.06 23.06 0 0 0 400.9 112c-.83.43-1.71.9-2.63 1.4-15.25 8.4-118.33 80.62-106.69 88.77s82.04-23.61 130.2-50zm0 217.17c-48.16-26.38-118.64-58.1-130.2-50s91.42 80.35 106.69 88.74c.92.51 1.8 1 2.63 1.41a23.07 23.07 0 0 0 20.88-40.15zM464.21 237c-.95 0-1.95-.06-3-.06-17.4 0-142.52 13.76-136.24 26.51s83.3 18.74 138.21 18.76a23 23 0 0 0 1-45.21zM31 96.65a24.88 24.88 0 0 1 46.14-18.4l81 205.06h1.21l77-203.53a23.52 23.52 0 0 1 44.45 15.27L171.2 368.44C152.65 415.66 134.08 448 77.91 448a139.67 139.67 0 0 1-23.81-1.95 21.31 21.31 0 0 1 6.9-41.77c.66.06 10.91.66 13.86.66 30.47 0 43.74-18.94 58.07-59.41z\"]\n};\nvar faYandex = {\n prefix: 'fab',\n iconName: 'yandex',\n icon: [256, 512, [], \"f413\", \"M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z\"]\n};\nvar faYandexInternational = {\n prefix: 'fab',\n iconName: 'yandex-international',\n icon: [320, 512, [], \"f414\", \"M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z\"]\n};\nvar faYarn = {\n prefix: 'fab',\n iconName: 'yarn',\n icon: [496, 512, [], \"f7e3\", \"M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z\"]\n};\nvar faYelp = {\n prefix: 'fab',\n iconName: 'yelp',\n icon: [384, 512, [], \"f1e9\", \"M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z\"]\n};\nvar faYoast = {\n prefix: 'fab',\n iconName: 'yoast',\n icon: [448, 512, [], \"f2b1\", \"M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z\"]\n};\nvar faYoutube = {\n prefix: 'fab',\n iconName: 'youtube',\n icon: [576, 512, [], \"f167\", \"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"]\n};\nvar faYoutubeSquare = {\n prefix: 'fab',\n iconName: 'youtube-square',\n icon: [448, 512, [], \"f431\", \"M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z\"]\n};\nvar faZhihu = {\n prefix: 'fab',\n iconName: 'zhihu',\n icon: [640, 512, [], \"f63f\", \"M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z\"]\n};\nvar _iconsCache = {\n fa500px: fa500px,\n faAccessibleIcon: faAccessibleIcon,\n faAccusoft: faAccusoft,\n faAcquisitionsIncorporated: faAcquisitionsIncorporated,\n faAdn: faAdn,\n faAdversal: faAdversal,\n faAffiliatetheme: faAffiliatetheme,\n faAirbnb: faAirbnb,\n faAlgolia: faAlgolia,\n faAlipay: faAlipay,\n faAmazon: faAmazon,\n faAmazonPay: faAmazonPay,\n faAmilia: faAmilia,\n faAndroid: faAndroid,\n faAngellist: faAngellist,\n faAngrycreative: faAngrycreative,\n faAngular: faAngular,\n faAppStore: faAppStore,\n faAppStoreIos: faAppStoreIos,\n faApper: faApper,\n faApple: faApple,\n faApplePay: faApplePay,\n faArtstation: faArtstation,\n faAsymmetrik: faAsymmetrik,\n faAtlassian: faAtlassian,\n faAudible: faAudible,\n faAutoprefixer: faAutoprefixer,\n faAvianex: faAvianex,\n faAviato: faAviato,\n faAws: faAws,\n faBandcamp: faBandcamp,\n faBattleNet: faBattleNet,\n faBehance: faBehance,\n faBehanceSquare: faBehanceSquare,\n faBimobject: faBimobject,\n faBitbucket: faBitbucket,\n faBitcoin: faBitcoin,\n faBity: faBity,\n faBlackTie: faBlackTie,\n faBlackberry: faBlackberry,\n faBlogger: faBlogger,\n faBloggerB: faBloggerB,\n faBluetooth: faBluetooth,\n faBluetoothB: faBluetoothB,\n faBootstrap: faBootstrap,\n faBtc: faBtc,\n faBuffer: faBuffer,\n faBuromobelexperte: faBuromobelexperte,\n faBuyNLarge: faBuyNLarge,\n faBuysellads: faBuysellads,\n faCanadianMapleLeaf: faCanadianMapleLeaf,\n faCcAmazonPay: faCcAmazonPay,\n faCcAmex: faCcAmex,\n faCcApplePay: faCcApplePay,\n faCcDinersClub: faCcDinersClub,\n faCcDiscover: faCcDiscover,\n faCcJcb: faCcJcb,\n faCcMastercard: faCcMastercard,\n faCcPaypal: faCcPaypal,\n faCcStripe: faCcStripe,\n faCcVisa: faCcVisa,\n faCentercode: faCentercode,\n faCentos: faCentos,\n faChrome: faChrome,\n faChromecast: faChromecast,\n faCloudflare: faCloudflare,\n faCloudscale: faCloudscale,\n faCloudsmith: faCloudsmith,\n faCloudversify: faCloudversify,\n faCodepen: faCodepen,\n faCodiepie: faCodiepie,\n faConfluence: faConfluence,\n faConnectdevelop: faConnectdevelop,\n faContao: faContao,\n faCottonBureau: faCottonBureau,\n faCpanel: faCpanel,\n faCreativeCommons: faCreativeCommons,\n faCreativeCommonsBy: faCreativeCommonsBy,\n faCreativeCommonsNc: faCreativeCommonsNc,\n faCreativeCommonsNcEu: faCreativeCommonsNcEu,\n faCreativeCommonsNcJp: faCreativeCommonsNcJp,\n faCreativeCommonsNd: faCreativeCommonsNd,\n faCreativeCommonsPd: faCreativeCommonsPd,\n faCreativeCommonsPdAlt: faCreativeCommonsPdAlt,\n faCreativeCommonsRemix: faCreativeCommonsRemix,\n faCreativeCommonsSa: faCreativeCommonsSa,\n faCreativeCommonsSampling: faCreativeCommonsSampling,\n faCreativeCommonsSamplingPlus: faCreativeCommonsSamplingPlus,\n faCreativeCommonsShare: faCreativeCommonsShare,\n faCreativeCommonsZero: faCreativeCommonsZero,\n faCriticalRole: faCriticalRole,\n faCss3: faCss3,\n faCss3Alt: faCss3Alt,\n faCuttlefish: faCuttlefish,\n faDAndD: faDAndD,\n faDAndDBeyond: faDAndDBeyond,\n faDailymotion: faDailymotion,\n faDashcube: faDashcube,\n faDeezer: faDeezer,\n faDelicious: faDelicious,\n faDeploydog: faDeploydog,\n faDeskpro: faDeskpro,\n faDev: faDev,\n faDeviantart: faDeviantart,\n faDhl: faDhl,\n faDiaspora: faDiaspora,\n faDigg: faDigg,\n faDigitalOcean: faDigitalOcean,\n faDiscord: faDiscord,\n faDiscourse: faDiscourse,\n faDochub: faDochub,\n faDocker: faDocker,\n faDraft2digital: faDraft2digital,\n faDribbble: faDribbble,\n faDribbbleSquare: faDribbbleSquare,\n faDropbox: faDropbox,\n faDrupal: faDrupal,\n faDyalog: faDyalog,\n faEarlybirds: faEarlybirds,\n faEbay: faEbay,\n faEdge: faEdge,\n faEdgeLegacy: faEdgeLegacy,\n faElementor: faElementor,\n faEllo: faEllo,\n faEmber: faEmber,\n faEmpire: faEmpire,\n faEnvira: faEnvira,\n faErlang: faErlang,\n faEthereum: faEthereum,\n faEtsy: faEtsy,\n faEvernote: faEvernote,\n faExpeditedssl: faExpeditedssl,\n faFacebook: faFacebook,\n faFacebookF: faFacebookF,\n faFacebookMessenger: faFacebookMessenger,\n faFacebookSquare: faFacebookSquare,\n faFantasyFlightGames: faFantasyFlightGames,\n faFedex: faFedex,\n faFedora: faFedora,\n faFigma: faFigma,\n faFirefox: faFirefox,\n faFirefoxBrowser: faFirefoxBrowser,\n faFirstOrder: faFirstOrder,\n faFirstOrderAlt: faFirstOrderAlt,\n faFirstdraft: faFirstdraft,\n faFlickr: faFlickr,\n faFlipboard: faFlipboard,\n faFly: faFly,\n faFontAwesome: faFontAwesome,\n faFontAwesomeAlt: faFontAwesomeAlt,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFonticons: faFonticons,\n faFonticonsFi: faFonticonsFi,\n faFortAwesome: faFortAwesome,\n faFortAwesomeAlt: faFortAwesomeAlt,\n faForumbee: faForumbee,\n faFoursquare: faFoursquare,\n faFreeCodeCamp: faFreeCodeCamp,\n faFreebsd: faFreebsd,\n faFulcrum: faFulcrum,\n faGalacticRepublic: faGalacticRepublic,\n faGalacticSenate: faGalacticSenate,\n faGetPocket: faGetPocket,\n faGg: faGg,\n faGgCircle: faGgCircle,\n faGit: faGit,\n faGitAlt: faGitAlt,\n faGitSquare: faGitSquare,\n faGithub: faGithub,\n faGithubAlt: faGithubAlt,\n faGithubSquare: faGithubSquare,\n faGitkraken: faGitkraken,\n faGitlab: faGitlab,\n faGitter: faGitter,\n faGlide: faGlide,\n faGlideG: faGlideG,\n faGofore: faGofore,\n faGoodreads: faGoodreads,\n faGoodreadsG: faGoodreadsG,\n faGoogle: faGoogle,\n faGoogleDrive: faGoogleDrive,\n faGooglePay: faGooglePay,\n faGooglePlay: faGooglePlay,\n faGooglePlus: faGooglePlus,\n faGooglePlusG: faGooglePlusG,\n faGooglePlusSquare: faGooglePlusSquare,\n faGoogleWallet: faGoogleWallet,\n faGratipay: faGratipay,\n faGrav: faGrav,\n faGripfire: faGripfire,\n faGrunt: faGrunt,\n faGuilded: faGuilded,\n faGulp: faGulp,\n faHackerNews: faHackerNews,\n faHackerNewsSquare: faHackerNewsSquare,\n faHackerrank: faHackerrank,\n faHips: faHips,\n faHireAHelper: faHireAHelper,\n faHive: faHive,\n faHooli: faHooli,\n faHornbill: faHornbill,\n faHotjar: faHotjar,\n faHouzz: faHouzz,\n faHtml5: faHtml5,\n faHubspot: faHubspot,\n faIdeal: faIdeal,\n faImdb: faImdb,\n faInnosoft: faInnosoft,\n faInstagram: faInstagram,\n faInstagramSquare: faInstagramSquare,\n faInstalod: faInstalod,\n faIntercom: faIntercom,\n faInternetExplorer: faInternetExplorer,\n faInvision: faInvision,\n faIoxhost: faIoxhost,\n faItchIo: faItchIo,\n faItunes: faItunes,\n faItunesNote: faItunesNote,\n faJava: faJava,\n faJediOrder: faJediOrder,\n faJenkins: faJenkins,\n faJira: faJira,\n faJoget: faJoget,\n faJoomla: faJoomla,\n faJs: faJs,\n faJsSquare: faJsSquare,\n faJsfiddle: faJsfiddle,\n faKaggle: faKaggle,\n faKeybase: faKeybase,\n faKeycdn: faKeycdn,\n faKickstarter: faKickstarter,\n faKickstarterK: faKickstarterK,\n faKorvue: faKorvue,\n faLaravel: faLaravel,\n faLastfm: faLastfm,\n faLastfmSquare: faLastfmSquare,\n faLeanpub: faLeanpub,\n faLess: faLess,\n faLine: faLine,\n faLinkedin: faLinkedin,\n faLinkedinIn: faLinkedinIn,\n faLinode: faLinode,\n faLinux: faLinux,\n faLyft: faLyft,\n faMagento: faMagento,\n faMailchimp: faMailchimp,\n faMandalorian: faMandalorian,\n faMarkdown: faMarkdown,\n faMastodon: faMastodon,\n faMaxcdn: faMaxcdn,\n faMdb: faMdb,\n faMedapps: faMedapps,\n faMedium: faMedium,\n faMediumM: faMediumM,\n faMedrt: faMedrt,\n faMeetup: faMeetup,\n faMegaport: faMegaport,\n faMendeley: faMendeley,\n faMicroblog: faMicroblog,\n faMicrosoft: faMicrosoft,\n faMix: faMix,\n faMixcloud: faMixcloud,\n faMixer: faMixer,\n faMizuni: faMizuni,\n faModx: faModx,\n faMonero: faMonero,\n faNapster: faNapster,\n faNeos: faNeos,\n faNimblr: faNimblr,\n faNode: faNode,\n faNodeJs: faNodeJs,\n faNpm: faNpm,\n faNs8: faNs8,\n faNutritionix: faNutritionix,\n faOctopusDeploy: faOctopusDeploy,\n faOdnoklassniki: faOdnoklassniki,\n faOdnoklassnikiSquare: faOdnoklassnikiSquare,\n faOldRepublic: faOldRepublic,\n faOpencart: faOpencart,\n faOpenid: faOpenid,\n faOpera: faOpera,\n faOptinMonster: faOptinMonster,\n faOrcid: faOrcid,\n faOsi: faOsi,\n faPage4: faPage4,\n faPagelines: faPagelines,\n faPalfed: faPalfed,\n faPatreon: faPatreon,\n faPaypal: faPaypal,\n faPennyArcade: faPennyArcade,\n faPerbyte: faPerbyte,\n faPeriscope: faPeriscope,\n faPhabricator: faPhabricator,\n faPhoenixFramework: faPhoenixFramework,\n faPhoenixSquadron: faPhoenixSquadron,\n faPhp: faPhp,\n faPiedPiper: faPiedPiper,\n faPiedPiperAlt: faPiedPiperAlt,\n faPiedPiperHat: faPiedPiperHat,\n faPiedPiperPp: faPiedPiperPp,\n faPiedPiperSquare: faPiedPiperSquare,\n faPinterest: faPinterest,\n faPinterestP: faPinterestP,\n faPinterestSquare: faPinterestSquare,\n faPlaystation: faPlaystation,\n faProductHunt: faProductHunt,\n faPushed: faPushed,\n faPython: faPython,\n faQq: faQq,\n faQuinscape: faQuinscape,\n faQuora: faQuora,\n faRProject: faRProject,\n faRaspberryPi: faRaspberryPi,\n faRavelry: faRavelry,\n faReact: faReact,\n faReacteurope: faReacteurope,\n faReadme: faReadme,\n faRebel: faRebel,\n faRedRiver: faRedRiver,\n faReddit: faReddit,\n faRedditAlien: faRedditAlien,\n faRedditSquare: faRedditSquare,\n faRedhat: faRedhat,\n faRenren: faRenren,\n faReplyd: faReplyd,\n faResearchgate: faResearchgate,\n faResolving: faResolving,\n faRev: faRev,\n faRocketchat: faRocketchat,\n faRockrms: faRockrms,\n faRust: faRust,\n faSafari: faSafari,\n faSalesforce: faSalesforce,\n faSass: faSass,\n faSchlix: faSchlix,\n faScribd: faScribd,\n faSearchengin: faSearchengin,\n faSellcast: faSellcast,\n faSellsy: faSellsy,\n faServicestack: faServicestack,\n faShirtsinbulk: faShirtsinbulk,\n faShopify: faShopify,\n faShopware: faShopware,\n faSimplybuilt: faSimplybuilt,\n faSistrix: faSistrix,\n faSith: faSith,\n faSketch: faSketch,\n faSkyatlas: faSkyatlas,\n faSkype: faSkype,\n faSlack: faSlack,\n faSlackHash: faSlackHash,\n faSlideshare: faSlideshare,\n faSnapchat: faSnapchat,\n faSnapchatGhost: faSnapchatGhost,\n faSnapchatSquare: faSnapchatSquare,\n faSoundcloud: faSoundcloud,\n faSourcetree: faSourcetree,\n faSpeakap: faSpeakap,\n faSpeakerDeck: faSpeakerDeck,\n faSpotify: faSpotify,\n faSquarespace: faSquarespace,\n faStackExchange: faStackExchange,\n faStackOverflow: faStackOverflow,\n faStackpath: faStackpath,\n faStaylinked: faStaylinked,\n faSteam: faSteam,\n faSteamSquare: faSteamSquare,\n faSteamSymbol: faSteamSymbol,\n faStickerMule: faStickerMule,\n faStrava: faStrava,\n faStripe: faStripe,\n faStripeS: faStripeS,\n faStudiovinari: faStudiovinari,\n faStumbleupon: faStumbleupon,\n faStumbleuponCircle: faStumbleuponCircle,\n faSuperpowers: faSuperpowers,\n faSupple: faSupple,\n faSuse: faSuse,\n faSwift: faSwift,\n faSymfony: faSymfony,\n faTeamspeak: faTeamspeak,\n faTelegram: faTelegram,\n faTelegramPlane: faTelegramPlane,\n faTencentWeibo: faTencentWeibo,\n faTheRedYeti: faTheRedYeti,\n faThemeco: faThemeco,\n faThemeisle: faThemeisle,\n faThinkPeaks: faThinkPeaks,\n faTiktok: faTiktok,\n faTradeFederation: faTradeFederation,\n faTrello: faTrello,\n faTripadvisor: faTripadvisor,\n faTumblr: faTumblr,\n faTumblrSquare: faTumblrSquare,\n faTwitch: faTwitch,\n faTwitter: faTwitter,\n faTwitterSquare: faTwitterSquare,\n faTypo3: faTypo3,\n faUber: faUber,\n faUbuntu: faUbuntu,\n faUikit: faUikit,\n faUmbraco: faUmbraco,\n faUncharted: faUncharted,\n faUniregistry: faUniregistry,\n faUnity: faUnity,\n faUnsplash: faUnsplash,\n faUntappd: faUntappd,\n faUps: faUps,\n faUsb: faUsb,\n faUsps: faUsps,\n faUssunnah: faUssunnah,\n faVaadin: faVaadin,\n faViacoin: faViacoin,\n faViadeo: faViadeo,\n faViadeoSquare: faViadeoSquare,\n faViber: faViber,\n faVimeo: faVimeo,\n faVimeoSquare: faVimeoSquare,\n faVimeoV: faVimeoV,\n faVine: faVine,\n faVk: faVk,\n faVnv: faVnv,\n faVuejs: faVuejs,\n faWatchmanMonitoring: faWatchmanMonitoring,\n faWaze: faWaze,\n faWeebly: faWeebly,\n faWeibo: faWeibo,\n faWeixin: faWeixin,\n faWhatsapp: faWhatsapp,\n faWhatsappSquare: faWhatsappSquare,\n faWhmcs: faWhmcs,\n faWikipediaW: faWikipediaW,\n faWindows: faWindows,\n faWix: faWix,\n faWizardsOfTheCoast: faWizardsOfTheCoast,\n faWodu: faWodu,\n faWolfPackBattalion: faWolfPackBattalion,\n faWordpress: faWordpress,\n faWordpressSimple: faWordpressSimple,\n faWpbeginner: faWpbeginner,\n faWpexplorer: faWpexplorer,\n faWpforms: faWpforms,\n faWpressr: faWpressr,\n faXbox: faXbox,\n faXing: faXing,\n faXingSquare: faXingSquare,\n faYCombinator: faYCombinator,\n faYahoo: faYahoo,\n faYammer: faYammer,\n faYandex: faYandex,\n faYandexInternational: faYandexInternational,\n faYarn: faYarn,\n faYelp: faYelp,\n faYoast: faYoast,\n faYoutube: faYoutube,\n faYoutubeSquare: faYoutubeSquare,\n faZhihu: faZhihu\n};\nexport { _iconsCache as fab, prefix, fa500px, faAccessibleIcon, faAccusoft, faAcquisitionsIncorporated, faAdn, faAdversal, faAffiliatetheme, faAirbnb, faAlgolia, faAlipay, faAmazon, faAmazonPay, faAmilia, faAndroid, faAngellist, faAngrycreative, faAngular, faAppStore, faAppStoreIos, faApper, faApple, faApplePay, faArtstation, faAsymmetrik, faAtlassian, faAudible, faAutoprefixer, faAvianex, faAviato, faAws, faBandcamp, faBattleNet, faBehance, faBehanceSquare, faBimobject, faBitbucket, faBitcoin, faBity, faBlackTie, faBlackberry, faBlogger, faBloggerB, faBluetooth, faBluetoothB, faBootstrap, faBtc, faBuffer, faBuromobelexperte, faBuyNLarge, faBuysellads, faCanadianMapleLeaf, faCcAmazonPay, faCcAmex, faCcApplePay, faCcDinersClub, faCcDiscover, faCcJcb, faCcMastercard, faCcPaypal, faCcStripe, faCcVisa, faCentercode, faCentos, faChrome, faChromecast, faCloudflare, faCloudscale, faCloudsmith, faCloudversify, faCodepen, faCodiepie, faConfluence, faConnectdevelop, faContao, faCottonBureau, faCpanel, faCreativeCommons, faCreativeCommonsBy, faCreativeCommonsNc, faCreativeCommonsNcEu, faCreativeCommonsNcJp, faCreativeCommonsNd, faCreativeCommonsPd, faCreativeCommonsPdAlt, faCreativeCommonsRemix, faCreativeCommonsSa, faCreativeCommonsSampling, faCreativeCommonsSamplingPlus, faCreativeCommonsShare, faCreativeCommonsZero, faCriticalRole, faCss3, faCss3Alt, faCuttlefish, faDAndD, faDAndDBeyond, faDailymotion, faDashcube, faDeezer, faDelicious, faDeploydog, faDeskpro, faDev, faDeviantart, faDhl, faDiaspora, faDigg, faDigitalOcean, faDiscord, faDiscourse, faDochub, faDocker, faDraft2digital, faDribbble, faDribbbleSquare, faDropbox, faDrupal, faDyalog, faEarlybirds, faEbay, faEdge, faEdgeLegacy, faElementor, faEllo, faEmber, faEmpire, faEnvira, faErlang, faEthereum, faEtsy, faEvernote, faExpeditedssl, faFacebook, faFacebookF, faFacebookMessenger, faFacebookSquare, faFantasyFlightGames, faFedex, faFedora, faFigma, faFirefox, faFirefoxBrowser, faFirstOrder, faFirstOrderAlt, faFirstdraft, faFlickr, faFlipboard, faFly, faFontAwesome, faFontAwesomeAlt, faFontAwesomeFlag, faFontAwesomeLogoFull, faFonticons, faFonticonsFi, faFortAwesome, faFortAwesomeAlt, faForumbee, faFoursquare, faFreeCodeCamp, faFreebsd, faFulcrum, faGalacticRepublic, faGalacticSenate, faGetPocket, faGg, faGgCircle, faGit, faGitAlt, faGitSquare, faGithub, faGithubAlt, faGithubSquare, faGitkraken, faGitlab, faGitter, faGlide, faGlideG, faGofore, faGoodreads, faGoodreadsG, faGoogle, faGoogleDrive, faGooglePay, faGooglePlay, faGooglePlus, faGooglePlusG, faGooglePlusSquare, faGoogleWallet, faGratipay, faGrav, faGripfire, faGrunt, faGuilded, faGulp, faHackerNews, faHackerNewsSquare, faHackerrank, faHips, faHireAHelper, faHive, faHooli, faHornbill, faHotjar, faHouzz, faHtml5, faHubspot, faIdeal, faImdb, faInnosoft, faInstagram, faInstagramSquare, faInstalod, faIntercom, faInternetExplorer, faInvision, faIoxhost, faItchIo, faItunes, faItunesNote, faJava, faJediOrder, faJenkins, faJira, faJoget, faJoomla, faJs, faJsSquare, faJsfiddle, faKaggle, faKeybase, faKeycdn, faKickstarter, faKickstarterK, faKorvue, faLaravel, faLastfm, faLastfmSquare, faLeanpub, faLess, faLine, faLinkedin, faLinkedinIn, faLinode, faLinux, faLyft, faMagento, faMailchimp, faMandalorian, faMarkdown, faMastodon, faMaxcdn, faMdb, faMedapps, faMedium, faMediumM, faMedrt, faMeetup, faMegaport, faMendeley, faMicroblog, faMicrosoft, faMix, faMixcloud, faMixer, faMizuni, faModx, faMonero, faNapster, faNeos, faNimblr, faNode, faNodeJs, faNpm, faNs8, faNutritionix, faOctopusDeploy, faOdnoklassniki, faOdnoklassnikiSquare, faOldRepublic, faOpencart, faOpenid, faOpera, faOptinMonster, faOrcid, faOsi, faPage4, faPagelines, faPalfed, faPatreon, faPaypal, faPennyArcade, faPerbyte, faPeriscope, faPhabricator, faPhoenixFramework, faPhoenixSquadron, faPhp, faPiedPiper, faPiedPiperAlt, faPiedPiperHat, faPiedPiperPp, faPiedPiperSquare, faPinterest, faPinterestP, faPinterestSquare, faPlaystation, faProductHunt, faPushed, faPython, faQq, faQuinscape, faQuora, faRProject, faRaspberryPi, faRavelry, faReact, faReacteurope, faReadme, faRebel, faRedRiver, faReddit, faRedditAlien, faRedditSquare, faRedhat, faRenren, faReplyd, faResearchgate, faResolving, faRev, faRocketchat, faRockrms, faRust, faSafari, faSalesforce, faSass, faSchlix, faScribd, faSearchengin, faSellcast, faSellsy, faServicestack, faShirtsinbulk, faShopify, faShopware, faSimplybuilt, faSistrix, faSith, faSketch, faSkyatlas, faSkype, faSlack, faSlackHash, faSlideshare, faSnapchat, faSnapchatGhost, faSnapchatSquare, faSoundcloud, faSourcetree, faSpeakap, faSpeakerDeck, faSpotify, faSquarespace, faStackExchange, faStackOverflow, faStackpath, faStaylinked, faSteam, faSteamSquare, faSteamSymbol, faStickerMule, faStrava, faStripe, faStripeS, faStudiovinari, faStumbleupon, faStumbleuponCircle, faSuperpowers, faSupple, faSuse, faSwift, faSymfony, faTeamspeak, faTelegram, faTelegramPlane, faTencentWeibo, faTheRedYeti, faThemeco, faThemeisle, faThinkPeaks, faTiktok, faTradeFederation, faTrello, faTripadvisor, faTumblr, faTumblrSquare, faTwitch, faTwitter, faTwitterSquare, faTypo3, faUber, faUbuntu, faUikit, faUmbraco, faUncharted, faUniregistry, faUnity, faUnsplash, faUntappd, faUps, faUsb, faUsps, faUssunnah, faVaadin, faViacoin, faViadeo, faViadeoSquare, faViber, faVimeo, faVimeoSquare, faVimeoV, faVine, faVk, faVnv, faVuejs, faWatchmanMonitoring, faWaze, faWeebly, faWeibo, faWeixin, faWhatsapp, faWhatsappSquare, faWhmcs, faWikipediaW, faWindows, faWix, faWizardsOfTheCoast, faWodu, faWolfPackBattalion, faWordpress, faWordpressSimple, faWpbeginner, faWpexplorer, faWpforms, faWpressr, faXbox, faXing, faXingSquare, faYCombinator, faYahoo, faYammer, faYandex, faYandexInternational, faYarn, faYelp, faYoast, faYoutube, faYoutubeSquare, faZhihu };","/*\nCopyright (c) NAVER Corp.\nname: @egjs/component\nlicense: MIT\nauthor: NAVER Corp.\nrepository: https://github.com/naver/egjs-component\nversion: 3.0.5\n*/\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n\n return ar;\n}\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n\n\nvar isUndefined = function (value) {\n return typeof value === \"undefined\";\n}; // This class name is not matched to file name intentionally\n\n/**\n * Event class to provide additional properties\n * @ko Component에서 추가적인 프로퍼티를 제공하는 이벤트 클래스\n */\n\n\nvar ComponentEvent = /*#__PURE__*/function () {\n /**\n * Create a new instance of ComponentEvent.\n * @ko ComponentEvent의 새로운 인스턴스를 생성한다.\n * @param eventType The name of the event.이벤트 이름.\n * @param props An object that contains additional event properties.추가적인 이벤트 프로퍼티 오브젝트.\n */\n function ComponentEvent(eventType, props) {\n var e_1, _a;\n\n this._canceled = false;\n\n if (props) {\n try {\n for (var _b = __values(Object.keys(props)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this[key] = props[key];\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n\n this.eventType = eventType;\n }\n /**\n * Stop the event. {@link ComponentEvent#isCanceled} will return `true` after.\n * @ko 이벤트를 중단한다. 이후 {@link ComponentEvent#isCanceled}가 `true`를 반환한다.\n */\n\n\n var __proto = ComponentEvent.prototype;\n\n __proto.stop = function () {\n this._canceled = true;\n };\n /**\n * Returns a boolean value that indicates whether {@link ComponentEvent#stop} is called before.\n * @ko {@link ComponentEvent#stop}이 호출되었는지 여부를 반환한다.\n * @return {boolean} A boolean value that indicates whether {@link ComponentEvent#stop} is called before.이전에 {@link ComponentEvent#stop}이 불려졌는지 여부를 반환한다.\n */\n\n\n __proto.isCanceled = function () {\n return this._canceled;\n };\n\n return ComponentEvent;\n}();\n/**\n * A class used to manage events in a component\n * @ko 컴포넌트의 이벤트을 관리할 수 있게 하는 클래스\n */\n\n\nvar Component = /*#__PURE__*/function () {\n /**\n * @support {\"ie\": \"7+\", \"ch\" : \"latest\", \"ff\" : \"latest\", \"sf\" : \"latest\", \"edge\" : \"latest\", \"ios\" : \"7+\", \"an\" : \"2.1+ (except 3.x)\"}\n */\n function Component() {\n this._eventHandler = {};\n }\n /**\n * Trigger a custom event.\n * @ko 커스텀 이벤트를 발생시킨다\n * @param {string | ComponentEvent} event The name of the custom event to be triggered or an instance of the ComponentEvent발생할 커스텀 이벤트의 이름 또는 ComponentEvent의 인스턴스\n * @param {any[]} params Event data to be sent when triggering a custom event 커스텀 이벤트가 발생할 때 전달할 데이터\n * @return An instance of the component itself컴포넌트 자신의 인스턴스\n * @example\n * ```ts\n * import Component, { ComponentEvent } from \"@egjs/component\";\n *\n * class Some extends Component<{\n * beforeHi: ComponentEvent<{ foo: number; bar: string }>;\n * hi: { foo: { a: number; b: boolean } };\n * someEvent: (foo: number, bar: string) => void;\n * someOtherEvent: void; // When there's no event argument\n * }> {\n * some(){\n * if(this.trigger(\"beforeHi\")){ // When event call to stop return false.\n * this.trigger(\"hi\");// fire hi event.\n * }\n * }\n * }\n *\n * const some = new Some();\n * some.on(\"beforeHi\", e => {\n * if(condition){\n * e.stop(); // When event call to stop, `hi` event not call.\n * }\n * // `currentTarget` is component instance.\n * console.log(some === e.currentTarget); // true\n *\n * typeof e.foo; // number\n * typeof e.bar; // string\n * });\n * some.on(\"hi\", e => {\n * typeof e.foo.b; // boolean\n * });\n * // If you want to more know event design. You can see article.\n * // https://github.com/naver/egjs-component/wiki/How-to-make-Component-event-design%3F\n * ```\n */\n\n\n var __proto = Component.prototype;\n\n __proto.trigger = function (event) {\n var params = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n\n var eventName = event instanceof ComponentEvent ? event.eventType : event;\n\n var handlers = __spread(this._eventHandler[eventName] || []);\n\n if (handlers.length <= 0) {\n return this;\n }\n\n if (event instanceof ComponentEvent) {\n event.currentTarget = this;\n handlers.forEach(function (handler) {\n handler(event);\n });\n } else {\n handlers.forEach(function (handler) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n handler.apply(void 0, __spread(params));\n });\n }\n\n return this;\n };\n /**\n * Executed event just one time.\n * @ko 이벤트가 한번만 실행된다.\n * @param {string} eventName The name of the event to be attached or an event name - event handler mapped object.등록할 이벤트의 이름 또는 이벤트 이름-핸들러 오브젝트\n * @param {function} handlerToAttach The handler function of the event to be attached 등록할 이벤트의 핸들러 함수\n * @return An instance of the component itself컴포넌트 자신의 인스턴스\n * @example\n * ```ts\n * import Component, { ComponentEvent } from \"@egjs/component\";\n *\n * class Some extends Component<{\n * hi: ComponentEvent;\n * }> {\n * hi() {\n * alert(\"hi\");\n * }\n * thing() {\n * this.once(\"hi\", this.hi);\n * }\n * }\n *\n * var some = new Some();\n * some.thing();\n * some.trigger(new ComponentEvent(\"hi\"));\n * // fire alert(\"hi\");\n * some.trigger(new ComponentEvent(\"hi\"));\n * // Nothing happens\n * ```\n */\n\n\n __proto.once = function (eventName, handlerToAttach) {\n var _this = this;\n\n if (typeof eventName === \"object\" && isUndefined(handlerToAttach)) {\n var eventHash = eventName;\n\n for (var key in eventHash) {\n this.once(key, eventHash[key]);\n }\n\n return this;\n } else if (typeof eventName === \"string\" && typeof handlerToAttach === \"function\") {\n var listener_1 = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n } // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n\n\n handlerToAttach.apply(void 0, __spread(args));\n\n _this.off(eventName, listener_1);\n };\n\n this.on(eventName, listener_1);\n }\n\n return this;\n };\n /**\n * Checks whether an event has been attached to a component.\n * @ko 컴포넌트에 이벤트가 등록됐는지 확인한다.\n * @param {string} eventName The name of the event to be attached 등록 여부를 확인할 이벤트의 이름\n * @return {boolean} Indicates whether the event is attached. 이벤트 등록 여부\n * @example\n * ```ts\n * import Component from \"@egjs/component\";\n *\n * class Some extends Component<{\n * hi: void;\n * }> {\n * some() {\n * this.hasOn(\"hi\");// check hi event.\n * }\n * }\n * ```\n */\n\n\n __proto.hasOn = function (eventName) {\n return !!this._eventHandler[eventName];\n };\n /**\n * Attaches an event to a component.\n * @ko 컴포넌트에 이벤트를 등록한다.\n * @param {string} eventName The name of the event to be attached or an event name - event handler mapped object.등록할 이벤트의 이름 또는 이벤트 이름-핸들러 오브젝트\n * @param {function} handlerToAttach The handler function of the event to be attached 등록할 이벤트의 핸들러 함수\n * @return An instance of a component itself컴포넌트 자신의 인스턴스\n * @example\n * ```ts\n * import Component, { ComponentEvent } from \"@egjs/component\";\n *\n * class Some extends Component<{\n * hi: void;\n * }> {\n * hi() {\n * console.log(\"hi\");\n * }\n * some() {\n * this.on(\"hi\",this.hi); //attach event\n * }\n * }\n * ```\n */\n\n\n __proto.on = function (eventName, handlerToAttach) {\n if (typeof eventName === \"object\" && isUndefined(handlerToAttach)) {\n var eventHash = eventName;\n\n for (var name in eventHash) {\n this.on(name, eventHash[name]);\n }\n\n return this;\n } else if (typeof eventName === \"string\" && typeof handlerToAttach === \"function\") {\n var handlerList = this._eventHandler[eventName];\n\n if (isUndefined(handlerList)) {\n this._eventHandler[eventName] = [];\n handlerList = this._eventHandler[eventName];\n }\n\n handlerList.push(handlerToAttach);\n }\n\n return this;\n };\n /**\n * Detaches an event from the component.
If the `eventName` is not given this will detach all event handlers attached.
If the `handlerToDetach` is not given, this will detach all event handlers for `eventName`.\n * @ko 컴포넌트에 등록된 이벤트를 해제한다.
`eventName`이 주어지지 않았을 경우 모든 이벤트 핸들러를 제거한다.
`handlerToAttach`가 주어지지 않았을 경우 `eventName`에 해당하는 모든 이벤트 핸들러를 제거한다.\n * @param {string?} eventName The name of the event to be detached 해제할 이벤트의 이름\n * @param {function?} handlerToDetach The handler function of the event to be detached 해제할 이벤트의 핸들러 함수\n * @return An instance of a component itself 컴포넌트 자신의 인스턴스\n * @example\n * ```ts\n * import Component, { ComponentEvent } from \"@egjs/component\";\n *\n * class Some extends Component<{\n * hi: void;\n * }> {\n * hi() {\n * console.log(\"hi\");\n * }\n * some() {\n * this.off(\"hi\",this.hi); //detach event\n * }\n * }\n * ```\n */\n\n\n __proto.off = function (eventName, handlerToDetach) {\n // Detach all event handlers.\n if (isUndefined(eventName)) {\n this._eventHandler = {};\n return this;\n } // Detach all handlers for eventname or detach event handlers by object.\n\n\n if (isUndefined(handlerToDetach)) {\n if (typeof eventName === \"string\") {\n delete this._eventHandler[eventName];\n return this;\n } else {\n var eventHash = eventName;\n\n for (var name in eventHash) {\n this.off(name, eventHash[name]);\n }\n\n return this;\n }\n } // Detach single event handler\n\n\n var handlerList = this._eventHandler[eventName];\n\n if (handlerList) {\n var length = handlerList.length;\n\n for (var i = 0; i < length; ++i) {\n if (handlerList[i] === handlerToDetach) {\n handlerList.splice(i, 1);\n\n if (length <= 1) {\n delete this._eventHandler[eventName];\n }\n\n break;\n }\n }\n }\n\n return this;\n };\n /**\n * Version info string\n * @ko 버전정보 문자열\n * @name VERSION\n * @static\n * @example\n * Component.VERSION; // ex) 3.0.0\n * @memberof Component\n */\n\n\n Component.VERSION = \"3.0.5\";\n return Component;\n}();\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unsafe-assignment\n\n\nvar ComponentEvent$1 = ComponentEvent;\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n\nexport default Component;\nexport { ComponentEvent$1 as ComponentEvent };","export const i18n = {\n methods: {\n /* eslint-disable no-undef */\n t: (...args) => I18n.t(...args),\n currentLocale: () => I18n.currentLocale(),\n /* eslint-enable no-undef */\n },\n}\n","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket trac-14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n\n return factory(w);\n };\n } else {\n factory(global);\n } // Pass this if window is not defined yet\n\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n // enough that all such attempts are guarded in a try block.\n \"use strict\";\n\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n } // Support: Android <=2.3 only (functionish RegExp)\n\n\n return typeof obj === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : typeof obj;\n }\n /* global Symbol */\n // Defining this global in .eslintrc.json would create a danger of using the global\n // unguarded in another place, it seems safer to define global only for this module\n\n\n var version = \"3.7.1\",\n rhtmlSuffix = /HTML$/i,\n // Define a local copy of jQuery\n jQuery = function (selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function () {\n return slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function (num) {\n // Return all the elements in a clean array\n if (num == null) {\n return slice.call(this);\n } // Return just the one element from the set\n\n\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function (elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems); // Add the old object onto the stack (as a reference)\n\n ret.prevObject = this; // Return the newly-formed element set\n\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function (callback) {\n return jQuery.each(this, callback);\n },\n map: function (callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function () {\n return this.pushStack(slice.apply(this, arguments));\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n even: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function (i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function () {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false; // Handle a deep copy situation\n\n if (typeof target === \"boolean\") {\n deep = target; // Skip the boolean and the target\n\n target = arguments[i] || {};\n i++;\n } // Handle case when target is a string or something (possible in deep copy)\n\n\n if (typeof target !== \"object\" && !isFunction(target)) {\n target = {};\n } // Extend jQuery itself if only one argument is passed\n\n\n if (i === length) {\n target = this;\n i--;\n }\n\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name]; // Prevent Object.prototype pollution\n // Prevent never-ending loop\n\n if (name === \"__proto__\" || target === copy) {\n continue;\n } // Recurse if we're merging plain objects or arrays\n\n\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name]; // Ensure proper type for the source value\n\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n\n copyIsArray = false; // Never move original objects, clone them\n\n target[name] = jQuery.extend(deep, clone, copy); // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n };\n\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function (msg) {\n throw new Error(msg);\n },\n noop: function () {},\n isPlainObject: function (obj) {\n var proto, Ctor; // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n\n proto = getProto(obj); // Objects with no prototype (e.g., `Object.create( null )`) are plain\n\n if (!proto) {\n return true;\n } // Objects with prototype are plain iff they were constructed by a global Object function\n\n\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function (obj) {\n var name;\n\n for (name in obj) {\n return false;\n }\n\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function (code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function (obj, callback) {\n var length,\n i = 0;\n\n if (isArrayLike(obj)) {\n length = obj.length;\n\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n\n return obj;\n },\n // Retrieve the text value of an array of DOM nodes\n text: function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += jQuery.text(node);\n }\n }\n\n if (nodeType === 1 || nodeType === 11) {\n return elem.textContent;\n }\n\n if (nodeType === 9) {\n return elem.documentElement.textContent;\n }\n\n if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n } // Do not include comment or processing instruction nodes\n\n\n return ret;\n },\n // results is for internal usage only\n makeArray: function (arr, results) {\n var ret = results || [];\n\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n\n return ret;\n },\n inArray: function (elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n isXMLDoc: function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement; // Assume HTML when documentElement doesn't yet exist, such as inside\n // document fragments.\n\n return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || \"HTML\");\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function (first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n\n first.length = i;\n return first;\n },\n grep: function (elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert; // Go through the array, only saving the items\n // that pass the validator function\n\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n\n return matches;\n },\n // arg is for internal usage only\n map: function (elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = []; // Go through the array, translating each of the items to their new values\n\n if (isArrayLike(elems)) {\n length = elems.length;\n\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n } // Go through every key on the object,\n\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n }\n } // Flatten any nested arrays\n\n\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n } // Populate the class2type map\n\n\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n\n var pop = arr.pop;\n var sort = arr.sort;\n var splice = arr.splice;\n var whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n var rtrimCSS = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\"); // Note: an element does not contain itself\n\n jQuery.contains = function (a, b) {\n var bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && ( // Support: IE 9 - 11+\n // IE doesn't have `contains` on SVG.\n a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n }; // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n\n\n var rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\n function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n } // Control characters and (dependent upon position) numbers get escaped as code points\n\n\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n } // Other potentially-special ASCII characters get backslash-escaped\n\n\n return \"\\\\\" + ch;\n }\n\n jQuery.escapeSelector = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n\n var preferredDoc = document,\n pushNative = push;\n\n (function () {\n var i,\n Expr,\n outermostContext,\n sortInput,\n hasDuplicate,\n push = pushNative,\n // Local document vars\n document,\n documentElement,\n documentIsHTML,\n rbuggyQSA,\n matches,\n // Instance-specific data\n expando = jQuery.expando,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n\n return 0;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" + \"loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace + // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace + // \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" + // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" + // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rleadingCombinator = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n ID: new RegExp(\"^#(\" + identifier + \")\"),\n CLASS: new RegExp(\"^\\\\.(\" + identifier + \")\"),\n TAG: new RegExp(\"^(\" + identifier + \"|[*])\"),\n ATTR: new RegExp(\"^\" + attributes),\n PSEUDO: new RegExp(\"^\" + pseudos),\n CHILD: new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n bool: new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n needsContext: new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function (escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n\n if (nonHex) {\n // Strip the backslash prefix from a non-hex escape sequence\n return nonHex;\n } // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n\n\n return high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // Used for iframes; see `setDocument`.\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE/Edge.\n unloadHandler = function () {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && nodeName(elem, \"fieldset\");\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n }); // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n\n\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n } // Optimize for push.apply( _, NodeList )\n\n\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes); // Support: Android <=4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: function (target, els) {\n pushNative.apply(target, slice.call(els));\n },\n call: function (target) {\n pushNative.apply(target, slice.call(arguments, 1));\n }\n };\n }\n\n function find(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || []; // Return early from calls with invalid selector or context\n\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n } // Try to shortcut find operations (as opposed to filters) in HTML documents\n\n\n if (!seed) {\n setDocument(context);\n context = context || document;\n\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n push.call(results, elem);\n return results;\n }\n } else {\n return results;\n } // Element context\n\n } else {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) {\n push.call(results, elem);\n return results;\n }\n } // Type selector\n\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results; // Class selector\n } else if ((m = match[3]) && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n } // Take advantage of querySelectorAll\n\n\n if (!nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\n newSelector = selector;\n newContext = context; // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n\n if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context; // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when\n // strict-comparing two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (newContext != context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = jQuery.escapeSelector(nid);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n } // Prefix every selector in the list\n\n\n groups = tokenize(selector);\n i = groups.length;\n\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n\n newSelector = groups.join(\",\");\n }\n\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n } // All others\n\n\n return select(selector.replace(rtrimCSS, \"$1\"), context, results, seed);\n }\n /**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\n\n\n function createCache() {\n var keys = [];\n\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties\n // (see https://github.com/jquery/sizzle/issues/157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n\n return cache[key + \" \"] = value;\n }\n\n return cache;\n }\n /**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\n\n\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n\n\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n } // release memory in IE\n\n\n el = null;\n }\n }\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n\n\n function createInputPseudo(type) {\n return function (elem) {\n return nodeName(elem, \"input\") && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n\n\n function createButtonPseudo(type) {\n return function (elem) {\n return (nodeName(elem, \"input\") || nodeName(elem, \"button\")) && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n\n\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n } // Support: IE 6 - 11+\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\n\n return elem.isDisabled === disabled || // Where there is no isDisabled, check manually\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n\n return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n } // Remaining elements are neither :enabled nor :disabled\n\n\n return false;\n };\n }\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n\n\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length; // Match elements found at the specified indexes\n\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n /**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n\n\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n }\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n\n\n function setDocument(node) {\n var subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n } // Update global variables\n\n\n document = doc;\n documentElement = document.documentElement;\n documentIsHTML = !jQuery.isXMLDoc(document); // Support: iOS 7 only, IE 9 - 11+\n // Older browsers didn't support unprefixed `matches`.\n\n matches = documentElement.matches || documentElement.webkitMatchesSelector || documentElement.msMatchesSelector; // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors\n // (see trac-13936).\n // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\n if (documentElement.msMatchesSelector && // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 9 - 11+, Edge 12 - 18+\n subWindow.addEventListener(\"unload\", unloadHandler);\n } // Support: IE <10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n\n\n support.getById = assert(function (el) {\n documentElement.appendChild(el).id = jQuery.expando;\n return !document.getElementsByName || !document.getElementsByName(jQuery.expando).length;\n }); // Support: IE 9 only\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node.\n\n support.disconnectedMatch = assert(function (el) {\n return matches.call(el, \"*\");\n }); // Support: IE 9 - 11+, Edge 12 - 18+\n // IE/Edge don't support the :scope pseudo-class.\n\n support.scope = assert(function () {\n return document.querySelectorAll(\":scope\");\n }); // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n // Make sure the `:has()` argument is parsed unforgivingly.\n // We include `*` in the test to detect buggy implementations that are\n // _selectively_ forgiving (specifically when the list includes at least\n // one valid selector).\n // Note that we treat complete lack of support for `:has()` as if it were\n // spec-compliant support, which is fine because use of `:has()` in such\n // environments will fail in the qSA path and fall back to jQuery traversal\n // anyway.\n\n support.cssHas = assert(function () {\n try {\n document.querySelector(\":has(*,:jqfake)\");\n return false;\n } catch (e) {\n return true;\n }\n }); // ID filter and find\n\n if (support.getById) {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n }; // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n\n\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n } // Fall back on getElementsByName\n\n\n elems = context.getElementsByName(id);\n i = 0;\n\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n\n return [];\n }\n };\n } // Tag\n\n\n Expr.find.TAG = function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag); // DocumentFragment nodes don't have gEBTN\n } else {\n return context.querySelectorAll(tag);\n }\n }; // Class\n\n\n Expr.find.CLASS = function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n // QSA and matchesSelector support\n\n\n rbuggyQSA = []; // Build QSA regex\n // Regex strategy adopted from Diego Perini\n\n assert(function (el) {\n var input;\n documentElement.appendChild(el).innerHTML = \"\" + \"\"; // Support: iOS <=7 - 8 only\n // Boolean attributes and \"value\" are not treated correctly in some XML documents\n\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n } // Support: iOS <=7 - 8 only\n\n\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n } // Support: iOS 8 only\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n\n\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n } // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n\n\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n } // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n\n\n input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\"); // Support: IE 9 - 11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n\n documentElement.appendChild(el).disabled = true;\n\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n\n\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n });\n\n if (!support.cssHas) {\n // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n // Our regular `try-catch` mechanism fails to detect natively-unsupported\n // pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n // in browsers that parse the `:has()` argument as a forgiving selector list.\n // https://drafts.csswg.org/selectors/#relational now requires the argument\n // to be parsed unforgivingly, but browsers have not yet fully adjusted.\n rbuggyQSA.push(\":has\");\n }\n\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n /* Sorting\n ---------------------------------------------------------------------- */\n // Document order sorting\n\n sortOrder = function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n } // Sort on method existence if only one input has compareDocumentPosition\n\n\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\n if (compare) {\n return compare;\n } // Calculate position if both inputs belong to the same document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : // Otherwise we know they are disconnected\n 1; // Disconnected nodes\n\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (a === document || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) {\n return -1;\n } // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n if (b === document || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) {\n return 1;\n } // Maintain original order\n\n\n return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0;\n }\n\n return compare & 4 ? -1 : 1;\n };\n\n return document;\n }\n\n find.matches = function (expr, elements) {\n return find(expr, null, null, elements);\n };\n\n find.matchesSelector = function (elem, expr) {\n setDocument(elem);\n\n if (documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr); // IE 9's matchesSelector returns false on disconnected nodes\n\n if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n\n return find(expr, document, null, [elem]).length > 0;\n };\n\n find.contains = function (context, elem) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((context.ownerDocument || context) != document) {\n setDocument(context);\n }\n\n return jQuery.contains(context, elem);\n };\n\n find.attr = function (elem, name) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((elem.ownerDocument || elem) != document) {\n setDocument(elem);\n }\n\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (see trac-13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n\n if (val !== undefined) {\n return val;\n }\n\n return elem.getAttribute(name);\n };\n\n find.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n\n\n jQuery.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0; // Unless we *know* we can detect duplicates, assume their presence\n //\n // Support: Android <=4.0+\n // Testing for detecting duplicates is unpredictable so instead assume we can't\n // depend on duplicate detection in all browsers without a stable sort.\n\n hasDuplicate = !support.sortStable;\n sortInput = !support.sortStable && slice.call(results, 0);\n sort.call(results, sortOrder);\n\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n\n while (j--) {\n splice.call(results, duplicates[j], 1);\n }\n } // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n\n\n sortInput = null;\n return results;\n };\n\n jQuery.fn.uniqueSort = function () {\n return this.pushStack(jQuery.uniqueSort(slice.apply(this)));\n };\n\n Expr = jQuery.expr = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n ATTR: function (match) {\n match[1] = match[1].replace(runescape, funescape); // Move the given value to match[3] whether quoted or unquoted\n\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n\n return match.slice(0, 4);\n },\n CHILD: function (match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n find.error(match[0]);\n } // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n\n\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\"); // other types prohibit arguments\n } else if (match[3]) {\n find.error(match[0]);\n }\n\n return match;\n },\n PSEUDO: function (match) {\n var excess,\n unquoted = !match[6] && match[2];\n\n if (matchExpr.CHILD.test(match[0])) {\n return null;\n } // Accept quoted arguments as-is\n\n\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\"; // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && ( // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && ( // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n } // Return only captures needed by the pseudo filter method (type and argument)\n\n\n return match.slice(0, 3);\n }\n },\n filter: {\n TAG: function (nodeNameSelector) {\n var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return nodeName(elem, expectedNodeName);\n };\n },\n CLASS: function (className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n ATTR: function (name, operator, check) {\n return function (elem) {\n var result = find.attr(elem, name);\n\n if (result == null) {\n return operator === \"!=\";\n }\n\n if (!operator) {\n return true;\n }\n\n result += \"\";\n\n if (operator === \"=\") {\n return result === check;\n }\n\n if (operator === \"!=\") {\n return result !== check;\n }\n\n if (operator === \"^=\") {\n return check && result.indexOf(check) === 0;\n }\n\n if (operator === \"*=\") {\n return check && result.indexOf(check) > -1;\n }\n\n if (operator === \"$=\") {\n return check && result.slice(-check.length) === check;\n }\n\n if (operator === \"~=\") {\n return (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1;\n }\n\n if (operator === \"|=\") {\n return result === check || result.slice(0, check.length + 1) === check + \"-\";\n }\n\n return false;\n };\n },\n CHILD: function (type, what, _argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ? // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, _context, xml) {\n var cache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n\n while (node = node[dir]) {\n if (ofType ? nodeName(node, name) : node.nodeType === 1) {\n return false;\n }\n } // Reverse direction for :only-* (if we haven't yet done so)\n\n\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n\n return true;\n }\n\n start = [forward ? parent.firstChild : parent.lastChild]; // non-xml :nth-child(...) stores cache data on `parent`\n\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n outerCache = parent[expando] || (parent[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n\n while (node = ++nodeIndex && node && node[dir] || ( // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n outerCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n outerCache = elem[expando] || (elem[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n } // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\n\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? nodeName(node, name) : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {});\n outerCache[type] = [dirruns, diff];\n }\n\n if (node === elem) {\n break;\n }\n }\n }\n }\n } // Incorporate the offset, then check against cycle size\n\n\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n PSEUDO: function (pseudo, argument) {\n // pseudo-class names are case-insensitive\n // https://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error(\"unsupported pseudo: \" + pseudo); // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as jQuery does\n\n if (fn[expando]) {\n return fn(argument);\n } // But maintain support for old signatures\n\n\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n\n while (i--) {\n idx = indexOf.call(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n not: markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrimCSS, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length; // Match elements unmatched by `matcher`\n\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, _context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results); // Don't keep the element\n // (see https://github.com/jquery/sizzle/issues/299)\n\n input[0] = null;\n return !results.pop();\n };\n }),\n has: markFunction(function (selector) {\n return function (elem) {\n return find(selector, elem).length > 0;\n };\n }),\n contains: markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || jQuery.text(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // https://www.w3.org/TR/selectors/#lang-pseudo\n lang: markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n find.error(\"unsupported lang: \" + lang);\n }\n\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n\n return false;\n };\n }),\n // Miscellaneous\n target: function (elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n root: function (elem) {\n return elem === documentElement;\n },\n focus: function (elem) {\n return elem === safeActiveElement() && document.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n enabled: createDisabledPseudo(false),\n disabled: createDisabledPseudo(true),\n checked: function (elem) {\n // In CSS3, :checked should return both checked and selected elements\n // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n return nodeName(elem, \"input\") && !!elem.checked || nodeName(elem, \"option\") && !!elem.selected;\n },\n selected: function (elem) {\n // Support: IE <=11+\n // Accessing the selectedIndex property\n // forces the browser to treat the default option as\n // selected when in an optgroup.\n if (elem.parentNode) {\n // eslint-disable-next-line no-unused-expressions\n elem.parentNode.selectedIndex;\n }\n\n return elem.selected === true;\n },\n // Contents\n empty: function (elem) {\n // https://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n\n return true;\n },\n parent: function (elem) {\n return !Expr.pseudos.empty(elem);\n },\n // Element/input types\n header: function (elem) {\n return rheader.test(elem.nodeName);\n },\n input: function (elem) {\n return rinputs.test(elem.nodeName);\n },\n button: function (elem) {\n return nodeName(elem, \"input\") && elem.type === \"button\" || nodeName(elem, \"button\");\n },\n text: function (elem) {\n var attr;\n return nodeName(elem, \"input\") && elem.type === \"text\" && ( // Support: IE <10 only\n // New HTML5 attribute values (e.g., \"search\") appear\n // with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n first: createPositionalPseudo(function () {\n return [0];\n }),\n last: createPositionalPseudo(function (_matchIndexes, length) {\n return [length - 1];\n }),\n eq: createPositionalPseudo(function (_matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n even: createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n odd: createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n lt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i;\n\n if (argument < 0) {\n i = argument + length;\n } else if (argument > length) {\n i = length;\n } else {\n i = argument;\n }\n\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n gt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n })\n }\n };\n Expr.pseudos.nth = Expr.pseudos.eq; // Add button/input type pseudos\n\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n } // Easy API for creating new setFilters\n\n\n function setFilters() {}\n\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n\n function tokenize(selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n\n groups.push(tokens = []);\n }\n\n matched = false; // Combinators\n\n if (match = rleadingCombinator.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrimCSS, \" \")\n });\n soFar = soFar.slice(matched.length);\n } // Filters\n\n\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n\n if (!matched) {\n break;\n }\n } // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n\n\n if (parseOnly) {\n return soFar.length;\n }\n\n return soFar ? find.error(selector) : // Cache the tokens\n tokenCache(selector, groups).slice(0);\n }\n\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n\n return selector;\n }\n\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ? // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n\n return false;\n } : // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n outerCache,\n newCache = [dirruns, doneName]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {});\n\n if (skip && nodeName(elem, skip)) {\n elem = elem[dir] || elem;\n } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n outerCache[key] = newCache; // A match means we're done; a fail means we have to keep checking\n\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n };\n }\n\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n\n return true;\n } : matchers[0];\n }\n\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n\n for (; i < len; i++) {\n find(selector, contexts[i], results);\n }\n\n return results;\n }\n\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n\n return newUnmatched;\n }\n\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n matcherOut,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems;\n\n if (matcher) {\n // If we have a postFinder, or filtered seed, or non-seed postFilter\n // or preexisting results,\n matcherOut = postFinder || (seed ? preFilter : preexisting || postFilter) ? // ...intermediate processing is necessary\n [] : // ...otherwise use results directly\n results; // Find primary matches\n\n matcher(matcherIn, matcherOut, context, xml);\n } else {\n matcherOut = matcherIn;\n } // Apply postFilter\n\n\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml); // Un-match failing elements by moving them back to matcherIn\n\n i = temp.length;\n\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n\n postFinder(null, matcherOut = [], temp, xml);\n } // Move matched elements from seed to results to keep them synchronized\n\n\n i = matcherOut.length;\n\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf.call(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n } // Add elements to results, through postFinder if defined\n\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf.call(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); // Avoid hanging onto element\n // (see https://github.com/jquery/sizzle/issues/299)\n\n checkContext = null;\n return ret;\n }];\n\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); // Return special upon seeing a positional matcher\n\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrimCSS, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n\n matchers.push(matcher);\n }\n }\n\n return elementMatcher(matchers);\n }\n\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function (seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find.TAG(\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n\n if (outermost) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n outermostContext = context == document || context || outermost;\n } // Add elements passing elementMatchers directly to results\n // Support: iOS <=7 - 9 only\n // Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n // elements by id. (see trac-14142)\n\n\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0; // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (!context && elem.ownerDocument != document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n push.call(results, elem);\n break;\n }\n }\n\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n } // Track unmatched elements for set filters\n\n\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n } // Lengthen the array for every element, matched or not\n\n\n if (seed) {\n unmatched.push(elem);\n }\n }\n } // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n\n\n matchedCount += i; // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n\n if (bySet && i !== matchedCount) {\n j = 0;\n\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n } // Discard index placeholder values to get only actual matches\n\n\n setMatched = condense(setMatched);\n } // Add matches to results\n\n\n push.apply(results, setMatched); // Seedless set matches succeeding multiple successful matchers stipulate sorting\n\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n jQuery.uniqueSort(results);\n }\n } // Override manipulation of globals by nested matchers\n\n\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n\n return unmatched;\n };\n\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n\n function compile(selector, match\n /* Internal Use Only */\n ) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n\n i = match.length;\n\n while (i--) {\n cached = matcherFromTokens(match[i]);\n\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n } // Cache the compiled function\n\n\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); // Save selector and tokenization\n\n cached.selector = selector;\n }\n\n return cached;\n }\n /**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\n\n\n function select(selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || []; // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];\n\n if (!context) {\n return results; // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n\n selector = selector.slice(tokens.shift().value.length);\n } // Fetch a seed set for right-to-left matching\n\n\n i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;\n\n while (i--) {\n token = tokens[i]; // Abort if we hit a combinator\n\n if (Expr.relative[type = token.type]) {\n break;\n }\n\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n\n break;\n }\n }\n }\n } // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n\n\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n } // One-time assignments\n // Support: Android <=4.0 - 4.1+\n // Sort stability\n\n\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando; // Initialize against the default document\n\n setDocument(); // Support: Android <=4.0 - 4.1+\n // Detached nodes confoundingly follow *each other*\n\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n });\n jQuery.find = find; // Deprecated\n\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.unique = jQuery.uniqueSort; // These have always been private, but they used to be documented as part of\n // Sizzle so let's maintain them for now for backwards compatibility purposes.\n\n find.compile = compile;\n find.select = select;\n find.setDocument = setDocument;\n find.tokenize = tokenize;\n find.escape = jQuery.escapeSelector;\n find.getText = jQuery.text;\n find.isXML = jQuery.isXMLDoc;\n find.selectors = jQuery.expr;\n find.support = jQuery.support;\n find.uniqueSort = jQuery.uniqueSort;\n /* eslint-enable */\n })();\n\n var dir = function (elem, dir, until) {\n var matched = [],\n truncate = until !== undefined;\n\n while ((elem = elem[dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n\n matched.push(elem);\n }\n }\n\n return matched;\n };\n\n var siblings = function (n, elem) {\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n\n return matched;\n };\n\n var rneedsContext = jQuery.expr.match.needsContext;\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i; // Implement the identical functionality for filter and not\n\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n } // Single element\n\n\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n } // Arraylike of elements (jQuery, arguments, Array)\n\n\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n } // Filtered directly for both simple and complex selectors\n\n\n return jQuery.filter(qualifier, elements, not);\n }\n\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n\n jQuery.fn.extend({\n find: function (selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n\n ret = this.pushStack([]);\n\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function (selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function (selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function (selector) {\n return !!winnow(this, // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n }); // Initialize a jQuery object\n // A central reference to the root jQuery(document)\n\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over to avoid XSS via location.hash (trac-9521)\n // Strict HTML recognition (trac-11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem; // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\n if (!selector) {\n return this;\n } // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n\n\n root = root || rootjQuery; // Handle HTML strings\n\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n } // Match html or make sure no context is specified for #id\n\n\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context; // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)); // HANDLE: $(html, props)\n\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]); // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n\n return this; // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n\n return this;\n } // HANDLE: $(expr, $(...))\n\n } else if (!context || context.jquery) {\n return (context || root).find(selector); // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n } // HANDLE: $(DOMElement)\n\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this; // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) : // Execute immediately if ready is not present\n selector(jQuery);\n }\n\n return jQuery.makeArray(selector, this);\n }; // Give the init function the jQuery prototype for later instantiation\n\n\n init.prototype = jQuery.fn; // Initialize central reference\n\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function (target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function (selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors); // Positional selectors never match, since there's no _selection_ context\n\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : // Don't pass non-elements to jQuery#find\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function (elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n } // Index in selector\n\n\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n } // Locate the position of the desired element\n\n\n return indexOf.call(this, // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function (selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function (selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n\n return cur;\n }\n\n jQuery.each({\n parent: function (elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function (elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function (elem, _i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function (elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function (elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function (elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function (elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function (elem, _i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function (elem, _i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function (elem) {\n return siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function (elem) {\n return siblings(elem.firstChild);\n },\n contents: function (elem) {\n if (elem.contentDocument != null && // Support: IE 11+\n // elements with no `data` attribute has an object\n // `contentDocument` with a `null` prototype.\n getProto(elem.contentDocument)) {\n return elem.contentDocument;\n } // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n\n\n if (nodeName(elem, \"template\")) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n } // Reverse order for parents* and prev-derivatives\n\n\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g; // Convert String-formatted options into Object-formatted ones\n\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\n }\n /*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\n\n\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n\n var // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n fired,\n // Flag to prevent firing\n locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function () {\n // Enforce single-firing\n locked = locked || options.once; // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n\n fired = firing = true;\n\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n } // Forget the data if we're done with it\n\n\n if (!options.memory) {\n memory = false;\n }\n\n firing = false; // Clean up if we're done firing for good\n\n if (locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = []; // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function () {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n\n if (memory && !firing) {\n fire();\n }\n }\n\n return this;\n },\n // Remove a callback from the list\n remove: function () {\n jQuery.each(arguments, function (_, arg) {\n var index;\n\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1); // Handle firing indexes\n\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function (fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function () {\n if (list) {\n list = [];\n }\n\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function () {\n locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function () {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function () {\n locked = queue = [];\n\n if (!memory && !firing) {\n list = memory = \"\";\n }\n\n return this;\n },\n locked: function () {\n return !!locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function (context, args) {\n if (!locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n\n if (!firing) {\n fire();\n }\n }\n\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function () {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function () {\n return !!fired;\n }\n };\n\n return self;\n };\n\n function Identity(v) {\n return v;\n }\n\n function Thrower(ex) {\n throw ex;\n }\n\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject); // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject); // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n } // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n\n jQuery.extend({\n Deferred: function (func) {\n var tuples = [// action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n state = \"pending\",\n promise = {\n state: function () {\n return state;\n },\n always: function () {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function (fn) {\n return promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function\n /* fnDone, fnFail, fnProgress */\n () {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (_i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function (onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function () {\n var returned, then; // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n\n if (depth < maxDepth) {\n return;\n }\n\n returned = handler.apply(that, args); // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n } // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n\n\n then = returned && ( // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n typeof returned === \"object\" || typeof returned === \"function\") && returned.then; // Handle a returned thenable\n\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)); // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n } // Handle all other returned values\n\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n } // Process the value(s)\n // Default process is resolve\n\n\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.error);\n } // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n\n\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n\n deferred.rejectWith(that, args);\n }\n }\n }; // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n\n\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the error, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getErrorHook) {\n process.error = jQuery.Deferred.getErrorHook(); // The deprecated alias of the above. While the name suggests\n // returning the stack, not an error instance, jQuery just passes\n // it directly to `console.warn` so both will work; an instance\n // just better cooperates with source maps.\n } else if (jQuery.Deferred.getStackHook) {\n process.error = jQuery.Deferred.getStackHook();\n }\n\n window.setTimeout(process);\n }\n };\n }\n\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)); // fulfilled_handlers.add( ... )\n\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity)); // rejected_handlers.add( ... )\n\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function (obj) {\n return obj != null ? jQuery.extend(obj, promise) : promise;\n }\n },\n deferred = {}; // Add list-specific methods\n\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5]; // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n\n promise[tuple[1]] = list.add; // Handle state\n\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n state = stateString;\n }, // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable, // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable, // progress_callbacks.lock\n tuples[0][2].lock, // progress_handlers.lock\n tuples[0][3].lock);\n } // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n\n\n list.add(tuple[3].fire); // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n }; // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n\n\n deferred[tuple[0] + \"With\"] = list.fireWith;\n }); // Make the deferred a promise\n\n promise.promise(deferred); // Call given func if any\n\n if (func) {\n func.call(deferred, deferred);\n } // All done!\n\n\n return deferred;\n },\n // Deferred helper\n when: function (singleValue) {\n var // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = slice.call(arguments),\n // the primary Deferred\n primary = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function (i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? slice.call(arguments) : value;\n\n if (! --remaining) {\n primary.resolveWith(resolveContexts, resolveValues);\n }\n };\n }; // Single- and empty arguments are adopted like Promise.resolve\n\n\n if (remaining <= 1) {\n adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining); // Use .then() to unwrap secondary thenables (cf. gh-3000)\n\n if (primary.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return primary.then();\n }\n } // Multiple arguments are aggregated like Promise.all array elements\n\n\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), primary.reject);\n }\n\n return primary.promise();\n }\n }); // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; // If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n // captured before the async barrier to get the original error cause\n // which may otherwise be hidden.\n\n jQuery.Deferred.exceptionHook = function (error, asyncError) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, asyncError);\n }\n };\n\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n }; // The deferred used on DOM ready\n\n\n var readyList = jQuery.Deferred();\n\n jQuery.fn.ready = function (fn) {\n readyList.then(fn) // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n .catch(function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See trac-6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function (wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n } // Remember that the DOM is ready\n\n\n jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be\n\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n } // If there are functions bound, to execute\n\n\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then; // The ready event handler and self cleanup method\n\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.ready();\n } // Catch cases where $(document).ready() is called\n // after the browser event has already occurred.\n // Support: IE <=9 - 10 only\n // Older IE sometimes signals \"interactive\" too soon\n\n\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed); // A fallback to window.onload, that will always work\n\n window.addEventListener(\"load\", completed);\n } // Multifunctional method to get and set values of a collection\n // The value/s can optionally be executed if it's a function\n\n\n var access = function (elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null; // Sets many values\n\n if (toType(key) === \"object\") {\n chainable = true;\n\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n } // Sets one value\n\n } else if (value !== undefined) {\n chainable = true;\n\n if (!isFunction(value)) {\n raw = true;\n }\n\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null; // ...except when executing function values\n } else {\n bulk = fn;\n\n fn = function (elem, _key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n\n if (chainable) {\n return elems;\n } // Gets\n\n\n if (bulk) {\n return fn.call(elems);\n }\n\n return len ? fn(elems[0], key) : emptyGet;\n }; // Matches dashed string for camelizing\n\n\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace()\n\n function fcamelCase(_all, letter) {\n return letter.toUpperCase();\n } // Convert dashed to camelCase; used by the css and data modules\n // Support: IE <=9 - 11, Edge 12 - 15\n // Microsoft forgot to hump their vendor prefix (trac-9572)\n\n\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n\n var acceptData = function (owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n\n Data.uid = 1;\n Data.prototype = {\n cache: function (owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando]; // If not, create one\n\n if (!value) {\n value = {}; // We can accept data for non-element nodes in modern browsers,\n // but we should not, see trac-8335.\n // Always return an empty object.\n\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value; // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n\n return value;\n },\n set: function (owner, data, value) {\n var prop,\n cache = this.cache(owner); // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value; // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n\n return cache;\n },\n get: function (owner, key) {\n return key === undefined ? this.cache(owner) : // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function (owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n } // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n\n\n this.set(owner, key, value); // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n\n return value !== undefined ? value : key;\n },\n remove: function (owner, key) {\n var i,\n cache = owner[this.expando];\n\n if (cache === undefined) {\n return;\n }\n\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key); // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n\n i = key.length;\n\n while (i--) {\n delete cache[key[i]];\n }\n } // Remove the expando if there's no more data\n\n\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function (owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data(); //\tImplementation Summary\n //\n //\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n //\t2. Improve the module's maintainability by reducing the storage\n //\t\tpaths to a single mechanism.\n //\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n //\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n //\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n //\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n\n if (data === \"false\") {\n return false;\n }\n\n if (data === \"null\") {\n return null;\n } // Only convert to a number if it doesn't change the string\n\n\n if (data === +data + \"\") {\n return +data;\n }\n\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n\n return data;\n }\n\n function dataAttr(elem, key, data) {\n var name; // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {} // Make sure we set the data so it isn't changed later\n\n\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n\n return data;\n }\n\n jQuery.extend({\n hasData: function (elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function (elem, name, data) {\n return dataUser.access(elem, name, data);\n },\n removeData: function (elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function (elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function (elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function (key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes; // Gets all values\n\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (trac-14894)\n if (attrs[i]) {\n name = attrs[i].name;\n\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n\n return data;\n } // Sets multiple values\n\n\n if (typeof key === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n\n return access(this, function (value) {\n var data; // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n\n if (data !== undefined) {\n return data;\n } // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n\n\n data = dataAttr(elem, key);\n\n if (data !== undefined) {\n return data;\n } // We tried really hard, but the data doesn't exist.\n\n\n return;\n } // Set the data...\n\n\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function (key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function (elem, type, data) {\n var queue;\n\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type); // Speed up dequeue by getting out quickly if this is just a lookup\n\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n\n return queue || [];\n }\n },\n dequeue: function (elem, type) {\n type = type || \"fx\";\n\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function () {\n jQuery.dequeue(elem, type);\n }; // If the fx queue is dequeued, always remove the progress sentinel\n\n\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n } // Clear up the last queue stop function\n\n\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function (elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function (type, data) {\n var setter = 2;\n\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data); // Ensure a hooks for this queue\n\n jQuery._queueHooks(this, type);\n\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function (type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function (type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function (type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function () {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n\n type = type || \"fx\";\n\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var documentElement = document.documentElement;\n\n var isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n }; // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n\n\n if (documentElement.getRootNode) {\n isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n\n var isHiddenWithinTree = function (elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem; // Inline style trumps all\n\n return elem.style.display === \"none\" || elem.style.display === \"\" && // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2; // Trust units reported by jQuery.css\n\n unit = unit || initialInUnit[3]; // Iteratively approximate from a nonzero starting point\n\n initialInUnit = +initial || 1;\n\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n\n initialInUnit = initialInUnit / scale;\n }\n\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit); // Make sure we update the tween properties later on\n\n valueParts = valueParts || [];\n }\n\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified\n\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n\n return adjusted;\n }\n\n var defaultDisplayMap = {};\n\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n\n if (display) {\n return display;\n }\n\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n\n if (display === \"none\") {\n display = \"block\";\n }\n\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length; // Determine new display value for elements that need to change\n\n for (; index < length; index++) {\n elem = elements[index];\n\n if (!elem.style) {\n continue;\n }\n\n display = elem.style.display;\n\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\"; // Remember what we're overwriting\n\n dataPriv.set(elem, \"display\", display);\n }\n }\n } // Set the display of the elements in a second loop to avoid constant reflow\n\n\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n\n return elements;\n }\n\n jQuery.fn.extend({\n show: function () {\n return showHide(this, true);\n },\n hide: function () {\n return showHide(this);\n },\n toggle: function (state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n var rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\n\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\"); // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (trac-11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (trac-14901)\n\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input); // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n\n div.innerHTML = \"\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; // Support: IE <=9 only\n // IE <=9 replaces \";\n support.option = !!div.lastChild;\n })(); // We have to close these tags to support XHTML (trac-13200)\n\n\n var wrapMap = {\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting or other required elements.\n thead: [1, \"\", \"
\"],\n col: [2, \"\", \"
\"],\n tr: [2, \"\", \"
\"],\n td: [3, \"\", \"
\"],\n _default: [0, \"\", \"\"]\n };\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td; // Support: IE <=9 only\n\n if (!support.option) {\n wrapMap.optgroup = wrapMap.option = [1, \"\"];\n }\n\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n var ret;\n\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n\n return ret;\n } // Mark scripts as having already been evaluated\n\n\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n\n var rhtml = /<|&#?\\w+;/;\n\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n elem = elems[i];\n\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem); // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem)); // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\")); // Deserialize a standard representation\n\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; // Descend through wrappers to the right content\n\n j = wrap[0];\n\n while (j--) {\n tmp = tmp.lastChild;\n } // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n\n\n jQuery.merge(nodes, tmp.childNodes); // Remember the top-level container\n\n tmp = fragment.firstChild; // Ensure the created nodes are orphaned (trac-12392)\n\n tmp.textContent = \"\";\n }\n }\n } // Remove wrapper from fragment\n\n\n fragment.textContent = \"\";\n i = 0;\n\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n\n continue;\n }\n\n attached = isAttached(elem); // Append to fragment\n\n tmp = getAll(fragment.appendChild(elem), \"script\"); // Preserve script evaluation history\n\n if (attached) {\n setGlobalEval(tmp);\n } // Capture executables\n\n\n if (scripts) {\n j = 0;\n\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n\n return fragment;\n }\n\n var rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n }\n\n function on(elem, types, selector, data, fn, one) {\n var origFn, type; // Types can be a map of types/handlers\n\n if (typeof types === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n\n for (type in types) {\n on(elem, type, selector, data, types[type], one);\n }\n\n return elem;\n }\n\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n\n if (one === 1) {\n origFn = fn;\n\n fn = function (event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n }; // Use same guid so caller can remove using origFn\n\n\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\n }\n /*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\n\n\n jQuery.event = {\n global: {},\n add: function (elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem); // Only attach events to objects that accept data\n\n if (!acceptData(elem)) {\n return;\n } // Caller can pass in an object of custom data in lieu of the handler\n\n\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n } // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\n\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n } // Make sure that the handler has a unique ID, used to find/remove it later\n\n\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n } // Init the element's event structure and main handler, if this is the first\n\n\n if (!(events = elemData.events)) {\n events = elemData.events = Object.create(null);\n }\n\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n } // Handle multiple events separated by a space\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // There *must* be a type, no attaching namespace-only handlers\n\n if (!type) {\n continue;\n } // If event changes its type, use the special event handlers for the changed type\n\n\n special = jQuery.event.special[type] || {}; // If selector defined, determine special event api type, otherwise given type\n\n type = (selector ? special.delegateType : special.bindType) || type; // Update special based on newly reset type\n\n special = jQuery.event.special[type] || {}; // handleObj is passed to all event handlers\n\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn); // Init the event handler queue if we're the first\n\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false\n\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n\n if (special.add) {\n special.add.call(elem, handleObj);\n\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n } // Add to the element's handler list, delegates in front\n\n\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n } // Keep track of which events have ever been used, for event optimization\n\n\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function (elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n\n if (!elemData || !(events = elemData.events)) {\n return;\n } // Once for each type.namespace in types; type may be omitted\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // Unbind all events (on this namespace, if provided) for the element\n\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n\n continue;\n }\n\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\"); // Remove matching events\n\n origCount = j = handlers.length;\n\n while (j--) {\n handleObj = handlers[j];\n\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n } // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n\n\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n\n delete events[type];\n }\n } // Remove data and the expando if it's no longer used\n\n\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function (nativeEvent) {\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(nativeEvent),\n handlers = (dataPriv.get(this, \"events\") || Object.create(null))[event.type] || [],\n special = jQuery.event.special[event.type] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event\n\n args[0] = event;\n\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired\n\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n } // Determine handlers\n\n\n handlerQueue = jQuery.event.handlers.call(this, event, handlers); // Run delegates first; they may want to stop propagation beneath us\n\n i = 0;\n\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n } // Call the postDispatch hook for the mapped type\n\n\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n\n return event.result;\n },\n handlers: function (event, handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = handlers.delegateCount,\n cur = event.target; // Find delegate handlers\n\n if (delegateCount && // Support: IE <=9\n // Black-hole SVG instance trees (trac-13180)\n cur.nodeType && // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (trac-13208)\n // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n\n for (i = 0; i < delegateCount; i++) {\n handleObj = handlers[i]; // Don't conflict with Object.prototype properties (trac-13203)\n\n sel = handleObj.selector + \" \";\n\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n } // Add the remaining (directly-bound) handlers\n\n\n cur = this;\n\n if (delegateCount < handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: handlers.slice(delegateCount)\n });\n }\n\n return handlerQueue;\n },\n addProp: function (name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function (value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function (originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Claim the first handler\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", true);\n } // Return false to allow normal processing in the caller\n\n\n return false;\n },\n trigger: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Force setup before triggering a click\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n } // Return non-false to allow normal event-path propagation\n\n\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function (event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function (event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n }; // Ensure the presence of an event listener that handles manually-triggered\n // synthetic events by interrupting progress until reinvoked in response to\n // *native* events that it fires directly, ensuring that state changes have\n // already occurred before other listeners are invoked.\n\n function leverageNative(el, type, isSetup) {\n // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n if (!isSetup) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n\n return;\n } // Register the controller as a special universal handler for all event namespaces\n\n\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function (event) {\n var result,\n saved = dataPriv.get(this, type);\n\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n if (!saved) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = slice.call(arguments);\n dataPriv.set(this, type, saved); // Trigger the native event and capture its result\n\n this[type]();\n result = dataPriv.get(this, type);\n dataPriv.set(this, type, false);\n\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault();\n return result;\n } // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering\n // the native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n } // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n\n } else if (saved) {\n // ...and capture the result\n dataPriv.set(this, type, jQuery.event.trigger(saved[0], saved.slice(1), this)); // Abort handling of the native event by all jQuery handlers while allowing\n // native handlers on the same element to run. On target, this is achieved\n // by stopping immediate propagation just on the jQuery event. However,\n // the native event is re-wrapped by a jQuery one on each level of the\n // propagation so the only way to stop it for jQuery is to stop it for\n // everyone via native `stopPropagation()`. This is not a problem for\n // focus/blur which don't bubble, but it does also stop click on checkboxes\n // and radios. We accept this limitation.\n\n event.stopPropagation();\n event.isImmediatePropagationStopped = returnTrue;\n }\n }\n });\n }\n\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n } // Event object\n\n\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type; // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse; // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (trac-504, trac-13143)\n\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget; // Event type\n } else {\n this.type = src;\n } // Put explicitly provided properties onto the event object\n\n\n if (props) {\n jQuery.extend(this, props);\n } // Create a timestamp if incoming event doesn't have one\n\n\n this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed\n\n this[jQuery.expando] = true;\n }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n\n\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function () {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function () {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function () {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n\n this.stopPropagation();\n }\n }; // Includes all common event props including KeyEvent and MouseEvent specific props\n\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: true\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n function focusMappedHandler(nativeEvent) {\n if (document.documentMode) {\n // Support: IE 11+\n // Attach a single focusin/focusout handler on the document while someone wants\n // focus/blur. This is because the former are synchronous in IE while the latter\n // are async. In other browsers, all those handlers are invoked synchronously.\n // `handle` from private data would already wrap the event, but we need\n // to change the `type` here.\n var handle = dataPriv.get(this, \"handle\"),\n event = jQuery.event.fix(nativeEvent);\n event.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n event.isSimulated = true; // First, handle focusin/focusout\n\n handle(nativeEvent); // ...then, handle focus/blur\n //\n // focus/blur don't bubble while focusin/focusout do; simulate the former by only\n // invoking the handler at the lower level.\n\n if (event.target === event.currentTarget) {\n // The setup part calls `leverageNative`, which, in turn, calls\n // `jQuery.event.add`, so event handle will already have been set\n // by this point.\n handle(event);\n }\n } else {\n // For non-IE browsers, attach a single capturing handler on the document\n // while someone wants focusin/focusout.\n jQuery.event.simulate(delegateType, nativeEvent.target, jQuery.event.fix(nativeEvent));\n }\n }\n\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function () {\n var attaches; // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n\n leverageNative(this, type, true);\n\n if (document.documentMode) {\n // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n attaches = dataPriv.get(this, delegateType);\n\n if (!attaches) {\n this.addEventListener(delegateType, focusMappedHandler);\n }\n\n dataPriv.set(this, delegateType, (attaches || 0) + 1);\n } else {\n // Return false to allow normal processing in the caller\n return false;\n }\n },\n trigger: function () {\n // Force setup before trigger\n leverageNative(this, type); // Return non-false to allow normal event-path propagation\n\n return true;\n },\n teardown: function () {\n var attaches;\n\n if (document.documentMode) {\n attaches = dataPriv.get(this, delegateType) - 1;\n\n if (!attaches) {\n this.removeEventListener(delegateType, focusMappedHandler);\n dataPriv.remove(this, delegateType);\n } else {\n dataPriv.set(this, delegateType, attaches);\n }\n } else {\n // Return false to indicate standard teardown should be applied\n return false;\n }\n },\n // Suppress native focus or blur if we're currently inside\n // a leveraged native-event stack\n _default: function (event) {\n return dataPriv.get(event.target, type);\n },\n delegateType: delegateType\n }; // Support: Firefox <=44\n // Firefox doesn't have focus(in | out) events\n // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n //\n // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n // focus(in | out) events fire after focus & blur events,\n // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n //\n // Support: IE 9 - 11+\n // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n // attach a single handler for both events in IE.\n\n jQuery.event.special[delegateType] = {\n setup: function () {\n // Handle: regular nodes (via `this.ownerDocument`), window\n // (via `this.document`) & document (via `this`).\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType); // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\n if (!attaches) {\n if (document.documentMode) {\n this.addEventListener(delegateType, focusMappedHandler);\n } else {\n doc.addEventListener(type, focusMappedHandler, true);\n }\n }\n\n dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1);\n },\n teardown: function () {\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType) - 1;\n\n if (!attaches) {\n if (document.documentMode) {\n this.removeEventListener(delegateType, focusMappedHandler);\n } else {\n doc.removeEventListener(type, focusMappedHandler, true);\n }\n\n dataPriv.remove(dataHolder, delegateType);\n } else {\n dataPriv.set(dataHolder, delegateType, attaches);\n }\n }\n };\n }); // Create mouseenter/leave events using mouseover/out and event-time checks\n // so that event delegation works in jQuery.\n // Do the same for pointerenter/pointerleave and pointerover/pointerout\n //\n // Support: Safari 7 only\n // Safari sends mouseenter too often; see:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n // for the description of the bug (it existed in older Chrome versions as well).\n\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function (event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn);\n },\n one: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn, 1);\n },\n off: function (types, selector, fn) {\n var handleObj, type;\n\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n\n if (typeof types === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n\n return this;\n }\n\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n\n if (fn === false) {\n fn = returnFalse;\n }\n\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /\\s*$/g; // Prefer a tbody over its parent table for containing new rows\n\n function manipulationTarget(elem, content) {\n if (nodeName(elem, \"table\") && nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return jQuery(elem).children(\"tbody\")[0] || elem;\n }\n\n return elem;\n } // Replace/restore the type attribute of script elements for safe DOM manipulation\n\n\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n\n function restoreScript(elem) {\n if ((elem.type || \"\").slice(0, 5) === \"true/\") {\n elem.type = elem.type.slice(5);\n } else {\n elem.removeAttribute(\"type\");\n }\n\n return elem;\n }\n\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, udataOld, udataCur, events;\n\n if (dest.nodeType !== 1) {\n return;\n } // 1. Copy private data: events, handlers, etc.\n\n\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.get(src);\n events = pdataOld.events;\n\n if (events) {\n dataPriv.remove(dest, \"handle events\");\n\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n } // 2. Copy user data\n\n\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n } // Fix IE bugs, see support tests\n\n\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase(); // Fails to persist the checked state of a cloned checkbox or radio button.\n\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked; // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = flat(args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n valueIsFunction = isFunction(value); // We can't cloneNode fragments that contain checked, in WebKit\n\n if (valueIsFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n\n if (valueIsFunction) {\n args[0] = value.call(this, index, self.html());\n }\n\n domManip(self, args, callback, ignored);\n });\n }\n\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n\n if (fragment.childNodes.length === 1) {\n fragment = first;\n } // Require either new content or an interest in ignored elements to invoke the callback\n\n\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length; // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (trac-8070).\n\n for (; i < l; i++) {\n node = fragment;\n\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true); // Keep references to cloned scripts for later restoration\n\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n\n callback.call(collection[i], node, i);\n }\n\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument; // Re-enable scripts\n\n jQuery.map(scripts, restoreScript); // Evaluate executable scripts on first document insertion\n\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src && (node.type || \"\").toLowerCase() !== \"module\") {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl && !node.noModule) {\n jQuery._evalUrl(node.src, {\n nonce: node.nonce || node.getAttribute(\"nonce\")\n }, doc);\n }\n } else {\n // Unwrap a CDATA section containing script contents. This shouldn't be\n // needed as in XML documents they're already not visible when\n // inspecting element contents and in HTML documents they have no\n // meaning but we're preserving that logic for backwards compatibility.\n // This will be removed completely in 4.0. See gh-4904.\n DOMEval(node.textContent.replace(rcleanScript, \"\"), node, doc);\n }\n }\n }\n }\n }\n }\n\n return collection;\n }\n\n function remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n\n if (node.parentNode) {\n if (keepData && isAttached(node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n\n node.parentNode.removeChild(node);\n }\n }\n\n return elem;\n }\n\n jQuery.extend({\n htmlPrefilter: function (html) {\n return html;\n },\n clone: function (elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = isAttached(elem); // Fix IE cloning issues\n\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew jQuery#find here for performance reasons:\n // https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n } // Copy the events from the original to the clone\n\n\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n } // Preserve script evaluation history\n\n\n destElements = getAll(clone, \"script\");\n\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n } // Return the cloned set\n\n\n return clone;\n },\n cleanData: function (elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type); // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n } // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n\n\n elem[dataPriv.expando] = undefined;\n }\n\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function (selector) {\n return remove(this, selector, true);\n },\n remove: function (selector) {\n return remove(this, selector);\n },\n text: function (value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function () {\n var elem,\n i = 0;\n\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false)); // Remove any remaining nodes\n\n elem.textContent = \"\";\n }\n }\n\n return this;\n },\n clone: function (dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function (value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n } // See if we can take a shortcut and just use innerHTML\n\n\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n\n try {\n for (; i < l; i++) {\n elem = this[i] || {}; // Remove element nodes and prevent memory leaks\n\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n\n elem = 0; // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function () {\n var ignored = []; // Make the changes, replacing each non-ignored context element with the new content\n\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n\n if (parent) {\n parent.replaceChild(elem, this);\n }\n } // Force callback invocation\n\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems); // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n\n push.apply(ret, elems.get());\n }\n\n return this.pushStack(ret);\n };\n });\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n var rcustomProp = /^--/;\n\n var getStyles = function (elem) {\n // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n };\n\n var swap = function (elem, options, callback) {\n var ret,\n name,\n old = {}; // Remember the old values, and insert the new ones\n\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n\n ret = callback.call(elem); // Revert the old values\n\n for (name in options) {\n elem.style[name] = old[name];\n }\n\n return ret;\n };\n\n var rboxStyle = new RegExp(cssExpand.join(\"|\"), \"i\");\n\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n\n container.style.cssText = \"position:absolute;left:-11111px;width:60px;\" + \"margin-top:1px;padding:0;border:0\";\n div.style.cssText = \"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" + \"margin:auto;border:1px;padding:1px;\" + \"width:60%;top:1%\";\n documentElement.appendChild(container).appendChild(div);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\n reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n // Some styles come back with percentage values, even though they shouldn't\n\n div.style.right = \"60%\";\n pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; // Support: IE 9 - 11 only\n // Detect misreporting of content dimensions for box-sizing:border-box elements\n\n boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; // Support: IE 9 only\n // Detect overflow:scroll screwiness (gh-3699)\n // Support: Chrome <=64\n // Don't get tricked when zoom affects offsetWidth (gh-4029)\n\n div.style.position = \"absolute\";\n scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;\n documentElement.removeChild(container); // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n\n div = null;\n }\n\n function roundPixelMeasures(measure) {\n return Math.round(parseFloat(measure));\n }\n\n var pixelPositionVal,\n boxSizingReliableVal,\n scrollboxSizeVal,\n pixelBoxStylesVal,\n reliableTrDimensionsVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\"); // Finish early in limited (non-browser) environments\n\n if (!div.style) {\n return;\n } // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (trac-8908)\n\n\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n jQuery.extend(support, {\n boxSizingReliable: function () {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelBoxStyles: function () {\n computeStyleTests();\n return pixelBoxStylesVal;\n },\n pixelPosition: function () {\n computeStyleTests();\n return pixelPositionVal;\n },\n reliableMarginLeft: function () {\n computeStyleTests();\n return reliableMarginLeftVal;\n },\n scrollboxSize: function () {\n computeStyleTests();\n return scrollboxSizeVal;\n },\n // Support: IE 9 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Behavior in IE 9 is more subtle than in newer versions & it passes\n // some versions of this test; make sure not to make it pass there!\n //\n // Support: Firefox 70+\n // Only Firefox includes border widths\n // in computed dimensions. (gh-4529)\n reliableTrDimensions: function () {\n var table, tr, trChild, trStyle;\n\n if (reliableTrDimensionsVal == null) {\n table = document.createElement(\"table\");\n tr = document.createElement(\"tr\");\n trChild = document.createElement(\"div\");\n table.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n tr.style.cssText = \"box-sizing:content-box;border:1px solid\"; // Support: Chrome 86+\n // Height set through cssText does not get applied.\n // Computed height then comes back as 0.\n\n tr.style.height = \"1px\";\n trChild.style.height = \"9px\"; // Support: Android 8 Chrome 86+\n // In our bodyBackground.html iframe,\n // display for all div elements is set to \"inline\",\n // which causes a problem only in Android 8 Chrome 86.\n // Ensuring the div is `display: block`\n // gets around this issue.\n\n trChild.style.display = \"block\";\n documentElement.appendChild(table).appendChild(tr).appendChild(trChild);\n trStyle = window.getComputedStyle(tr);\n reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;\n documentElement.removeChild(table);\n }\n\n return reliableTrDimensionsVal;\n }\n });\n })();\n\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n isCustomProp = rcustomProp.test(name),\n // Support: Firefox 51+\n // Retrieving style before computed somehow\n // fixes an issue with getting wrong values\n // on detached elements\n style = elem.style;\n computed = computed || getStyles(elem); // getPropertyValue is needed for:\n // .css('filter') (IE 9 only, trac-12537)\n // .css('--customProperty) (gh-3144)\n\n if (computed) {\n // Support: IE <=9 - 11+\n // IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n // it's only available as `\"cssFloat\"`. We no longer modify properties\n // sent to `.css()` apart from camelCasing, so we need to check both.\n // Normally, this would create difference in behavior: if\n // `getPropertyValue` returns an empty string, the value returned\n // by `.css()` would be `undefined`. This is usually the case for\n // disconnected elements. However, in IE even disconnected elements\n // with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n ret = computed.getPropertyValue(name) || computed[name];\n\n if (isCustomProp && ret) {\n // Support: Firefox 105+, Chrome <=105+\n // Spec requires trimming whitespace for custom properties (gh-4926).\n // Firefox only trims leading whitespace. Chrome just collapses\n // both leading & trailing whitespace to a single space.\n //\n // Fall back to `undefined` if empty string returned.\n // This collapses a missing definition with property defined\n // and set to an empty string but there's no standard API\n // allowing us to differentiate them without a performance penalty\n // and returning `undefined` aligns with older jQuery.\n //\n // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n // as whitespace while CSS does not, but this is not a problem\n // because CSS preprocessing replaces them with U+000A LINE FEED\n // (which *is* CSS whitespace)\n // https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n ret = ret.replace(rtrimCSS, \"$1\") || undefined;\n }\n\n if (ret === \"\" && !isAttached(elem)) {\n ret = jQuery.style(elem, name);\n } // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n\n\n if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth; // Put in the new values to get a computed value out\n\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width; // Revert the changed values\n\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n\n return ret !== undefined ? // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function () {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n } // Hook needed; redefine it so that the support test is not executed again.\n\n\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n\n var cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style,\n vendorProps = {}; // Return a vendor-prefixed property or undefined\n\n function vendorPropName(name) {\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n\n while (i--) {\n name = cssPrefixes[i] + capName;\n\n if (name in emptyStyle) {\n return name;\n }\n }\n } // Return a potentially-mapped jQuery.cssProps or vendor prefixed property\n\n\n function finalPropName(name) {\n var final = jQuery.cssProps[name] || vendorProps[name];\n\n if (final) {\n return final;\n }\n\n if (name in emptyStyle) {\n return name;\n }\n\n return vendorProps[name] = vendorPropName(name) || name;\n }\n\n var // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n };\n\n function setPositiveNumber(_elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ? // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n\n function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {\n var i = dimension === \"width\" ? 1 : 0,\n extra = 0,\n delta = 0,\n marginDelta = 0; // Adjustment may not be necessary\n\n if (box === (isBorderBox ? \"border\" : \"content\")) {\n return 0;\n }\n\n for (; i < 4; i += 2) {\n // Both box models exclude margin\n // Count margin delta separately to only add it after scroll gutter adjustment.\n // This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n if (box === \"margin\") {\n marginDelta += jQuery.css(elem, box + cssExpand[i], true, styles);\n } // If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\n\n if (!isBorderBox) {\n // Add padding\n delta += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles); // For \"border\" or \"margin\", add border\n\n if (box !== \"padding\") {\n delta += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles); // But still keep track of it otherwise\n } else {\n extra += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n } // If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n // \"padding\" or \"margin\"\n\n } else {\n // For \"content\", subtract padding\n if (box === \"content\") {\n delta -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n } // For \"content\" or \"padding\", subtract border\n\n\n if (box !== \"margin\") {\n delta -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n } // Account for positive content-box scroll gutter when requested by providing computedVal\n\n\n if (!isBorderBox && computedVal >= 0) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n // Assuming integer scroll gutter, subtract the rest and round down\n delta += Math.max(0, Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n // Use an explicit zero to avoid NaN (gh-3964)\n )) || 0;\n }\n\n return delta + marginDelta;\n }\n\n function getWidthOrHeight(elem, dimension, extra) {\n // Start with computed style\n var styles = getStyles(elem),\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n // Fake content-box until we know it's needed to know the true value.\n boxSizingNeeded = !support.boxSizingReliable() || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n valueIsBorderBox = isBorderBox,\n val = curCSS(elem, dimension, styles),\n offsetProp = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1); // Support: Firefox <=54\n // Return a confounding non-pixel value or feign ignorance, as appropriate.\n\n if (rnumnonpx.test(val)) {\n if (!extra) {\n return val;\n }\n\n val = \"auto\";\n } // Support: IE 9 - 11 only\n // Use offsetWidth/offsetHeight for when box sizing is unreliable.\n // In those cases, the computed value can be trusted to be border-box.\n\n\n if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Interestingly, in some cases IE 9 doesn't suffer from this issue.\n !support.reliableTrDimensions() && nodeName(elem, \"tr\") || // Fall back to offsetWidth/offsetHeight when value is \"auto\"\n // This happens for inline elements with no explicit setting (gh-3571)\n val === \"auto\" || // Support: Android <=4.1 - 4.3 only\n // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n !parseFloat(val) && jQuery.css(elem, \"display\", false, styles) === \"inline\") && // Make sure the element is visible & connected\n elem.getClientRects().length) {\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\"; // Where available, offsetWidth/offsetHeight approximate border box dimensions.\n // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n // retrieved value as a content box dimension.\n\n valueIsBorderBox = offsetProp in elem;\n\n if (valueIsBorderBox) {\n val = elem[offsetProp];\n }\n } // Normalize \"\" and auto\n\n\n val = parseFloat(val) || 0; // Adjust for the element's box model\n\n return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles, // Provide the current computed size to request scroll gutter calculation (gh-3589)\n val) + \"px\";\n }\n\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function (elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n animationIterationCount: true,\n aspectRatio: true,\n borderImageSlice: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n gridArea: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnStart: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowStart: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n scale: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeMiterlimit: true,\n strokeOpacity: true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {},\n // Get and set the style property on a DOM Node\n style: function (elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n } // Make sure that we're working with the right name\n\n\n var ret,\n type,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name),\n style = elem.style; // Make sure that we're working with the right name. We don't\n // want to query the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Gets hook for the prefixed version, then unprefixed version\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // Check if we're setting a value\n\n if (value !== undefined) {\n type = typeof value; // Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret); // Fixes bug trac-9237\n\n type = \"number\";\n } // Make sure that null and NaN values aren't set (trac-7116)\n\n\n if (value == null || value !== value) {\n return;\n } // If a number was passed in, add the unit (except for certain CSS properties)\n // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n // \"px\" to a few hardcoded values.\n\n\n if (type === \"number\" && !isCustomProp) {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n } // background-* props affect original clone's values\n\n\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n } // If a hook was provided, use that value, otherwise just set the specified value\n\n\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n if (isCustomProp) {\n style.setProperty(name, value);\n } else {\n style[name] = value;\n }\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n } // Otherwise just get the value from the style object\n\n\n return style[name];\n }\n },\n css: function (elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name); // Make sure that we're working with the right name. We don't\n // want to modify the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Try prefixed name followed by the unprefixed name\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // If a hook was provided get the computed value from there\n\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n } // Otherwise, if a way to get the computed value exists, use that\n\n\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n } // Convert \"normal\" to computed value\n\n\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n } // Make numeric if forced or a qualifier was provided and val looks numeric\n\n\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (_i, dimension) {\n jQuery.cssHooks[dimension] = {\n get: function (elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && ( // Support: Safari 8+\n // Table columns in Safari have non-zero offsetWidth & zero\n // getBoundingClientRect().width unless display is changed.\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, dimension, extra);\n }) : getWidthOrHeight(elem, dimension, extra);\n }\n },\n set: function (elem, value, extra) {\n var matches,\n styles = getStyles(elem),\n // Only read styles.position if the test has a chance to fail\n // to avoid forcing a reflow.\n scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === \"absolute\",\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n boxSizingNeeded = scrollboxSizeBuggy || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0; // Account for unreliable border-box dimensions by comparing offset* to computed and\n // faking a content-box to get border and padding (gh-3699)\n\n if (isBorderBox && scrollboxSizeBuggy) {\n subtract -= Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, \"border\", false, styles) - 0.5);\n } // Convert to pixels if value adjustment is needed\n\n\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[dimension] = value;\n value = jQuery.css(elem, dimension);\n }\n\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n }); // These hooks are used by animate to expand properties\n\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function (value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n\n return expanded;\n }\n };\n\n if (prefix !== \"margin\") {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function (name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n\n if (Array.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n\n return map;\n }\n\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function (elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function () {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function (percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n\n this.now = (this.end - this.start) * eased + this.start;\n\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function (tween) {\n var result; // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n } // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n\n\n result = jQuery.css(tween.elem, tween.prop, \"\"); // Empty strings, null, undefined and \"auto\" are converted to 0.\n\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function (tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n }; // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function (tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function (p) {\n return p;\n },\n swing: function (p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init; // Back compat <1.8 extension point\n\n jQuery.fx.step = {};\n var fxNow,\n inProgress,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n\n function schedule() {\n if (inProgress) {\n if (document.hidden === false && window.requestAnimationFrame) {\n window.requestAnimationFrame(schedule);\n } else {\n window.setTimeout(schedule, jQuery.fx.interval);\n }\n\n jQuery.fx.tick();\n }\n } // Animations created synchronously will run synchronously\n\n\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = Date.now();\n } // Generate parameters to create a standard animation\n\n\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n }; // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n\n includeWidth = includeWidth ? 1 : 0;\n\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n\n return attrs;\n }\n\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\"); // Queue-skipping animations hijack the fx hooks\n\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n } // Detect show/hide animations\n\n\n for (prop in props) {\n value = props[prop];\n\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true; // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n } // Bail out if this is a no-op like .hide().hide()\n\n\n propTween = !jQuery.isEmptyObject(props);\n\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n } // Restrict \"overflow\" and \"display\" styles during box animations\n\n\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 15\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY and Edge just mirrors\n // the overflowX value there.\n opts.overflow = [style.overflow, style.overflowX, style.overflowY]; // Identify a display type, preferring old show/hide data over the CSS cascade\n\n restoreDisplay = dataShow && dataShow.display;\n\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n\n display = jQuery.css(elem, \"display\");\n\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n } // Animate inline elements as inline-block\n\n\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n\n style.display = \"inline-block\";\n }\n }\n }\n\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n } // Implement show/hide animations\n\n\n propTween = false;\n\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n } // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\n\n if (toggle) {\n dataShow.hidden = !hidden;\n } // Show elements before animating them\n\n\n if (hidden) {\n showHide([elem], true);\n }\n /* eslint-disable no-loop-func */\n\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n\n dataPriv.remove(elem, \"fxshow\");\n\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n } // Per-property setup\n\n\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass\n\n for (index in props) {\n name = camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n\n if (Array.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n\n hooks = jQuery.cssHooks[name];\n\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name]; // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function () {\n if (stopped) {\n return false;\n }\n\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n\n deferred.notifyWith(elem, [animation, percent, remaining]); // If there's more to do, yield\n\n if (percent < 1 && length) {\n return remaining;\n } // If this was an empty animation, synthesize a final progress notification\n\n\n if (!length) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n } // Resolve the animation and report its conclusion\n\n\n deferred.resolveWith(elem, [animation]);\n return false;\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function (prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function (gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n\n if (stopped) {\n return this;\n }\n\n stopped = true;\n\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n } // Resolve when we played the last frame; otherwise, reject\n\n\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n\n return this;\n }\n }),\n props = animation.props;\n\n propFilter(props, animation.opts.specialEasing);\n\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n\n if (result) {\n if (isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);\n }\n\n return result;\n }\n }\n\n jQuery.map(props, createTween, animation);\n\n if (isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n } // Attach callbacks from options\n\n\n animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n return animation;\n }\n\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function (props, callback) {\n if (isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n\n var prop,\n index = 0,\n length = props.length;\n\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function (callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !isFunction(easing) && easing\n }; // Go to the end state if fx are off\n\n if (jQuery.fx.off) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n } // Normalize opt.queue - true/undefined/null -> \"fx\"\n\n\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n } // Queueing\n\n\n opt.old = opt.complete;\n\n opt.complete = function () {\n if (isFunction(opt.old)) {\n opt.old.call(this);\n }\n\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n\n return opt;\n };\n\n jQuery.fn.extend({\n fadeTo: function (speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show() // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function (prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function () {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall); // Empty animations, or finishing resolves immediately\n\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function (type, clearQueue, gotoEnd) {\n var stopQueue = function (hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n\n if (clearQueue) {\n this.queue(type || \"fx\", []);\n }\n\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n } // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n\n\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function (type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0; // Enable finishing flag on private data\n\n data.finish = true; // Empty the queue first\n\n jQuery.queue(this, type, []);\n\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n } // Look for any active animations, and finish them\n\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n } // Look for any animations in the old queue and finish them\n\n\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n } // Turn off finishing flag\n\n\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (_i, name) {\n var cssFn = jQuery.fn[name];\n\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n }); // Generate shortcuts for custom animations\n\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = Date.now();\n\n for (; i < timers.length; i++) {\n timer = timers[i]; // Run the timer and safely remove it when done (allowing for external removal)\n\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n\n if (!timers.length) {\n jQuery.fx.stop();\n }\n\n fxNow = undefined;\n };\n\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n jQuery.fx.start();\n };\n\n jQuery.fx.interval = 13;\n\n jQuery.fx.start = function () {\n if (inProgress) {\n return;\n }\n\n inProgress = true;\n schedule();\n };\n\n jQuery.fx.stop = function () {\n inProgress = null;\n };\n\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\n }; // Based off of the plugin by Clint Helfers, with permission.\n\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\"; // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n\n support.checkOn = input.value !== \"\"; // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n\n support.optSelected = opt.selected; // Support: IE <=11 only\n // An input loses its value after becoming a radio\n\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function (name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function (name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set attributes on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n } // Fallback to prop when attributes are not supported\n\n\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n } // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n elem.setAttribute(name, value + \"\");\n return value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n ret = jQuery.find.attr(elem, name); // Non-existent attributes return null, we normalize to undefined\n\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function (elem, value) {\n if (!support.radioValue && value === \"radio\" && nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n\n if (val) {\n elem.value = val;\n }\n\n return value;\n }\n }\n }\n },\n removeAttr: function (elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n }); // Hooks for boolean attributes\n\n boolHook = {\n set: function (elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (_i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function (name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function (name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set properties on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n return elem[name] = value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function (elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // Use proper attribute retrieval (trac-12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\n }); // Support: IE <=11 only\n // Accessing the selectedIndex property\n // forces the browser to respect setting selected\n // on the option\n // The getter ensures a default option is selected\n // when in an optgroup\n // eslint rule \"no-unused-expressions\" is disabled for this code\n // since it considers such accessions noop\n\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n\n return null;\n },\n set: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent) {\n parent.selectedIndex;\n\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n }); // Strip and collapse whitespace according to HTML spec\n // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n\n function classesToArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n\n if (typeof value === \"string\") {\n return value.match(rnothtmlwhite) || [];\n }\n\n return [];\n }\n\n jQuery.fn.extend({\n addClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n\n classNames = classesToArray(value);\n\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n if (cur.indexOf(\" \" + className + \" \") < 0) {\n cur += className + \" \";\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n\n return this;\n },\n removeClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n\n classNames = classesToArray(value);\n\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this); // This expression is here for better compressibility (see addClass)\n\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i]; // Remove *all* instances\n\n while (cur.indexOf(\" \" + className + \" \") > -1) {\n cur = cur.replace(\" \" + className + \" \", \" \");\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n\n return this;\n },\n toggleClass: function (value, stateVal) {\n var classNames,\n className,\n i,\n self,\n type = typeof value,\n isValidValue = type === \"string\" || Array.isArray(value);\n\n if (isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n\n if (typeof stateVal === \"boolean\" && isValidValue) {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n\n classNames = classesToArray(value);\n return this.each(function () {\n if (isValidValue) {\n // Toggle individual class names\n self = jQuery(this);\n\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i]; // Check each className given, space separated list\n\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n } // Toggle whole class name\n\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n } // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n\n\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function (selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n\n return false;\n }\n });\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function (value) {\n var hooks,\n ret,\n valueIsFunction,\n elem = this[0];\n\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n\n ret = elem.value; // Handle most common string cases\n\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n } // Handle cases where value is null/undef or number\n\n\n return ret == null ? \"\" : ret;\n }\n\n return;\n }\n\n valueIsFunction = isFunction(value);\n return this.each(function (i) {\n var val;\n\n if (this.nodeType !== 1) {\n return;\n }\n\n if (valueIsFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n } // Treat null/undefined as \"\"; convert numbers to string\n\n\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (Array.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]; // If set returns undefined, fall back to normal setting\n\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function (elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val : // Support: IE <=10 - 11 only\n // option.text throws exceptions (trac-14686, trac-14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function (elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n } // Loop through all the selected options\n\n\n for (; i < max; i++) {\n option = options[i]; // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (trac-2551)\n\n if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val(); // We don't need an array for one selects\n\n if (one) {\n return value;\n } // Multi-Selects return an array\n\n\n values.push(value);\n }\n }\n\n return values;\n },\n set: function (elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n\n while (i--) {\n option = options[i];\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n /* eslint-enable no-cond-assign */\n\n } // Force browsers to behave consistently when non-matching value is set\n\n\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n\n return values;\n }\n }\n }\n }); // Radios and checkboxes getter/setter\n\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function (elem, value) {\n if (Array.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n }); // Return jQuery for attributes-only inclusion\n\n var location = window.location;\n var nonce = {\n guid: Date.now()\n };\n var rquery = /\\?/; // Cross-browser xml parsing\n\n jQuery.parseXML = function (data) {\n var xml, parserErrorElem;\n\n if (!data || typeof data !== \"string\") {\n return null;\n } // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n\n\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {}\n\n parserErrorElem = xml && xml.getElementsByTagName(\"parsererror\")[0];\n\n if (!xml || parserErrorElem) {\n jQuery.error(\"Invalid XML: \" + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function (el) {\n return el.textContent;\n }).join(\"\\n\") : data));\n }\n\n return xml;\n };\n\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n stopPropagationCallback = function (e) {\n e.stopPropagation();\n };\n\n jQuery.extend(jQuery.event, {\n trigger: function (event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n lastElement,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = lastElement = tmp = elem = elem || document; // Don't do events on text and comment nodes\n\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n } // focus/blur morphs to focusin/out; ensure we're not firing them right now\n\n\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n\n ontype = type.indexOf(\":\") < 0 && \"on\" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string\n\n event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === \"object\" && event); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null; // Clean up the event in case it is being reused\n\n event.result = undefined;\n\n if (!event.target) {\n event.target = elem;\n } // Clone any incoming data and prepend the event, creating the handler arg list\n\n\n data = data == null ? [event] : jQuery.makeArray(data, [event]); // Allow special events to draw outside the lines\n\n special = jQuery.event.special[type] || {};\n\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n } // Determine event propagation path in advance, per W3C events spec (trac-9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\n\n if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {\n bubbleType = special.delegateType || type;\n\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n } // Only add window if we got to document (e.g., not plain obj or detached DOM)\n\n\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n } // Fire handlers on the event path\n\n\n i = 0;\n\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n lastElement = cur;\n event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler\n\n handle = (dataPriv.get(cur, \"events\") || Object.create(null))[event.type] && dataPriv.get(cur, \"handle\");\n\n if (handle) {\n handle.apply(cur, data);\n } // Native handler\n\n\n handle = ontype && cur[ontype];\n\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n\n event.type = type; // If nobody prevented the default action, do it now\n\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (trac-6170)\n if (ontype && isFunction(elem[type]) && !isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n\n if (tmp) {\n elem[ontype] = null;\n } // Prevent re-triggering of the same event, since we already bubbled it above\n\n\n jQuery.event.triggered = type;\n\n if (event.isPropagationStopped()) {\n lastElement.addEventListener(type, stopPropagationCallback);\n }\n\n elem[type]();\n\n if (event.isPropagationStopped()) {\n lastElement.removeEventListener(type, stopPropagationCallback);\n }\n\n jQuery.event.triggered = undefined;\n\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function (type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function (type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function (type, data) {\n var elem = this[0];\n\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n });\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n\n function buildParams(prefix, obj, traditional, add) {\n var name;\n\n if (Array.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (typeof v === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && toType(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n } // Serialize an array of form elements or a set of\n // key/values into a query string\n\n\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function (key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n\n if (a == null) {\n return \"\";\n } // If an array was passed in, assume that it is an array of form elements.\n\n\n if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n } // Return the resulting serialization\n\n\n return s.join(\"&\");\n };\n\n jQuery.fn.extend({\n serialize: function () {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function () {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type; // Use .is( \":disabled\" ) so that fieldset[disabled] works\n\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (_i, elem) {\n var val = jQuery(this).val();\n\n if (val == null) {\n return null;\n }\n\n if (Array.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // trac-7653, trac-8125, trac-8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href; // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n\n if (isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func); // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n } // Base inspection function for prefilters and transports\n\n\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n\n return inspect(options.dataTypes[0]) || !inspected[\"*\"] && inspect(\"*\");\n } // A special extend for ajax options\n // that takes \"flat\" options (not to be deep extended)\n // Fixes trac-9887\n\n\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n\n return target;\n }\n /* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\n\n\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes; // Remove auto dataType and get content-type in the process\n\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n } // Check if we're dealing with a known content-type\n\n\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n } // Check to see if we have a response for the expected dataType\n\n\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n\n if (!firstDataType) {\n firstDataType = type;\n }\n } // Or just use first one\n\n\n finalDataType = finalDataType || firstDataType;\n } // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n\n\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n\n return responses[finalDataType];\n }\n }\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n\n\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice(); // Create converters map with lowercased keys\n\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n\n current = dataTypes.shift(); // Convert to each sequential dataType\n\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n } // Apply the dataFilter if provided\n\n\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n\n prev = current;\n current = dataTypes.shift();\n\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev; // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current]; // If none found, seek a pair\n\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2]; // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n\n break;\n }\n }\n }\n } // Apply converter (if not an equivalence)\n\n\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s.throws) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n\n return {\n state: \"success\",\n data: response\n };\n }\n\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function (target, settings) {\n return settings ? // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function (url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (typeof url === \"object\") {\n options = url;\n url = undefined;\n } // Force options to be an object\n\n\n options = options || {};\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function (key) {\n var match;\n\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase() + \" \"] = (responseHeaders[match[1].toLowerCase() + \" \"] || []).concat(match[2]);\n }\n }\n\n match = responseHeaders[key.toLowerCase() + \" \"];\n }\n\n return match == null ? null : match.join(\", \");\n },\n // Raw string\n getAllResponseHeaders: function () {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function (name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function (type) {\n if (completed == null) {\n s.mimeType = type;\n }\n\n return this;\n },\n // Status-dependent callbacks\n statusCode: function (map) {\n var code;\n\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n statusCode[code] = [statusCode[code], map[code]];\n }\n }\n }\n\n return this;\n },\n // Cancel the request\n abort: function (statusText) {\n var finalText = statusText || strAbort;\n\n if (transport) {\n transport.abort(finalText);\n }\n\n done(0, finalText);\n return this;\n }\n }; // Attach deferreds\n\n deferred.promise(jqXHR); // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (trac-10093: consistency with old signature)\n // We also use the url parameter if available\n\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\"); // Alias method option to type as per ticket trac-12004\n\n s.type = options.method || options.type || s.method || s.type; // Extract dataTypes list\n\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"]; // A cross-domain request is in order when the origin doesn't match the current origin.\n\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\"); // Support: IE <=8 - 11, Edge 12 - 15\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n\n try {\n urlAnchor.href = s.url; // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n } // Convert data if not already a string\n\n\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n } // Apply prefilters\n\n\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); // If request was aborted inside a prefilter, stop there\n\n if (completed) {\n return jqXHR;\n } // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\n\n fireGlobals = jQuery.event && s.global; // Watch for a new set of requests\n\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n } // Uppercase the type\n\n\n s.type = s.type.toUpperCase(); // Determine if request has content\n\n s.hasContent = !rnoContent.test(s.type); // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n\n cacheURL = s.url.replace(rhash, \"\"); // More options handling for requests with no content\n\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length); // If data is available and should be processed, append data to url\n\n if (s.data && (s.processData || typeof s.data === \"string\")) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data; // trac-9682: remove data so that it's not used in an eventual retry\n\n delete s.data;\n } // Add or update anti-cache param if needed\n\n\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce.guid++ + uncached;\n } // Put hash and anti-cache on the URL that will be requested (gh-1732)\n\n\n s.url = cacheURL + uncached; // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\n\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n } // Set the correct header, if data is being sent\n\n\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n } // Set the Accepts header for the server, depending on the dataType\n\n\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]); // Check for headers option\n\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n } // Allow custom headers/mimetypes and early abort\n\n\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n } // Aborting is no longer a cancellation\n\n\n strAbort = \"abort\"; // Install callbacks on deferreds\n\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error); // Get transport\n\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); // If no transport, we auto-abort\n\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1; // Send global event\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n } // If request was aborted inside ajaxSend, stop there\n\n\n if (completed) {\n return jqXHR;\n } // Timeout\n\n\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n } // Propagate others as results\n\n\n done(-1, e);\n }\n } // Callback for when everything is done\n\n\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText; // Ignore repeat invocations\n\n if (completed) {\n return;\n }\n\n completed = true; // Clear timeout if it exists\n\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n } // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n\n\n transport = undefined; // Cache response headers\n\n responseHeadersString = headers || \"\"; // Set readyState\n\n jqXHR.readyState = status > 0 ? 4 : 0; // Determine if successful\n\n isSuccess = status >= 200 && status < 300 || status === 304; // Get response data\n\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n } // Use a noop converter for missing script but not if jsonp\n\n\n if (!isSuccess && jQuery.inArray(\"script\", s.dataTypes) > -1 && jQuery.inArray(\"json\", s.dataTypes) < 0) {\n s.converters[\"text script\"] = function () {};\n } // Convert no matter what (that way responseXXX fields are always set)\n\n\n response = ajaxConvert(s, response, jqXHR, isSuccess); // If successful, handle type chaining\n\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n\n modified = jqXHR.getResponseHeader(\"etag\");\n\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n } // if no content\n\n\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\"; // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\"; // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n\n if (status || !statusText) {\n statusText = \"error\";\n\n if (status < 0) {\n status = 0;\n }\n }\n } // Set data for the fake xhr object\n\n\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\"; // Success/Error\n\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n } // Status-dependent callbacks\n\n\n jqXHR.statusCode(statusCode);\n statusCode = undefined;\n\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n } // Complete\n\n\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]); // Handle the global AJAX counter\n\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n\n return jqXHR;\n },\n getJSON: function (url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function (url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (_i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n } // The url can be an options object (which then must have .url)\n\n\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery.ajaxPrefilter(function (s) {\n var i;\n\n for (i in s.headers) {\n if (i.toLowerCase() === \"content-type\") {\n s.contentType = s.headers[i] || \"\";\n }\n }\n });\n\n jQuery._evalUrl = function (url, options, doc) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (trac-11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n // Only evaluate the response if it is successful (gh-4126)\n // dataFilter is not invoked for failure responses, so using it instead\n // of the default converter is kludgy but it works.\n converters: {\n \"text script\": function () {}\n },\n dataFilter: function (response) {\n jQuery.globalEval(response, options, doc);\n }\n });\n };\n\n jQuery.fn.extend({\n wrapAll: function (html) {\n var wrap;\n\n if (this[0]) {\n if (isFunction(html)) {\n html = html.call(this[0]);\n } // The elements to wrap the target around\n\n\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n\n wrap.map(function () {\n var elem = this;\n\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n\n return elem;\n }).append(this);\n }\n\n return this;\n },\n wrapInner: function (html) {\n if (isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function (html) {\n var htmlIsFunction = isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function (selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // trac-1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var callback, errorCallback; // Cross domain only allowed if supported through XMLHttpRequest\n\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function (headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password); // Apply custom fields if provided\n\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n } // Override mime type if needed\n\n\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n } // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n\n\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n } // Set headers\n\n\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n } // Callback\n\n\n callback = function (type) {\n return function () {\n if (callback) {\n callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;\n\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete( // File: protocol always yields status 0; see trac-8605, trac-14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n }; // Listen to events\n\n\n xhr.onload = callback();\n errorCallback = xhr.onerror = xhr.ontimeout = callback(\"error\"); // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (callback) {\n errorCallback();\n }\n });\n }\n };\n } // Create the abort callback\n\n\n callback = callback(\"abort\");\n\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // trac-14683: Only rethrow if this hasn't been notified as an error yet\n if (callback) {\n throw e;\n }\n }\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n }); // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n }); // Install script dataType\n\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function (text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n }); // Handle cache's special case and crossDomain\n\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n }); // Bind script tag hack transport\n\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain or forced-by-attrs requests\n if (s.crossDomain || s.scriptAttrs) {\n var script, callback;\n return {\n send: function (_, complete) {\n script = jQuery(\"\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--8-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--8-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=54cac020&scoped=true&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Index.vue?vue&type=style&index=0&id=54cac020&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54cac020\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('LandingPageLayout',{attrs:{\"page-color\":true}},[_c('div',{staticClass:\"banner\"},[_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"left\"},[_c('div',{staticClass:\"caption\"},[_c('div',{ref:\"titleBanner\",staticClass:\"title\"},[_c('h1',[_vm._v(_vm._s(_vm.t('lp.index.title')))])]),_vm._v(\" \"),_c('div',{ref:\"detailsBanner\",staticClass:\"details\"},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.t('lp.index.description_html'))}})]),_vm._v(\" \"),_c('div',{ref:\"btnGroupBanner\",staticClass:\"btn-group\"},[_c('a',{staticClass:\"become-our-freelancer\",attrs:{\"href\":_vm.paths.recruiter}},[_vm._v(_vm._s(_vm.t('lp.index.btn.recruiter')))]),_vm._v(\" \"),_c('a',{staticClass:\"looking-for-talent\",attrs:{\"href\":_vm.paths.client}},[_vm._v(_vm._s(_vm.t('lp.index.btn.talent')))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"right\"},[_c('div',{ref:\"squareBlockBannerFirst\",staticClass:\"square-blue first\"}),_vm._v(\" \"),_c('div',{ref:\"imgBanner\",staticClass:\"img\"},[_c('img',{attrs:{\"src\":require('images/views/lp/home/banner-home.jpg'),\"alt\":\"Banner for Landing page\"}})]),_vm._v(\" \"),_c('div',{ref:\"squareBlockBannerSecond\",staticClass:\"square-blue second\"})])])])]),_vm._v(\" \"),_c('div',{staticClass:\"features\"},[_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"inner\"},[_c('div',{ref:\"features\",staticClass:\"title\"},[_c('h2',[_vm._v(_vm._s(_vm.t('lp.index.be_a_part_of_sourcedout.title')))])]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('ul',{staticClass:\"list\"},[_c('li',{ref:\"itemOne\",staticClass:\"item\"},[_c('div',{staticClass:\"img\"},[_c('lottie',{attrs:{\"options\":_vm.recruiterOptions,\"height\":250,\"width\":250},on:{\"v-on:animCreated\":_vm.handleAnimation}})],1),_vm._v(\" \"),_c('div',{staticClass:\"heading\"},[_c('h3',[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.be_a_part_of_sourcedout.list.recruiter.title'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.t(\n 'lp.index.be_a_part_of_sourcedout.list.recruiter.description'\n ))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"link\"},[_c('a',{attrs:{\"href\":_vm.paths.recruiter}},[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.be_a_part_of_sourcedout.list.recruiter.btn'))+\"\\n >\")])])]),_vm._v(\" \"),_c('li',{ref:\"itemTwo\",staticClass:\"item\"},[_c('div',{staticClass:\"img\"},[_c('lottie',{attrs:{\"options\":_vm.clientOptions,\"height\":250,\"width\":250},on:{\"v-on:animCreated\":_vm.handleAnimation}})],1),_vm._v(\" \"),_c('div',{staticClass:\"heading\"},[_c('h3',[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.be_a_part_of_sourcedout.list.client.title'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.t(\n 'lp.index.be_a_part_of_sourcedout.list.client.description'\n ))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"link\"},[_c('a',{attrs:{\"href\":_vm.paths.client}},[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.be_a_part_of_sourcedout.list.client.btn'))+\"\\n >\")])])]),_vm._v(\" \"),_c('li',{ref:\"itemThree\",staticClass:\"item\"},[_c('div',{staticClass:\"img\"},[_c('lottie',{attrs:{\"options\":_vm.talentOptions,\"height\":250,\"width\":250},on:{\"v-on:animCreated\":_vm.handleAnimation}})],1),_vm._v(\" \"),_c('div',{staticClass:\"heading\"},[_c('h3',[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.be_a_part_of_sourcedout.list.searching.title'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.t(\n 'lp.index.be_a_part_of_sourcedout.list.searching.description'\n ))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"link\"},[_c('a',{attrs:{\"href\":\"/talents\"}},[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.be_a_part_of_sourcedout.list.searching.btn'))+\"\\n >\")])])])])])])])]),_vm._v(\" \"),_c('div',{ref:\"about_us\",staticClass:\"about-us\"},[_c('div',{ref:\"block_about_us\",staticClass:\"square-blue\"}),_vm._v(\" \"),_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"main\"},[_c('ul',{staticClass:\"list\"},[_c('li',{ref:\"video\",staticClass:\"video\"},[_c('div',{staticClass:\"square-blue\"}),_vm._v(\" \"),_c('embed',{attrs:{\"width\":\"400\",\"height\":\"255\",\"src\":\"https://www.youtube.com/embed/txuKcW7vBCk?si=1T-UqAq_FVjAWLKQ\"}})]),_vm._v(\" \"),_c('li',{ref:\"about_content\",staticClass:\"content\"},[_c('div',{staticClass:\"title\"},[_c('h2',[_vm._v(_vm._s(_vm.t('lp.index.about_sourcedout.title')))])]),_vm._v(\" \"),_c('ul',{staticClass:\"list-content\"},[_c('li',{domProps:{\"innerHTML\":_vm._s(_vm.t('lp.index.about_sourcedout.sourcedout_html'))}}),_vm._v(\" \"),_c('li',{domProps:{\"innerHTML\":_vm._s(_vm.t('lp.index.about_sourcedout.employer_html'))}}),_vm._v(\" \"),_c('li',{domProps:{\"innerHTML\":_vm._s(_vm.t('lp.index.about_sourcedout.recruiter_html'))}})])])])])])])]),_vm._v(\" \"),_c('div',{ref:\"review\",staticClass:\"review\"},[_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"inner\"},[_c('div',{ref:\"titleReview\",staticClass:\"title\"},[_c('h2',[_vm._v(_vm._s(_vm.t('lp.index.what_they_say.title')))])]),_vm._v(\" \"),_c('div',{ref:\"slider\",staticClass:\"slider\"},[_c('div',[_c('Flicking',{attrs:{\"options\":{ align: 'prev', circular: true },\"plugins\":_vm.plugins_review}},[_c('div',{staticClass:\"container\"},[_c('div',[_c('div',{staticClass:\"logo\"},[_c('div',{staticClass:\"img\"},[_c('img',{attrs:{\"src\":require('images/views/lp/recruiter/profile/profile-f.png'),\"alt\":\"profile\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.wanida.text'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"client\"},[_c('div',{staticClass:\"name\"},[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.wanida.name'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"position\"},[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.wanida.position'))+\"\\n \")])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"container\"},[_c('div',[_c('div',{staticClass:\"logo\"},[_c('div',{staticClass:\"img\"},[_c('img',{attrs:{\"src\":require('images/views/lp/recruiter/profile/profile-f.png'),\"alt\":\"profile\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.sunanta.text'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"client\"},[_c('div',{staticClass:\"name\"},[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.sunanta.name'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"position\"},[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.sunanta.position'))+\"\\n \")])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"container\"},[_c('div',[_c('div',{staticClass:\"logo\"},[_c('div',{staticClass:\"img\"},[_c('img',{attrs:{\"src\":require('images/views/lp/recruiter/profile/profile-f.png'),\"alt\":\"profile\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.vachiraya.text'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"client\"},[_c('div',{staticClass:\"name\"},[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.vachiraya.name'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"position\"},[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.vachiraya.position'))+\"\\n \")])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"container\"},[_c('div',[_c('div',{staticClass:\"logo\"},[_c('div',{staticClass:\"img\"},[_c('img',{attrs:{\"src\":require('images/views/lp/recruiter/profile/profile-m.png'),\"alt\":\"profile\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.chatchai.text'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"client\"},[_c('div',{staticClass:\"name\"},[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.chatchai.name'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"position\"},[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.what_they_say.list.chatchai.position'))+\"\\n \")])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"flicking-pagination\",attrs:{\"slot\":\"viewport\"},slot:\"viewport\"}),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"viewport\"},slot:\"viewport\"},[_c('span',{staticClass:\"flicking-arrow-prev is-circle\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":{ prefix: 'fas', iconName: 'angle-left' }}})],1),_vm._v(\" \"),_c('span',{staticClass:\"flicking-arrow-next is-circle\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":{ prefix: 'fas', iconName: 'angle-right' }}})],1)])])],1)])])])]),_vm._v(\" \"),_c('div',{ref:\"join_us\",staticClass:\"join-us\"},[_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"title\"},[_c('h2',[_vm._v(_vm._s(_vm.t('lp.index.lets_get_started.title')))])]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('ul',{staticClass:\"list\"},[_c('li',{ref:\"itemJoinOne\",staticClass:\"item\"},[_c('div',{staticClass:\"img\"},[_c('lottie',{attrs:{\"options\":_vm.recruiterOptions,\"height\":250,\"width\":250},on:{\"v-on:animCreated\":_vm.handleAnimation}})],1),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"heading\"},[_c('h3',[_vm._v(\"\\n \"+_vm._s(_vm.t(\n 'lp.index.lets_get_started.become_freelance_recruiters'\n ))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"link\"},[_c('a',{attrs:{\"href\":\"/recruiter_applications/new\"}},[_vm._v(\"Join Today!\")])])])]),_vm._v(\" \"),_c('li',{ref:\"itemJoinTwo\",staticClass:\"item\"},[_c('div',{staticClass:\"img\"},[_c('lottie',{attrs:{\"options\":_vm.clientOptions,\"height\":250,\"width\":250},on:{\"v-on:animCreated\":_vm.handleAnimation}})],1),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"heading\"},[_c('h3',[_vm._v(\"\\n \"+_vm._s(_vm.t(\n 'lp.index.lets_get_started.connect_with_high_quality_talents'\n ))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"link\"},[_c('a',{attrs:{\"href\":\"/job_requests/new\"}},[_vm._v(\"Join Today!\")])])])]),_vm._v(\" \"),_c('li',{ref:\"itemJoinThree\",staticClass:\"item\"},[_c('div',{staticClass:\"img\"},[_c('lottie',{attrs:{\"options\":_vm.talentOptions,\"height\":250,\"width\":250},on:{\"v-on:animCreated\":_vm.handleAnimation}})],1),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"heading\"},[_c('h3',[_vm._v(\"\\n \"+_vm._s(_vm.t(\n 'lp.index.lets_get_started.seeking_out_for_new_job_opportunities'\n ))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"link\"},[_c('a',{attrs:{\"href\":\"/talents/new\"}},[_vm._v(\"Join Today!\")])])])])])])])])]),_vm._v(\" \"),_c('div',{ref:\"faq\",staticClass:\"faq\"},[_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"inner\"},[_c('div',{ref:\"titleFaq\",staticClass:\"title\"},[_c('h2',[_vm._v(\"FAQ\")])]),_vm._v(\" \"),_c('div',{ref:\"faq_container\"},[_c('sui-accordion',{attrs:{\"exclusive\":\"\"}},[_c('div',{staticClass:\"main\"},[_c('sui-accordion-title',[_c('h3',[_vm._v(_vm._s(_vm.t('lp.index.faq.one.question')))]),_vm._v(\" \"),_c('div',{staticClass:\"button\"},[_c('i',{staticClass:\"las la-plus\"})])]),_vm._v(\" \"),_c('sui-accordion-content',[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.t('lp.index.faq.one.answer_html'))}})])],1),_vm._v(\" \"),_c('div',{staticClass:\"main\"},[_c('sui-accordion-title',[_c('h3',[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.faq.two.question'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"button\"},[_c('i',{staticClass:\"las la-plus\"})])]),_vm._v(\" \"),_c('sui-accordion-content',[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.t('lp.index.faq.two.answer_html'))}})])],1),_vm._v(\" \"),_c('div',{staticClass:\"main\"},[_c('sui-accordion-title',[_c('h3',[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.faq.three.question'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"button\"},[_c('i',{staticClass:\"las la-plus\"})])]),_vm._v(\" \"),_c('sui-accordion-content',[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.t('lp.index.faq.three.answer_html'))}})])],1),_vm._v(\" \"),_c('div',{staticClass:\"main\"},[_c('sui-accordion-title',[_c('h3',[_vm._v(\"\\n \"+_vm._s(_vm.t('lp.index.faq.four.question'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"button\"},[_c('i',{staticClass:\"las la-plus\"})])]),_vm._v(\" \"),_c('sui-accordion-content',[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.t('lp.index.faq.four.answer_html'))}})])],1)])],1)])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport App from 'views/lp/home/Index.vue'\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const app = new Vue({\n render: (h) => h(App),\n }).$mount()\n document.body.appendChild(app.$el)\n})\n"],"sourceRoot":""}