{"version":3,"sources":["webpack:///./node_modules/axios/lib/cancel/CanceledError.js","webpack:///./src/ecommerce/assets/graphql/queries/CreditReference.graphql","webpack:///./src/ecommerce/utils/compareDayAndMonthWithNow.js","webpack:///./node_modules/dayjs/plugin/customParseFormat.js","webpack:///./src/common/shop/assets/icons/Crown.svg","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./src/common/utils/trimAndEllipsisText.js","webpack:///src/common/components/BoxCard/BoxCard.vue","webpack:///./src/common/components/BoxCard/BoxCard.vue?7d20","webpack:///./src/common/components/BoxCard/BoxCard.vue?ab10","webpack:///./src/common/components/BoxCard/BoxCard.vue","webpack:///./node_modules/axios/lib/helpers/toFormData.js","webpack:///./src/common/icons/StarGray.svg","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./src/ecommerce/components/CategoryCard/CategoryCard.vue.html","webpack:///./src/ecommerce/components/CategoryCard/CategoryCard.component.js","webpack:///./src/ecommerce/components/CategoryCard/CategoryCard.component.js?2f4b","webpack:///./src/ecommerce/components/CategoryCard/CategoryCard.vue","webpack:///./src/common/icons/StarFill.svg","webpack:///./src/ecommerce/components/Travel/NewsLetterSubscription/NewsLetterSubscription.component.js","webpack:///./src/ecommerce/components/Travel/NewsLetterSubscription/NewsLetterSubscription.component.js?830e","webpack:///./src/ecommerce/components/Travel/NewsLetterSubscription/NewsLetterSubscription.vue","webpack:///./src/ecommerce/components/Travel/NewsLetterSubscription/NewsLetterSubscription.vue.html","webpack:///./src/ecommerce/assets/images/cardRegalendario.png","webpack:///./src/common/icons/reception-bell.svg","webpack:///./src/ecommerce/components/ActivityCardHours/ActivityCardHours.component.js","webpack:///./src/common/utils/formatDateTime.js","webpack:///./src/ecommerce/components/ActivityCardHours/ActivityCardHours.component.js?bfc9","webpack:///./src/ecommerce/components/ActivityCardHours/ActivityCardHours.vue","webpack:///./src/ecommerce/components/ActivityCardHours/ActivityCardHours.vue.html","webpack:///./src/common/components/ProductBlock/ProductBlock.component.js","webpack:///./src/common/components/ProductBlock/ProductBlock.component.js?364f","webpack:///./src/common/components/ProductBlock/ProductBlock.vue","webpack:///./src/common/components/ProductBlock/ProductBlock.vue.html","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./src/common/services/utils/getParticipantsIcon.js","webpack:///./src/common/graphql/mutations/CreateWishlistItemMutation.graphql","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./src/ecommerce/assets/graphql/queries/FeaturedBoxes.graphql","webpack:///./src/common/components/BbField/BbField.component.js","webpack:///./src/common/components/BbField/BbField.component.js?6a9a","webpack:///./src/common/components/BbField/BbField.vue","webpack:///./src/common/components/BbField/BbField.vue.html","webpack:///./src/ecommerce/components/Reminders/CardHome/CardHome.vue.html","webpack:///./src/ecommerce/components/Reminders/OnboardingRegalendarioModal/OnboardingRegalendarioModal.component.js","webpack:///./src/ecommerce/components/Reminders/OnboardingRegalendarioModal/OnboardingRegalendarioModal.component.js?bf6a","webpack:///./src/ecommerce/components/Reminders/OnboardingRegalendarioModal/OnboardingRegalendarioModal.vue","webpack:///./src/ecommerce/components/Reminders/OnboardingRegalendarioModal/OnboardingRegalendarioModal.vue.html","webpack:///./src/ecommerce/components/Reminders/RemindersQuitModal/RemindersQuitModal.component.js","webpack:///./src/ecommerce/components/Reminders/RemindersQuitModal/RemindersQuitModal.component.js?d0eb","webpack:///./src/ecommerce/components/Reminders/RemindersQuitModal/RemindersQuitModal.vue","webpack:///./src/ecommerce/components/Reminders/RemindersQuitModal/RemindersQuitModal.vue.html","webpack:///./src/ecommerce/components/Modals/Reminders/Reminders.component.js","webpack:///./src/ecommerce/components/Modals/Reminders/Reminders.component.js?da77","webpack:///./src/ecommerce/components/Modals/Reminders/Reminders.vue","webpack:///./src/ecommerce/components/Modals/Reminders/Reminders.vue.html","webpack:///./src/ecommerce/components/Reminders/CardHome/CardHome.component.js","webpack:///./src/ecommerce/components/Reminders/CardHome/CardHome.component.js?746b","webpack:///./src/ecommerce/components/Reminders/CardHome/CardHome.vue","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./src/ecommerce/components/OptionCard/OptionCard.vue.html","webpack:///./src/ecommerce/components/OptionCard/OptionCard.component.js","webpack:///./src/ecommerce/components/OptionCard/OptionCard.component.js?f940","webpack:///./src/ecommerce/components/OptionCard/OptionCard.vue","webpack:///./src/common/shop/assets/icons/Users.svg","webpack:///./src/ecommerce/assets/images/BbPlusBanner.png","webpack:///./src/common/services/requests/requests.service.js","webpack:///./src/common/services/requests/index.js","webpack:///./src/common/shop/assets/icons/Bell.svg","webpack:///./src/ecommerce/assets/icons/estado_success_icon.svg","webpack:///./src/common/shop/assets/icons/Gift2.svg","webpack:///./src/common/icons/rating.svg","webpack:///./node_modules/core-js/modules/es.set.constructor.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./src/ecommerce/assets/graphql/queries/HomeCover.graphql","webpack:///./src/ecommerce/assets/graphql/queries/account/GoogleClientID.graphql","webpack:///./src/common/shop/assets/icons/Spark.svg","webpack:///./src/ecommerce/assets/graphql/queries/newPaginatedBoxActivities.graphql","webpack:///./src/ecommerce/assets/graphql/mutations/reminder/AddReminderMutation.graphql","webpack:///./node_modules/core-js/modules/es.string.starts-with.js","webpack:///./src/common/icons/sliderController.svg","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./src/common/icons/1Parcitipante.svg","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./src/common/shop/assets/icons/Truck.svg","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/ecommerce/assets/images/OnboardingRegalendarioImg2.svg","webpack:///./node_modules/axios/lib/helpers/null.js","webpack:///./src/ecommerce/components/NewBoxBlock/NewBoxBlock.vue.html","webpack:///./src/ecommerce/components/NewBoxBlock/NewBoxBlock.component.js","webpack:///./src/ecommerce/components/NewBoxBlock/NewBoxBlock.component.js?1138","webpack:///./src/ecommerce/components/NewBoxBlock/NewBoxBlock.vue","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./src/ecommerce/adapters/timeRanges.adapter.js","webpack:///./src/ecommerce/services/boxCatalogView/timeRanges.service.js","webpack:///./src/ecommerce/services/activities.service.js","webpack:///./src/ecommerce/stores/boxCatalogView.store.js","webpack:///./src/ecommerce/assets/icons/SmilingFace.svg","webpack:///./src/ecommerce/assets/icons/first_step_reminder.svg","webpack:///./src/common/shop/assets/icons/House2.svg","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/defaults/index.js","webpack:///./src/common/icons/LocationThree.svg","webpack:///./src/common/shop/assets/icons/Options.svg","webpack:///./node_modules/core-js/modules/es.regexp.flags.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./src/ecommerce/assets/icons/reminder_logo.svg","webpack:///./src/common/shop/assets/icons/Bag2.svg","webpack:///./src/common/icons/fullheart.svg","webpack:///./src/ecommerce/assets/icons/giftcard.svg","webpack:///./src/ecommerce/assets/graphql/queries/Activity.graphql","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./src/ecommerce/components/HomeCard/HomeCard.component.js","webpack:///./src/ecommerce/components/HomeCard/HomeCard.component.js?0fd9","webpack:///./src/ecommerce/components/HomeCard/HomeCard.vue","webpack:///./src/ecommerce/components/HomeCard/HomeCard.vue.html","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/core-js/modules/es.set.js","webpack:///./src/ecommerce/components/NewPackageBlock/NewPackageBlock.component.js","webpack:///./src/ecommerce/components/NewPackageBlock/NewPackageBlock.component.js?f1e9","webpack:///./src/ecommerce/components/NewPackageBlock/NewPackageBlock.vue","webpack:///./src/ecommerce/components/NewPackageBlock/NewPackageBlock.vue.html","webpack:///./src/ecommerce/assets/graphql/queries/PaginatedBoxActivities.graphql","webpack:///./src/ecommerce/components/Reminders/Step/Step.component.js","webpack:///./src/ecommerce/components/Reminders/Step/Step.component.js?d3a9","webpack:///./src/ecommerce/components/Reminders/Step/Step.vue","webpack:///./src/ecommerce/components/Reminders/Step/Step.vue.html","webpack:///./src/ecommerce/assets/images/corporate-card-pattern.png","webpack:///./src/ecommerce/assets/icons/mas.svg","webpack:///./src/ecommerce/assets/graphql/mutations/AddEmailToAllNewsLetter.graphql","webpack:///./node_modules/axios/lib/core/AxiosError.js","webpack:///./src/common/components/HeartIt/HeartIt.vue.html","webpack:///./src/common/components/HeartIt/HeartIt.component.js","webpack:///./src/common/components/HeartIt/HeartIt.component.js?fd51","webpack:///./src/common/components/HeartIt/HeartIt.vue","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./src/common/shop/assets/icons/Notebook.svg","webpack:///./node_modules/cleave.js/dist/cleave-esm.js","webpack:///./src/common/components/BbHorizontalSlider/BbHorizontalSlider.vue.html","webpack:///./src/common/components/BbHorizontalSlider/BbHorizontalSlider.component.js","webpack:///./src/common/components/BbHorizontalSlider/BbHorizontalSlider.component.js?533c","webpack:///./src/common/components/BbHorizontalSlider/BbHorizontalSlider.vue","webpack:///./src/common/shop/assets/icons/Star2.svg","webpack:///./src/ecommerce/components/OptionalRouterLink/OptionalRouterLink.component.js","webpack:///./src/ecommerce/components/OptionalRouterLink/OptionalRouterLink.component.js?0488","webpack:///./src/ecommerce/components/OptionalRouterLink/OptionalRouterLink.vue","webpack:///./src/ecommerce/components/OptionalRouterLink/OptionalRouterLink.vue.html","webpack:///./src/common/components/NewActivityBlock/NewActivityBlock.component.js","webpack:///./src/common/components/NewActivityBlock/NewActivityBlock.component.js?c29b","webpack:///./src/common/components/NewActivityBlock/NewActivityBlock.vue","webpack:///./src/common/components/NewActivityBlock/NewActivityBlock.vue.html","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./src/ecommerce/assets/graphql/queries/ReminderOcassions.graphql","webpack:///./node_modules/tippy.js/dist/tippy.all.js","webpack:///./node_modules/vue-lottie/src/lottie.vue?67b6","webpack:///./node_modules/vue-lottie/src/lottie.vue?e720","webpack:///node_modules/vue-lottie/src/lottie.vue","webpack:///./node_modules/vue-lottie/src/lottie.vue","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./src/common/icons/ChangeGiftCopy.svg","webpack:///./src/common/graphql/mutations/DeleteWishlistItemMutation.graphql","webpack:///./src/common/graphql/queries/UserWishlistItems.graphql","webpack:///./src/common/icons/MasParticipantes.svg","webpack:///./src/common/components/Rating/Rating.component.js","webpack:///./src/common/components/Rating/Rating.component.js?f0ca","webpack:///./src/common/components/Rating/Rating.vue","webpack:///./src/common/components/Rating/Rating.vue.html","webpack:///./node_modules/lottie-web/build/player/lottie.js","webpack:///./src/ecommerce/assets/icons/knowWhat.svg","webpack:///./src/ecommerce/assets/icons/second_step_reminder.svg","webpack:///./src/common/shop/assets/icons/MapPin.svg","webpack:///./src/common/icons/take-away.svg","webpack:///./src/common/icons/delivery-person.svg","webpack:///./node_modules/vuejs-datepicker/dist/build.js","webpack:///./src/common/components/ProductBlockSkeleton/ProductBlockSkeleton.component.js","webpack:///./src/common/components/ProductBlockSkeleton/ProductBlockSkeleton.component.js?81c3","webpack:///./src/common/components/ProductBlockSkeleton/ProductBlockSkeleton.vue","webpack:///./src/common/components/ProductBlockSkeleton/ProductBlockSkeleton.vue.html","webpack:///src/ecommerce/components/Modals/RefundCredits/RefundCredits.vue","webpack:///./src/ecommerce/components/Modals/RefundCredits/RefundCredits.vue?1ffa","webpack:///./src/ecommerce/components/Modals/RefundCredits/RefundCredits.vue?e44a","webpack:///./src/ecommerce/components/Modals/RefundCredits/RefundCredits.vue","webpack:///src/ecommerce/components/HomeView/HomeView.vue","webpack:///./src/ecommerce/components/HomeView/HomeView.vue?2ef9","webpack:///./src/ecommerce/components/HomeView/HomeView.vue?00e6","webpack:///./src/ecommerce/components/HomeView/HomeView.vue","webpack:///./node_modules/core-js/modules/es.promise.finally.js","webpack:///./src/ecommerce/assets/graphql/queries/catalog/TimeRanges.graphql","webpack:///./src/common/icons/2Participantes.svg","webpack:///./src/ecommerce/composables/useBoxCatalogView.js","webpack:///./src/ecommerce/assets/icons/tap.svg","webpack:///./src/common/assets/icons/now-icon.svg","webpack:///./src/ecommerce/assets/icons/question_2.svg","webpack:///./src/ecommerce/assets/icons/efectivo.svg","webpack:///./src/ecommerce/assets/icons/giftcard_2.svg","webpack:///./src/common/components/DiscountLabel/DiscountLabel.vue.html","webpack:///./src/common/components/DiscountLabel/DiscountLabel.component.js","webpack:///./src/common/components/DiscountLabel/DiscountLabel.component.js?66c0","webpack:///./src/common/components/DiscountLabel/DiscountLabel.vue","webpack:///./src/common/icons/Computer.svg","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/helpers/parseProtocol.js","webpack:///./node_modules/axios/index.js","webpack:///./src/ecommerce/assets/icons/third_step_reminder.svg","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./src/ecommerce/assets/icons/hands.svg","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./src/ecommerce/components/HomeSlider/HomeSlider.component.js","webpack:///./src/ecommerce/components/HomeSlider/HomeSlider.component.js?ee04","webpack:///./src/ecommerce/components/HomeSlider/HomeSlider.vue","webpack:///./src/ecommerce/components/HomeSlider/HomeSlider.vue.html","webpack:///./src/ecommerce/components/Reminders/FinalStep/FinalStep.component.js","webpack:///./src/ecommerce/components/Reminders/FinalStep/FinalStep.component.js?8bbd","webpack:///./src/ecommerce/components/Reminders/FinalStep/FinalStep.vue","webpack:///./src/ecommerce/components/Reminders/FinalStep/FinalStep.vue.html","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./src/ecommerce/assets/images/OnboardingRegalendarioImg1.svg","webpack:///./node_modules/axios/lib/defaults/transitional.js","webpack:///./src/ecommerce/assets/icons/BbPlusLogo.svg","webpack:///./node_modules/axios/lib/axios.js"],"names":["AxiosError","CanceledError","message","call","this","ERR_CANCELED","name","inherits","__CANCEL__","module","exports","doc","loc","source","collectFragmentReferences","node","refs","kind","add","value","type","selectionSet","selections","forEach","selection","variableDefinitions","def","definitions","definitionRefs","findOperation","i","length","element","Set","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","size","prevRefs","has","childRef","op","push","oneQuery","compareDayAndMonthWithNow","cleave","dayAndMonthReminder","getFormattedValue","dateThisYear","concat","dayjs","year","dateNextYear","day","format","now","hour","minute","second","diff","e","LTS","LT","L","LL","LLL","LLLL","t","n","r","o","s","a","f","zone","offset","match","h","indexOf","u","meridiem","d","A","afternoon","S","milliseconds","SS","SSS","ss","m","mm","H","HH","hh","D","DD","Do","ordinal","replace","M","MM","MMM","map","slice","Error","month","MMMM","Y","YY","YYYY","Z","ZZ","c","formats","toUpperCase","l","regex","parser","exec","hours","p","customParseFormat","parseTwoDigitYear","prototype","parse","date","utc","args","$u","$locale","Ls","$d","Date","minutes","seconds","getDate","getFullYear","getMonth","v","g","UTC","init","$L","locale","Array","apply","isValid","url","test","trimAndEllipsisText","string","maxCharacters","BoxCardComponent","Component","props","box","Object","required","category","landingSlug","String","components","HeartIt","DiscountLabel","_dec","_class","_Vue","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","_key","icons","users","Users","options","Options","gift2","Gift2","star","Star","spark","Spark","crown","Crown","bell","Bell","truck","Truck","house2","House2","bag2","Bag2","notebook","Notebook","mapPin","MapPin","NowIcon","tags","new","icon","onlineReservation","delivery","homeExperience","takeAway","onlineExperience","onlyWithUs","purchaseReservation","$translate","infoItems","displayTag","_createClass","key","setInitialInfoItems","_this$box$partneracti","_this$box$partneracti2","_this$box$partneracti3","_this$box$partneracti4","_this$box$partneracti5","is_new","is_remote","partneractivity","has_online_reservation","can_purchase_a_reservation","_this$box","__typename","activity_qty","participants","isBoxType","isMultipleParticipant","locations","get","_this$box2","_this$box3","public_boxes","_this$box4","_this$currentProduct","_this$currentProduct7","currentProduct","is_consultation","_this$currentProduct2","_this$currentProduct3","_this$currentProduct4","_this$currentProduct5","_this$currentProduct6","price","currency_symbol","currency","price_from","_this$currentProduct8","_this$currentProduct9","price_without_discount","original_price","_this$currentProduct10","_this$currentProduct11","Number","discount_percentage","discount","rating","toFixed","_this$box5","comboactivity","sublocation","province","formatter","Intl","ListFormat","locationsArray","location","filter","index","array","splice","newRoute","params","categorySlug","slug","boxSlug","activitySlug","product_url","path","campaignSlug","query","_objectSpread","$route","windowWidth","window","innerWidth","_this$currentProduct12","catalog_description","descriptionCharacters","short_description","Vue","component","_vm","_c","_self","staticClass","attrs","boxLink","isOnSale","campaign_color","_e","_v","style","product_image_url","domProps","_s","class","boxDescription","_l","item","originalPrice","utils","obj","formData","FormData","stack","convertValue","isDate","toISOString","isArrayBuffer","isTypedArray","Blob","Buffer","from","build","data","parentKey","isPlainObject","isArray","isUndefined","arr","fullKey","endsWith","JSON","stringify","toArray","el","append","pop","baseURL","relativeURL","CategoryCardComponent","image","title","on","$event","$emit","NewsLetterSubscriptionComponent","description","inputSize","disclaimer","Boolean","email","loading","showSuccessMessage","showNetworkErrorMessage","_this2","$apollo","mutate","mutation","AddEmailToAllNewsLetterMutation","variables","AddEmailToAllNewsLetterMutationInput","then","_ref","add_email_to_all_newsletter","errors","catch","finally","subscribe","directives","rawName","expression","target","composing","ActivityCardHoursComponent","availableHours","default","setup","_useBoxCatalogView","useBoxCatalogView","getFormattedDate","onSetSchedule","onActivityBySlug","onToggleModalReservation","_selectHour","selectedHour","showLeftArrow","showRightArrow","buttonsContainer","buttonWidth","$refs","button","offsetWidth","intersectionOptions","root","rootMargin","threshold","handleIntersection","activate","deactivate","_asyncToGenerator","_regeneratorRuntime","mark","_callee","ev","wrap","_context","prev","next","abrupt","isIntersecting","stop","_x","startObserver","IntersectionObserver","observe","endObserver","scrollLeft","time","endTime","undefined","formattedTime","moment","formattedEndTime","formatTime","_callee2","_context2","_x2","require","stopPropagation","ref","refInFor","selectHour","end_time","scrollRight","ProductBlockComponent","Rating","ActivityCardHours","product","coverPaddingBottom","productTitle","campaignColor","showHeart","boxColour","bigBlock","catalogViewStore","useBoxCatalogViewStore","OneGuestIcon","TwoGuestsIcon","PlusGuestsIcon","isRaffle","amount","isActivityType","document","addEventListener","bg","getAttribute","backgroundImage","getParticipantsIcon","$slots","includes","activity_type","flags","alreadySearchedByDate","$screen","width","btoa","staticStyle","isActivityClosed","category_id","special_catalog","id","paddingBottom","_t","participantsIcon","showAvailableHoursSlider","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","fn","Math","max","toString","buildURL","dispatchRequest","mergeConfig","buildFullPath","validator","validators","Axios","instanceConfig","defaults","interceptors","request","response","configOrUrl","config","method","toLowerCase","transitional","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","clarifyTimeoutError","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","promise","responseInterceptorChain","chain","Promise","resolve","shift","newConfig","onFulfilled","onRejected","error","reject","getUri","fullPath","paramsSerializer","generateHTTPMethod","isForm","headers","timeout","ERROR_MESSAGES","typeMismatch","badInput","tooShort","tooLong","rangeUnderflow","rangeOverflow","stepMismatch","step","patternMismatch","valueMissing","aliases","tag","tooltipPlacement","errorMessages","_dec2","Watch","_dec3","_dec4","_dec5","_class2","BbFieldComponent","validityError","validityElement","isFocused","wasFormSubmitted","wasFocused","hasHover","customError","errorClass","_tippy","validate","bind","_assertThisInitialized","$props","$attrs","set","getValidityErrorMessage","isErrorDisplayed","errorMessage","assign","tooltipMessage","popper","querySelector","textContent","$el","classList","tippy","one","arrow","hideOnClick","placement","theme","trigger","destroy","clearTimeout","setTimeout","showTooltip","show","hide","bbFieldCtrl","listenFieldsFocus","listenMouseOver","tagName","querySelectorAll","names","getFields","field","errorMsgFn","errorMessagesMap","_this3","bbFieldFocus","validity","_this4","_this5","resetErrors","getFieldsGroupedByName","setCustomValidity","checkValidity","keys","find","errorFields","firstField","_errors$firstField$na","_slicedToArray","focus","_applyDecoratedDescriptor","getOwnPropertyDescriptor","elementType","_b","inputModel","_i","$$a","$$el","$$c","checked","$$i","_q","$$selectedVal","selected","_value","multiple","model","callback","$$v","staticRenderFns","OnboardingRegalendarioModalComponent","BbModal","user","useAccount","getUserData","assets","logo","ReminderLogo","img1","OnboardingRegalendarioImg1","img2","OnboardingRegalendarioImg2","hasCreatedThreeReminders","has_created_three_reminders","$router","redirectToProducts","RemindersQuitModalComponent","stepsLeftStrings","$root","stepsLeft","close","RemindersComponent","Step","FinalStep","Lottie","viewStep","_toogleRemindersModalWithAddReminder","isLoading","showReminderPopover","stepInComming","statusOk","EstadoSuccess","firstStep","FirstStep","secondStep","SecondStep","thirdStep","ThirdStep","lotties","animationData","check","popoverText","first","third","commonSteps","label","occasion","copyObjectWithoutReference","nextStep","toogleRemindersModalWithAddReminder","final","content","buttonSecondary","closeModal","handleRemindersModalView","goToAskPreference","remindersSteps","_this$remindersSteps$","mutateConfig","miliseconds","AddReminderMutation","input","sent","add_reminder","ok","closeReminderPopoverAutomatic","toggleReminderPopover","CardHomeComponent","apollo","logged_user","LoggedUser","reminders","RemindersRegalendario","skip","update","remindersComplete","cta","remindersModalView","showReminderOnboarding","Reminders","RemindersQuitModal","OnboardingRegalendario","steps","saveOrContinueModal","onboard","toggleOnboarding","status","action","queries","refetch","_this$reminders","_this$reminders2","_m","handleSaveOrContinueModal","OptionCardComponent","option","homeOption","results","keywords","showSearchResults","requests","axios","create","xsrfCookieName","xsrfHeaderName","withCredentials","collection","thisArg","descriptor","$","uncurryThis","toLength","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","nativeStartsWith","startsWith","stringSlice","min","CORRECT_IS_REGEXP_LOGIC","proto","forced","writable","searchString","that","search","encode","val","encodeURIComponent","serializedParams","isURLSearchParams","parts","isObject","join","hashmarkIndex","isStandardBrowserEnv","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","hash","hostname","port","pathname","charAt","requestURL","parsed","isString","__webpack_amd_options__","NewBoxBlockComponent","ProductBlock","OfferLabel","offerLabelTitle","offerLabelDescription","getOfferLabelTitle","getOfferLabelDescription","plural","box_activities_in_box","getLastTld","installments","floor","feePrice","theDecimal","feePriceInt","activities","use_price_in_usd","price_in_usd","boxClicked","scopedSlots","_u","totalActivitiesInBox","proxy","reviews_qty","selectedPrice","tld","feePriceDecimal","validateStatus","ERR_BAD_REQUEST","ERR_BAD_RESPONSE","timeRangesAdapter","start","start_time","end","getTimeRanges","_yield$apolloClient$q","apolloClient","TimeRanges","time_ranges","t0","getPaginatedBoxActivities","box_slug","page_config","filters","time_range","per_page","page_number","province_id","order_by","search_term","at_home","time_range_slug","dateFlag","formattedDate","selectedQuery","getVariables","formatDate","NewPaginatedBoxActivities","PaginatedBoxActivities","date_flag","provinceId","available_box_activities","paginated_available","others","not_available","paginated_box_activities","_x3","_x4","INITIAL_PAGE_CONFIG","DEFAULT_FILTERS","defineStore","state","initialDataLoading","isModalReservationOpen","selectedSchedule","paginatedActivities","allActivitiesResults","currentPageInfo","otherActivities","allTimeRanges","titleDate","paginated_activities","catalogCodeComponent","catalogModalComponent","expirationDate","isATT","getters","getLoading","getInitialDataLoading","getFilters","getTimeRange","getSelectedSchedule","getPageConfig","getPageInfo","getHasNextPage","_state$paginatedActiv","has_next","getTotalActivities","_state$paginatedActiv2","count","paginatedBoxActivitiesResults","getOtherActivities","getTitleDate","getIsModalReservationOpen","getCatalogCodeComponent","getCatalogModalComponent","getExpirationDate","actions","resetFilters","all","console","_yield$_getPaginatedB","page_info","_toConsumableArray","_callee3","_context3","sort","b","parseInt","split","onSetTimeSlot","timeSlotSlug","onSetDate","selectedDate","shedule","onSetProvince","resetPageConfig","onSetCategory","categoryId","onSetOrderBy","orderBy","onSetSearchTerm","searchTerm","onSetAtHome","onSetPage","pageNumber","onSetPerPage","productsQuantity","generateTitleDate","formattedDateName","capitalizedDateName","formattedDateNumber","_callee4","_activity$partneracti","activity","_activity$activity_vi","breadcrumb","catalog_case","is_catalog","gift_information","breadCrumb","giftInformation","catalogCase","isCatalog","isReserved","_context4","ActivityBySlug","activity_view_config","code_component","code","catalogColor","color","reservedGift","modal_component","codeId","code_id","categoryColor","reserverdGift","codeExpirationDate","expiration_date","onCreateReservation","success","scrollToResultsStart","getElementById","scrollIntoView","behavior","block","cleanAvailability","setATT","config1","config2","getMergedValue","merge","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","normalizeHeaderName","transitionalDefaults","toFormData","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","XMLHttpRequest","process","transformRequest","isFormData","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isFileList","isObjectPayload","contentType","_FormData","env","rawValue","encoder","trim","stringifySafely","transformResponse","strictJSONParsing","responseType","maxContentLength","maxBodyLength","common","global","DESCRIPTORS","defineBuiltInAccessor","regExpFlags","fails","RegExp","RegExpPrototype","INDICES_SUPPORT","O","calls","expected","addGetter","chr","defineProperty","pairs","dotAll","ignoreCase","multiline","sticky","hasIndices","configurable","transformData","isCancel","throwIfCancellationRequested","cancelToken","throwIfRequested","signal","aborted","reason","HomeCardComponent","goTo","mobileButtonStyle","question_2","questionIcon","giftcard_2","giftIcon","giftcard_1","giftcardIcon","useCredit","useCreditIcon","smilingFace","changeGift","knowWhat","handleClick","cardIcon","payload","isAxiosError","NewPackageBlockComponent","selectedMonth","showPrice","showmiddleSlot","travelActivities","mes","_this$activity$min_se","min_season_price","nights","_this$activity$min_se2","activity_count","goToPackage","_g","activityCount","minPrice","$listeners","StepComponent","stepData","stepIcon","reminder_occasions","ReminderOcassions","result","BbField","Datepicker","BbHorizontalSlider","isDissableInputDate","valueDateAux","windowInnerWidth","Cleave","datePattern","blocks","extend","setRawValue","oc","getDayAndMonthOccasionOrEmpty","$set","handleDissableInputDateByIdOccasion","validatingFormBeforeTheNextStep","toJSON","number","fileName","lineNumber","columnNumber","descriptors","defineProperties","customProps","axiosError","toFlatObject","directive","outSideClick","HeartItComponent","clickOutside","wishitems","UserWishlistItems","emptyHeartColor","tooltipTopPosition","withBackground","wishItems","_updateWish","displayTooltip","wish","toWho","product_id","to_who","toWho_","exist","DeleteWishlistItem","CreateWishlistItem","productId","updateWishItem","sendAnalytics","sendItemToAnalytics","forGift","forMe","onClickOutside","toggleTooltip","hearted","top","updateWish","write","expires","domain","secure","cookie","isNumber","toGMTString","read","decodeURIComponent","remove","NumeralFormatter","numeralDecimalMark","numeralIntegerScale","numeralDecimalScale","numeralThousandsGroupStyle","numeralPositiveOnly","stripLeadingZeroes","prefix","signBeforePrefix","tailPrefix","delimiter","owner","groupStyle","thousand","delimiterRE","lakh","wan","none","getRawValue","partSign","partSignAndPrefix","partInteger","partDecimal","NumeralFormatter_1","DateFormatter","dateMin","dateMax","reverse","x","initBlocks","getISOFormatDate","addLeadingZero","getBlocks","getValidatedDate","sub","sub0","rest","getFixedDateString","dayIndex","monthIndex","yearIndex","dayStartIndex","monthStartIndex","yearStartIndex","fullYearDone","getFixedDate","getRangeFixedDate","reduce","previous","current","addLeadingZeroForYear","isLeapYear","fullYearMode","DateFormatter_1","TimeFormatter","timePattern","timeFormat","getISOFormatTime","getTimeFormatOptions","maxHourFirstDigit","maxHours","maxMinutesFirstDigit","maxMinutes","getValidatedTime","timeFormatOptions","getFixedTimeString","secondIndex","minuteIndex","hourIndex","secondStartIndex","minuteStartIndex","hourStartIndex","getFixedTime","TimeFormatter_1","PhoneFormatter","setFormatter","phoneNumber","clear","validated","iMax","inputDigit","PhoneFormatter_1","CreditCardDetector","uatp","amex","diners","discover","mastercard","dankort","instapayment","jcb15","jcb","maestro","visa","mir","unionPay","general","re","getStrictBlocks","total","getInfo","strictMode","matchedBlocks","CreditCardDetector_1","Util_1","noop","strip","getPostDelimiter","delimiters","matchedDelimiter","getDelimiterREByDelimiter","getNextCursorPosition","prevPos","oldValue","newValue","getPositionOffset","oldRawValue","newRawValue","lengthOffset","stripDelimiters","abs","letter","headStr","str","getMaxLength","getPrefixStrippedValue","prefixLength","prevResult","noImmediatePrefix","prevValue","getFirstDiffIndex","blocksLength","delimiterLazyShow","multipleDelimiters","currentDelimiter","fixPrefixCursor","appendix","setSelectionRange","len","checkFullSelection","getSelection","ex","setSelection","position","getActiveElement","createTextRange","range","move","select","warn","parent","activeElement","shadowRoot","isAndroid","isAndroidBackspaceKeydown","lastInputValue","currentInputValue","DefaultProperties_1","opts","creditCard","creditCardStrictMode","creditCardType","onCreditCardTypeChanged","phone","phoneRegionCode","phoneFormatter","timeFormatter","dateFormatter","numeral","swapHiddenInput","numericOnly","uppercase","lowercase","rawValueTrimPrefix","copyDelimiter","initValue","delimiterLength","commonjsGlobal","maxLength","backspace","onValueChanged","hasMultipleElements","properties","DefaultProperties","pps","Util","isBackward","onChangeListener","onChange","onKeyDownListener","onKeyDown","onFocusListener","onFocus","onCutListener","onCut","onCopyListener","onCopy","initSwapHiddenInput","initPhoneFormatter","initDateFormatter","initTimeFormatter","initNumeralFormatter","onInput","inputFormatter","cloneNode","parentNode","insertBefore","elementSwapHidden","numeralFormatter","AsYouTypeFormatter","event","charCode","which","keyCode","inputType","postDelimiter","postDelimiterBackspace","copyClipboardData","inputValue","textToCopy","clipboardData","setData","preventDefault","postDelimiterAfter","updateValueState","updateCreditCardPropsByValue","creditCardInfo","endPos","selectionEnd","callOnValueChanged","setPhoneRegionCode","removeEventListener","Cleave_1","BbHorizontalSliderComponent","items","itemClass","arrowClass","isCheckout","bigItem","itemsToShow","scrollIndex","calculateItemsToShow","orderByDiscount","nextTick","listElement","list","firstChild","firstElementChild","round","showLeftScroll","showRightScroll","transform","translateX","OptionalRouterLinkComponent","disabled","NewActivityBlockComponent","OptionalRouterLink","showRating","showLocation","preventClick","showOnlineReservationLabel","receptionBell","recalculateWidth","uniqueLocations","_this$activity","formatLocation","_locations$","_locations$2","_locations$3","delivery_in_all_country","deliveryIcon","takeAwayIcon","activityClicked","campaign_discounted_percentage","ratingStarSize","ratingFontSize","activityLocation","activityTypeTag","showFullPrice","isTravel","campaign_discounted_price","isAbsoluteURL","combineURLs","requestedURL","VERSION","version","thing","deprecatedWarnings","formatMessage","opt","desc","ERR_DEPRECATED","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","factory","isBrowser","isIE","browser","supported","supportsTouch","usingTouch","dynamicInputDetection","iOS","platform","MSStream","onUserInputChange","selectors","POPPER","TOOLTIP","CONTENT","BACKDROP","ARROW","ROUND_ARROW","REFERENCE","livePlacement","animation","html","animateFill","delay","duration","interactive","interactiveBorder","distance","followCursor","inertia","updateDuration","appendTo","body","zIndex","touchHold","performance","dynamicTitle","flip","flipBehavior","arrowType","arrowTransform","maxWidth","allowTitleHTML","popperOptions","createPopperInstanceOnInit","onShow","onShown","onHide","onHidden","defaultsKeys","isObjectLiteral","property","prefixes","upperProp","_prefix","prefixedProp","div","createClass","enumerable","Constructor","protoProps","staticProps","_extends","getInnerElements","tooltip","backdrop","removeTitle","removeAttribute","isBrowser$1","longerTimeoutBrowsers","timeoutDuration","debounce","called","scheduled","isFunction","functionToCheck","getStyleComputedProperty","nodeType","css","getComputedStyle","getParentNode","nodeName","getScrollParent","ownerDocument","_getStyleComputedProp","overflow","overflowX","overflowY","isIE11","MSInputMethodContext","documentMode","isIE10","isIE$1","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","upperSide","scrollingElement","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","getWindowSizes","height","createClass$1","defineProperty$1","_extends$1","getClientRect","offsets","right","left","bottom","getBoundingClientRect","rect","scrollTop","sizes","clientWidth","clientHeight","horizScrollbar","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","reference","padding","boundariesElement","boundaries","excludeScroll","relativeOffset","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","refRect","rects","sortedAreas","area","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","getOuterSizes","marginBottom","y","marginRight","getOppositePlacement","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","modifiers","ends","findIndex","cur","enabled","isDestroyed","instance","arrowStyles","attributes","flipped","positionFixed","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","getSupportedPropertyName","toCheck","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","defaultView","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","isNumeric","isNaN","isFinite","setStyles","unit","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","splitRegex","ops","mergeWithPrevious","toValue","index2","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","preventOverflow","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","keepTogether","opSide","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Defaults","Popper","TypeError","classCallCheck$1","requestAnimationFrame","jquery","getPopperPlacement","transformNumbersBasedOnPlacementAxis","numbers","isReverse","scale","translate","transformAxis","X","computeArrowTransform","getAxis","getNumbers","matches","computedTransform","getOffsetDistanceInPx","Utils","PopperUtils","Element","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","matches$1","closest","parentSelector","selector","getValue","setVisibilityState","els","applyTransitionDuration","scrollX","pageXOffset","scrollY","pageYOffset","scroll","Tippy","classCallCheck","destroyed","visible","_","mutationObservers","k","_getInnerElements","hasAttribute","refObj","visibility","_mount","_hasFollowCursorBehavior","popperInstance","lastTriggerEvent","followCursorListener","lastMouseMoveEvent","_makeSticky","_onTransitionEnd","_getInnerElements2","isPreparingToShow","destroyTargetInstances","listeners","listener","handler","attr","child","observer","disconnect","_createDelegateChildTippy","targetEl","_enter","_clearDelayTimeouts","wait","_setFollowCursorListener","margin","showTimeout","_leave","hideTimeout","_getEventListeners","_this6","onTrigger","onMouseLeave","onMouseMove","referenceCursorIsOver","cursorIsOverPopper","cursorIsOverReference","clientX","clientY","borderWithDistance","exceeds","cursorIsOutsideInteractiveBorder","onBlur","relatedTarget","onDelegateShow","onDelegateHide","_createPopperInstance","_this7","arrowSelector","_addMutationObserver","childList","subtree","characterData","updateAlreadyCalled","reflow","updatePopperPosition","appendChild","_this8","_$lastMouseMoveEvent","_this9","updatePosition","MutationObserver","toggleListeners","transitionendListener","idCounter","createTooltips","acc","evaluateOptions","instanceOptions","getIndividualOptions","innerHTML","templateId","createPopperElement","eventType","createTrigger","_reference","hideAllPoppers","excludeTippy","eventListenersBound","useCapture","onDocumentTouch","onDocumentMouseMove","isClickTrigger","isMultiple","blur","tippyInstance","maxTouchPoints","msMaxTouchPoints","bindEventListeners","classNames","references","NodeList","getArrayOfElements","firstReference","tooltips","destroyAll","disableAnimations","head","styleSheet","cssText","createTextNode","injectCSS","mounted","anim","loadAnimation","container","lavContainer","renderer","loop","autoplay","rendererSettings","CancelToken","executor","resolvePromise","token","cancel","_listeners","onfulfilled","_resolve","unsubscribe","RatingComponent","maxValue","allStars","valueFontSize","starSize","lineHeight","totalOpinions","showStart","showTotalOpinions","showRatingNumber","allStarsDesktop","isCard","starOnTheRight","numberBold","starFillIcon","starFillSVG","starGrayIcon","starGraySVG","ratingSVG","integer","getDecimal","fontSize","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","getDescriptor","object","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","src","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","Uint8ClampedArray","Float32Array","Int16Array","createSizedArray","_typeof$6","Symbol","iterator","constructor","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","_shouldRoundValues","bmPow","pow","bmSqrt","sqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface$1","propertyNames","random","absArr","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","bmRnd","styleDiv","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","direction","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","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","_workerSelf","setupWorker","Worker","blob","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","j","jLen","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","comp","findComp","__used","ks","it","checkVersion","minimum","animVersionString","animVersion","minimumVersion","checkText","iterateLayers","textLayer","documentData","checkChars","chars","charData","ip","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseText","load","errorCallback","err","onreadystatechange","readyState","open","send","completeData","onComplete","onError","createProcess","processId","origin","loadData","completeAnimation","ImagePreloader","proxyImage","canvas","ctx","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","_cbs","callbacks","markerParser","parsePayloadLines","line","lines","keysCount","_markers","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","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","wrapper","animType","RendererClass","globalData","defs","setProjectInterface","autoloadSegments","initialSegment","setupAnimation","lastIndexOf","substr","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","_width","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","marker","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","animItem","subtractPlayingCount","registerAnimation","elem","addPlayingCount","nowTime","elapsedTime","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","getElementsByTagName","innerText","freeze","unfreeze","getRegisteredAnimations","animations","BezierFactory","beziers","bezEasing","BezierEasing","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","B","C","calcBezier","aT","getSlope","points","_p","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","BezierData","segmentLength","PointData","partial","partialLength","storedData","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","initFrame","mathAbs","interpolateValue","frameNum","caching","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","to","ti","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","out","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","values","c1","cos","c2","c3","s1","s2","s3","getValueAtCurrentTime","renderedFrame","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","pos","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","paths","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","reset","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","StarShapeProperty","StarShapePropertyFactory","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","sz","setTransform","tx","tz","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","lottie","setLocation","setSubframeRendering","setPrefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","useWebWorker","setIDPrefix","__getFactory","scripts","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","edges","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","depth","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","prevIndex","nextIndex","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","radius","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","mid","flex","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","fStyle","fWeight","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","itemsTransform","cont","hasReloaded","copies","ceil","group","ix","reloadShapes","elems","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","newPosPerc","derivative","denom","tcusp","square","p10","p11","p20","p21","bounds","other","shapeSegmentInverted","pointsType","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","w","combinedCharacters","BLACK_FLAG_CODE_POINT","REGIONAL_CHARACTER_A_CODE_POINT","REGIONAL_CHARACTER_Z_CODE_POINT","surrogateModifiers","setUpNode","font","family","fontFamily","fontVariant","fontStyle","fontWeight","letterSpacing","familyArray","enabledFamilies","trimFontOptions","createHelper","helper","engine","fontProps","tHelper","fFamily","fClass","tCanvasHelper","OffscreenCanvas","measureText","text","getComputedTextLength","getCodePoint","codePoint","charCodeAt","isRegionalCode","Font","typekitLoaded","_warned","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","found","ch","cache","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","rel","sc","getCharData","_char","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","SlotManager","slotFactory","RenderableElement","slots","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","mode","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","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","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","expansor","feMorph","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","renderLocalTransform","localTransforms","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","createFilter","Effect","effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","level","caches","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","render","currentTransform","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","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","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","svgElement","ariaLabel","titleElement","titleId","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","className","focusable","filterSize","runExpressions","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","fromCharCode","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","loadLuma","_svg","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","fill","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","context","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","rule","actionFlag","containerStyle","mozTransformOrigin","setContext","isDashed","elementWidth","elementHeight","elementRel","animationRel","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","backgroundColor","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","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","translation","textPath","svgTransform","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","nodecrypto","rngname","startdenom","significance","ARC4","keylen","me","copy","flatten","typ","mixkey","seed","smear","stringseed","tostring","shortseed","entropy","randomBytes","Uint8Array","crypto","msCrypto","getRandomValues","plugins","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","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","noOp","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","MaskManagerInterface","MaskInterface","_mask","_data","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","anchor_point","startTime","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","view","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","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","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","initialize","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","childNodes","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","__esModule","self","Function","__g","store","__e","propertyIsEnumerable","valueOf","translations","af","language","months","original","abbr","days","ar","rtl","bs","cs","de","ee","es","ca","fi","ge","ja","ymd","he","hu","hr","fa","ko","lb","lt","nl","pl","ro","ru","sv","th","uk","ur","vi","zh","F","G","P","W","virtual","R","U","J","entries","contentWindow","getOwnPropertyNames","getOwnPropertySymbols","openDate","fullMonthName","highlighted","placeholder","inline","calendarClass","inputClass","wrapperClass","mondayFirst","clearButton","clearButtonIcon","calendarButton","calendarButtonIcon","calendarButtonIconContent","bootstrapStyling","initialView","disabledPicker","minimumView","maximumView","pageTimestamp","setDate","showDayView","showMonthView","showYearView","calendarHeight","watch","setValue","setPageDate","setInitialView","computed","computedInitialView","pageDate","formattedValue","currMonthName","getMonthNameAbbr","currYear","blankDays","getHours","getMinutes","getDay","daysOfWeek","daysInMonth","timestamp","getTime","isSelected","isSelectedDate","isDisabled","isDisabledDate","isHighlighted","isHighlightedDate","isHighlightStart","isHighlightEnd","isToday","toDateString","isWeekend","isSaturday","isSunday","getMonthName","isSelectedMonth","isDisabledMonth","setMonth","years","isSelectedYear","isDisabledYear","setFullYear","calendarStyle","isInline","isOpen","isRtl","isYmd","methods","resetDefaultDate","showCalendar","allowedToShowView","showYearCalendar","showMonthCalendar","showDayCalendar","addOutsideClickListener","clearDate","selectDate","selectMonth","selectYear","getPageDate","getPageMonth","getPageYear","getPageDecade","changeMonth","previousMonth","previousMonthDisabled","nextMonth","nextMonthDisabled","changeYear","setYear","previousYear","previousYearDisabled","nextYear","nextYearDisabled","previousDecade","previousDecadeDisabled","nextDecade","nextDecadeDisabled","dates","ranges","daysOfMonth","customPredictor","includeDisabled","isDefined","dayClasses","today","weekend","sat","sun","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","functional","beforeCreate","esModule","$createElement","click","readonly","locals","isValidDate","getDayNameAbbr","getNthSuffix","createDateArray","done","isExtensible","preventExtensions","KEY","NEED","fastKey","getWeak","onFreeze","getPrototypeOf","_k","Arguments","T","N","V","E","I","QObject","findChild","K","Q","te","for","keyFor","useSetter","useSimple","unescape","sourceRoot","media","sourceMap","DEBUG","ProductBlockSkeletonComponent","RefundCredits","creditReferences","modalOpened","useAccountStore","getUserIsBigboxPlus","backFromCheckout","isCashbackPurchase","isBigboxPlus","isBigboxPlusRefundable","handleCloseModal","HomeViewComponent","googleClientID","GoogleClientID","cart","CartQuery","featured_boxes","FeaturedBoxes","featuredBoxList","featureBox","user_credit","CreditReference","_this$$attrs","authUser","creditReference","baseHeaderProps","absolute","CategoryCard","ProductBlockSkeleton","HomeSlider","OptionCard","NewActivityBlock","NewBoxBlock","NewPackageBlock","CardHome","HomeCard","NewsLetterSubscription","BoxCard","metaInfo","canonicalUrl","newtitle","meta","vmid","link","hreflang","_useAccount","getUserLogged","loggedUser","auth_user","loadingUser","onUserStatus","onUserData","_mounted","homeCards","showReminderCard","mobileBussinessCardText","desktopBussinessCardText","categories","featuredActivities","onlyOnBigboxContent","_this$$attrs2","getCategories","getFeaturedActivities","onlyOnBigBoxService","getOnlyInBigBox","google","accounts","client_id","googleAuthCallback","renderButton","prompt","log","access_token","credential","post","fetchOnLogin","$store","setToolTipState","ga","hitType","eventCategory","eventAction","eventLabel","getCountryNameFromTld","subtitle","ctaLandingSlug","getCorpoUrl","isToolTipClosed","isInStandaloneMode","categoryName","card","boxCategory","initSignIn","home_carousel_title","home_carousel_image","redirectToFilters","showBBPlusBanner","bbPlusBanner","corpoUrl","toolTipState","closeToolTip","NativePromiseConstructor","getBuiltIn","isCallable","speciesConstructor","promiseResolve","defineBuiltIn","NativePromisePrototype","real","onFinally","unsafe","boxCatalogViewStore","_storeToRefs","storeToRefs","onPaginatedBoxes","_ref3","timeSlotId","schedule","provinceID","getFlags","DiscountLabelComponent","middle","showDiscountText","background","degrees","gradientStyle","settle","cookies","parseHeaders","isURLSameOrigin","parseProtocol","onCanceled","requestData","requestHeaders","auth","username","password","Authorization","onloadend","responseHeaders","getAllResponseHeaders","statusText","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","ignoreDuplicateOf","hookCallback","hooks","setHookCallback","hasOwnProp","isObjectEmpty","res","createUTC","strict","createLocalOrUTC","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","argLen","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","output","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","func","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","dd","ww","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","getSetYear","getIsLeapYear","createDate","createUTCDate","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","minl","normalizeLocale","chooseLocale","loadLocale","isLocaleNameSane","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","quarters","quarter","weeks","isoWeek","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","cloneWithOffset","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","period","tmp","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","keepOffset","toDate","inspect","datetime","suffix","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","limit","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","fns","kindOf","kindOfTest","TypedArray","pattern","ArrayBuffer","isView","pipe","assignValue","stripBOM","superConstructor","sourceObj","destObj","merged","HomeSliderComponent","homeCover","HomeCover","desktopMedia","home_cover","mobileMedia","mobile_images","imgShowing","swipePositionStart","imageInterval","slideTransitionDelay","screenWidth","nextImage","resetTimer","changedTouches","screenX","screenY","swipeXDiff","swipeYDiff","prevImage","_account$userData","userData","is_bigbox_plus","currentImage","redirectFromCover","hoverSliderItem","handleStart","handleEnd","button_text","isUserPlus","FinalStepComponent","startStep","normalizedName","createInstance","defaultConfig","Cancel","promises","spread"],"mappings":"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","file":"homeView.ec9a11fd21231af391d1.js","sourcesContent":["'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"CreditReference\"},\"variableDefinitions\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"user_credit\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reference\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":60}};\n doc.loc.source = {\"body\":\"query CreditReference {\\n user_credit {\\n reference\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"CreditReference\"] = oneQuery(doc, \"CreditReference\");\n \n","import dayjs from 'dayjs';\n\nconst compareDayAndMonthWithNow = cleave => {\n const dayAndMonthReminder = cleave.getFormattedValue();\n const dateThisYear = `${dayAndMonthReminder}/${dayjs().year()}`;\n const dateNextYear = `${dayAndMonthReminder}/${dayjs().year() + 1}`;\n const day = dayjs(dayjs(dayAndMonthReminder, 'DD/MM').format('YYYY/MM/DD'));\n const now = dayjs().hour(0).minute(0).second(0);\n return day.diff(now, 'day') >= 0 ? dateThisYear : dateNextYear;\n};\n\nexport default compareDayAndMonthWithNow;\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","module.exports = \"\"","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","const trimAndEllipsisText = (string, maxCharacters) => {\n if (!string) return null;\n if (string.length <= maxCharacters) return string;\n\n return string.slice(0, maxCharacters - 3) + '...';\n};\n\nexport default trimAndEllipsisText;\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BoxCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BoxCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BoxCard.vue?vue&type=template&id=32ae5962&\"\nimport script from \"./BoxCard.vue?vue&type=script&lang=js&\"\nexport * from \"./BoxCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BoxCard.vue?vue&type=style&index=0&id=32ae5962&prod&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 null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('router-link',{staticClass:\"box-card\",attrs:{\"to\":_vm.boxLink}},[(_vm.isOnSale)?_c('discount-label',{staticClass:\"--left --top-left-image\",attrs:{\"discount\":_vm.discount,\"campaignColor\":_vm.currentProduct.campaign_color}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"image\",style:(`background-image: url(${_vm.box.product_image_url})`)},[(_vm.displayTag)?_c('div',{staticClass:\"tag\"},[_c('div',{staticClass:\"tag__icon\",domProps:{\"innerHTML\":_vm._s(_vm.displayTag.icon)}}),_vm._v(\" \"),_c('span',{staticClass:\"typography-action-XSmall\"},[_vm._v(_vm._s(_vm.displayTag.message))])]):_vm._e(),_vm._v(\" \"),_c('HeartIt',{staticClass:\"hearth-icon\",attrs:{\"product\":_vm.box}})],1),_vm._v(\" \"),_c('div',{staticClass:\"title\"},[_c('span',{class:[\n 'title__name',\n 'typography-title-medium-2',\n _vm.rating > 0 ? '' : 'title__name--large',\n ]},[_vm._v(_vm._s(_vm.box.name))]),_vm._v(\" \"),(_vm.rating > 0)?_c('div',{staticClass:\"rating typography-body-XSmall\"},[_c('div',{staticClass:\"rating__icon\",domProps:{\"innerHTML\":_vm._s(_vm.icons.star)}}),_vm._v(\" \"),_c('span',{staticClass:\"typography-body-XSmall\"},[_vm._v(_vm._s(_vm.rating))])]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"description typography-body-small\"},[_vm._v(\"\\n \"+_vm._s(_vm.boxDescription)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"info\"},_vm._l((_vm.infoItems),function(item,index){return _c('div',{key:index,staticClass:\"info__item\"},[_c('div',{staticClass:\"icon\",domProps:{\"innerHTML\":_vm._s(item.icon)}}),_vm._v(\" \"),_c('span',{staticClass:\"message typography-body-XSmall\"},[_vm._v(_vm._s(item.message))])])}),0),_vm._v(\" \"),_c('div',{staticClass:\"price\"},[_c('span',{staticClass:\"typography-title-small-1\"},[_vm._v(_vm._s(_vm.price))]),_vm._v(\" \"),(_vm.isOnSale)?_c('span',{staticClass:\"price__without-discount typography-subtitle-small-4\"},[_vm._v(\"\\n \"+_vm._s(_vm.currency(_vm.originalPrice))+\"\\n \")]):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","module.exports = \"Fill 1Created with Sketch.\"","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"category-card\",on:{\"click\":function($event){return _vm.$emit('blockClicked')}}},[_c('figure',{staticClass:\"image-container full-height bb-text-center\"},[_c('img',{staticClass:\"--image full-height full-width bb-border-radius-4\",attrs:{\"src\":_vm.image}}),_vm._v(\" \"),_c('span',{staticClass:\"--title figtree-font bb-text-white\"},[_vm._v(_vm._s(_vm.title))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\n\n@Component({\n props: {\n image: {\n type: String,\n required: true,\n },\n title: {\n type: String,\n required: true,\n },\n },\n})\nexport default class CategoryCardComponent extends Vue {}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./CategoryCard.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./CategoryCard.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./CategoryCard.vue.html?vue&type=template&id=307f304f&\"\nimport script from \"./CategoryCard.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./CategoryCard.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./CategoryCard.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","module.exports = \"Created with Sketch.\"","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport AddEmailToAllNewsLetterMutation from 'assets/graphql/mutations/AddEmailToAllNewsLetter.graphql';\n\n@Component({\n props: {\n description: {\n required: true,\n type: String,\n },\n inputSize: {\n required: false,\n type: String,\n },\n disclaimer: {\n required: true,\n type: Boolean,\n },\n },\n})\nexport default class NewsLetterSubscriptionComponent extends Vue {\n email = null;\n loading = false;\n showSuccessMessage = false;\n showNetworkErrorMessage = false;\n\n subscribe() {\n this.loading = true;\n\n this.$apollo\n .mutate({\n mutation: AddEmailToAllNewsLetterMutation,\n variables: {\n AddEmailToAllNewsLetterMutationInput: { email: this.email },\n },\n })\n .then(({ data }) => {\n if (data.add_email_to_all_newsletter.errors.length <= 0) {\n this.showSuccessMessage = true;\n this.showNetworkErrorMessage = false;\n } else {\n this.showSuccessMessage = false;\n this.showNetworkErrorMessage = true;\n }\n })\n .catch(() => {\n this.showSuccessMessage = false;\n this.showNetworkErrorMessage = true;\n })\n .finally(() => {\n this.loading = false;\n });\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./NewsLetterSubscription.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./NewsLetterSubscription.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./NewsLetterSubscription.vue.html?vue&type=template&id=6726a2a4&scoped=true&\"\nimport script from \"./NewsLetterSubscription.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./NewsLetterSubscription.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./NewsLetterSubscription.scoped.scss?vue&type=style&index=0&id=6726a2a4&prod&lang=vueScss&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 \"6726a2a4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"NewsLetterSubscription\"},[_c('div',{staticClass:\"NewsLetterSubscriptionContainer\"},[_c('div',[_c('p',{staticClass:\"figtree-font bb-semi-bold bb-description-4 bb-mb-2 description\"},[_vm._v(\"\\n \"+_vm._s(_vm.description)+\"\\n \")]),_vm._v(\" \"),_c('div',[_c('form',{staticClass:\"bb-fcenter form\",class:_vm.inputSize,on:{\"submit\":_vm.subscribe}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.email),expression:\"email\"}],staticClass:\"bb-input input\",attrs:{\"type\":\"email\",\"placeholder\":\"Ingresa tu email\",\"required\":\"\"},domProps:{\"value\":(_vm.email)},on:{\"input\":function($event){if($event.target.composing)return;_vm.email=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"bb-button --primary bb-bold button\",class:{'--loading': _vm.loading}},[_vm._v(\"\\n Suscribirse\\n \")])])]),_vm._v(\" \"),(_vm.disclaimer)?_c('div',{staticClass:\"disclaimer bb-mt-3 bb-description-1\"},[_vm._v(\"\\n Recibirás e-mails promocionales aceptando nuestras políticas de\\n privacidad\\n \")]):_vm._e()])]),_vm._v(\" \"),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showSuccessMessage),expression:\"showSuccessMessage\"}],staticClass:\"bb-text-center bb-mt-2 bb-description-3\"},[_vm._v(\"\\n ¡Listo! Suscripción realizada\\n \")]),_vm._v(\" \"),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showNetworkErrorMessage),expression:\"showNetworkErrorMessage\"}],staticClass:\"bb-text-center bb-mt-2 bb-description-3\"},[_vm._v(\"\\n Houston, algo salió mal. Te sugiero volver a intentarlo\\n \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","module.exports = __webpack_public_path__ + \"cardRegalendario.d982daa3847f8897e4aef054541f659c.png\";","module.exports = \"\"","import Vue from 'vue';\nimport Component from 'vue-class-component';\n\nimport useBoxCatalogView from 'ecommerce/composables/useBoxCatalogView';\nimport { formatTime } from 'common/utils/formatDateTime';\n\n@Component({\n props: {\n availableHours: {\n type: Array,\n required: false,\n default: () => [],\n },\n activitySlug: {\n type: String,\n required: true,\n default: '',\n },\n },\n setup() {\n const {\n getFormattedDate,\n onSetSchedule,\n onActivityBySlug,\n onToggleModalReservation,\n } = useBoxCatalogView();\n\n return {\n getFormattedDate,\n onSetSchedule,\n onActivityBySlug,\n onToggleModalReservation,\n };\n },\n})\nexport default class ActivityCardHoursComponent extends Vue {\n selectedHour = null;\n\n showLeftArrow = true;\n showRightArrow = true;\n buttonsContainer = null;\n buttonWidth = null;\n\n mounted() {\n this.buttonsContainer = this.$refs.buttonsContainer;\n this.buttonWidth = this.$refs.button[0].offsetWidth;\n\n const intersectionOptions = {\n root: null,\n rootMargin: '0px',\n threshold: 1,\n };\n\n const handleIntersection = (activate, deactivate) => {\n return async ev => (ev[0].isIntersecting ? deactivate() : activate());\n };\n\n this.startObserver = new IntersectionObserver(\n handleIntersection(\n () => {\n this.showLeftArrow = true;\n },\n () => {\n this.showLeftArrow = false;\n },\n ),\n intersectionOptions,\n );\n\n this.startObserver.observe(this.$refs.button[0]);\n\n this.endObserver = new IntersectionObserver(\n handleIntersection(\n () => {\n this.showRightArrow = true;\n },\n () => {\n this.showRightArrow = false;\n },\n ),\n intersectionOptions,\n );\n\n this.endObserver.observe(this.$refs.button[this.$refs.button.length - 1]);\n }\n\n scrollLeft() {\n this.buttonsContainer.scrollLeft -= this.buttonWidth + 16;\n }\n\n scrollRight() {\n this.buttonsContainer.scrollLeft += this.buttonWidth + 16;\n }\n\n formatTime(time, endTime) {\n return formatTime(time, endTime);\n }\n\n async selectHour(hour) {\n this.onSetSchedule(hour);\n this.selectedHour = hour;\n await this.onActivityBySlug(this.activitySlug);\n this.onToggleModalReservation();\n }\n}\n","// TODO: Utilizar moment para formatear horas, reemplazar dayjs por moment ya que no funciona correctamente.\n\nimport moment from 'moment';\n\n/**\n *\n * @param {String}\n * @returns {String}\n */\nexport function formatTime(time, endTime, format = 'HH:mm:ss') {\n if (!time) return '';\n const formattedTime = moment(time, format).format('hh:mm A');\n if (endTime) {\n const formattedEndTime = moment(endTime, format).format('hh:mm A');\n return `${formattedTime} - ${formattedEndTime}`;\n }\n return formattedTime;\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./ActivityCardHours.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./ActivityCardHours.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./ActivityCardHours.vue.html?vue&type=template&id=2a521f4e&scoped=true&\"\nimport script from \"./ActivityCardHours.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./ActivityCardHours.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./ActivityCardHours.scss?vue&type=style&index=0&id=2a521f4e&prod&lang=vueScss&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 \"2a521f4e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"wrapper\"},[(_vm.showLeftArrow)?_c('div',{staticClass:\"arrow --left\",domProps:{\"innerHTML\":_vm._s(require('common/icons/Chevron.svg'))},on:{\"click\":function($event){$event.stopPropagation();return _vm.scrollLeft()}}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"fade-container\"},[(_vm.showLeftArrow)?_c('div',{staticClass:\"left-fade\"}):_vm._e(),_vm._v(\" \"),(_vm.showRightArrow)?_c('div',{staticClass:\"right-fade\"}):_vm._e()]),_vm._v(\" \"),_c('div',{ref:\"buttonsContainer\",staticClass:\"bb-row slider\"},_vm._l((_vm.availableHours),function(time,index){return _c('button',{key:index,ref:\"button\",refInFor:true,staticClass:\"button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.selectHour(time.time)}}},[_vm._v(\"\\n \"+_vm._s(_vm.formatTime(time.time, time.end_time))+\"\\n \")])}),0),_vm._v(\" \"),(_vm.showRightArrow)?_c('div',{staticClass:\"arrow --right\",domProps:{\"innerHTML\":_vm._s(require('common/icons/Chevron.svg'))},on:{\"click\":function($event){$event.stopPropagation();return _vm.scrollRight()}}}):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\n\nimport HeartIt from 'common/components/HeartIt';\nimport Rating from 'common/components/Rating';\nimport OneGuestIcon from 'common/icons/1Parcitipante.svg';\nimport TwoGuestsIcon from 'common/icons/2Participantes.svg';\nimport PlusGuestsIcon from 'common/icons/MasParticipantes.svg';\nimport getParticipantsIcon from 'common/services/utils/getParticipantsIcon';\nimport ActivityCardHours from 'ecommerce/components/ActivityCardHours/ActivityCardHours.vue';\nimport { useBoxCatalogViewStore } from 'ecommerce/stores/boxCatalogView.store.js';\n\n@Component({\n components: {\n HeartIt,\n DiscountLabel: () => import('common/components/DiscountLabel'),\n Rating,\n ActivityCardHours,\n },\n props: {\n product: {\n type: Object,\n required: true,\n description: 'This could be a box, activity or package object',\n },\n availableHours: {\n type: Array,\n required: false,\n default: () => [],\n },\n coverPaddingBottom: {\n type: String,\n required: true,\n description:\n 'Percentage that controls the height of the cover. E.g.: \"62\" ',\n },\n productTitle: {\n type: String,\n required: true,\n },\n description: {\n type: String,\n required: true,\n },\n discount: {\n type: [String, Number],\n description: 'Required for the discount label to be displayed',\n },\n campaignColor: {\n type: String,\n required: false,\n },\n showHeart: {\n type: Boolean,\n default: true,\n },\n boxColour: {\n type: String,\n required: false,\n },\n bigBlock: {\n type: Boolean,\n default: false,\n description:\n 'Change styles of the Block. True if 3 blocks will be displayed in a row',\n },\n },\n setup() {\n const catalogViewStore = useBoxCatalogViewStore();\n\n return {\n catalogViewStore,\n };\n },\n})\nexport default class ProductBlockComponent extends Vue {\n OneGuestIcon = OneGuestIcon;\n TwoGuestsIcon = TwoGuestsIcon;\n PlusGuestsIcon = PlusGuestsIcon;\n isRaffle = false;\n amount = null;\n isActivityType = null;\n\n mounted() {\n this.isRaffle = false;\n this.amount = 0;\n this.isActivityType = this.product.__typename === 'ActivityType';\n /* sorteo, cupos limitados, hasta agotar stock, agotado */\n }\n\n beforeCreate() {\n document.addEventListener('lazybeforeunveil', e => {\n const bg = e.target.getAttribute('data-bg');\n if (bg) {\n e.target.style.backgroundImage = `url(${bg})`;\n }\n });\n }\n\n get participantsIcon() {\n const amount = getParticipantsIcon(this.product.participants);\n\n if (amount === '1Parcitipante') {\n return this.OneGuestIcon;\n }\n if (amount === '2Participantes') {\n return this.TwoGuestsIcon;\n }\n if (amount === 'MasParticipantes') {\n return this.PlusGuestsIcon;\n }\n return this.OneGuestIcon;\n }\n\n get hasPriceSlot() {\n return !!this.$slots.price;\n }\n\n get isActivityClosed() {\n return (\n ['PartnerActivityType', 'ActivityType'].includes(\n this.product.__typename,\n ) && this.product.activity_type === 'closed'\n );\n }\n\n get showAvailableHoursSlider() {\n return (\n this.availableHours.length > 0 &&\n this.catalogViewStore.flags.alreadySearchedByDate\n );\n }\n\n get image() {\n switch (this.bigBlock) {\n case true:\n if (this.$screen.width < 768) {\n return `https://media.bigbox.com.ar/1/fill/0/300/ce/1/${btoa(\n this.product.product_image_url,\n )}`;\n }\n return `https://media.bigbox.com.ar/1/fill/600/0/ce/1/${btoa(\n this.product.product_image_url,\n )}`;\n default:\n if (this.$screen.width < 768) {\n return `https://media.bigbox.com.ar/1/fit/180/0/ce/1/${btoa(\n this.product.product_image_url,\n )}`;\n }\n return `https://media.bigbox.com.ar/1/fit/283/0/ce/1/${btoa(\n this.product.product_image_url,\n )}`;\n }\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./ProductBlock.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./ProductBlock.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./ProductBlock.vue.html?vue&type=template&id=8670d914&scoped=true&\"\nimport script from \"./ProductBlock.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./ProductBlock.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./ProductBlock.scoped.scss?vue&type=style&index=0&id=8670d914&prod&lang=vueScss&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 \"8670d914\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"ProductBlock\"},[_c('div',{staticClass:\"heartWrapper\"},[(_vm.showHeart)?_c('heart-it',{staticClass:\"heartComponent\",attrs:{\"emptyHeartColor\":\"--primary\",\"withBackground\":\"\",\"product\":_vm.product}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"productContent bb-fcenter-column relative\",on:{\"click\":function($event){return _vm.$emit('blockClicked')}}},[_c('div',{staticClass:\"productCover full-width relative\"},[(_vm.discount && _vm.campaignColor)?_c('discount-label',{staticStyle:{\"z-index\":\"2\"},attrs:{\"left\":\"\",\"bottom\":\"\",\"discount\":_vm.discount,\"campaignColor\":_vm.campaignColor}}):_vm._e(),_vm._v(\" \"),(_vm.isActivityClosed)?_c('div',{staticClass:\"tag bb-bold\"},[_vm._v(\"\\n Reapertura pendiente\\n \")]):_vm._e(),_vm._v(\" \"),(['61', '63'].includes(_vm.product.category_id))?_c('div',{staticClass:\"tag bb-bold\"},[(_vm.product.special_catalog === 'lottery')?_c('div',[_vm._v(\"Sorteo\")]):_vm._e(),_vm._v(\" \"),(_vm.product.special_catalog === 'limitedquota')?_c('div',[_vm._v(\"\\n Cupos limitados\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.product.special_catalog === 'whilesupplieslast')?_c('div',[(_vm.product.id==='203068' || _vm.product.id==='202780' || _vm.product.id==='202904')?_c('div',[_vm._v(\"\\n Agotado\\n \")]):_c('div',[_vm._v(\"Hasta agotar stock\")])]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"productPicture lazy-load\",class:{'--blur' : _vm.isActivityClosed || (_vm.product.id === '202780' || _vm.product.id==='203068' || _vm.product.id==='202904')},style:({paddingBottom: `${_vm.coverPaddingBottom}%`}),attrs:{\"data-bg\":_vm.image}},[_vm._t(\"productLayer\"),_vm._v(\" \"),_vm._t(\"productLabel\")],2)],1),_vm._v(\" \"),_c('div',{staticClass:\"productInformation relative bb-fcenter full-width\"},[_c('div',{staticClass:\"productInfoContainer bb-column bb-justify-content-between bb-p-3 bb-pt-6 absolute\",class:{'__activity-block': _vm.isActivityType}},[(_vm.productTitle)?_c('div',{staticClass:\"bb-row bb-mb-3\"},[_c('div',{staticClass:\"ratingLocationRow bb-row-to-column bb-align-items-center\"},[(_vm.product.rating > 0)?_c('rating',{attrs:{\"value\":_vm.product.rating,\"starSize\":\"--extra-tiny\",\"isCard\":true}}):_vm._e()],1),_vm._v(\" \"),(_vm.participantsIcon)?_c('div',{staticClass:\"participants\"},[_c('span',{class:['icon', `${_vm.participantsIcon}-icon`],domProps:{\"innerHTML\":_vm._s(_vm.participantsIcon)}})]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"productName bb-one-line figtree-font bb-semi-bold bb-mb-3 bb-description-5\"},[_vm._v(\"\\n \"+_vm._s(_vm.product.name)+\"\\n \")]),_vm._v(\" \"),_vm._t(\"location\"),_vm._v(\" \"),_vm._t(\"middleSlot\"),_vm._v(\" \"),_c('div',{staticClass:\"productDescription bb-two-lines bb-description-2 bb-text-darkgray bb-regular\"},[_vm._v(\"\\n \"+_vm._s(_vm.description)+\"\\n \")]),_vm._v(\" \"),_vm._t(\"price\"),_vm._v(\" \"),(_vm.showAvailableHoursSlider)?_c('div',{staticClass:\"slider-wrapper bb-mt-4\"},[_c('activity-card-hours',{attrs:{\"availableHours\":_vm.availableHours,\"activitySlug\":_vm.product.slug}})],1):_vm._e()],2)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","function getParticipantsIcon(participants) {\n if (!participants) {\n return null;\n }\n\n if (Array.isArray(participants)) {\n participants = participants[participants.length - 1];\n }\n const amount = Math.max.apply(null, participants.toString().match(/\\d+/g));\n\n if (amount === 1) {\n return '1Parcitipante';\n } else if (amount === 2) {\n return '2Participantes';\n } else if (amount > 2) {\n return 'MasParticipantes';\n }\n return '1Parcitipante';\n}\n\nexport default getParticipantsIcon;\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"createWishlistItem\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"toWho\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"productId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"updateWishItem\"},\"name\":{\"kind\":\"Name\",\"value\":\"create_wishlist_item\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"to_who\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"toWho\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"product_id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"productId\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"item\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"to_who\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":225}};\n doc.loc.source = {\"body\":\"mutation createWishlistItem($toWho: String!, $productId: ID!) {\\n updateWishItem: create_wishlist_item(to_who: $toWho, product_id: $productId) {\\n ok\\n errors\\n item {\\n id\\n product_id\\n to_who\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"createWishlistItem\"] = oneQuery(doc, \"createWishlistItem\");\n \n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"FeaturedBoxes\"},\"variableDefinitions\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featured_boxes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"box\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"price\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_image_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"color\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"image_cover\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rating\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog_description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_new\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_physical\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"digital_version\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_featured\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ocassion_tag\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_new_header\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featured_order\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"new_header_order\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"discount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"campaign_color\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"original_price\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"price_in_usd\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"use_price_in_usd\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_remote\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"installments\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reviews_qty\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"participants\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"activity_qty\"},\"name\":{\"kind\":\"Name\",\"value\":\"count_activities_available_and_visible\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":690}};\n doc.loc.source = {\"body\":\"query FeaturedBoxes {\\n featured_boxes {\\n box {\\n id\\n name\\n price\\n product_image_url\\n category {\\n id\\n color\\n image_cover\\n name\\n }\\n category_id\\n slug\\n rating\\n description\\n catalog_description\\n product_url\\n is_new\\n is_physical\\n digital_version\\n is_featured\\n ocassion_tag\\n is_new_header\\n featured_order\\n new_header_order\\n discount\\n campaign_color\\n original_price\\n price_in_usd\\n use_price_in_usd\\n is_remote\\n installments\\n reviews_qty\\n participants\\n activity_qty: count_activities_available_and_visible\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"FeaturedBoxes\"] = oneQuery(doc, \"FeaturedBoxes\");\n \n","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport { Watch } from 'vue-property-decorator';\n\nimport tippy from 'tippy.js';\n// import Tooltip from 'common/deps/uiv/Tooltip';\n\nlet timeout = null;\n\nconst ERROR_MESSAGES = {\n typeMismatch(el) {\n if (el.type === 'email') return 'Ingrese una dirección de correo electrónico válida';\n if (el.type === 'url') return 'Ingrese una dirección de correo electrónico válida';\n return 'Ingrese un formato válido';\n },\n badInput(el) {\n if (el.type === 'number') return 'Ingrese un número válido';\n return 'Ingrese un formato válido';\n },\n tooShort: el => `Debe contener al menos ${el.getAttribute('minlength')} caracteres`,\n tooLong: el => `Debe contener como máximo ${el.getAttribute('minlength')} caracteres`,\n rangeUnderflow: el => `Debe ser mayor o igual a ${el.getAttribute('min')}`,\n rangeOverflow: el => `Debe ser menor o igual a ${el.getAttribute('max')}`,\n stepMismatch(el) {\n if (!el.step) return 'Ingrese un número entero';\n return `Ingrese un número múltiplo de ${el.step}`;\n },\n patternMismatch: () => 'Ingrese un formato válido',\n valueMissing: () => 'Este campo es obligatorio',\n};\n\nconst DEFAULT_ERROR_MESSAGE = 'Este campo es inválido';\n\nconst FIELD_ERROR_CLASS = '--danger';\n\n@Component({\n props: {\n aliases: {\n type: Array,\n default: () => [],\n },\n tag: {\n type: String,\n default: 'input',\n description: 'set the element type of the input to be rendered, see computed property elementType',\n },\n tooltipPlacement: {\n type: String,\n default: 'bottom',\n },\n errorMessages: {\n type: Object,\n default: undefined,\n },\n value: {\n required: true,\n },\n },\n})\nexport default class BbFieldComponent extends Vue {\n validityError = '';\n validityElement = null;\n isFocused = false;\n isValid = false;\n wasFormSubmitted = false;\n wasFocused = false;\n hasHover = false;\n customError = '';\n errorClass = FIELD_ERROR_CLASS;\n _tippy = null;\n\n constructor() {\n super();\n this.validate = this.validate.bind(this);\n }\n\n get elementType() {\n const { tag } = this.$props;\n const { type } = this.$attrs;\n if (tag === 'select') return 'select';\n if (tag === 'input' && type === 'checkbox') return 'checkbox';\n if (tag === 'input' && type === 'radio') return 'radio';\n if (tag === 'input') return 'input';\n if (tag === 'textarea') return 'textarea';\n return 'unknown';\n }\n\n get inputModel() {\n return this.value;\n }\n\n set inputModel(value) {\n this.$emit('input', value);\n }\n\n get errorMessage() {\n if (this.isValid) return '';\n if (this.customError) return this.customError;\n return this.getValidityErrorMessage(this.validityElement, this.validityError);\n }\n\n get tooltipMessage() {\n if (this.isErrorDisplayed) {\n return this.errorMessage;\n }\n return '';\n }\n\n get isErrorDisplayed() {\n return (this.wasFocused || this.wasFormSubmitted) && !this.isValid;\n }\n\n get showTooltip() {\n return (this.isFocused || this.hasHover) && this.isErrorDisplayed;\n }\n\n set showTooltip(value) {\n // noop\n }\n\n get errorMessagesMap() {\n return Object.assign({}, ERROR_MESSAGES, this.errorMessages);\n }\n\n @Watch('tooltipMessage')\n tooltipMessageChanged() {\n if (this.tooltipMessage && this._tippy) {\n const content = this._tippy.popper.querySelector('.tippy-content');\n content.textContent = this.tooltipMessage;\n }\n }\n\n @Watch('isErrorDisplayed')\n errorDisplayedChanged() {\n const method = this.isErrorDisplayed ? 'add' : 'remove';\n this.$el.classList[method](this.errorClass);\n if (this.isErrorDisplayed && !this._tippy) {\n this.$el.title = this.tooltipMessage;\n this._tippy = tippy.one(this.$el, {\n arrow: true,\n hideOnClick: 'persistent',\n placement: this.tooltipPlacement,\n theme: 'BbFieldTooltip',\n trigger: '',\n });\n } else {\n this._tippy.destroy();\n this._tippy = null;\n this.$el.title = '';\n }\n }\n\n @Watch('value')\n valueChanged() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n this.validate();\n }, 1000);\n }\n\n @Watch('showTooltip')\n showTooltipChanged() {\n if (this.showTooltip) {\n this._tippy.show();\n } else if (this._tippy) {\n this._tippy.hide();\n }\n }\n\n mounted() {\n this.$el.bbFieldCtrl = this;\n this.listenFieldsFocus();\n this.listenMouseOver();\n this.validate();\n }\n\n getFields() {\n if (/^(INPUT|SELECT|TEXTAREA)$/.test(this.$el.tagName)) {\n return [this.$el];\n }\n return Array.from(this.$el.querySelectorAll('input,select,textarea'));\n }\n\n getFieldsGroupedByName() {\n const names = new Set();\n return this.getFields().filter((field) => {\n const { name } = field;\n if (!names.has(name)) {\n names.add(name);\n return true;\n }\n return false;\n });\n }\n\n getValidityErrorMessage(field, validityError) {\n const errorMsgFn = this.errorMessagesMap[validityError];\n if (!errorMsgFn) return DEFAULT_ERROR_MESSAGE;\n return errorMsgFn(field);\n }\n\n listenFieldsFocus() {\n const fields = this.getFields();\n fields.forEach((field) => {\n if (field.bbFieldFocus) return;\n field.bbFieldFocus = true;\n field.addEventListener('focus', () => {\n this.isFocused = true;\n });\n field.addEventListener('blur', () => {\n this.isFocused = false;\n if (!field.validity.valueMissing) {\n this.wasFocused = true;\n }\n });\n });\n }\n\n listenMouseOver() {\n this.$el.addEventListener('mouseover', () => {\n this.hasHover = true;\n });\n this.$el.addEventListener('mouseleave', () => {\n this.hasHover = false;\n });\n }\n\n validate() {\n this.resetErrors();\n this.getFieldsGroupedByName().forEach((field) => {\n field.setCustomValidity('');\n const isValid = field.checkValidity();\n if (!isValid) {\n this.isValid = false;\n const { validity } = field;\n // validity is not enumerable, so get validity keys from ERROR_MESSAGES\n const validityError = Object.keys(ERROR_MESSAGES).find(key => validity[key]) || 'unknown';\n if (!this.validityError) {\n this.validityError = validityError;\n this.validityElement = field;\n }\n field.setCustomValidity(this.getValidityErrorMessage(field, validityError));\n }\n }, {});\n }\n\n formSubmitted() {\n this.wasFormSubmitted = true;\n this.validate();\n }\n\n setFormErrors(errors) {\n this.resetErrors();\n if (!errors) return;\n const errorFields = this.getFieldsGroupedByName().filter(f => f.name in errors);\n if (errorFields.length > 0) {\n this.isValid = false;\n const firstField = errorFields[0];\n [this.customError] = errors[firstField.name];\n this.validityElement = firstField;\n errorFields.forEach((field) => {\n field.setCustomValidity(errors[field.name][0]);\n });\n }\n }\n\n focus() {\n const element = this.validityElement || this.getFieldsGroupedByName()[0] || this.$el;\n element.focus();\n }\n\n resetErrors() {\n this.isValid = true;\n this.validityError = '';\n this.validityElement = null;\n this.customError = '';\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./BbField.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./BbField.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./BbField.vue.html?vue&type=template&id=3a571885&\"\nimport script from \"./BbField.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./BbField.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./BbField.global.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return (((_vm.$attrs).type)==='checkbox'&&(_vm.elementType === 'input'))?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputModel),expression:\"inputModel\"}],staticClass:\"BbField\",attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.inputModel)?_vm._i(_vm.inputModel,null)>-1:(_vm.inputModel)},on:{\"change\":function($event){var $$a=_vm.inputModel,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.inputModel=$$a.concat([$$v]))}else{$$i>-1&&(_vm.inputModel=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.inputModel=$$c}}}},'input',_vm.$attrs,false)):(((_vm.$attrs).type)==='radio'&&(_vm.elementType === 'input'))?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputModel),expression:\"inputModel\"}],staticClass:\"BbField\",attrs:{\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.inputModel,null)},on:{\"change\":function($event){_vm.inputModel=null}}},'input',_vm.$attrs,false)):(_vm.elementType === 'input')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputModel),expression:\"inputModel\"}],staticClass:\"BbField\",attrs:{\"type\":(_vm.$attrs).type},domProps:{\"value\":(_vm.inputModel)},on:{\"input\":function($event){if($event.target.composing)return;_vm.inputModel=$event.target.value}}},'input',_vm.$attrs,false)):(_vm.elementType === 'checkbox')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputModel),expression:\"inputModel\"}],staticClass:\"BbField\",attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.inputModel)?_vm._i(_vm.inputModel,null)>-1:(_vm.inputModel)},on:{\"change\":function($event){var $$a=_vm.inputModel,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.inputModel=$$a.concat([$$v]))}else{$$i>-1&&(_vm.inputModel=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.inputModel=$$c}}}},'input',_vm.$attrs,false)):(_vm.elementType === 'radio')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputModel),expression:\"inputModel\"}],staticClass:\"BbField\",attrs:{\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.inputModel,null)},on:{\"change\":function($event){_vm.inputModel=null}}},'input',_vm.$attrs,false)):(_vm.elementType === 'select')?_c('select',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputModel),expression:\"inputModel\"}],staticClass:\"BbField\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.inputModel=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},'select',_vm.$attrs,false),[_vm._t(\"default\")],2):(_vm.elementType === 'textarea')?_c('textarea',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputModel),expression:\"inputModel\"}],staticClass:\"BbField\",domProps:{\"value\":(_vm.inputModel)},on:{\"input\":function($event){if($event.target.composing)return;_vm.inputModel=$event.target.value}}},'textarea',_vm.$attrs,false),[_vm._v(\" \\n\")]):_c(_vm.tag,_vm._b({tag:\"component\",staticClass:\"BbField\",model:{value:(_vm.inputModel),callback:function ($$v) {_vm.inputModel=$$v},expression:\"inputModel\"}},'component',_vm.$attrs,false),[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(!_vm.remindersComplete)?_c('div',{staticClass:\"card-home bb-p-6 bb-sm-max-p-3 bb-row\"},[_c('div',{staticClass:\"bb-column text-column\"},[_c('div',[_c('h2',{staticClass:\"card-title figtree-font bb-semi-bold bb-mb-1\"},[_vm._v(\"\\n \"+_vm._s(_vm.title)+\"\\n \")])]),_vm._v(\" \"),_c('span',{staticClass:\"card-description bb-sm-max-pr-3 bb-description-3 bb-text-darkgray\"},[_vm._v(_vm._s(_vm.description))]),_vm._v(\" \"),[_c('button',{staticClass:\"button bb-button --primary --home --withBorder bb-bold bb-py-1 bb-px-5 bb-sm-max-p-0\",on:{\"click\":function($event){return _vm.handleRemindersModalView()}}},[_vm._v(\"\\n \"+_vm._s(_vm.cta)+\"\\n \")])]],2),_vm._v(\" \"),_vm._m(0)]):_vm._e(),_vm._v(\" \"),(_vm.showReminderOnboarding)?_c('onboarding-regalendario',{on:{\"advance\":_vm.handleRemindersModalView,\"close\":function($event){return _vm.toggleOnboarding(false)}}}):_vm._e(),_vm._v(\" \"),(_vm.remindersModalView)?_c('reminders',{attrs:{\"viewStep\":_vm.viewStep},on:{\"nextStep\":_vm.nextStep,\"close\":function($event){return _vm.handleSaveOrContinueModal('show')},\"handleRemindersModalView\":_vm.handleRemindersModalView}}):_vm._e(),_vm._v(\" \"),(_vm.saveOrContinueModal && !_vm.remindersComplete)?_c('reminders-quit-modal',{attrs:{\"step\":_vm.reminders.length},on:{\"save\":function($event){return _vm.handleSaveOrContinueModal('save')},\"close\":function($event){return _vm.handleSaveOrContinueModal('close')}}}):_vm._e()],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"bb-column image-column\"},[_c('img',{staticClass:\"image\",attrs:{\"src\":require(\"../../../assets/images/cardRegalendario.png\")}})])\n}]\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport BbModal from 'common/components/BbModal/BbModal.vue';\nimport ReminderLogo from 'assets/icons/reminder_logo.svg';\nimport OnboardingRegalendarioImg1 from 'assets/images/OnboardingRegalendarioImg1.svg';\nimport OnboardingRegalendarioImg2 from 'assets/images/OnboardingRegalendarioImg2.svg';\n\nimport useAccount from 'composables/useAccount';\n\n@Component({\n components: {\n BbModal,\n },\n setup() {\n const { getUserData } = useAccount();\n return {\n user: getUserData,\n };\n },\n})\nexport default class OnboardingRegalendarioModalComponent extends Vue {\n assets = {\n logo: ReminderLogo,\n img1: OnboardingRegalendarioImg1,\n img2: OnboardingRegalendarioImg2,\n };\n hasCreatedThreeReminders = this.user.has_created_three_reminders;\n\n redirectToProducts() {\n this.$router.push({ name: 'products' });\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./OnboardingRegalendarioModal.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./OnboardingRegalendarioModal.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./OnboardingRegalendarioModal.vue.html?vue&type=template&id=9a053be0&\"\nimport script from \"./OnboardingRegalendarioModal.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./OnboardingRegalendarioModal.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./OnboardingRegalendarioModal.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('bb-modal',{staticClass:\"onboarding-regalendario-modal\",attrs:{\"limitWrapper\":\"45px\",\"blockScroll\":\"\",\"smallPadding\":\"\",\"maxWidth\":\"540px\"},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('div',{staticClass:\"container bb-column\"},[_c('div',{staticClass:\"head bb-column bb-align-items-center bb-mb-6\"},[_c('p',{staticClass:\"--logo\",domProps:{\"innerHTML\":_vm._s(_vm.assets.logo)}}),_vm._v(\" \"),_c('h2',{staticClass:\"--title figtree-font bb-mb-2\"},[_vm._v(\"Regalendario\")]),_vm._v(\" \"),_c('h2',{staticClass:\"--text figtree-font\"},[_vm._v(\"\\n ¡\"+_vm._s(_vm.$translate('Ganá'))+\" 10% de descuento agregando tus\\n primeros 3 recordatorios!\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"item bb-row bb-align-items-center bb-mb-6\"},[_c('span',{staticClass:\"--img bb-mr-5\",domProps:{\"innerHTML\":_vm._s(_vm.assets.img1)}}),_vm._v(\" \"),_c('p',{staticClass:\"figtree-font bb-description-4\"},[_vm._v(\"\\n \"+_vm._s(_vm.$translate('Llevá'))+\" un registro de tus ocasiones\\n importantes y \"+_vm._s(_vm.$translate('recibí'))+\" notificaciones.\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"item bb-row bb-align-items-center bb-mb-8\"},[_c('span',{staticClass:\"--img bb-mr-5\",domProps:{\"innerHTML\":_vm._s(_vm.assets.img2)}}),_vm._v(\" \"),_c('p',{staticClass:\"figtree-font bb-description-4\"},[_vm._v(\"\\n Si \"+_vm._s(_vm.$translate('querés'))+\", \"+_vm._s(_vm.$translate('podés'))+\"\\n enviarles un mensaje para que te ayuden con su regalo ideal.\\n \")])]),_vm._v(\" \"),(_vm.hasCreatedThreeReminders)?_c('button',{staticClass:\"bb-button --primary --large bb-bold full-width\",on:{\"click\":_vm.redirectToProducts}},[_vm._v(\"\\n Usar Ahora\\n \")]):_c('button',{staticClass:\"bb-button --primary --large bb-bold full-width\",on:{\"click\":function($event){return _vm.$emit('advance')}}},[_vm._v(\"\\n Comenzar\\n \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport BbModal from 'common/components/BbModal/BbModal.vue';\n\n@Component({\n props: {\n step: {\n required: true,\n type: Number,\n },\n },\n components: {\n BbModal,\n },\n})\nexport default class RemindersQuitModalComponent extends Vue {\n stepsLeftStrings = ['tres pasos', 'dos pasos', 'un paso'];\n\n get stepsLeft() {\n return this.stepsLeftStrings[this.step];\n }\n\n close() {\n this.$root.$emit('RegalendarioPopover',this.step);\n this.$emit('save')\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./RemindersQuitModal.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./RemindersQuitModal.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./RemindersQuitModal.vue.html?vue&type=template&id=108baf28&\"\nimport script from \"./RemindersQuitModal.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./RemindersQuitModal.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./RemindersQuitModal.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('bb-modal',{staticClass:\"reminders-quit-modal\",attrs:{\"smallPadding\":\"\",\"maxWidth\":\"360px\",\"blockScroll\":\"\"},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('div',{staticClass:\"bb-column bb-align-items-center bb-text-center\"},[_c('span',{staticClass:\"--title figtree-font bb-description-4 bb-mb-2\"},[_vm._v(\"\\n ¿Seguro que \"+_vm._s(_vm.$translate('querés'))+\" salir? \"),_c('br'),_vm._v(\"\\n ¡Estás a \"+_vm._s(_vm.stepsLeft)+\"!\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"--description figtree-font bb-description-2 bb-text-center bb-mb-6\"},[_vm._v(\"\\n \"+_vm._s(_vm.$translate('Podés'))+\" continuar guardando tus recordatorios luego\\n en la vista de tu\\n \"),_c('b',{staticClass:\"bb-text-primary\"},[_vm._v(\"Regalendario\")]),_vm._v(\" para ganar tu 10% de\\n descuento.\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"--buttons bb-justify-content-between bb-row full-width\"},[_c('button',{staticClass:\"bb-button bb-bold --white --withBorder bb-text-primary\",on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\"\\n No\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"bb-button bb-bold __orange --orangeNew\",on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"\\n Si\\n \")])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport Lottie from 'vue-lottie';\n\nimport dayjs from 'dayjs';\n\nimport BbModal from 'common/components/BbModal';\nimport Step from 'components/Reminders/Step/Step.vue';\nimport FinalStep from 'components/Reminders/FinalStep/FinalStep.vue';\n\nimport AddReminderMutation from 'assets/graphql/mutations/reminder/AddReminderMutation.graphql';\nimport EstadoSuccess from 'assets/icons/estado_success_icon.svg';\nimport FirstStep from 'assets/icons/first_step_reminder.svg';\nimport SecondStep from 'assets/icons/second_step_reminder.svg';\nimport ThirdStep from 'assets/icons/third_step_reminder.svg';\nimport * as check from 'assets/lotties/check_01.json';\n\n@Component({\n components: {\n BbModal,\n Step,\n FinalStep,\n Lottie,\n },\n props: {\n viewStep: {\n type: String,\n },\n },\n})\nexport default class RemindersComponent extends Vue {\n isLoading = false;\n error = false;\n showReminderPopover = false;\n stepInComming = this.viewStep;\n\n icons = {\n statusOk: EstadoSuccess,\n firstStep: FirstStep,\n secondStep: SecondStep,\n thirdStep: ThirdStep,\n };\n\n lotties = {\n animationData: check.default,\n };\n\n popoverText = {\n first: 'Primer recordatorio guardado.',\n second: 'Segundo recordatorio guardado.',\n third: 'Tercer recordatorio guardado.',\n };\n\n commonSteps = {\n name: {\n label: 'Nombre',\n value: '',\n },\n occasion: {\n label: 'Ocasión',\n value: '',\n },\n date: {\n label: 'Fecha especial',\n value: '',\n },\n button: 'Guardar',\n };\n first = {\n title: 'Primer recordatorio',\n ...this.copyObjectWithoutReference(this.commonSteps),\n nextStep: () => this.toogleRemindersModalWithAddReminder('second'),\n };\n second = {\n title: 'Segundo recordatorio',\n ...this.copyObjectWithoutReference(this.commonSteps),\n nextStep: () => this.toogleRemindersModalWithAddReminder('third'),\n };\n third = {\n title: 'Tercer recordatorio',\n ...this.copyObjectWithoutReference(this.commonSteps),\n nextStep: () => this.toogleRemindersModalWithAddReminder('final'),\n };\n\n final = {\n title: `¡Genial! Ya ${this.$translate(\n 'tenés',\n )} tus 3 recordatorios guardados`,\n content: `${this.$translate(\n 'Podés',\n )} usar tu 10% de descuento aplicado en tu carrito.`,\n description: `¿${this.$translate(\n 'Sabés',\n )} qué les gustaría que les regalen?`,\n button: `¡${this.$translate('Preguntales')} ahora!`,\n buttonSecondary: `${this.$translate('Preguntales')} más tarde`,\n closeModal: () => this.handleRemindersModalView(),\n goToAskPreference: () => this.$router.push({ name: 'regalendario' }),\n };\n\n remindersSteps = {\n first: this.first,\n second: this.second,\n third: this.third,\n final: this.final,\n };\n\n copyObjectWithoutReference(obj) {\n return JSON.parse(JSON.stringify(obj));\n }\n\n handleRemindersModalView() {\n this.$emit('handleRemindersModalView');\n }\n\n async toogleRemindersModalWithAddReminder(step) {\n this.isLoading = true;\n this.miliseconds = 2000;\n\n const { occasion, date, name } = this.remindersSteps[this.viewStep];\n\n const mutateConfig = {\n mutation: AddReminderMutation,\n variables: {\n input: {\n name: name.value,\n occasion: occasion.value,\n date: dayjs(date.value, 'DD/MM/YYYY').format('YYYY-MM-DD'),\n },\n },\n };\n const {\n data: { add_reminder },\n } = await this.$apollo.mutate(mutateConfig);\n\n if (add_reminder.ok) {\n this.showReminderPopover = true;\n this.stepInComming = step;\n this.closeReminderPopoverAutomatic(this.miliseconds);\n } else {\n this.error = true;\n this.showReminderPopover = true;\n }\n }\n\n toggleReminderPopover() {\n this.showReminderPopover = false;\n this.isLoading = false;\n this.$emit('nextStep', this.stepInComming);\n }\n\n closeReminderPopoverAutomatic(miliseconds) {\n setTimeout(() => {\n this.toggleReminderPopover();\n }, miliseconds);\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./Reminders.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./Reminders.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./Reminders.vue.html?vue&type=template&id=0c2e572e&\"\nimport script from \"./Reminders.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./Reminders.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./Reminders.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"reminders\"},[_c('bb-modal',{attrs:{\"maxWidth\":_vm.viewStep === 'final' ? '408px':'541px',\"smallPadding\":\"\",\"blockScroll\":\"\"},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',[(_vm.showReminderPopover && _vm.viewStep !== 'third')?_c('div',{staticClass:\"--success full-height bb-column bb-align-items-center bb-justify-content-center\"},[_c('lottie',{attrs:{\"options\":_vm.lotties,\"speed\":1.5,\"height\":120,\"width\":120}}),_vm._v(\" \"),_c('span',{staticClass:\"figtree-font bb-bold bb-my-2\"},[_vm._v(\"¡Genial!\")]),_vm._v(\" \"),_c('span',{staticClass:\"figtree-font\"},[_vm._v(_vm._s(_vm.popoverText[_vm.viewStep]))])],1):_c('div',{key:_vm.viewStep},[(_vm.viewStep === 'first')?_c('step',{attrs:{\"stepData\":_vm.remindersSteps.first,\"stepIcon\":_vm.icons.firstStep,\"isLoading\":_vm.isLoading}}):_vm._e(),_vm._v(\" \"),(_vm.viewStep === 'second')?_c('step',{attrs:{\"stepData\":_vm.remindersSteps.second,\"stepIcon\":_vm.icons.secondStep,\"isLoading\":_vm.isLoading}}):_vm._e(),_vm._v(\" \"),(_vm.viewStep === 'third')?_c('step',{attrs:{\"stepData\":_vm.remindersSteps.third,\"stepIcon\":_vm.icons.thirdStep,\"isLoading\":_vm.isLoading}}):_vm._e(),_vm._v(\" \"),(_vm.viewStep === 'final')?_c('final-step',{attrs:{\"startStep\":_vm.remindersSteps.final}}):_vm._e()],1)])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\n\nimport LoggedUser from 'assets/graphql/queries/LoggedUser.graphql';\nimport RemindersRegalendario from 'assets/graphql/queries/RemindersList.graphql';\nimport OnboardingRegalendario from 'components/Reminders/OnboardingRegalendarioModal/OnboardingRegalendarioModal.vue';\nimport RemindersQuitModal from 'components/Reminders/RemindersQuitModal/RemindersQuitModal.vue';\nimport Reminders from 'components/Modals/Reminders/Reminders.vue';\n@Component({\n apollo: {\n logged_user: LoggedUser,\n reminders: {\n query: RemindersRegalendario,\n skip() {\n return !this.logged_user;\n },\n update(data) {\n this.remindersComplete = data.reminders.length >= 3;\n return data.reminders;\n },\n },\n },\n props: {\n title: {\n type: String,\n required: true,\n },\n description: {\n type: String,\n required: true,\n },\n cta: {\n type: String,\n required: true,\n },\n remindersModalView: {\n type: Boolean,\n default: false,\n },\n showReminderOnboarding: {\n type: Boolean,\n },\n },\n components: {\n Reminders,\n RemindersQuitModal,\n OnboardingRegalendario,\n },\n})\nexport default class CardHomeComponent extends Vue {\n steps = ['first', 'second', 'third', 'final'];\n remindersComplete = null;\n saveOrContinueModal = false;\n onboard = true;\n\n handleRemindersModalView() {\n if (this.logged_user) {\n this.$emit('toggleRemindersModalView', !this.remindersModalView);\n this.toggleOnboarding(false);\n } else {\n this.$router.push({\n name: 'login',\n });\n }\n }\n\n toggleOnboarding(status) {\n this.$emit('toggleOnboarding', status);\n }\n\n handleSaveOrContinueModal(action) {\n switch (action) {\n case 'show':\n if (this.remindersComplete) {\n this.handleRemindersModalView();\n } else {\n this.handleRemindersModalView();\n this.saveOrContinueModal = true;\n }\n break;\n case 'save':\n this.saveOrContinueModal = false;\n break;\n case 'close':\n this.handleRemindersModalView();\n this.saveOrContinueModal = false;\n break;\n }\n }\n\n nextStep() {\n this.$apollo.queries.reminders.refetch();\n }\n\n get viewStep() {\n if (this.remindersComplete) {\n return 'final';\n } else {\n return this.reminders?.length\n ? this.steps[this.reminders?.length]\n : 'first';\n }\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./CardHome.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./CardHome.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./CardHome.vue.html?vue&type=template&id=1e56a5de&\"\nimport script from \"./CardHome.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./CardHome.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./CardHome.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"OptionCard\",class:{'homeOption' : _vm.homeOption}},[_c('div',{staticClass:\"option full-width bb-mr-3 bb-md-max-pl-2 bb-pl-3 bb-row bb-align-items-center relative bb-cursor-pointer\",class:{'homeOption' : _vm.homeOption, 'card1' : _vm.id === 0, 'card2': _vm.id === 1, 'card3' : _vm.id ===2}},[_c('div',[_c('p',{staticClass:\"title figtree-font bb-semi-bold\",class:{'homeOption' : _vm.homeOption}},[_vm._v(\"\\n \"+_vm._s(_vm.option.title)+\"\\n \")]),_vm._v(\" \"),_vm._t(\"description\")],2),_vm._v(\" \"),_c('div',{staticClass:\"full-height imageContainer\",class:{'homeOption' : _vm.homeOption}},[_c('img',{staticClass:\"image absolute\",class:{'img1' : _vm.id === 0, 'img2' : _vm.id === 1, 'img3' : _vm.id === 2},attrs:{\"src\":_vm.option.image,\"alt\":\"option\"}})]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showSearchResults),expression:\"showSearchResults\"}],staticClass:\"search-quantity\"},[_vm._v(\"\\n \"+_vm._s(_vm.option.results)+\"\\n \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\n\n@Component({\n props: {\n option: {\n type: Object,\n required: true,\n },\n homeOption: {\n type: Boolean,\n default: false,\n },\n results: {\n type: Boolean,\n default: false,\n },\n id: {\n type: Number,\n required: false,\n },\n },\n})\nexport default class OptionCardComponent extends Vue {\n get showSearchResults() {\n return Boolean(this.$route.query.keywords);\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./OptionCard.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./OptionCard.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./OptionCard.vue.html?vue&type=template&id=7fcc90c6&\"\nimport script from \"./OptionCard.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./OptionCard.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./OptionCard.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","module.exports = \"\"","module.exports = __webpack_public_path__ + \"BbPlusBanner.94d57f035f386008004e8a44828620df.png\";","import axios from 'axios';\n\nconst config = {\n xsrfCookieName: 'csrftoken',\n xsrfHeaderName: 'X-CSRFToken',\n withCredentials: true,\n};\n\nconst requests = axios.create(config);\n\nexport default requests;\n","import requests from './requests.service';\n\nexport default requests;\n","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"HomeCover\"},\"variableDefinitions\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"home_cover\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"images\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"image\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"button_text\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mobile_images\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"image\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"button_text\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":225}};\n doc.loc.source = {\"body\":\"query HomeCover {\\n home_cover {\\n id\\n images {\\n url\\n image\\n title\\n subtitle\\n button_text\\n }\\n mobile_images {\\n url\\n image\\n title\\n subtitle\\n button_text\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"HomeCover\"] = oneQuery(doc, \"HomeCover\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GClientID\"},\"variableDefinitions\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"googleClientID\"},\"name\":{\"kind\":\"Name\",\"value\":\"google_client_id\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":56}};\n doc.loc.source = {\"body\":\"query GClientID {\\n googleClientID: google_client_id\\n}\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"GClientID\"] = oneQuery(doc, \"GClientID\");\n \n","module.exports = \"\"","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"NewPaginatedBoxActivities\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"box_slug\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"page_number\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"order_by\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search_term\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"at_home\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"per_page\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"date\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Date\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"time_range_slug\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available_box_activities\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"box_slug\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"box_slug\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"order_by\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"order_by\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search_term\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search_term\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"at_home\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"at_home\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"date\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"date\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"time_range_slug\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"time_range_slug\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"paginated_available\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"per_page\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"per_page\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"page_number\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"page_number\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"results\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"box_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available_hours\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gral_config_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"appointment_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"end_time\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"has_online_reservation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"validations\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"short_description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits_title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits_subtitle\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"know_what\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tip\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"special_catalog\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_tags\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"participants\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_image_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"price_without_discount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"in_campaign\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"campaign_discounted_price\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"campaign_discounted_percentage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_remote\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"small_print\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity_type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"online_activity_duration\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"experience_affected\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommended_tag\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_affected_text\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"images\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"image\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_new\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RatedProductInterface\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reviews_qty\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rating\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ComboActivityType\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_combo_activity\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"combo_activities_images\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"locations\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"longitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sublocation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"address\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"phone\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_in_map\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map_image\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PartnerActivityType\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"partner\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"website\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"locations\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"longitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sublocation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"address\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"phone\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_in_map\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map_image\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delivery_radius\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delivery_in_all_country\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"page_info\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"number\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"has_next\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"not_available\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"has_online_reservation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"validations\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"short_description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits_title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits_subtitle\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"know_what\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tip\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"special_catalog\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_tags\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"participants\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_image_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"price_without_discount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"in_campaign\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"campaign_discounted_price\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"campaign_discounted_percentage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_remote\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"small_print\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity_type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"online_activity_duration\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"experience_affected\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommended_tag\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_affected_text\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"images\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"image\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_new\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RatedProductInterface\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reviews_qty\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rating\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ComboActivityType\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_combo_activity\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"combo_activities_images\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"locations\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"longitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sublocation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"address\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"phone\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_in_map\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map_image\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PartnerActivityType\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"partner\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"website\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"locations\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"longitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sublocation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"address\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"phone\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_in_map\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map_image\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delivery_radius\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delivery_in_all_country\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":4635}};\n doc.loc.source = {\"body\":\"query NewPaginatedBoxActivities(\\n $box_slug: String!\\n $province_id: ID\\n $page_number: Int\\n $order_by: String\\n $search_term: String\\n $at_home: Boolean\\n $per_page: Int\\n $date: Date\\n $time_range_slug: String\\n) {\\n available_box_activities(\\n box_slug: $box_slug\\n province_id: $province_id\\n order_by: $order_by\\n search_term: $search_term\\n at_home: $at_home\\n date: $date\\n time_range_slug: $time_range_slug\\n ) {\\n paginated_available(per_page: $per_page, page_number: $page_number) {\\n results {\\n box_id\\n url\\n available_hours {\\n gral_config_id\\n appointment_id\\n time\\n end_time\\n }\\n activity {\\n has_online_reservation\\n validations\\n id\\n name\\n slug\\n description\\n short_description\\n category_id\\n benefits\\n benefits_title\\n benefits_subtitle\\n know_what\\n tip\\n slug\\n special_catalog\\n product_tags {\\n id\\n slug\\n name\\n }\\n product_url\\n participants\\n product_image_url\\n product_url\\n price_without_discount\\n in_campaign\\n campaign_discounted_price\\n campaign_discounted_percentage\\n is_remote\\n small_print\\n activity_type\\n online_activity_duration\\n experience_affected\\n recommended_tag\\n show_affected_text\\n images {\\n id\\n image\\n }\\n is_new\\n ... on RatedProductInterface {\\n reviews_qty\\n rating\\n }\\n ... on ComboActivityType {\\n is_combo_activity\\n combo_activities_images\\n locations {\\n id\\n latitude\\n longitude\\n sublocation\\n address\\n province_id\\n phone\\n show_in_map\\n map_image\\n province {\\n id\\n name\\n }\\n }\\n }\\n ... on PartnerActivityType {\\n partner {\\n id\\n website\\n description\\n }\\n locations {\\n id\\n latitude\\n longitude\\n sublocation\\n address\\n province_id\\n phone\\n show_in_map\\n map_image\\n delivery_radius\\n delivery_in_all_country\\n province {\\n id\\n name\\n }\\n }\\n }\\n }\\n }\\n page_info {\\n number\\n has_next\\n count\\n }\\n }\\n not_available {\\n activity {\\n has_online_reservation\\n validations\\n id\\n name\\n slug\\n description\\n short_description\\n category_id\\n benefits\\n benefits_title\\n benefits_subtitle\\n know_what\\n tip\\n slug\\n special_catalog\\n product_tags {\\n id\\n slug\\n name\\n }\\n product_url\\n participants\\n product_image_url\\n product_url\\n price_without_discount\\n in_campaign\\n campaign_discounted_price\\n campaign_discounted_percentage\\n is_remote\\n small_print\\n activity_type\\n online_activity_duration\\n experience_affected\\n recommended_tag\\n show_affected_text\\n images {\\n id\\n image\\n }\\n is_new\\n ... on RatedProductInterface {\\n reviews_qty\\n rating\\n }\\n ... on ComboActivityType {\\n is_combo_activity\\n combo_activities_images\\n locations {\\n id\\n latitude\\n longitude\\n sublocation\\n address\\n province_id\\n phone\\n show_in_map\\n map_image\\n province {\\n id\\n name\\n }\\n }\\n }\\n ... on PartnerActivityType {\\n partner {\\n id\\n website\\n description\\n }\\n locations {\\n id\\n latitude\\n longitude\\n sublocation\\n address\\n province_id\\n phone\\n show_in_map\\n map_image\\n delivery_radius\\n delivery_in_all_country\\n province {\\n id\\n name\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"NewPaginatedBoxActivities\"] = oneQuery(doc, \"NewPaginatedBoxActivities\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"AddReminder\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AddUpdateReminderInputType\"}}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"add_reminder\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reminder_data\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reminder\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"signed_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"occasion\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"date\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":230}};\n doc.loc.source = {\"body\":\"mutation AddReminder($input: AddUpdateReminderInputType!) {\\n add_reminder(reminder_data: $input) {\\n reminder {\\n signed_id\\n id\\n occasion {\\n name\\n }\\n date\\n name\\n }\\n ok\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"AddReminder\"] = oneQuery(doc, \"AddReminder\");\n \n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar nativeStartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return nativeStartsWith\n ? nativeStartsWith(that, search, index)\n : stringSlice(that, index, index + search.length) === search;\n }\n});\n","module.exports = \"\"","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","module.exports = \"\"","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","module.exports = \"\"","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","module.exports = \"\"","// eslint-disable-next-line strict\nmodule.exports = null;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"NewBoxBlock\"},[_c('router-link',{attrs:{\"to\":_vm.boxClicked}},[_c('product-block',{attrs:{\"product\":_vm.box,\"coverPaddingBottom\":\"95\",\"productTitle\":\"Bigbox:\",\"description\":_vm.box.catalog_description,\"campaignColor\":_vm.box.campaign_color,\"discount\":_vm.box.discount,\"bigBlock\":_vm.bigBlock},scopedSlots:_vm._u([{key:\"middleSlot\",fn:function(){return [(_vm.totalActivitiesInBox)?_c('div',{staticClass:\"boxActivities bb-mb-1\"},[_c('span',{staticClass:\"bb-description-2 bb-bold containText\"},[_vm._v(\"\\n Contiene \"+_vm._s(_vm.plural(_vm.totalActivitiesInBox, 'experiencia',\n true))+\"\\n \")])]):_vm._e()]},proxy:true},{key:\"rating\",fn:function(){return [_c('div',{staticClass:\"ratingTagRow bb-row-to-column\"},[_c('div',{staticClass:\"boxRating\"},[(_vm.box.reviews_qty > 0)?_c('rating',{attrs:{\"value\":_vm.box.rating,\"starSize\":\"--small\",\"allStars\":\"\"}}):_vm._e()],1)])]},proxy:true},{key:\"quantity\",fn:function(){return [_c('p',{staticClass:\"bb-bold qtyContainer bb-description-2\"},[_vm._v(\"\\n Contiene \"+_vm._s(_vm.box.activity_qty)+\" experiencias\\n \")])]},proxy:true},{key:\"price\",fn:function(){return [(_vm.showSearchResults && _vm.box.box_activities_in_box > 0)?_c('offer-label',{staticClass:\"figtree-font label-box\",attrs:{\"middle\":\"\",\"left\":\"\",\"showTitleText\":false,\"title\":_vm.offerLabelTitle,\"description\":_vm.offerLabelDescription,\"showIcon\":false,\"fontSize\":\"12px\",\"campaignColor\":\"#575756\"}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"price-container bb-description-4 bb-column\"},[_c('div',{staticClass:\"bb-row\"},[_c('span',{staticClass:\"bb-bold price\"},[_vm._v(_vm._s(_vm.selectedPrice))]),_vm._v(\" \"),(_vm.box.discount && _vm.box.original_price)?_c('span',{staticClass:\"bb-line-through\"},[_vm._v(_vm._s(_vm.currency(_vm.box.original_price)))]):_vm._e()]),_vm._v(\" \"),(_vm.tld === 'ar' && _vm.box.installments > 1)?_c('div',{staticClass:\"fee bb-mt-1\"},[_vm._v(\"\\n Hasta \"+_vm._s(_vm.box.installments)+\" cuotas de $\"+_vm._s(_vm.feePriceInt)+\"\\n \"),_c('span',{staticClass:\"feeDecimal\"},[_vm._v(_vm._s(_vm.feePriceDecimal))])]):_vm._e()])]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport getLastTld from 'common/services/getLastTld';\n\nimport ProductBlock from 'common/components/ProductBlock';\nimport Rating from 'common/components/Rating';\n\n@Component({\n components: {\n ProductBlock,\n Rating,\n OfferLabel: () => import('components/OfferLabel/OfferLabel.vue'),\n },\n props: {\n box: {\n type: Object,\n required: true,\n },\n bigBlock: {\n type: Boolean,\n default: false,\n description:\n 'Change styles of the Block. True if 3 blocks will be displayed in a row',\n },\n campaignSlug: {\n type: String,\n required: false,\n },\n landingSlug: {\n type: String,\n required: false,\n },\n },\n})\nexport default class NewBoxBlockComponent extends Vue {\n offerLabelTitle = '';\n offerLabelDescription = '';\n\n mounted() {\n this.offerLabelTitle = this.getOfferLabelTitle();\n this.offerLabelDescription = this.getOfferLabelDescription();\n }\n\n getOfferLabelTitle() {\n return `Contiene ${this.plural(\n this.box.box_activities_in_box,\n 'experiencia',\n true,\n )} que`;\n }\n\n getOfferLabelDescription() {\n return `${this.plural(this.box.box_activities_in_box, [\n 'coincide',\n 'coinciden',\n ])} con tu búsqueda`;\n }\n\n get tld() {\n return getLastTld(window.location.hostname);\n }\n\n get boxClicked() {\n let newRoute;\n if (this.box.product_url) {\n newRoute = { path: this.box.product_url };\n } else {\n newRoute = {\n name: 'box',\n params: {\n categorySlug: this.category.slug,\n boxSlug: this.box.slug,\n },\n };\n }\n if (this.campaignSlug) {\n newRoute.query = {\n ...newRoute.query,\n campaignSlug: this.campaignSlug,\n };\n }\n if (this.landingSlug) {\n newRoute.query = {\n ...newRoute.query,\n landingSlug: this.landingSlug,\n };\n }\n\n return newRoute;\n }\n\n get feePrice() {\n return this.box.price / this.box.installments;\n }\n\n get feePriceInt() {\n return Math.floor(this.feePrice);\n }\n\n get feePriceDecimal() {\n const theDecimal = this.feePrice - this.feePriceInt;\n if (theDecimal) {\n return theDecimal.toFixed(2) * 100;\n }\n return '';\n }\n\n get totalActivitiesInBox() {\n return this.box.activities ? this.box.activities.length : '';\n }\n\n get showSearchResults() {\n return Boolean(this.$route.query.keywords);\n }\n\n get selectedPrice() {\n let price = this.box.use_price_in_usd\n ? this.box.price_in_usd\n : this.box.price;\n return this.currency(price, 0, this.box.use_price_in_usd);\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./NewBoxBlock.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./NewBoxBlock.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./NewBoxBlock.vue.html?vue&type=template&id=7bb47a2b&scoped=true&\"\nimport script from \"./NewBoxBlock.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./NewBoxBlock.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./NewBoxBlock.scoped.scss?vue&type=style&index=0&id=7bb47a2b&prod&lang=vueScss&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 \"7bb47a2b\",\n null\n \n)\n\nexport default component.exports","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","/**\n *\n * @param data from time_ranges query\n * @return array with formatted time ranges\n */\nconst timeRangesAdapter = data => {\n return data.map(item => {\n return {\n name: item.name,\n slug: item.slug,\n start: item.start_time,\n end: item.end_time,\n };\n });\n};\n\nexport { timeRangesAdapter };\n","import apolloClient from 'ecommerce/utils/apolloClient';\nimport TimeRanges from 'ecommerce/assets/graphql/queries/catalog/TimeRanges.graphql';\n\nimport { timeRangesAdapter } from 'ecommerce/adapters/timeRanges.adapter';\n\n/**\n * Use time_range query to return all time slots defined in backoffice\n * @return {Promise}\n */\nlet getTimeRanges = async () => {\n try {\n const { data } = await apolloClient.query({\n query: TimeRanges,\n });\n return timeRangesAdapter(data.time_ranges);\n } catch (e) {\n throw new Error('getTimeRanges', e);\n }\n};\n\nexport { getTimeRanges };\n","import apolloClient from 'ecommerce/utils/apolloClient';\nimport NewPaginatedBoxActivities from 'ecommerce/assets/graphql/queries/newPaginatedBoxActivities.graphql';\nimport PaginatedBoxActivities from 'ecommerce/assets/graphql/queries/PaginatedBoxActivities.graphql';\nimport formatDate from 'ecommerce/filters/date/date.filter.js';\n\n/**\n * @param box_slug {string} required\n * @param page_config {object} contains page_number and per_page\n * @param filters {object} contains province_id, order_by, search_term, at_home and category_id\n * @param time_range {object} contains date(required) and time_range_slug\n * @return data from paginated_box_activities query\n * @example\n * ('box-blend',{1,12},{},{'2023/02/20',''})\n */\nconst getPaginatedBoxActivities = async (\n box_slug,\n page_config,\n filters,\n time_range,\n) => {\n let { per_page, page_number } = page_config;\n let { province_id, order_by, search_term, at_home, category_id } = filters;\n let { date, time_range_slug } = time_range;\n let dateFlag = false;\n let formattedDate = null;\n\n let selectedQuery = '';\n\n if (date) {\n dateFlag = true;\n formattedDate = formatDate(date, 'YYYY-MM-DD');\n }\n\n if (dateFlag) {\n selectedQuery = NewPaginatedBoxActivities;\n } else {\n selectedQuery = PaginatedBoxActivities;\n }\n\n const getVariables = () => {\n return selectedQuery === NewPaginatedBoxActivities\n ? {\n box_slug: box_slug,\n province_id: province_id,\n page_number: page_number,\n order_by: order_by,\n search_term: search_term,\n at_home: at_home,\n per_page: per_page,\n date: formattedDate,\n time_range_slug: time_range_slug,\n date_flag: dateFlag,\n category_id\n }\n : {\n box_slug: box_slug,\n provinceId: province_id,\n page_number: page_number,\n order_by: order_by,\n search_term: search_term,\n at_home: at_home,\n per_page: per_page,\n category_id\n };\n };\n\n try {\n const { data } = await apolloClient.query({\n query: selectedQuery,\n variables: getVariables(),\n });\n\n return selectedQuery === NewPaginatedBoxActivities\n ? {\n response: data.available_box_activities.paginated_available,\n others: data.available_box_activities.not_available,\n }\n : { response: data.paginated_box_activities, others: [] };\n } catch (e) {\n throw new Error(`${selectedQuery}`, e);\n }\n};\n\nexport { getPaginatedBoxActivities };\n","import { defineStore } from 'pinia';\nimport { getTimeRanges } from 'ecommerce/services/boxCatalogView';\nimport { getPaginatedBoxActivities } from 'ecommerce/services/activities.service';\nimport dayjs from 'dayjs';\nimport apolloClient from 'ecommerce/utils/apolloClient';\n\nimport ActivityBySlug from 'ecommerce/assets/graphql/queries/Activity.graphql';\n\nconst INITIAL_PAGE_CONFIG = {\n INITIAL_PAGE: 1,\n DEFAULT_PER_PAGE: 12,\n};\n\nconst DEFAULT_FILTERS = {\n order_by: '',\n province_id: null,\n search_term: '',\n at_home: false,\n category_id:''\n};\n\nexport const useBoxCatalogViewStore = defineStore('boxCatalogContext', {\n state: () => ({\n flags: {\n initialDataLoading: true,\n loading: false,\n alreadySearchedByDate: false,\n isModalReservationOpen: false,\n },\n filters: JSON.parse(JSON.stringify(DEFAULT_FILTERS)),\n time_range: {\n date: null,\n time_range_slug: null,\n },\n page_config: {\n page_number: INITIAL_PAGE_CONFIG.INITIAL_PAGE,\n per_page: INITIAL_PAGE_CONFIG.DEFAULT_PER_PAGE,\n },\n selectedSchedule: null,\n paginatedActivities: {\n allActivitiesResults: [],\n currentPageInfo: null,\n },\n otherActivities: [],\n allTimeRanges: [],\n alreadySearchedByDate: false,\n titleDate: null,\n paginated_activities: [],\n isModalReservationOpen: false,\n catalogCodeComponent: null,\n catalogModalComponent: null,\n expirationDate: null,\n isATT: false,\n }),\n getters: {\n getLoading: state => state.flags.loading,\n getInitialDataLoading: state => state.flags.initialDataLoading,\n getFilters: state => state.filters,\n getTimeRange: state => state.time_range,\n getSelectedSchedule: state => state.selectedSchedule,\n getPageConfig: state => state.page_config,\n getPageInfo: state => state.paginatedActivities.currentPageInfo,\n getHasNextPage: state =>\n state.paginatedActivities.currentPageInfo?.has_next || false,\n getTotalActivities: state =>\n state.paginatedActivities.currentPageInfo?.count,\n paginatedBoxActivitiesResults: state =>\n state.paginatedActivities.allActivitiesResults || [],\n getOtherActivities: state => state.otherActivities,\n getTitleDate: state => state.titleDate,\n getIsModalReservationOpen: state => state.flags.isModalReservationOpen,\n getCatalogCodeComponent: state => state.catalogCodeComponent,\n getCatalogModalComponent: state => state.catalogModalComponent,\n getExpirationDate: state => state.expirationDate || false,\n },\n actions: {\n async init(box_slug) {\n try {\n this.resetFilters();\n await Promise.all([\n this.getPaginatedBoxActivities(box_slug),\n this.getTimeRanges(),\n ]);\n this.flags.initialDataLoading = false;\n } catch (err) {\n /* eslint-disable-next-line */\n console.error('Error on boxCatalogView store init', err);\n }\n },\n\n async getPaginatedBoxActivities(box_slug) {\n this.flags.loading = true;\n\n const { response, others } = await getPaginatedBoxActivities(\n box_slug,\n this.getPageConfig,\n this.getFilters,\n this.getTimeRange,\n );\n\n this.otherActivities = others;\n this.paginatedActivities.currentPageInfo = response.page_info;\n this.paginatedActivities.allActivitiesResults = [\n ...this.paginatedActivities.allActivitiesResults,\n ...response.results,\n ];\n this.flags.loading = false;\n },\n\n async getTimeRanges() {\n this.flags.loading = true;\n this.allTimeRanges = await getTimeRanges();\n this.allTimeRanges.sort((a, b) => {\n const startTimeA = parseInt(a.start.split(':')[0]);\n const startTimeB = parseInt(b.start.split(':')[0]);\n return startTimeA - startTimeB;\n });\n this.flags.loading = false;\n },\n\n /* Date fields */\n onSetTimeSlot(timeSlotSlug) {\n this.time_range.time_range_slug = timeSlotSlug;\n },\n\n onSetDate(selectedDate) {\n this.time_range.date = selectedDate;\n },\n\n onSetSchedule(shedule) {\n this.selectedSchedule = shedule;\n },\n\n /* Filters fields */\n onSetProvince(provinceId) {\n this.resetPageConfig();\n this.filters.province_id = provinceId == 0 ? undefined : provinceId;\n },\n\n onSetCategory(categoryId) {\n this.resetPageConfig();\n this.filters.category_id = categoryId == 0 ? undefined : categoryId;\n },\n\n onSetOrderBy(orderBy) {\n this.filters.order_by = orderBy;\n },\n\n onSetSearchTerm(searchTerm) {\n this.filters.search_term = searchTerm;\n },\n\n onSetAtHome(value) {\n this.filters.at_home = value;\n },\n\n /* Page config */\n onSetPage(pageNumber) {\n this.page_config.page_number = pageNumber;\n },\n\n onSetPerPage(productsQuantity) {\n this.page_config.per_page = productsQuantity;\n },\n\n resetPageConfig() {\n this.page_config.page_number = INITIAL_PAGE_CONFIG.INITIAL_PAGE;\n this.page_config.per_page = INITIAL_PAGE_CONFIG.DEFAULT_PER_PAGE;\n this.paginatedActivities.allActivitiesResults = [];\n },\n\n resetFilters() {\n this.filters = { ...DEFAULT_FILTERS };\n },\n\n generateTitleDate() {\n if (!this.time_range.date && !this.time_range.time_range_slug)\n this.titleDate = null;\n const date = dayjs(this.time_range.date);\n const formattedDateName = date.format('dddd');\n const capitalizedDateName =\n formattedDateName.charAt(0).toUpperCase() + formattedDateName.slice(1);\n const formattedDateNumber = date.format('DD/MM');\n this.titleDate = { capitalizedDateName, formattedDateNumber };\n },\n\n /* Modal reservation */\n onToggleModalReservation() {\n this.flags.isModalReservationOpen = !this.flags.isModalReservationOpen;\n },\n\n async onActivityBySlug(slug) {\n try {\n const { data } = await apolloClient.query({\n query: ActivityBySlug,\n variables: { slug },\n });\n const { activity } = data;\n const { breadcrumb, catalog_case, is_catalog, gift_information } =\n activity.activity_view_config;\n const breadCrumb = JSON.parse(breadcrumb);\n const giftInformation = JSON.parse(gift_information);\n const catalogCase = JSON.parse(catalog_case);\n const isCatalog = JSON.parse(is_catalog);\n const isReserved = ['reserved', 'validated_and_not_reserved'].includes(\n giftInformation.status,\n );\n activity.locations =\n activity.partneractivity?.locations ||\n activity.comboactivity.locations;\n\n if (isCatalog) return;\n if (!catalogCase) return;\n\n this.catalogCodeComponent = {\n name: catalogCase.code_component,\n props: {\n code: catalogCase.code,\n activity,\n catalogColor: breadCrumb.color,\n reservedGift: giftInformation,\n isReserved,\n },\n };\n\n this.catalogModalComponent = {\n name: catalogCase.modal_component,\n props: {\n title: 'Reservá esta experiencia',\n code: catalogCase.code,\n codeId: catalogCase.code_id,\n categoryColor: breadCrumb.color,\n locations: activity.locations,\n activity,\n isReserved,\n reserverdGift: giftInformation,\n codeExpirationDate: giftInformation.expiration_date,\n },\n };\n\n return activity;\n } catch (error) {\n return error;\n }\n },\n\n onCreateReservation(status) {\n if (status.success) {\n this.flags.isModalReservationOpen = false;\n }\n },\n\n scrollToResultsStart() {\n const activitiesResultElement = document.getElementById(\n 'catalogviewResultsContainer',\n );\n activitiesResultElement.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n },\n\n cleanAvailability() {\n this.time_range.date = null;\n this.time_range.time_range_slug = null;\n this.resetPageConfig();\n this.flags.alreadySearchedByDate = false;\n },\n\n setATT (isATT = false) {\n this.isATT = isATT;\n }\n },\n});\n","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","module.exports = \"\"","module.exports = \"\"","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"Activity\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"validations\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"short_description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"expiration_date\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dynamic_expiration_date\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"expiration_days\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits_title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits_subtitle\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"know_what\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tip\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_tags\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"participants\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_image_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"price\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"individual_purchase_available\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"price_without_discount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"in_campaign\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"campaign_discounted_price\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"campaign_discounted_percentage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_remote\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"small_print\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity_type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"online_activity_duration\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"experience_affected\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_affected_text\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"small_print\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"images\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"image\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_new\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RatedProductInterface\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reviews_qty\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rating\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"comboactivity\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"travelactivity\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_combo_activity\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"main_activities\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"combo_activities_images\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"locations\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"longitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sublocation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"address\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"phone\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_in_map\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity_name\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_consultation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"consultation_link\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currency_symbol\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"price_from\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"partneractivity\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_special_reservation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"can_purchase_a_reservation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"partner\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"website\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"locations\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"longitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sublocation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"address\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"phone\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_in_map\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map_image\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delivery_radius\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delivery_in_all_country\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity_name\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity_view_config\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"breadcrumb\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"individual_sale\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_catalog\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog_case\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gift_information\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":1859}};\n doc.loc.source = {\"body\":\"query Activity($slug: String!) {\\n activity(slug: $slug) {\\n validations\\n id\\n name\\n description\\n short_description\\n category_id\\n expiration_date\\n dynamic_expiration_date\\n expiration_days\\n benefits\\n benefits_title\\n benefits_subtitle\\n know_what\\n tip\\n product_tags {\\n id\\n slug\\n name\\n }\\n participants\\n product_image_url\\n product_url\\n price\\n individual_purchase_available\\n price_without_discount\\n in_campaign\\n campaign_discounted_price\\n campaign_discounted_percentage\\n is_remote\\n small_print\\n activity_type\\n online_activity_duration\\n experience_affected\\n show_affected_text\\n small_print\\n images {\\n id\\n image\\n }\\n is_new\\n ... on RatedProductInterface {\\n reviews_qty\\n rating\\n }\\n comboactivity {\\n id\\n travelactivity {\\n id\\n }\\n is_combo_activity\\n main_activities {\\n id\\n name\\n }\\n combo_activities_images\\n locations {\\n id\\n latitude\\n longitude\\n sublocation\\n address\\n province_id\\n phone\\n show_in_map\\n activity_id\\n activity_name\\n }\\n }\\n is_consultation\\n consultation_link\\n currency_symbol\\n price_from\\n partneractivity {\\n is_special_reservation\\n can_purchase_a_reservation\\n partner {\\n id\\n website\\n description\\n }\\n locations {\\n id\\n latitude\\n longitude\\n sublocation\\n address\\n province_id\\n phone\\n show_in_map\\n map_image\\n delivery_radius\\n delivery_in_all_country\\n activity_id\\n activity_name\\n }\\n }\\n activity_view_config {\\n breadcrumb\\n individual_sale\\n is_catalog\\n catalog_case\\n gift_information\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"Activity\"] = oneQuery(doc, \"Activity\");\n \n","module.exports = {\n \"version\": \"0.27.2\"\n};","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport giftIcon from 'assets/icons/giftcard_2.svg';\nimport questionIcon from 'assets/icons/question_2.svg';\nimport smilingFace from 'assets/icons/SmilingFace.svg';\nimport changeGift from 'common/icons/ChangeGiftCopy.svg';\nimport giftcardIcon from 'assets/icons/giftcard.svg';\nimport useCreditIcon from 'assets/icons/efectivo.svg';\nimport knowWhat from 'assets/icons/knowWhat.svg';\n\n@Component({\n props: {\n title: {\n type: String,\n required: true,\n },\n description: {\n type: String,\n required: true,\n },\n cta: {\n type: String,\n required: true,\n },\n goTo: {\n type: String,\n required: false,\n },\n icon: {\n type: String,\n required: true,\n },\n mobileButtonStyle: {\n type: Boolean,\n default: true,\n },\n },\n})\nexport default class HomeCardComponent extends Vue {\n icons = {\n question_2: questionIcon,\n giftcard_2: giftIcon,\n giftcard_1: giftcardIcon,\n useCredit: useCreditIcon,\n smilingFace,\n changeGift,\n knowWhat,\n };\n\n handleClick() {\n if (this.goTo) {\n this.$router.push({ name: this.goTo });\n } else {\n this.$emit('onClick');\n }\n }\n\n get cardIcon() {\n return this.icons[this.icon];\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./HomeCard.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./HomeCard.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./HomeCard.vue.html?vue&type=template&id=efc33d20&\"\nimport script from \"./HomeCard.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./HomeCard.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./HomeCard.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"home-card bb-p-6 bb-sm-max-p-3 bb-row bb-justify-content-around\"},[_c('div',{staticClass:\"bb-column\"},[_c('div',[_c('h2',{staticClass:\"cardTitle figtree-font bb-semi-bold bb-mb-1\"},[_vm._v(\"\\n \"+_vm._s(_vm.title)+\"\\n \")])]),_vm._v(\" \"),_c('span',{staticClass:\"cardDescription bb-sm-max-pr-3 bb-description-3 bb-text-darkgray\"},[_vm._v(_vm._s(_vm.description))]),_vm._v(\" \"),[_c('button',{staticClass:\"button bb-button --primary --home --withBorder bb-bold bb-py-1 bb-px-5 bb-sm-max-p-0\",class:{'mobile-btn': _vm.mobileButtonStyle},on:{\"click\":_vm.handleClick}},[_vm._v(\"\\n \"+_vm._s(_vm.cta)+\"\\n \")])]],2),_vm._v(\" \"),_c('div',{staticClass:\"bb-column bb-justify-content-center\"},[_c('span',{staticClass:\"icono\",class:`icon ${_vm.icon}-icon`,domProps:{\"innerHTML\":_vm._s(_vm.cardIcon)}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.set.constructor');\n","import Vue from 'vue';\nimport Component from 'vue-class-component';\n\nimport ProductBlock from 'common/components/ProductBlock';\nimport Rating from 'common/components/Rating';\nimport currency from 'common/filters/currency';\n\nVue.filter('currency', currency);\n\n@Component({\n components: {\n ProductBlock,\n Rating,\n },\n props: {\n activity: {\n type: Object,\n required: true,\n },\n selectedMonth: {\n type: String,\n required: false,\n },\n productTitle: {\n type: String,\n default: 'Escapada:',\n },\n bigBlock: {\n type: Boolean,\n default: true,\n description:\n 'Change styles of the Block. True if 3 blocks will be displayed in a row',\n },\n showHeart: {\n type: Boolean,\n default: true,\n },\n campaignColor: {\n type: String,\n required: false,\n },\n showPrice: {\n type: Boolean,\n required: false,\n },\n showmiddleSlot: {\n type: Boolean,\n default: true,\n },\n },\n})\nexport default class NewPackageBlockComponent extends Vue {\n travelActivities = this.activity.activities;\n\n get goToPackage() {\n const { slug } = this.activity;\n return {\n name: 'package',\n params: { slug },\n query: { mes: this.selectedMonth },\n };\n }\n\n get description() {\n if (this.activity.short_description) {\n return this.activity.short_description;\n } else if (this.activity.description) {\n return this.activity.description;\n }\n return '';\n }\n\n get nights() {\n return this.activity.min_season_price?.nights;\n }\n\n get minPrice() {\n return this.activity.min_season_price?.price;\n }\n\n /**\n * Subtract 1 from the array's length 'cause staying in the hotel doesn't count as an \"experience\"\n * We must show the real amount of experiences\n */\n get activityCount() {\n return this.activity.activity_count - 1;\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./NewPackageBlock.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./NewPackageBlock.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./NewPackageBlock.vue.html?vue&type=template&id=2f603fb4&\"\nimport script from \"./NewPackageBlock.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./NewPackageBlock.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./NewPackageBlock.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"NewPackageBlock\"},[_c('router-link',{attrs:{\"to\":_vm.goToPackage}},[_c('product-block',_vm._g({attrs:{\"product\":_vm.activity,\"coverPaddingBottom\":\"50\",\"productTitle\":_vm.productTitle,\"description\":_vm.description,\"campaignColor\":_vm.campaignColor,\"discount\":_vm.activity.discount,\"bigBlock\":true,\"showHeart\":_vm.showHeart,\"extraRightHeart\":true},scopedSlots:_vm._u([(_vm.showmiddleSlot)?{key:\"middleSlot\",fn:function(){return [_c('div',{staticClass:\"middleBlockContainer bb-row-to-column bb-mb-3\"},[_c('div',{staticClass:\"middleBlock bb-mr-2\"},[_c('span',{staticClass:\"bb-description-2 bb-bold\"},[_vm._v(\"\\n \"+_vm._s(_vm.plural(_vm.nights, 'noche', true))+\"\\n \")])]),_vm._v(\" \"),(_vm.activityCount > 0)?_c('div',{staticClass:\"middleBlock\"},[_c('span',{staticClass:\"bb-description-2 bb-bold\"},[_vm._v(\"\\n \"+_vm._s(_vm.plural(_vm.activityCount, 'experiencia', true))+\"\\n \")])]):_vm._e()])]},proxy:true}:null,{key:\"price\",fn:function(){return [(_vm.showmiddleSlot)?_c('div',{staticClass:\"divisor\"}):_vm._e(),_vm._v(\" \"),_vm._t(\"price\",function(){return [_c('div',{staticClass:\"bb-mt-3\"},[_c('span',[_vm._v(\"Desde\")]),_vm._v(\" \"),_c('span',{staticClass:\"bb-description-4 bb-bold priceNumber\"},[_vm._v(_vm._s(_vm.currency(_vm.minPrice)))])])]})]},proxy:true}],null,true)},_vm.$listeners))],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"PaginatedBoxActivities\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"box_slug\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"category_id\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"order_by\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"page_number\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"per_page\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"at_home\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"provinceId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search_term\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"paginated_box_activities\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"box_slug\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"box_slug\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"category_id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"category_id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"order_by\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"order_by\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"page_number\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"page_number\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"per_page\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"per_page\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"at_home\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"at_home\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"provinceId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search_term\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search_term\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"results\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"box_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"has_online_reservation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"validations\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"short_description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits_title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"benefits_subtitle\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"know_what\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tip\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"special_catalog\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_tags\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"participants\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_image_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"price_without_discount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"in_campaign\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"campaign_discounted_price\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"campaign_discounted_percentage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_remote\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"small_print\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activity_type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"online_activity_duration\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"experience_affected\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommended_tag\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_affected_text\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"images\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"image\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_new\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RatedProductInterface\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reviews_qty\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rating\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ComboActivityType\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"is_combo_activity\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"combo_activities_images\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"locations\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"longitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sublocation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"address\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"phone\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_in_map\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map_image\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PartnerActivityType\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"partner\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"website\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"locations\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"longitude\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sublocation\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"address\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province_id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"phone\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"show_in_map\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map_image\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delivery_radius\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delivery_in_all_country\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"province\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"page_info\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"number\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"has_next\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":2493}};\n doc.loc.source = {\"body\":\"query PaginatedBoxActivities(\\n $box_slug: String!,\\n $category_id: ID,\\n $order_by: String,\\n $page_number: Int!,\\n $per_page: Int!,\\n $at_home: Boolean!,\\n $provinceId: ID,\\n $search_term: String\\n) {\\n paginated_box_activities(\\n box_slug: $box_slug,\\n category_id: $category_id,\\n order_by: $order_by,\\n page_number: $page_number,\\n per_page: $per_page,\\n at_home: $at_home,\\n province_id: $provinceId,\\n search_term: $search_term\\n ) {\\n results {\\n box_id\\n url\\n activity {\\n has_online_reservation\\n category {\\n id\\n name\\n slug\\n __typename\\n }\\n validations\\n id\\n name\\n slug\\n description\\n short_description\\n category_id\\n benefits\\n benefits_title\\n benefits_subtitle\\n know_what\\n tip\\n slug\\n special_catalog\\n product_tags {\\n id\\n slug\\n name\\n }\\n product_url\\n participants\\n product_image_url\\n product_url\\n price_without_discount\\n in_campaign\\n campaign_discounted_price\\n campaign_discounted_percentage\\n is_remote\\n small_print\\n activity_type\\n online_activity_duration\\n experience_affected\\n recommended_tag\\n show_affected_text\\n images {\\n id\\n image\\n }\\n is_new\\n ... on RatedProductInterface {\\n reviews_qty\\n rating\\n }\\n ... on ComboActivityType {\\n is_combo_activity\\n combo_activities_images\\n locations {\\n id\\n latitude\\n longitude\\n sublocation\\n address\\n province_id\\n phone\\n show_in_map\\n map_image\\n province {\\n id\\n name\\n }\\n }\\n }\\n ... on PartnerActivityType {\\n partner {\\n id\\n website\\n description\\n }\\n locations {\\n id\\n latitude\\n longitude\\n sublocation\\n address\\n province_id\\n phone\\n show_in_map\\n map_image\\n delivery_radius\\n delivery_in_all_country\\n province {\\n id\\n name\\n }\\n }\\n }\\n }\\n }\\n page_info {\\n number\\n has_next\\n count\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"PaginatedBoxActivities\"] = oneQuery(doc, \"PaginatedBoxActivities\");\n \n","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport ReminderOcassions from 'assets/graphql/queries/ReminderOcassions.graphql';\n\nimport Datepicker from 'vuejs-datepicker';\nimport BbField from 'common/components/BbField';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport Cleave from 'cleave.js';\nimport compareDayAndMonthWithNow from 'utils/compareDayAndMonthWithNow';\n\nimport BbHorizontalSlider from 'common/components/BbHorizontalSlider';\n\n@Component({\n props: {\n stepData: {\n type: Object,\n },\n stepIcon: {\n type: String,\n },\n isLoading: {\n type: Boolean,\n },\n },\n apollo: {\n reminder_occasions: {\n query: ReminderOcassions,\n result({ data }) {\n return data.reminder_occasions;\n },\n },\n },\n components: {\n BbField,\n Datepicker,\n BbHorizontalSlider,\n },\n})\nexport default class StepComponent extends Vue {\n isDissableInputDate = false;\n valueDateAux = this.stepData.date.value || '';\n reminder_occasions = [];\n windowInnerWidth = null\n\n mounted() {\n this.cleave = new Cleave('#input-date', {\n date: true,\n datePattern: ['d', 'm'],\n blocks: [2, 2],\n });\n dayjs.extend(customParseFormat);\n this.windowInnerWidth = window.innerWidth\n }\n\n validatingFormBeforeTheNextStep() {\n this.stepData.date.value = compareDayAndMonthWithNow(this.cleave);\n this.valueDateAux = this.cleave.getFormattedValue().slice(0, 5);\n this.stepData.nextStep();\n this.valueDateAux = '';\n this.cleave.setRawValue('');\n }\n\n handleDissableInputDateByIdOccasion(id) {\n const { date } = this.reminder_occasions.find(oc => oc.id == id);\n const getDayAndMonthOccasionOrEmpty = date\n ? dayjs(date, 'YYYY-MM-DD').format('DD/MM')\n : '';\n this.cleave.setRawValue(getDayAndMonthOccasionOrEmpty);\n this.valueDateAux = getDayAndMonthOccasionOrEmpty;\n this.isDissableInputDate = Boolean(getDayAndMonthOccasionOrEmpty);\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./Step.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./Step.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./Step.vue.html?vue&type=template&id=34fba74a&\"\nimport script from \"./Step.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./Step.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./Step.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"step\"},[(_vm.stepIcon)?_c('header',[_c('span',{staticClass:\"icon\",domProps:{\"innerHTML\":_vm._s(_vm.stepIcon)}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"container__step\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.stepData.title)+\"\\n \")]),_vm._v(\" \"),_c('section',[_c('p',[_vm._v(_vm._s(_vm.stepData.name.label))]),_vm._v(\" \"),_c('bb-field',{staticClass:\"bb-input full-width\",attrs:{\"placeholder\":\"Nombre del agasajado\",\"required\":\"\"},model:{value:(_vm.stepData.name.value),callback:function ($$v) {_vm.$set(_vm.stepData.name, \"value\", $$v)},expression:\"stepData.name.value\"}})],1),_vm._v(\" \"),_c('section',[_c('p',[_vm._v(_vm._s(_vm.stepData.occasion.label))]),_vm._v(\" \"),_c('div',{staticClass:\"container__slide\"},[_c('bb-horizontal-slider',{staticClass:\"full-width\",attrs:{\"items\":_vm.reminder_occasions,\"itemClass\":_vm.windowInnerWidth > 992 ? 'col-xs-5 col-sm-4 col-md-4 col-lg-4' : '',\"arrowClass\":\"boxBlockArrow\"},scopedSlots:_vm._u([{key:\"item\",fn:function({ item, index }){return [_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.stepData.occasion.value),expression:\"stepData.occasion.value\"}],key:index,staticClass:\"container__input\",attrs:{\"type\":\"radio\",\"name\":\"occasion\"},domProps:{\"value\":item.id,\"checked\":_vm._q(_vm.stepData.occasion.value,item.id)},on:{\"click\":function($event){return _vm.handleDissableInputDateByIdOccasion(item.id)},\"change\":function($event){return _vm.$set(_vm.stepData.occasion, \"value\", item.id)}}}),_vm._v(\" \"),_c('div',{class:['container__card card-input', {'card-mobile-spacing' : _vm.reminder_occasions.length - 1 !== index }]},[_c('img',{attrs:{\"src\":item.icon}}),_vm._v(\" \"),_c('span',{staticClass:\"container__card__p\"},[_vm._v(\"\\n \"+_vm._s(item.name)+\"\\n \")])])])]}}])})],1)]),_vm._v(\" \"),_c('section',[_c('p',[_vm._v(_vm._s(_vm.stepData.date.label))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.valueDateAux),expression:\"valueDateAux\"}],staticClass:\"bb-input full-width\",attrs:{\"id\":\"input-date\",\"placeholder\":\"dd/mm\",\"required\":\"\",\"type\":\"text\",\"disabled\":_vm.isDissableInputDate},domProps:{\"value\":(_vm.valueDateAux)},on:{\"input\":function($event){if($event.target.composing)return;_vm.valueDateAux=$event.target.value}}}),_vm._v(\" \"),_c('span',[_vm._v(\"*Te notificaremos una semana antes del evento.\")])])]),_vm._v(\" \"),_c('footer',[_c('button',{staticClass:\"bb-button bb-button-size-large bb-justify-content-center bb-bold --primary\",attrs:{\"disabled\":_vm.stepData.name.value.length === 0 ||\n _vm.stepData.occasion.value.length === 0 ||\n _vm.valueDateAux.length === 0 ||\n _vm.isLoading},on:{\"click\":function($event){return _vm.validatingFormBeforeTheNextStep()}}},[(!_vm.isLoading)?_c('span',[_vm._v(_vm._s(_vm.stepData.button))]):_vm._e(),_vm._v(\" \"),(_vm.isLoading)?_c('span',{staticClass:\"bb-loading-text\"}):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","module.exports = __webpack_public_path__ + \"corporate-card-pattern.810998e401fc4f06ea49d677c1959f53.png\";","module.exports = \"Group 40\"","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"AddEmailToAllNewsLetter\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"AddEmailToAllNewsLetterMutationInput\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AddEmailToAllNewsLetterMutationInput\"}}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"add_email_to_all_newsletter\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"AddEmailToAllNewsLetterMutationInput\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"field\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"messages\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":246}};\n doc.loc.source = {\"body\":\"mutation AddEmailToAllNewsLetter(\\n $AddEmailToAllNewsLetterMutationInput: AddEmailToAllNewsLetterMutationInput!\\n){\\n add_email_to_all_newsletter(input: $AddEmailToAllNewsLetterMutationInput){\\n errors{\\n field\\n messages\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"AddEmailToAllNewsLetter\"] = oneQuery(doc, \"AddEmailToAllNewsLetter\");\n \n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{ 'circle bb-fcenter' : _vm.withBackground }},[_c('span',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.onClickOutside),expression:\"onClickOutside\"}],staticClass:\"heartIt relative\",on:{\"click\":_vm.toggleTooltip}},[(_vm.hearted)?_c('span',{staticClass:\"fullHeart heartIcon --border-white absolute\",domProps:{\"innerHTML\":_vm._s(require('common/icons/fullheart.svg'))}}):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"emptyHeart heartIcon --white absolute\",domProps:{\"innerHTML\":_vm._s(require('common/icons/Heart.svg'))}}),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.displayTooltip)?_c('div',{staticClass:\"heartIt-wishBox\",style:({top: _vm.tooltipTopPosition + 'px'})},[_c('div',{staticClass:\"heartIt-wishBoxContent\"},[_c('div',{staticClass:\"heartIt-heartRow\",on:{\"click\":function($event){return _vm.updateWish('for_gift')}}},[_c('div',{staticClass:\"heartIt-heartContainer\"},[_c('span',{staticClass:\"heartIt-heartRowText figtree-font\"},[_vm._v(\"\\n Para regalar\\n \")]),_vm._v(\" \"),(!_vm.product.forGift)?_c('span',{staticClass:\"tooltipHeart\",domProps:{\"innerHTML\":_vm._s(require('common/icons/Heart.svg'))}}):_c('span',{staticClass:\"tooltipHeart heartIcon --active\",domProps:{\"innerHTML\":_vm._s(require('common/icons/fullheart.svg'))}})])]),_vm._v(\" \"),_c('div',{staticClass:\"heartIt-theDivision\"}),_vm._v(\" \"),_c('div',{staticClass:\"heartIt-heartRow\",on:{\"click\":function($event){return _vm.updateWish('for_me')}}},[_c('div',{staticClass:\"heartIt-heartContainer\"},[_c('span',{staticClass:\"heartIt-heartRowText figtree-font\"},[_vm._v(\"\\n Para mí\\n \")]),_vm._v(\" \"),(!_vm.product.forMe)?_c('span',{staticClass:\"tooltipHeart\",domProps:{\"innerHTML\":_vm._s(require('common/icons/Heart.svg'))}}):_c('span',{staticClass:\"tooltipHeart heartIcon --active\",domProps:{\"innerHTML\":_vm._s(require('common/icons/fullheart.svg'))}})])])])]):_vm._e()])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport { Watch } from 'vue-property-decorator';\nimport outSideClick from 'directives/outSideClick';\nimport { sendItemToAnalytics } from 'common/utils/sendAnalyticsEvent';\n\nimport CreateWishlistItem from '../../graphql/mutations/CreateWishlistItemMutation.graphql';\nimport DeleteWishlistItem from '../../graphql/mutations/DeleteWishlistItemMutation.graphql';\nimport UserWishlistItems from '../../graphql/queries/UserWishlistItems.graphql';\n\nVue.directive('outSideClick', outSideClick);\n\n@Component({\n directives: {\n clickOutside: outSideClick.directive,\n },\n apollo: {\n wishitems: UserWishlistItems,\n },\n props: {\n product: {\n type: Object,\n },\n emptyHeartColor: {\n type: String,\n default: '--black',\n },\n tooltipTopPosition: {\n type: String,\n default: '40',\n },\n withBackground: {\n type: Boolean,\n default: false,\n },\n },\n /*\n * default value for apollo queries\n */\n data() {\n return {\n wishItems: [],\n };\n },\n})\nexport default class HeartItComponent extends Vue {\n displayTooltip = false;\n\n /**\n * Open/close the whislist options tooltip.\n */\n toggleTooltip() {\n this.displayTooltip = !this.displayTooltip;\n }\n\n onClickOutside() {\n this.displayTooltip = false;\n }\n\n /**\n * Fill the heart in the box.\n * @returns {boolean} cant be null.\n */\n get hearted() {\n if (!this.wishitems) {\n return false;\n }\n const wish = this.wishitems.find(item => this.wish(item));\n return Boolean(wish);\n }\n\n /**\n * Find the product in the wish object.\n * @param wish {object} poroduct_id, to_who, id\n * @returns {boolean}\n */\n wish(item, toWho) {\n return toWho\n ? item.product_id === this.product.id && item.to_who === toWho\n : item.product_id === this.product.id;\n }\n\n /**\n * Mutation to store the wish, in case the wish exist it's going to delete.\n * @param toWho_ for who is the wish, options are for_me/for_gift\n */\n async updateWish(toWho_) {\n const wish = this.wishitems.filter(item =>\n this.wish(item, toWho_.toUpperCase()),\n );\n const exist = Boolean(wish.length);\n\n const response = await this.$apollo.mutate({\n mutation: exist ? DeleteWishlistItem : CreateWishlistItem,\n variables: {\n toWho: toWho_,\n productId: this.product.id,\n },\n });\n const { ok } = response.data.updateWishItem;\n const user = Boolean(\n response.data.updateWishItem.errors &&\n response.data.updateWishItem.errors.user,\n );\n if (user) {\n this.$router.push({\n name: 'login',\n });\n } else if (ok) {\n if (!exist) this.sendAnalytics(toWho_, this.product);\n this.$apollo.queries.wishitems.refetch();\n }\n }\n\n sendAnalytics(toWho_, product) {\n //TODO:: Find the way to send user's email to analytics\n sendItemToAnalytics(`add_to_wishlist_${toWho_}`, [product]);\n }\n\n /**\n * Watcher for property wisitems to change 'wish for me' and 'wish for gift'.\n */\n @Watch('wishitems')\n onWishItemsChange() {\n const forGift = this.wishitems.filter(item => this.wish(item, 'FOR_GIFT'));\n const forMe = this.wishitems.filter(item => this.wish(item, 'FOR_ME'));\n this.product.forGift = Boolean(forGift.length);\n this.product.forMe = Boolean(forMe.length);\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./HeartIt.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./HeartIt.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./HeartIt.vue.html?vue&type=template&id=9d7562e6&scoped=true&\"\nimport script from \"./HeartIt.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./HeartIt.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./HeartIt.scoped.scss?vue&type=style&index=0&id=9d7562e6&prod&lang=vueScss&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 \"9d7562e6\",\n null\n \n)\n\nexport default component.exports","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","module.exports = \"\"","var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar NumeralFormatter = function (numeralDecimalMark,\n numeralIntegerScale,\n numeralDecimalScale,\n numeralThousandsGroupStyle,\n numeralPositiveOnly,\n stripLeadingZeroes,\n prefix,\n signBeforePrefix,\n tailPrefix,\n delimiter) {\n var owner = this;\n\n owner.numeralDecimalMark = numeralDecimalMark || '.';\n owner.numeralIntegerScale = numeralIntegerScale > 0 ? numeralIntegerScale : 0;\n owner.numeralDecimalScale = numeralDecimalScale >= 0 ? numeralDecimalScale : 2;\n owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand;\n owner.numeralPositiveOnly = !!numeralPositiveOnly;\n owner.stripLeadingZeroes = stripLeadingZeroes !== false;\n owner.prefix = (prefix || prefix === '') ? prefix : '';\n owner.signBeforePrefix = !!signBeforePrefix;\n owner.tailPrefix = !!tailPrefix;\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ',';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n};\n\nNumeralFormatter.groupStyle = {\n thousand: 'thousand',\n lakh: 'lakh',\n wan: 'wan',\n none: 'none' \n};\n\nNumeralFormatter.prototype = {\n getRawValue: function (value) {\n return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.');\n },\n\n format: function (value) {\n var owner = this, parts, partSign, partSignAndPrefix, partInteger, partDecimal = '';\n\n // strip alphabet letters\n value = value.replace(/[A-Za-z]/g, '')\n // replace the first decimal mark with reserved placeholder\n .replace(owner.numeralDecimalMark, 'M')\n\n // strip non numeric letters except minus and \"M\"\n // this is to ensure prefix has been stripped\n .replace(/[^\\dM-]/g, '')\n\n // replace the leading minus with reserved placeholder\n .replace(/^\\-/, 'N')\n\n // strip the other minus sign (if present)\n .replace(/\\-/g, '')\n\n // replace the minus sign (if present)\n .replace('N', owner.numeralPositiveOnly ? '' : '-')\n\n // replace decimal mark\n .replace('M', owner.numeralDecimalMark);\n\n // strip any leading zeros\n if (owner.stripLeadingZeroes) {\n value = value.replace(/^(-)?0+(?=\\d)/, '$1');\n }\n\n partSign = value.slice(0, 1) === '-' ? '-' : '';\n if (typeof owner.prefix != 'undefined') {\n if (owner.signBeforePrefix) {\n partSignAndPrefix = partSign + owner.prefix;\n } else {\n partSignAndPrefix = owner.prefix + partSign;\n }\n } else {\n partSignAndPrefix = partSign;\n }\n \n partInteger = value;\n\n if (value.indexOf(owner.numeralDecimalMark) >= 0) {\n parts = value.split(owner.numeralDecimalMark);\n partInteger = parts[0];\n partDecimal = owner.numeralDecimalMark + parts[1].slice(0, owner.numeralDecimalScale);\n }\n\n if(partSign === '-') {\n partInteger = partInteger.slice(1);\n }\n\n if (owner.numeralIntegerScale > 0) {\n partInteger = partInteger.slice(0, owner.numeralIntegerScale);\n }\n\n switch (owner.numeralThousandsGroupStyle) {\n case NumeralFormatter.groupStyle.lakh:\n partInteger = partInteger.replace(/(\\d)(?=(\\d\\d)+\\d$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.wan:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{4})+$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.thousand:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{3})+$)/g, '$1' + owner.delimiter);\n\n break;\n }\n\n if (owner.tailPrefix) {\n return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix;\n }\n\n return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');\n }\n};\n\nvar NumeralFormatter_1 = NumeralFormatter;\n\nvar DateFormatter = function (datePattern, dateMin, dateMax) {\n var owner = this;\n\n owner.date = [];\n owner.blocks = [];\n owner.datePattern = datePattern;\n owner.dateMin = dateMin\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMin.length === 2) owner.dateMin.unshift(0);\n\n owner.dateMax = dateMax\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMax.length === 2) owner.dateMax.unshift(0);\n \n owner.initBlocks();\n};\n\nDateFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.datePattern.forEach(function (value) {\n if (value === 'Y') {\n owner.blocks.push(4);\n } else {\n owner.blocks.push(2);\n }\n });\n },\n\n getISOFormatDate: function () {\n var owner = this,\n date = owner.date;\n\n return date[2] ? (\n date[2] + '-' + owner.addLeadingZero(date[1]) + '-' + owner.addLeadingZero(date[0])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getValidatedDate: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.datePattern[index]) {\n case 'd':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 3) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 31) {\n sub = '31';\n }\n\n break;\n\n case 'm':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 1) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 12) {\n sub = '12';\n }\n\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedDateString(result);\n },\n\n getFixedDateString: function (value) {\n var owner = this, datePattern = owner.datePattern, date = [],\n dayIndex = 0, monthIndex = 0, yearIndex = 0,\n dayStartIndex = 0, monthStartIndex = 0, yearStartIndex = 0,\n day, month, year, fullYearDone = false;\n\n // mm-dd || dd-mm\n if (value.length === 4 && datePattern[0].toLowerCase() !== 'y' && datePattern[1].toLowerCase() !== 'y') {\n dayStartIndex = datePattern[0] === 'd' ? 0 : 2;\n monthStartIndex = 2 - dayStartIndex;\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\n date = this.getFixedDate(day, month, 0);\n }\n\n // yyyy-mm-dd || yyyy-dd-mm || mm-dd-yyyy || dd-mm-yyyy || dd-yyyy-mm || mm-yyyy-dd\n if (value.length === 8) {\n datePattern.forEach(function (type, index) {\n switch (type) {\n case 'd':\n dayIndex = index;\n break;\n case 'm':\n monthIndex = index;\n break;\n default:\n yearIndex = index;\n break;\n }\n });\n\n yearStartIndex = yearIndex * 2;\n dayStartIndex = (dayIndex <= yearIndex) ? dayIndex * 2 : (dayIndex * 2 + 2);\n monthStartIndex = (monthIndex <= yearIndex) ? monthIndex * 2 : (monthIndex * 2 + 2);\n\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = this.getFixedDate(day, month, year);\n }\n\n // mm-yy || yy-mm\n if (value.length === 4 && (datePattern[0] === 'y' || datePattern[1] === 'y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 2;\n yearStartIndex = 2 - monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 2), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 2).length === 2;\n\n date = [0, month, year];\n }\n\n // mm-yyyy || yyyy-mm\n if (value.length === 6 && (datePattern[0] === 'Y' || datePattern[1] === 'Y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 4;\n yearStartIndex = 2 - 0.5 * monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = [0, month, year];\n }\n\n date = owner.getRangeFixedDate(date);\n owner.date = date;\n\n var result = date.length === 0 ? value : datePattern.reduce(function (previous, current) {\n switch (current) {\n case 'd':\n return previous + (date[0] === 0 ? '' : owner.addLeadingZero(date[0]));\n case 'm':\n return previous + (date[1] === 0 ? '' : owner.addLeadingZero(date[1]));\n case 'y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], false) : '');\n case 'Y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], true) : '');\n }\n }, '');\n\n return result;\n },\n\n getRangeFixedDate: function (date) {\n var owner = this,\n datePattern = owner.datePattern,\n dateMin = owner.dateMin || [],\n dateMax = owner.dateMax || [];\n\n if (!date.length || (dateMin.length < 3 && dateMax.length < 3)) return date;\n\n if (\n datePattern.find(function(x) {\n return x.toLowerCase() === 'y';\n }) &&\n date[2] === 0\n ) return date;\n\n if (dateMax.length && (dateMax[2] < date[2] || (\n dateMax[2] === date[2] && (dateMax[1] < date[1] || (\n dateMax[1] === date[1] && dateMax[0] < date[0]\n ))\n ))) return dateMax;\n\n if (dateMin.length && (dateMin[2] > date[2] || (\n dateMin[2] === date[2] && (dateMin[1] > date[1] || (\n dateMin[1] === date[1] && dateMin[0] > date[0]\n ))\n ))) return dateMin;\n\n return date;\n },\n\n getFixedDate: function (day, month, year) {\n day = Math.min(day, 31);\n month = Math.min(month, 12);\n year = parseInt((year || 0), 10);\n\n if ((month < 7 && month % 2 === 0) || (month > 8 && month % 2 === 1)) {\n day = Math.min(day, month === 2 ? (this.isLeapYear(year) ? 29 : 28) : 30);\n }\n\n return [day, month, year];\n },\n\n isLeapYear: function (year) {\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n },\n\n addLeadingZeroForYear: function (number, fullYearMode) {\n if (fullYearMode) {\n return (number < 10 ? '000' : (number < 100 ? '00' : (number < 1000 ? '0' : ''))) + number;\n }\n\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar DateFormatter_1 = DateFormatter;\n\nvar TimeFormatter = function (timePattern, timeFormat) {\n var owner = this;\n\n owner.time = [];\n owner.blocks = [];\n owner.timePattern = timePattern;\n owner.timeFormat = timeFormat;\n owner.initBlocks();\n};\n\nTimeFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.timePattern.forEach(function () {\n owner.blocks.push(2);\n });\n },\n\n getISOFormatTime: function () {\n var owner = this,\n time = owner.time;\n\n return time[2] ? (\n owner.addLeadingZero(time[0]) + ':' + owner.addLeadingZero(time[1]) + ':' + owner.addLeadingZero(time[2])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getTimeFormatOptions: function () {\n var owner = this;\n if (String(owner.timeFormat) === '12') {\n return {\n maxHourFirstDigit: 1,\n maxHours: 12,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n }\n\n return {\n maxHourFirstDigit: 2,\n maxHours: 23,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n },\n\n getValidatedTime: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n var timeFormatOptions = owner.getTimeFormatOptions();\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.timePattern[index]) {\n\n case 'h':\n if (parseInt(sub0, 10) > timeFormatOptions.maxHourFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxHours) {\n sub = timeFormatOptions.maxHours + '';\n }\n\n break;\n\n case 'm':\n case 's':\n if (parseInt(sub0, 10) > timeFormatOptions.maxMinutesFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxMinutes) {\n sub = timeFormatOptions.maxMinutes + '';\n }\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedTimeString(result);\n },\n\n getFixedTimeString: function (value) {\n var owner = this, timePattern = owner.timePattern, time = [],\n secondIndex = 0, minuteIndex = 0, hourIndex = 0,\n secondStartIndex = 0, minuteStartIndex = 0, hourStartIndex = 0,\n second, minute, hour;\n\n if (value.length === 6) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 's':\n secondIndex = index * 2;\n break;\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n secondStartIndex = secondIndex;\n\n second = parseInt(value.slice(secondStartIndex, secondStartIndex + 2), 10);\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n if (value.length === 4 && owner.timePattern.indexOf('s') < 0) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n\n second = 0;\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n owner.time = time;\n\n return time.length === 0 ? value : timePattern.reduce(function (previous, current) {\n switch (current) {\n case 's':\n return previous + owner.addLeadingZero(time[2]);\n case 'm':\n return previous + owner.addLeadingZero(time[1]);\n case 'h':\n return previous + owner.addLeadingZero(time[0]);\n }\n }, '');\n },\n\n getFixedTime: function (hour, minute, second) {\n second = Math.min(parseInt(second || 0, 10), 60);\n minute = Math.min(minute, 60);\n hour = Math.min(hour, 60);\n\n return [hour, minute, second];\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar TimeFormatter_1 = TimeFormatter;\n\nvar PhoneFormatter = function (formatter, delimiter) {\n var owner = this;\n\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ' ';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n\n owner.formatter = formatter;\n};\n\nPhoneFormatter.prototype = {\n setFormatter: function (formatter) {\n this.formatter = formatter;\n },\n\n format: function (phoneNumber) {\n var owner = this;\n\n owner.formatter.clear();\n\n // only keep number and +\n phoneNumber = phoneNumber.replace(/[^\\d+]/g, '');\n\n // strip non-leading +\n phoneNumber = phoneNumber.replace(/^\\+/, 'B').replace(/\\+/g, '').replace('B', '+');\n\n // strip delimiter\n phoneNumber = phoneNumber.replace(owner.delimiterRE, '');\n\n var result = '', current, validated = false;\n\n for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) {\n current = owner.formatter.inputDigit(phoneNumber.charAt(i));\n\n // has ()- or space inside\n if (/[\\s()-]/g.test(current)) {\n result = current;\n\n validated = true;\n } else {\n if (!validated) {\n result = current;\n }\n // else: over length input\n // it turns to invalid number again\n }\n }\n\n // strip ()\n // e.g. US: 7161234567 returns (716) 123-4567\n result = result.replace(/[()]/g, '');\n // replace library delimiter with user customized delimiter\n result = result.replace(/[\\s-]/g, owner.delimiter);\n\n return result;\n }\n};\n\nvar PhoneFormatter_1 = PhoneFormatter;\n\nvar CreditCardDetector = {\n blocks: {\n uatp: [4, 5, 6],\n amex: [4, 6, 5],\n diners: [4, 6, 4],\n discover: [4, 4, 4, 4],\n mastercard: [4, 4, 4, 4],\n dankort: [4, 4, 4, 4],\n instapayment: [4, 4, 4, 4],\n jcb15: [4, 6, 5],\n jcb: [4, 4, 4, 4],\n maestro: [4, 4, 4, 4],\n visa: [4, 4, 4, 4],\n mir: [4, 4, 4, 4],\n unionPay: [4, 4, 4, 4],\n general: [4, 4, 4, 4]\n },\n\n re: {\n // starts with 1; 15 digits, not starts with 1800 (jcb card)\n uatp: /^(?!1800)1\\d{0,14}/,\n\n // starts with 34/37; 15 digits\n amex: /^3[47]\\d{0,13}/,\n\n // starts with 6011/65/644-649; 16 digits\n discover: /^(?:6011|65\\d{0,2}|64[4-9]\\d?)\\d{0,12}/,\n\n // starts with 300-305/309 or 36/38/39; 14 digits\n diners: /^3(?:0([0-5]|9)|[689]\\d?)\\d{0,11}/,\n\n // starts with 51-55/2221–2720; 16 digits\n mastercard: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,12}/,\n\n // starts with 5019/4175/4571; 16 digits\n dankort: /^(5019|4175|4571)\\d{0,12}/,\n\n // starts with 637-639; 16 digits\n instapayment: /^63[7-9]\\d{0,13}/,\n\n // starts with 2131/1800; 15 digits\n jcb15: /^(?:2131|1800)\\d{0,11}/,\n\n // starts with 2131/1800/35; 16 digits\n jcb: /^(?:35\\d{0,2})\\d{0,12}/,\n\n // starts with 50/56-58/6304/67; 16 digits\n maestro: /^(?:5[0678]\\d{0,2}|6304|67\\d{0,2})\\d{0,12}/,\n\n // starts with 22; 16 digits\n mir: /^220[0-4]\\d{0,12}/,\n\n // starts with 4; 16 digits\n visa: /^4\\d{0,15}/,\n\n // starts with 62/81; 16 digits\n unionPay: /^(62|81)\\d{0,14}/\n },\n\n getStrictBlocks: function (block) {\n var total = block.reduce(function (prev, current) {\n return prev + current;\n }, 0);\n\n return block.concat(19 - total);\n },\n\n getInfo: function (value, strictMode) {\n var blocks = CreditCardDetector.blocks,\n re = CreditCardDetector.re;\n\n // Some credit card can have up to 19 digits number.\n // Set strictMode to true will remove the 16 max-length restrain,\n // however, I never found any website validate card number like\n // this, hence probably you don't want to enable this option.\n strictMode = !!strictMode;\n\n for (var key in re) {\n if (re[key].test(value)) {\n var matchedBlocks = blocks[key];\n return {\n type: key,\n blocks: strictMode ? this.getStrictBlocks(matchedBlocks) : matchedBlocks\n };\n }\n }\n\n return {\n type: 'unknown',\n blocks: strictMode ? this.getStrictBlocks(blocks.general) : blocks.general\n };\n }\n};\n\nvar CreditCardDetector_1 = CreditCardDetector;\n\nvar Util = {\n noop: function () {\n },\n\n strip: function (value, re) {\n return value.replace(re, '');\n },\n\n getPostDelimiter: function (value, delimiter, delimiters) {\n // single delimiter\n if (delimiters.length === 0) {\n return value.slice(-delimiter.length) === delimiter ? delimiter : '';\n }\n\n // multiple delimiters\n var matchedDelimiter = '';\n delimiters.forEach(function (current) {\n if (value.slice(-current.length) === current) {\n matchedDelimiter = current;\n }\n });\n\n return matchedDelimiter;\n },\n\n getDelimiterREByDelimiter: function (delimiter) {\n return new RegExp(delimiter.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1'), 'g');\n },\n\n getNextCursorPosition: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n // If cursor was at the end of value, just place it back.\n // Because new value could contain additional chars.\n if (oldValue.length === prevPos) {\n return newValue.length;\n }\n\n return prevPos + this.getPositionOffset(prevPos, oldValue, newValue, delimiter ,delimiters);\n },\n\n getPositionOffset: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n var oldRawValue, newRawValue, lengthOffset;\n\n oldRawValue = this.stripDelimiters(oldValue.slice(0, prevPos), delimiter, delimiters);\n newRawValue = this.stripDelimiters(newValue.slice(0, prevPos), delimiter, delimiters);\n lengthOffset = oldRawValue.length - newRawValue.length;\n\n return (lengthOffset !== 0) ? (lengthOffset / Math.abs(lengthOffset)) : 0;\n },\n\n stripDelimiters: function (value, delimiter, delimiters) {\n var owner = this;\n\n // single delimiter\n if (delimiters.length === 0) {\n var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';\n\n return value.replace(delimiterRE, '');\n }\n\n // multiple delimiters\n delimiters.forEach(function (current) {\n current.split('').forEach(function (letter) {\n value = value.replace(owner.getDelimiterREByDelimiter(letter), '');\n });\n });\n\n return value;\n },\n\n headStr: function (str, length) {\n return str.slice(0, length);\n },\n\n getMaxLength: function (blocks) {\n return blocks.reduce(function (previous, current) {\n return previous + current;\n }, 0);\n },\n\n // strip prefix\n // Before type | After type | Return value\n // PEFIX-... | PEFIX-... | ''\n // PREFIX-123 | PEFIX-123 | 123\n // PREFIX-123 | PREFIX-23 | 23\n // PREFIX-123 | PREFIX-1234 | 1234\n getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix) {\n // No prefix\n if (prefixLength === 0) {\n return value;\n }\n\n // Value is prefix\n if (value === prefix && value !== '') {\n return '';\n }\n\n if (signBeforePrefix && (value.slice(0, 1) == '-')) {\n var prev = (prevResult.slice(0, 1) == '-') ? prevResult.slice(1) : prevResult;\n return '-' + this.getPrefixStrippedValue(value.slice(1), prefix, prefixLength, prev, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix);\n }\n\n // Pre result prefix string does not match pre-defined prefix\n if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n } else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n }\n\n var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);\n\n // New value has issue, someone typed in between prefix letters\n // Revert to pre value\n if (value.slice(0, prefixLength) !== prefix && !tailPrefix) {\n return prevValue.slice(prefixLength);\n } else if (value.slice(-prefixLength) !== prefix && tailPrefix) {\n return prevValue.slice(0, -prefixLength - 1);\n }\n\n // No issue, strip prefix for new value\n return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength);\n },\n\n getFirstDiffIndex: function (prev, current) {\n var index = 0;\n\n while (prev.charAt(index) === current.charAt(index)) {\n if (prev.charAt(index++) === '') {\n return -1;\n }\n }\n\n return index;\n },\n\n getFormattedValue: function (value, blocks, blocksLength, delimiter, delimiters, delimiterLazyShow) {\n var result = '',\n multipleDelimiters = delimiters.length > 0,\n currentDelimiter = '';\n\n // no options, normal input\n if (blocksLength === 0) {\n return value;\n }\n\n blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n rest = value.slice(length);\n\n if (multipleDelimiters) {\n currentDelimiter = delimiters[delimiterLazyShow ? (index - 1) : index] || currentDelimiter;\n } else {\n currentDelimiter = delimiter;\n }\n\n if (delimiterLazyShow) {\n if (index > 0) {\n result += currentDelimiter;\n }\n\n result += sub;\n } else {\n result += sub;\n\n if (sub.length === length && index < blocksLength - 1) {\n result += currentDelimiter;\n }\n }\n\n // update remaining string\n value = rest;\n }\n });\n\n return result;\n },\n\n // move cursor to the end\n // the first time user focuses on an input with prefix\n fixPrefixCursor: function (el, prefix, delimiter, delimiters) {\n if (!el) {\n return;\n }\n\n var val = el.value,\n appendix = delimiter || (delimiters[0] || ' ');\n\n if (!el.setSelectionRange || !prefix || (prefix.length + appendix.length) <= val.length) {\n return;\n }\n\n var len = val.length * 2;\n\n // set timeout to avoid blink\n setTimeout(function () {\n el.setSelectionRange(len, len);\n }, 1);\n },\n\n // Check if input field is fully selected\n checkFullSelection: function(value) {\n try {\n var selection = window.getSelection() || document.getSelection() || {};\n return selection.toString().length === value.length;\n } catch (ex) {\n // Ignore\n }\n\n return false;\n },\n\n setSelection: function (element, position, doc) {\n if (element !== this.getActiveElement(doc)) {\n return;\n }\n\n // cursor is already in the end\n if (element && element.value.length <= position) {\n return;\n }\n\n if (element.createTextRange) {\n var range = element.createTextRange();\n\n range.move('character', position);\n range.select();\n } else {\n try {\n element.setSelectionRange(position, position);\n } catch (e) {\n // eslint-disable-next-line\n console.warn('The input element type does not support selection');\n }\n }\n },\n\n getActiveElement: function(parent) {\n var activeElement = parent.activeElement;\n if (activeElement && activeElement.shadowRoot) {\n return this.getActiveElement(activeElement.shadowRoot);\n }\n return activeElement;\n },\n\n isAndroid: function () {\n return navigator && /android/i.test(navigator.userAgent);\n },\n\n // On Android chrome, the keyup and keydown events\n // always return key code 229 as a composition that\n // buffers the user’s keystrokes\n // see https://github.com/nosir/cleave.js/issues/147\n isAndroidBackspaceKeydown: function (lastInputValue, currentInputValue) {\n if (!this.isAndroid() || !lastInputValue || !currentInputValue) {\n return false;\n }\n\n return currentInputValue === lastInputValue.slice(0, -1);\n }\n};\n\nvar Util_1 = Util;\n\n/**\n * Props Assignment\n *\n * Separate this, so react module can share the usage\n */\nvar DefaultProperties = {\n // Maybe change to object-assign\n // for now just keep it as simple\n assign: function (target, opts) {\n target = target || {};\n opts = opts || {};\n\n // credit card\n target.creditCard = !!opts.creditCard;\n target.creditCardStrictMode = !!opts.creditCardStrictMode;\n target.creditCardType = '';\n target.onCreditCardTypeChanged = opts.onCreditCardTypeChanged || (function () {});\n\n // phone\n target.phone = !!opts.phone;\n target.phoneRegionCode = opts.phoneRegionCode || 'AU';\n target.phoneFormatter = {};\n\n // time\n target.time = !!opts.time;\n target.timePattern = opts.timePattern || ['h', 'm', 's'];\n target.timeFormat = opts.timeFormat || '24';\n target.timeFormatter = {};\n\n // date\n target.date = !!opts.date;\n target.datePattern = opts.datePattern || ['d', 'm', 'Y'];\n target.dateMin = opts.dateMin || '';\n target.dateMax = opts.dateMax || '';\n target.dateFormatter = {};\n\n // numeral\n target.numeral = !!opts.numeral;\n target.numeralIntegerScale = opts.numeralIntegerScale > 0 ? opts.numeralIntegerScale : 0;\n target.numeralDecimalScale = opts.numeralDecimalScale >= 0 ? opts.numeralDecimalScale : 2;\n target.numeralDecimalMark = opts.numeralDecimalMark || '.';\n target.numeralThousandsGroupStyle = opts.numeralThousandsGroupStyle || 'thousand';\n target.numeralPositiveOnly = !!opts.numeralPositiveOnly;\n target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;\n target.signBeforePrefix = !!opts.signBeforePrefix;\n target.tailPrefix = !!opts.tailPrefix;\n\n // others\n target.swapHiddenInput = !!opts.swapHiddenInput;\n \n target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;\n\n target.uppercase = !!opts.uppercase;\n target.lowercase = !!opts.lowercase;\n\n target.prefix = (target.creditCard || target.date) ? '' : (opts.prefix || '');\n target.noImmediatePrefix = !!opts.noImmediatePrefix;\n target.prefixLength = target.prefix.length;\n target.rawValueTrimPrefix = !!opts.rawValueTrimPrefix;\n target.copyDelimiter = !!opts.copyDelimiter;\n\n target.initValue = (opts.initValue !== undefined && opts.initValue !== null) ? opts.initValue.toString() : '';\n\n target.delimiter =\n (opts.delimiter || opts.delimiter === '') ? opts.delimiter :\n (opts.date ? '/' :\n (opts.time ? ':' :\n (opts.numeral ? ',' :\n (opts.phone ? ' ' :\n ' '))));\n target.delimiterLength = target.delimiter.length;\n target.delimiterLazyShow = !!opts.delimiterLazyShow;\n target.delimiters = opts.delimiters || [];\n\n target.blocks = opts.blocks || [];\n target.blocksLength = target.blocks.length;\n\n target.root = (typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window;\n target.document = opts.document || target.root.document;\n\n target.maxLength = 0;\n\n target.backspace = false;\n target.result = '';\n\n target.onValueChanged = opts.onValueChanged || (function () {});\n\n return target;\n }\n};\n\nvar DefaultProperties_1 = DefaultProperties;\n\n/**\n * Construct a new Cleave instance by passing the configuration object\n *\n * @param {String | HTMLElement} element\n * @param {Object} opts\n */\nvar Cleave = function (element, opts) {\n var owner = this;\n var hasMultipleElements = false;\n\n if (typeof element === 'string') {\n owner.element = document.querySelector(element);\n hasMultipleElements = document.querySelectorAll(element).length > 1;\n } else {\n if (typeof element.length !== 'undefined' && element.length > 0) {\n owner.element = element[0];\n hasMultipleElements = element.length > 1;\n } else {\n owner.element = element;\n }\n }\n\n if (!owner.element) {\n throw new Error('[cleave.js] Please check the element');\n }\n\n if (hasMultipleElements) {\n try {\n // eslint-disable-next-line\n console.warn('[cleave.js] Multiple input fields matched, cleave.js will only take the first one.');\n } catch (e) {\n // Old IE\n }\n }\n\n opts.initValue = owner.element.value;\n\n owner.properties = Cleave.DefaultProperties.assign({}, opts);\n\n owner.init();\n};\n\nCleave.prototype = {\n init: function () {\n var owner = this, pps = owner.properties;\n\n // no need to use this lib\n if (!pps.numeral && !pps.phone && !pps.creditCard && !pps.time && !pps.date && (pps.blocksLength === 0 && !pps.prefix)) {\n owner.onInput(pps.initValue);\n\n return;\n }\n\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n\n owner.isAndroid = Cleave.Util.isAndroid();\n owner.lastInputValue = '';\n owner.isBackward = '';\n\n owner.onChangeListener = owner.onChange.bind(owner);\n owner.onKeyDownListener = owner.onKeyDown.bind(owner);\n owner.onFocusListener = owner.onFocus.bind(owner);\n owner.onCutListener = owner.onCut.bind(owner);\n owner.onCopyListener = owner.onCopy.bind(owner);\n\n owner.initSwapHiddenInput();\n\n owner.element.addEventListener('input', owner.onChangeListener);\n owner.element.addEventListener('keydown', owner.onKeyDownListener);\n owner.element.addEventListener('focus', owner.onFocusListener);\n owner.element.addEventListener('cut', owner.onCutListener);\n owner.element.addEventListener('copy', owner.onCopyListener);\n\n\n owner.initPhoneFormatter();\n owner.initDateFormatter();\n owner.initTimeFormatter();\n owner.initNumeralFormatter();\n\n // avoid touch input field if value is null\n // otherwise Firefox will add red box-shadow for \n if (pps.initValue || (pps.prefix && !pps.noImmediatePrefix)) {\n owner.onInput(pps.initValue);\n }\n },\n\n initSwapHiddenInput: function () {\n var owner = this, pps = owner.properties;\n if (!pps.swapHiddenInput) return;\n\n var inputFormatter = owner.element.cloneNode(true);\n owner.element.parentNode.insertBefore(inputFormatter, owner.element);\n\n owner.elementSwapHidden = owner.element;\n owner.elementSwapHidden.type = 'hidden';\n\n owner.element = inputFormatter;\n owner.element.id = '';\n },\n\n initNumeralFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.numeral) {\n return;\n }\n\n pps.numeralFormatter = new Cleave.NumeralFormatter(\n pps.numeralDecimalMark,\n pps.numeralIntegerScale,\n pps.numeralDecimalScale,\n pps.numeralThousandsGroupStyle,\n pps.numeralPositiveOnly,\n pps.stripLeadingZeroes,\n pps.prefix,\n pps.signBeforePrefix,\n pps.tailPrefix,\n pps.delimiter\n );\n },\n\n initTimeFormatter: function() {\n var owner = this, pps = owner.properties;\n\n if (!pps.time) {\n return;\n }\n\n pps.timeFormatter = new Cleave.TimeFormatter(pps.timePattern, pps.timeFormat);\n pps.blocks = pps.timeFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initDateFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.date) {\n return;\n }\n\n pps.dateFormatter = new Cleave.DateFormatter(pps.datePattern, pps.dateMin, pps.dateMax);\n pps.blocks = pps.dateFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initPhoneFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.phone) {\n return;\n }\n\n // Cleave.AsYouTypeFormatter should be provided by\n // external google closure lib\n try {\n pps.phoneFormatter = new Cleave.PhoneFormatter(\n new pps.root.Cleave.AsYouTypeFormatter(pps.phoneRegionCode),\n pps.delimiter\n );\n } catch (ex) {\n throw new Error('[cleave.js] Please include phone-type-formatter.{country}.js lib');\n }\n },\n\n onKeyDown: function (event) {\n var owner = this,\n charCode = event.which || event.keyCode;\n\n owner.lastInputValue = owner.element.value;\n owner.isBackward = charCode === 8;\n },\n\n onChange: function (event) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n owner.isBackward = owner.isBackward || event.inputType === 'deleteContentBackward';\n\n var postDelimiter = Util.getPostDelimiter(owner.lastInputValue, pps.delimiter, pps.delimiters);\n\n if (owner.isBackward && postDelimiter) {\n pps.postDelimiterBackspace = postDelimiter;\n } else {\n pps.postDelimiterBackspace = false;\n }\n\n this.onInput(this.element.value);\n },\n\n onFocus: function () {\n var owner = this,\n pps = owner.properties;\n owner.lastInputValue = owner.element.value;\n\n if (pps.prefix && pps.noImmediatePrefix && !owner.element.value) {\n this.onInput(pps.prefix);\n }\n\n Cleave.Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);\n },\n\n onCut: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n this.onInput('');\n },\n\n onCopy: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n },\n\n copyClipboardData: function (e) {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n inputValue = owner.element.value,\n textToCopy = '';\n\n if (!pps.copyDelimiter) {\n textToCopy = Util.stripDelimiters(inputValue, pps.delimiter, pps.delimiters);\n } else {\n textToCopy = inputValue;\n }\n\n try {\n if (e.clipboardData) {\n e.clipboardData.setData('Text', textToCopy);\n } else {\n window.clipboardData.setData('Text', textToCopy);\n }\n\n e.preventDefault();\n } catch (ex) {\n // empty\n }\n },\n\n onInput: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n // case 1: delete one more character \"4\"\n // 1234*| -> hit backspace -> 123|\n // case 2: last character is not delimiter which is:\n // 12|34* -> hit backspace -> 1|34*\n // note: no need to apply this for numeral mode\n var postDelimiterAfter = Util.getPostDelimiter(value, pps.delimiter, pps.delimiters);\n if (!pps.numeral && pps.postDelimiterBackspace && !postDelimiterAfter) {\n value = Util.headStr(value, value.length - pps.postDelimiterBackspace.length);\n }\n\n // phone formatter\n if (pps.phone) {\n if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {\n pps.result = pps.prefix + pps.phoneFormatter.format(value).slice(pps.prefix.length);\n } else {\n pps.result = pps.phoneFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // numeral formatter\n if (pps.numeral) {\n // Do not show prefix when noImmediatePrefix is specified\n // This mostly because we need to show user the native input placeholder\n if (pps.prefix && pps.noImmediatePrefix && value.length === 0) {\n pps.result = '';\n } else {\n pps.result = pps.numeralFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // date\n if (pps.date) {\n value = pps.dateFormatter.getValidatedDate(value);\n }\n\n // time\n if (pps.time) {\n value = pps.timeFormatter.getValidatedTime(value);\n }\n\n // strip delimiters\n value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);\n\n // strip prefix\n value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n\n // strip non-numeric characters\n value = pps.numericOnly ? Util.strip(value, /[^\\d]/g) : value;\n\n // convert case\n value = pps.uppercase ? value.toUpperCase() : value;\n value = pps.lowercase ? value.toLowerCase() : value;\n\n // prevent from showing prefix when no immediate option enabled with empty input value\n if (pps.prefix) {\n if (pps.tailPrefix) {\n value = value + pps.prefix;\n } else {\n value = pps.prefix + value;\n }\n\n\n // no blocks specified, no need to do formatting\n if (pps.blocksLength === 0) {\n pps.result = value;\n owner.updateValueState();\n\n return;\n }\n }\n\n // update credit card props\n if (pps.creditCard) {\n owner.updateCreditCardPropsByValue(value);\n }\n\n // strip over length characters\n value = Util.headStr(value, pps.maxLength);\n\n // apply blocks\n pps.result = Util.getFormattedValue(\n value,\n pps.blocks, pps.blocksLength,\n pps.delimiter, pps.delimiters, pps.delimiterLazyShow\n );\n\n owner.updateValueState();\n },\n\n updateCreditCardPropsByValue: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util,\n creditCardInfo;\n\n // At least one of the first 4 characters has changed\n if (Util.headStr(pps.result, 4) === Util.headStr(value, 4)) {\n return;\n }\n\n creditCardInfo = Cleave.CreditCardDetector.getInfo(value, pps.creditCardStrictMode);\n\n pps.blocks = creditCardInfo.blocks;\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Util.getMaxLength(pps.blocks);\n\n // credit card type changed\n if (pps.creditCardType !== creditCardInfo.type) {\n pps.creditCardType = creditCardInfo.type;\n\n pps.onCreditCardTypeChanged.call(owner, pps.creditCardType);\n }\n },\n\n updateValueState: function () {\n var owner = this,\n Util = Cleave.Util,\n pps = owner.properties;\n\n if (!owner.element) {\n return;\n }\n\n var endPos = owner.element.selectionEnd;\n var oldValue = owner.element.value;\n var newValue = pps.result;\n\n endPos = Util.getNextCursorPosition(endPos, oldValue, newValue, pps.delimiter, pps.delimiters);\n\n // fix Android browser type=\"text\" input field\n // cursor not jumping issue\n if (owner.isAndroid) {\n window.setTimeout(function () {\n owner.element.value = newValue;\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n }, 1);\n\n return;\n }\n\n owner.element.value = newValue;\n if (pps.swapHiddenInput) owner.elementSwapHidden.value = owner.getRawValue();\n\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n },\n\n callOnValueChanged: function () {\n var owner = this,\n pps = owner.properties;\n\n pps.onValueChanged.call(owner, {\n target: {\n name: owner.element.name,\n value: pps.result,\n rawValue: owner.getRawValue()\n }\n });\n },\n\n setPhoneRegionCode: function (phoneRegionCode) {\n var owner = this, pps = owner.properties;\n\n pps.phoneRegionCode = phoneRegionCode;\n owner.initPhoneFormatter();\n owner.onChange();\n },\n\n setRawValue: function (value) {\n var owner = this, pps = owner.properties;\n\n value = value !== undefined && value !== null ? value.toString() : '';\n\n if (pps.numeral) {\n value = value.replace('.', pps.numeralDecimalMark);\n }\n\n pps.postDelimiterBackspace = false;\n\n owner.element.value = value;\n owner.onInput(value);\n },\n\n getRawValue: function () {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n rawValue = owner.element.value;\n\n if (pps.rawValueTrimPrefix) {\n rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n }\n\n if (pps.numeral) {\n rawValue = pps.numeralFormatter.getRawValue(rawValue);\n } else {\n rawValue = Util.stripDelimiters(rawValue, pps.delimiter, pps.delimiters);\n }\n\n return rawValue;\n },\n\n getISOFormatDate: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.date ? pps.dateFormatter.getISOFormatDate() : '';\n },\n\n getISOFormatTime: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.time ? pps.timeFormatter.getISOFormatTime() : '';\n },\n\n getFormattedValue: function () {\n return this.element.value;\n },\n\n destroy: function () {\n var owner = this;\n\n owner.element.removeEventListener('input', owner.onChangeListener);\n owner.element.removeEventListener('keydown', owner.onKeyDownListener);\n owner.element.removeEventListener('focus', owner.onFocusListener);\n owner.element.removeEventListener('cut', owner.onCutListener);\n owner.element.removeEventListener('copy', owner.onCopyListener);\n },\n\n toString: function () {\n return '[Cleave Object]';\n }\n};\n\nCleave.NumeralFormatter = NumeralFormatter_1;\nCleave.DateFormatter = DateFormatter_1;\nCleave.TimeFormatter = TimeFormatter_1;\nCleave.PhoneFormatter = PhoneFormatter_1;\nCleave.CreditCardDetector = CreditCardDetector_1;\nCleave.Util = Util_1;\nCleave.DefaultProperties = DefaultProperties_1;\n\n// for angular directive\n((typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window)['Cleave'] = Cleave;\n\n// CommonJS\nvar Cleave_1 = Cleave;\n\nexport default Cleave_1;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"BbHorizontalSlider\"},[(_vm.showLeftScroll)?_c('div',{staticClass:\"Chevron-icon arrow --left icon-icon_arrow\",class:{'--rotate': _vm.onlineReservation, '--checkout': _vm.isCheckout},domProps:{\"innerHTML\":_vm._s(require('common/icons/Chevron.svg'))},on:{\"click\":function($event){return _vm.scrollLeft()}}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"wrapper row\"},[_c('ul',{ref:\"list\",staticClass:\"list\",style:({ transform: `translateX(${_vm.translateX}%)` })},_vm._l((_vm.items),function(item,index){return _c('li',{key:item.id,class:['item', _vm.itemClass, {'bigItem' : _vm.bigItem}]},[_vm._t(\"item\",null,{\"item\":item,\"index\":index})],2)}),0)]),_vm._v(\" \"),(_vm.showRightScroll)?_c('div',{staticClass:\"Chevron-icon arrow --right icon-icon_arrow\",class:{'--rotate': _vm.onlineReservation, '--checkout': _vm.isCheckout},domProps:{\"innerHTML\":_vm._s(require('common/icons/Chevron.svg'))},on:{\"click\":function($event){return _vm.scrollRight()}}}):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport { Watch } from 'vue-property-decorator';\n\n@Component({\n props: {\n items: {\n required: true,\n type: Array,\n },\n itemClass: {\n default: '',\n },\n arrowClass: {\n default: '',\n },\n isCheckout: {\n type: Boolean,\n default: false,\n },\n bigItem: {\n type: Boolean,\n default: false,\n },\n onlineReservation: {\n type: Boolean,\n default: false,\n }\n },\n})\nexport default class BbHorizontalSliderComponent extends Vue {\n itemsToShow = 1;\n scrollIndex = 0;\n\n mounted() {\n this.calculateItemsToShow();\n this.orderByDiscount();\n }\n\n @Watch('items')\n resetPosition() {\n this.scrollIndex = 0;\n }\n\n get translateX() {\n return -(this.scrollIndex / this.itemsToShow) * 100;\n }\n\n get showLeftScroll() {\n return this.scrollIndex > 0;\n }\n\n get showRightScroll() {\n return this.scrollIndex < this.items.length - this.itemsToShow;\n }\n\n @Watch('items.length')\n itemsLengthChanged() {\n Vue.nextTick(() => {\n this.calculateItemsToShow();\n });\n }\n\n calculateItemsToShow() {\n const listElement = this.$refs.list;\n const firstChild = listElement.firstElementChild;\n if (firstChild) {\n this.itemsToShow = Math.round((\n listElement.offsetWidth / firstChild.offsetWidth\n ));\n } else {\n this.itemsToShow = 1;\n }\n }\n\n scrollLeft() {\n this.calculateItemsToShow();\n if (this.showLeftScroll) {\n this.scrollIndex -= 1;\n }\n }\n\n scrollRight() {\n this.calculateItemsToShow();\n if (this.showRightScroll) {\n this.scrollIndex += 1;\n }\n }\n\n orderByDiscount() {\n this.items.sort((a, b) => {\n if (a.discount) {\n return -1;\n }\n if (b.discount) {\n return 1;\n }\n return 0;\n });\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./BbHorizontalSlider.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./BbHorizontalSlider.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./BbHorizontalSlider.vue.html?vue&type=template&id=6e64f99d&scoped=true&\"\nimport script from \"./BbHorizontalSlider.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./BbHorizontalSlider.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./BbHorizontalSlider.scoped.scss?vue&type=style&index=0&id=6e64f99d&prod&lang=vueScss&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 \"6e64f99d\",\n null\n \n)\n\nexport default component.exports","module.exports = \"\"","import Vue from 'vue';\nimport Component from 'vue-class-component';\n\n@Component({\n props: {\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n})\nexport default class OptionalRouterLinkComponent extends Vue {}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./OptionalRouterLink.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./OptionalRouterLink.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./OptionalRouterLink.vue.html?vue&type=template&id=17e84684&\"\nimport script from \"./OptionalRouterLink.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./OptionalRouterLink.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./OptionalRouterLink.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(!_vm.disabled)?_c('router-link',_vm._b({},'router-link',_vm.$attrs,false),[_vm._t(\"default\")],2):_c('span',_vm._b({},'span',_vm.$attrs,false),[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\n\nimport ProductBlock from 'common/components/ProductBlock';\nimport Rating from 'common/components/Rating';\nimport currency from 'common/filters/currency';\nimport OptionalRouterLink from 'ecommerce/components/OptionalRouterLink/OptionalRouterLink.vue';\n\nimport deliveryIcon from 'common/icons/delivery-person.svg';\nimport takeAwayIcon from 'common/icons/take-away.svg';\nimport receptionBell from 'common/icons/reception-bell.svg';\n\nVue.filter('currency', currency);\n\n@Component({\n components: {\n ProductBlock,\n Rating,\n OptionalRouterLink,\n DiscountLabel: () => import('common/components/DiscountLabel'),\n },\n props: {\n activity: {\n type: Object,\n required: true,\n },\n box: {\n type: Object,\n required: false,\n },\n availableHours: {\n type: Array,\n required: false,\n default: () => [],\n },\n productTitle: {\n type: String,\n default: 'Experiencia:',\n },\n bigBlock: {\n type: Boolean,\n default: true,\n description:\n 'Change styles of the Block. True if 3 blocks will be displayed in a row',\n },\n showHeart: {\n type: Boolean,\n default: true,\n },\n showRating: {\n type: Boolean,\n default: true,\n },\n showLocation: {\n type: Boolean,\n default: true,\n },\n boxColour: {\n type: String,\n required: false,\n },\n campaignColor: {\n type: String,\n required: false,\n },\n campaignSlug: {\n type: String,\n required: false,\n },\n showPrice: {\n type: Boolean,\n required: false,\n },\n preventClick: {\n type: Boolean,\n required: false,\n default: false,\n },\n showOnlineReservationLabel: {\n type: Boolean,\n default: false,\n },\n },\n})\nexport default class NewActivityBlockComponent extends Vue {\n windowWidth = null;\n receptionBell = receptionBell;\n\n created() {\n window.addEventListener('resize', this.recalculateWidth);\n this.recalculateWidth();\n }\n\n beforeDestroy() {\n window.removeEventListener('resize', this.recalculateWidth);\n }\n\n recalculateWidth() {\n this.windowWidth = window.innerWidth;\n }\n\n get description() {\n if (this.activity.short_description) {\n return this.activity.short_description;\n } else if (this.activity.description) {\n return this.activity.description;\n }\n return '';\n }\n\n get activityClicked() {\n let newRoute = {};\n if (this.$route.name === 'boxActivity') {\n newRoute = {\n name: 'boxActivity',\n params: {\n activitySlug: this.activity.slug,\n boxSlug: this.box.slug,\n categorySlug: this.activity.category.slug,\n },\n };\n } else {\n newRoute = { path: this.activity.product_url };\n }\n if (this.campaignSlug) {\n newRoute.query = {\n ...newRoute.query,\n campaignSlug: this.campaignSlug,\n };\n }\n return newRoute;\n }\n\n get activityLocation() {\n const { partneractivity, comboactivity } = this.activity;\n\n const formatLocation = locations => {\n if (locations[0]?.delivery_in_all_country) {\n return 'Envío a todo el país';\n }\n if (locations.length > 1) {\n return 'Múltiples localidades';\n }\n return `${locations[0]?.sublocation}, ${locations[0]?.province.name}`;\n };\n\n const formatComboLocations = locations => {\n const formatter = new Intl.ListFormat('es', { type: 'conjunction' });\n const uniqueLocations = locations\n .map(location => location.sublocation)\n .filter((location, index, array) => array.indexOf(location) === index);\n return formatter.format(uniqueLocations);\n };\n\n if (this.activity.locations) {\n if (this.activity.activity_type === 'online') {\n return 'Experiencia online';\n }\n return formatLocation(this.activity.locations);\n }\n\n if (partneractivity?.locations) {\n if (partneractivity.activity_type === 'online') {\n return 'Experiencia online';\n }\n return formatLocation(partneractivity.locations);\n }\n\n if (comboactivity?.locations) {\n return formatComboLocations(comboactivity.locations);\n }\n\n return '';\n }\n\n get ratingFontSize() {\n return this.windowWidth > 768 ? '16px' : '14px';\n }\n\n get ratingStarSize() {\n return this.windowWidth > 768 ? '--small' : '--tiny';\n }\n\n get showFullPrice() {\n return (\n this.activity.price_without_discount &&\n Number(this.activity.price_without_discount) > Number(this.activity.price)\n );\n }\n\n get isTravel() {\n return this.activity.__typename === 'TravelActivityType';\n }\n\n get activityTypeTag() {\n switch (this.activity.activity_type) {\n case 'delivery':\n return ['Delivery', deliveryIcon];\n case 'take_away':\n return ['Take Away', takeAwayIcon];\n default:\n return null;\n }\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./NewActivityBlock.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./NewActivityBlock.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./NewActivityBlock.vue.html?vue&type=template&id=14802596&scoped=true&\"\nimport script from \"./NewActivityBlock.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./NewActivityBlock.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./NewActivityBlock.scoped.scss?vue&type=style&index=0&id=14802596&prod&lang=vueScss&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 \"14802596\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"NewActivityBlock\"},[_c('optional-router-link',{attrs:{\"disabled\":_vm.preventClick,\"to\":_vm.activityClicked}},[_c('product-block',_vm._g({attrs:{\"product\":_vm.activity,\"availableHours\":_vm.availableHours,\"coverPaddingBottom\":\"60\",\"productTitle\":_vm.productTitle,\"description\":_vm.description,\"campaignColor\":_vm.campaignColor,\"discount\":_vm.activity.campaign_discounted_percentage,\"boxColour\":_vm.boxColour,\"bigBlock\":_vm.bigBlock,\"showHeart\":_vm.showHeart},scopedSlots:_vm._u([{key:\"productLayer\",fn:function(){return [_vm._t(\"productLayer\")]},proxy:true},{key:\"productLabel\",fn:function(){return [_vm._t(\"productLabel\")]},proxy:true},(_vm.showRating)?{key:\"rating\",fn:function(){return [_c('div',{staticClass:\"ratingTagRow bb-row-to-column\"},[_c('div',{staticClass:\"activityRating\"},[(_vm.activity.reviews_qty > 0)?_c('rating',{attrs:{\"value\":_vm.activity.rating,\"starSize\":_vm.ratingStarSize,\"valueFontSize\":_vm.ratingFontSize}}):_c('span',{staticClass:\"bb-bold bb-description-2 gray-light-1-text bb-one-line bb-mr-2\"},[_vm._v(\"Sin opiniones\")])],1)])]},proxy:true}:null,(_vm.showLocation)?{key:\"location\",fn:function(){return [_c('div',{staticClass:\"activityBlock-location bb-one-line\",class:{'bb-mb-3' : _vm.showPrice}},[_c('div',{staticClass:\"bb-row-to-column\"},[_c('div',{staticClass:\"bb-one-line\"},[(_vm.activity.activity_type === 'online')?_c('span',{staticClass:\"icon Online-icon\",domProps:{\"innerHTML\":_vm._s(require('common/icons/Computer.svg'))}}):_c('span',{staticClass:\"Location-icon\",domProps:{\"innerHTML\":_vm._s(require('common/icons/LocationThree.svg'))}}),_vm._v(\" \"),_c('span',{staticClass:\"Location-text bb-regular\"},[_vm._v(\"\\n \"+_vm._s(_vm.activityLocation)+\"\\n \")])]),_vm._v(\" \"),(_vm.activityTypeTag)?_c('div',{staticClass:\"activity-type-tag bb-bold figtree-font bb-row bb-justify-content-around\"},[_c('span',{staticClass:\"icon Location-icon\",domProps:{\"innerHTML\":_vm._s(_vm.activityTypeTag[1])}}),_vm._v(\"\\n \"+_vm._s(_vm.activityTypeTag[0])+\"\\n \")]):_vm._e()])])]},proxy:true}:null,{key:\"middleSlot\",fn:function(){return [(_vm.showOnlineReservationLabel)?_c('discount-label',{staticClass:\"figtree-font\",attrs:{\"middle\":\"\",\"left\":\"\",\"showDiscountText\":false,\"discount\":'Reserva online',\"campaignColor\":_vm.boxColour,\"icon\":_vm.receptionBell}}):_vm._e()]},proxy:true},(_vm.showPrice)?{key:\"price\",fn:function(){return [_vm._t(\"price\",function(){return [_c('div',{staticClass:\"bb-bold priceText bb-mt-2 bb-text-darkgray\"},[(_vm.showFullPrice)?_c('span',{staticClass:\"discountText bb-mr-2\"},[_vm._v(\"\\n \"+_vm._s(_vm.currency(_vm.activity.price_without_discount))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isTravel)?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.currency(_vm.activity.campaign_discounted_price))+\"\\n \")]):_c('span',[_vm._v(\" \"+_vm._s(_vm.currency(_vm.activity.price))+\" \")]),_vm._v(\" \"),(_vm.isTravel)?_c('span',{staticClass:\"discountText bb-ml-2\"},[_vm._v(\"\\n \"+_vm._s(_vm.currency(_vm.activity.price))+\"\\n \")]):_vm._e()])]})]},proxy:true}:null],null,true)},_vm.$listeners))],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"ReminderOcassions\"},\"variableDefinitions\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reminder_occasions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"date\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"banner\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":135}};\n doc.loc.source = {\"body\":\"query ReminderOcassions {\\n reminder_occasions {\\n id\\n name\\n slug\\n date\\n icon\\n banner\\n title\\n description\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"ReminderOcassions\"] = oneQuery(doc, \"ReminderOcassions\");\n \n","/*!\n* Tippy.js v2.6.0\n* (c) 2017-2018 atomiks\n* MIT\n*/\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.tippy = factory());\n}(this, (function () { 'use strict';\n\nvar styles = \".tippy-touch{cursor:pointer!important}.tippy-notransition{transition:none!important}.tippy-popper{max-width:350px;-webkit-perspective:700px;perspective:700px;z-index:9999;outline:0;transition-timing-function:cubic-bezier(.165,.84,.44,1);pointer-events:none;line-height:1.4}.tippy-popper[data-html]{max-width:96%;max-width:calc(100% - 20px)}.tippy-popper[x-placement^=top] .tippy-backdrop{border-radius:40% 40% 0 0}.tippy-popper[x-placement^=top] .tippy-roundarrow{bottom:-8px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.tippy-popper[x-placement^=top] .tippy-arrow{border-top:7px solid #333;border-right:7px solid transparent;border-left:7px solid transparent;bottom:-7px;margin:0 6px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-backdrop{-webkit-transform-origin:0 90%;transform-origin:0 90%}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(-50%,25%);transform:scale(6) translate(-50%,25%);opacity:1}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1) translate(-50%,25%);transform:scale(1) translate(-50%,25%);opacity:0}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}.tippy-popper[x-placement^=top] [data-animation=perspective]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px) rotateX(0);transform:translateY(-10px) rotateX(0)}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(90deg);transform:translateY(0) rotateX(90deg)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(0);transform:translateY(0) scale(0)}.tippy-popper[x-placement^=bottom] .tippy-backdrop{border-radius:0 0 30% 30%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow{top:-8px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(0);transform:rotate(0)}.tippy-popper[x-placement^=bottom] .tippy-arrow{border-bottom:7px solid #333;border-right:7px solid transparent;border-left:7px solid transparent;top:-7px;margin:0 6px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-backdrop{-webkit-transform-origin:0 -90%;transform-origin:0 -90%}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(-50%,-125%);transform:scale(6) translate(-50%,-125%);opacity:1}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1) translate(-50%,-125%);transform:scale(1) translate(-50%,-125%);opacity:0}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}.tippy-popper[x-placement^=bottom] [data-animation=perspective]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateY(10px) rotateX(0);transform:translateY(10px) rotateX(0)}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(-90deg);transform:translateY(0) rotateX(-90deg)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(0);transform:translateY(0) scale(0)}.tippy-popper[x-placement^=left] .tippy-backdrop{border-radius:50% 0 0 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow{right:-16px;-webkit-transform-origin:33.33333333% 50%;transform-origin:33.33333333% 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.tippy-popper[x-placement^=left] .tippy-arrow{border-left:7px solid #333;border-top:7px solid transparent;border-bottom:7px solid transparent;right:-7px;margin:3px 0;-webkit-transform-origin:0 50%;transform-origin:0 50%}.tippy-popper[x-placement^=left] .tippy-backdrop{-webkit-transform-origin:100% 0;transform-origin:100% 0}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(40%,-50%);transform:scale(6) translate(40%,-50%);opacity:1}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1.5) translate(40%,-50%);transform:scale(1.5) translate(40%,-50%);opacity:0}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}.tippy-popper[x-placement^=left] [data-animation=perspective]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px) rotateY(0);transform:translateX(-10px) rotateY(0)}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(-90deg);transform:translateX(0) rotateY(-90deg)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(0);transform:translateX(0) scale(0)}.tippy-popper[x-placement^=right] .tippy-backdrop{border-radius:0 50% 50% 0}.tippy-popper[x-placement^=right] .tippy-roundarrow{left:-16px;-webkit-transform-origin:66.66666666% 50%;transform-origin:66.66666666% 50%}.tippy-popper[x-placement^=right] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.tippy-popper[x-placement^=right] .tippy-arrow{border-right:7px solid #333;border-top:7px solid transparent;border-bottom:7px solid transparent;left:-7px;margin:3px 0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tippy-popper[x-placement^=right] .tippy-backdrop{-webkit-transform-origin:-100% 0;transform-origin:-100% 0}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(-140%,-50%);transform:scale(6) translate(-140%,-50%);opacity:1}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1.5) translate(-140%,-50%);transform:scale(1.5) translate(-140%,-50%);opacity:0}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.tippy-popper[x-placement^=right] [data-animation=perspective]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateX(10px) rotateY(0);transform:translateX(10px) rotateY(0)}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(90deg);transform:translateX(0) rotateY(90deg)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(0);transform:translateX(0) scale(0)}.tippy-tooltip{position:relative;color:#fff;border-radius:4px;font-size:.9rem;padding:.3rem .6rem;text-align:center;will-change:transform;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#333}.tippy-tooltip[data-size=small]{padding:.2rem .4rem;font-size:.75rem}.tippy-tooltip[data-size=large]{padding:.4rem .8rem;font-size:1rem}.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent}.tippy-tooltip[data-animatefill] .tippy-content{transition:-webkit-clip-path cubic-bezier(.46,.1,.52,.98);transition:clip-path cubic-bezier(.46,.1,.52,.98);transition:clip-path cubic-bezier(.46,.1,.52,.98),-webkit-clip-path cubic-bezier(.46,.1,.52,.98)}.tippy-tooltip[data-interactive],.tippy-tooltip[data-interactive] path{pointer-events:auto}.tippy-tooltip[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.53,2,.36,.85)}.tippy-tooltip[data-inertia][data-state=hidden]{transition-timing-function:ease}.tippy-arrow,.tippy-roundarrow{position:absolute;width:0;height:0}.tippy-roundarrow{width:24px;height:8px;fill:#333;pointer-events:none}.tippy-backdrop{position:absolute;will-change:transform;background-color:#333;border-radius:50%;width:26%;left:50%;top:50%;z-index:-1;transition:all cubic-bezier(.46,.1,.52,.98);-webkit-backface-visibility:hidden;backface-visibility:hidden}.tippy-backdrop:after{content:\\\"\\\";float:left;padding-top:100%}body:not(.tippy-touch) .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(100% 100% at 50% 50%);clip-path:ellipse(100% 100% at 50% 50%)}body:not(.tippy-touch) .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(5% 50% at 50% 50%);clip-path:ellipse(5% 50% at 50% 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=right] .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(135% 100% at 0 50%);clip-path:ellipse(135% 100% at 0 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=right] .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(40% 100% at 0 50%);clip-path:ellipse(40% 100% at 0 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=left] .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(135% 100% at 100% 50%);clip-path:ellipse(135% 100% at 100% 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=left] .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(40% 100% at 100% 50%);clip-path:ellipse(40% 100% at 100% 50%)}@media (max-width:360px){.tippy-popper{max-width:96%;max-width:calc(100% - 20px)}}\";\n\nvar version = \"2.6.0\";\n\nvar isBrowser = typeof window !== 'undefined';\n\nvar isIE = isBrowser && /MSIE |Trident\\//.test(navigator.userAgent);\n\nvar browser = {};\n\nif (isBrowser) {\n browser.supported = 'requestAnimationFrame' in window;\n browser.supportsTouch = 'ontouchstart' in window;\n browser.usingTouch = false;\n browser.dynamicInputDetection = true;\n browser.iOS = /iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream;\n browser.onUserInputChange = function () {};\n}\n\n/**\n * Selector constants used for grabbing elements\n */\nvar selectors = {\n POPPER: '.tippy-popper',\n TOOLTIP: '.tippy-tooltip',\n CONTENT: '.tippy-content',\n BACKDROP: '.tippy-backdrop',\n ARROW: '.tippy-arrow',\n ROUND_ARROW: '.tippy-roundarrow',\n REFERENCE: '[data-tippy]'\n};\n\nvar defaults = {\n placement: 'top',\n livePlacement: true,\n trigger: 'mouseenter focus',\n animation: 'shift-away',\n html: false,\n animateFill: true,\n arrow: false,\n delay: [0, 20],\n duration: [350, 300],\n interactive: false,\n interactiveBorder: 2,\n theme: 'dark',\n size: 'regular',\n distance: 10,\n offset: 0,\n hideOnClick: true,\n multiple: false,\n followCursor: false,\n inertia: false,\n updateDuration: 350,\n sticky: false,\n appendTo: function appendTo() {\n return document.body;\n },\n zIndex: 9999,\n touchHold: false,\n performance: false,\n dynamicTitle: false,\n flip: true,\n flipBehavior: 'flip',\n arrowType: 'sharp',\n arrowTransform: '',\n maxWidth: '',\n target: null,\n allowTitleHTML: true,\n popperOptions: {},\n createPopperInstanceOnInit: false,\n onShow: function onShow() {},\n onShown: function onShown() {},\n onHide: function onHide() {},\n onHidden: function onHidden() {}\n};\n\n/**\n * The keys of the defaults object for reducing down into a new object\n * Used in `getIndividualOptions()`\n */\nvar defaultsKeys = browser.supported && Object.keys(defaults);\n\n/**\n * Determines if a value is an object literal\n * @param {*} value\n * @return {Boolean}\n */\nfunction isObjectLiteral(value) {\n return {}.toString.call(value) === '[object Object]';\n}\n\n/**\n * Ponyfill for Array.from\n * @param {*} value\n * @return {Array}\n */\nfunction toArray(value) {\n return [].slice.call(value);\n}\n\n/**\n * Returns an array of elements based on the selector input\n * @param {String|Element|Element[]|NodeList|Object} selector\n * @return {Element[]}\n */\nfunction getArrayOfElements(selector) {\n if (selector instanceof Element || isObjectLiteral(selector)) {\n return [selector];\n }\n\n if (selector instanceof NodeList) {\n return toArray(selector);\n }\n\n if (Array.isArray(selector)) {\n return selector;\n }\n\n try {\n return toArray(document.querySelectorAll(selector));\n } catch (_) {\n return [];\n }\n}\n\n/**\n * Polyfills needed props/methods for a virtual reference object\n * NOTE: in v3.0 this will be pure\n * @param {Object} reference\n */\nfunction polyfillVirtualReferenceProps(reference) {\n reference.refObj = true;\n reference.attributes = reference.attributes || {};\n reference.setAttribute = function (key, val) {\n reference.attributes[key] = val;\n };\n reference.getAttribute = function (key) {\n return reference.attributes[key];\n };\n reference.removeAttribute = function (key) {\n delete reference.attributes[key];\n };\n reference.hasAttribute = function (key) {\n return key in reference.attributes;\n };\n reference.addEventListener = function () {};\n reference.removeEventListener = function () {};\n reference.classList = {\n classNames: {},\n add: function add(key) {\n return reference.classList.classNames[key] = true;\n },\n remove: function remove(key) {\n delete reference.classList.classNames[key];\n return true;\n },\n contains: function contains(key) {\n return key in reference.classList.classNames;\n }\n };\n}\n\n/**\n * Returns the supported prefixed property - only `webkit` is needed, `moz`, `ms` and `o` are obsolete\n * @param {String} property\n * @return {String} - browser supported prefixed property\n */\nfunction prefix(property) {\n var prefixes = ['', 'webkit'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var _prefix = prefixes[i];\n var prefixedProp = _prefix ? _prefix + upperProp : property;\n if (typeof document.body.style[prefixedProp] !== 'undefined') {\n return prefixedProp;\n }\n }\n\n return null;\n}\n\n/**\n * Creates a div element\n * @return {Element}\n */\nfunction div() {\n return document.createElement('div');\n}\n\n/**\n * Creates a popper element then returns it\n * @param {Number} id - the popper id\n * @param {String} title - the tooltip's `title` attribute\n * @param {Object} options - individual options\n * @return {Element} - the popper element\n */\nfunction createPopperElement(id, title, options) {\n var popper = div();\n popper.setAttribute('class', 'tippy-popper');\n popper.setAttribute('role', 'tooltip');\n popper.setAttribute('id', 'tippy-' + id);\n popper.style.zIndex = options.zIndex;\n popper.style.maxWidth = options.maxWidth;\n\n var tooltip = div();\n tooltip.setAttribute('class', 'tippy-tooltip');\n tooltip.setAttribute('data-size', options.size);\n tooltip.setAttribute('data-animation', options.animation);\n tooltip.setAttribute('data-state', 'hidden');\n options.theme.split(' ').forEach(function (t) {\n tooltip.classList.add(t + '-theme');\n });\n\n var content = div();\n content.setAttribute('class', 'tippy-content');\n\n if (options.arrow) {\n var arrow = div();\n arrow.style[prefix('transform')] = options.arrowTransform;\n\n if (options.arrowType === 'round') {\n arrow.classList.add('tippy-roundarrow');\n arrow.innerHTML = '';\n } else {\n arrow.classList.add('tippy-arrow');\n }\n\n tooltip.appendChild(arrow);\n }\n\n if (options.animateFill) {\n // Create animateFill circle element for animation\n tooltip.setAttribute('data-animatefill', '');\n var backdrop = div();\n backdrop.classList.add('tippy-backdrop');\n backdrop.setAttribute('data-state', 'hidden');\n tooltip.appendChild(backdrop);\n }\n\n if (options.inertia) {\n // Change transition timing function cubic bezier\n tooltip.setAttribute('data-inertia', '');\n }\n\n if (options.interactive) {\n tooltip.setAttribute('data-interactive', '');\n }\n\n var html = options.html;\n if (html) {\n var templateId = void 0;\n\n if (html instanceof Element) {\n content.appendChild(html);\n templateId = '#' + (html.id || 'tippy-html-template');\n } else {\n // trick linters: https://github.com/atomiks/tippyjs/issues/197\n content[true && 'innerHTML'] = document.querySelector(html)[true && 'innerHTML'];\n templateId = html;\n }\n\n popper.setAttribute('data-html', '');\n tooltip.setAttribute('data-template-id', templateId);\n\n if (options.interactive) {\n popper.setAttribute('tabindex', '-1');\n }\n } else {\n content[options.allowTitleHTML ? 'innerHTML' : 'textContent'] = title;\n }\n\n tooltip.appendChild(content);\n popper.appendChild(tooltip);\n\n return popper;\n}\n\n/**\n * Creates a trigger by adding the necessary event listeners to the reference element\n * @param {String} eventType - the custom event specified in the `trigger` setting\n * @param {Element} reference\n * @param {Object} handlers - the handlers for each event\n * @param {Object} options\n * @return {Array} - array of listener objects\n */\nfunction createTrigger(eventType, reference, handlers, options) {\n var onTrigger = handlers.onTrigger,\n onMouseLeave = handlers.onMouseLeave,\n onBlur = handlers.onBlur,\n onDelegateShow = handlers.onDelegateShow,\n onDelegateHide = handlers.onDelegateHide;\n\n var listeners = [];\n\n if (eventType === 'manual') return listeners;\n\n var on = function on(eventType, handler) {\n reference.addEventListener(eventType, handler);\n listeners.push({ event: eventType, handler: handler });\n };\n\n if (!options.target) {\n on(eventType, onTrigger);\n\n if (browser.supportsTouch && options.touchHold) {\n on('touchstart', onTrigger);\n on('touchend', onMouseLeave);\n }\n if (eventType === 'mouseenter') {\n on('mouseleave', onMouseLeave);\n }\n if (eventType === 'focus') {\n on(isIE ? 'focusout' : 'blur', onBlur);\n }\n } else {\n if (browser.supportsTouch && options.touchHold) {\n on('touchstart', onDelegateShow);\n on('touchend', onDelegateHide);\n }\n if (eventType === 'mouseenter') {\n on('mouseover', onDelegateShow);\n on('mouseout', onDelegateHide);\n }\n if (eventType === 'focus') {\n on('focusin', onDelegateShow);\n on('focusout', onDelegateHide);\n }\n if (eventType === 'click') {\n on('click', onDelegateShow);\n }\n }\n\n return listeners;\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n 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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Returns an object of settings to override global settings\n * @param {Element} reference\n * @param {Object} instanceOptions\n * @return {Object} - individual options\n */\nfunction getIndividualOptions(reference, instanceOptions) {\n var options = defaultsKeys.reduce(function (acc, key) {\n var val = reference.getAttribute('data-tippy-' + key.toLowerCase()) || instanceOptions[key];\n\n // Convert strings to booleans\n if (val === 'false') val = false;\n if (val === 'true') val = true;\n\n // Convert number strings to true numbers\n if (isFinite(val) && !isNaN(parseFloat(val))) {\n val = parseFloat(val);\n }\n\n // Convert array strings to actual arrays\n if (key !== 'target' && typeof val === 'string' && val.trim().charAt(0) === '[') {\n val = JSON.parse(val);\n }\n\n acc[key] = val;\n\n return acc;\n }, {});\n\n return _extends({}, instanceOptions, options);\n}\n\n/**\n * Evaluates/modifies the options object for appropriate behavior\n * @param {Element|Object} reference\n * @param {Object} options\n * @return {Object} modified/evaluated options\n */\nfunction evaluateOptions(reference, options) {\n // animateFill is disabled if an arrow is true\n if (options.arrow) {\n options.animateFill = false;\n }\n\n if (options.appendTo && typeof options.appendTo === 'function') {\n options.appendTo = options.appendTo();\n }\n\n if (typeof options.html === 'function') {\n options.html = options.html(reference);\n }\n\n return options;\n}\n\n/**\n * Returns inner elements of the popper element\n * @param {Element} popper\n * @return {Object}\n */\nfunction getInnerElements(popper) {\n var select = function select(s) {\n return popper.querySelector(s);\n };\n return {\n tooltip: select(selectors.TOOLTIP),\n backdrop: select(selectors.BACKDROP),\n content: select(selectors.CONTENT),\n arrow: select(selectors.ARROW) || select(selectors.ROUND_ARROW)\n };\n}\n\n/**\n * Removes the title from an element, setting `data-original-title`\n * appropriately\n * @param {Element} el\n */\nfunction removeTitle(el) {\n var title = el.getAttribute('title');\n // Only set `data-original-title` attr if there is a title\n if (title) {\n el.setAttribute('data-original-title', title);\n }\n el.removeAttribute('title');\n}\n\n/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.4\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser$1 = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser$1 && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser$1 && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser$1 && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser$1 && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE$1(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE$1(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE$1(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE$1(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck$1 = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass$1 = function () {\n 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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar defineProperty$1 = 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\nvar _extends$1 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends$1({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE$1(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE$1(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE$1()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends$1({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var styles = getComputedStyle(element);\n var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n // Avoid blurry text by using full pixel integers.\n // For pixel-perfect positioning, top/bottom prefers rounded\n // values, while left/right prefers floored values.\n var offsets = {\n left: Math.floor(popper.left),\n top: Math.round(popper.top),\n bottom: Math.round(popper.bottom),\n right: Math.floor(popper.right)\n };\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends$1({}, attributes, data.attributes);\n data.styles = _extends$1({}, styles, data.styles);\n data.arrowStyles = _extends$1({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty$1(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty$1(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends$1({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty$1({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty$1({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends$1({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty$1({}, side, reference[side]),\n end: defineProperty$1({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends$1({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck$1(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends$1({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends$1({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends$1({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends$1({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass$1(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\n/**\n * Triggers document reflow.\n * Use void because some minifiers or engines think simply accessing the property\n * is unnecessary.\n * @param {Element} popper\n */\nfunction reflow(popper) {\n void popper.offsetHeight;\n}\n\n/**\n * Wrapper util for popper position updating.\n * Updates the popper's position and invokes the callback on update.\n * Hackish workaround until Popper 2.0's update() becomes sync.\n * @param {Popper} popperInstance\n * @param {Function} callback: to run once popper's position was updated\n * @param {Boolean} updateAlreadyCalled: was scheduleUpdate() already called?\n */\nfunction updatePopperPosition(popperInstance, callback, updateAlreadyCalled) {\n var popper = popperInstance.popper,\n options = popperInstance.options;\n\n var onCreate = options.onCreate;\n var onUpdate = options.onUpdate;\n\n options.onCreate = options.onUpdate = function () {\n reflow(popper), callback && callback(), onUpdate();\n options.onCreate = onCreate;\n options.onUpdate = onUpdate;\n };\n\n if (!updateAlreadyCalled) {\n popperInstance.scheduleUpdate();\n }\n}\n\n/**\n * Returns the core placement ('top', 'bottom', 'left', 'right') of a popper\n * @param {Element} popper\n * @return {String}\n */\nfunction getPopperPlacement(popper) {\n return popper.getAttribute('x-placement').replace(/-.+/, '');\n}\n\n/**\n * Determines if the mouse's cursor is outside the interactive border\n * @param {MouseEvent} event\n * @param {Element} popper\n * @param {Object} options\n * @return {Boolean}\n */\nfunction cursorIsOutsideInteractiveBorder(event, popper, options) {\n if (!popper.getAttribute('x-placement')) return true;\n\n var x = event.clientX,\n y = event.clientY;\n var interactiveBorder = options.interactiveBorder,\n distance = options.distance;\n\n\n var rect = popper.getBoundingClientRect();\n var placement = getPopperPlacement(popper);\n var borderWithDistance = interactiveBorder + distance;\n\n var exceeds = {\n top: rect.top - y > interactiveBorder,\n bottom: y - rect.bottom > interactiveBorder,\n left: rect.left - x > interactiveBorder,\n right: x - rect.right > interactiveBorder\n };\n\n switch (placement) {\n case 'top':\n exceeds.top = rect.top - y > borderWithDistance;\n break;\n case 'bottom':\n exceeds.bottom = y - rect.bottom > borderWithDistance;\n break;\n case 'left':\n exceeds.left = rect.left - x > borderWithDistance;\n break;\n case 'right':\n exceeds.right = x - rect.right > borderWithDistance;\n break;\n }\n\n return exceeds.top || exceeds.bottom || exceeds.left || exceeds.right;\n}\n\n/**\n * Transforms the `arrowTransform` numbers based on the placement axis\n * @param {String} type 'scale' or 'translate'\n * @param {Number[]} numbers\n * @param {Boolean} isVertical\n * @param {Boolean} isReverse\n * @return {String}\n */\nfunction transformNumbersBasedOnPlacementAxis(type, numbers, isVertical, isReverse) {\n if (!numbers.length) return '';\n\n var transforms = {\n scale: function () {\n if (numbers.length === 1) {\n return '' + numbers[0];\n } else {\n return isVertical ? numbers[0] + ', ' + numbers[1] : numbers[1] + ', ' + numbers[0];\n }\n }(),\n translate: function () {\n if (numbers.length === 1) {\n return isReverse ? -numbers[0] + 'px' : numbers[0] + 'px';\n } else {\n if (isVertical) {\n return isReverse ? numbers[0] + 'px, ' + -numbers[1] + 'px' : numbers[0] + 'px, ' + numbers[1] + 'px';\n } else {\n return isReverse ? -numbers[1] + 'px, ' + numbers[0] + 'px' : numbers[1] + 'px, ' + numbers[0] + 'px';\n }\n }\n }()\n };\n\n return transforms[type];\n}\n\n/**\n * Transforms the `arrowTransform` x or y axis based on the placement axis\n * @param {String} axis 'X', 'Y', ''\n * @param {Boolean} isVertical\n * @return {String}\n */\nfunction transformAxis(axis, isVertical) {\n if (!axis) return '';\n var map = {\n X: 'Y',\n Y: 'X'\n };\n return isVertical ? axis : map[axis];\n}\n\n/**\n * Computes and applies the necessary arrow transform\n * @param {Element} popper\n * @param {Element} arrow\n * @param {String} arrowTransform\n */\nfunction computeArrowTransform(popper, arrow, arrowTransform) {\n var placement = getPopperPlacement(popper);\n var isVertical = placement === 'top' || placement === 'bottom';\n var isReverse = placement === 'right' || placement === 'bottom';\n\n var getAxis = function getAxis(re) {\n var match = arrowTransform.match(re);\n return match ? match[1] : '';\n };\n\n var getNumbers = function getNumbers(re) {\n var match = arrowTransform.match(re);\n return match ? match[1].split(',').map(parseFloat) : [];\n };\n\n var re = {\n translate: /translateX?Y?\\(([^)]+)\\)/,\n scale: /scaleX?Y?\\(([^)]+)\\)/\n };\n\n var matches = {\n translate: {\n axis: getAxis(/translate([XY])/),\n numbers: getNumbers(re.translate)\n },\n scale: {\n axis: getAxis(/scale([XY])/),\n numbers: getNumbers(re.scale)\n }\n };\n\n var computedTransform = arrowTransform.replace(re.translate, 'translate' + transformAxis(matches.translate.axis, isVertical) + '(' + transformNumbersBasedOnPlacementAxis('translate', matches.translate.numbers, isVertical, isReverse) + ')').replace(re.scale, 'scale' + transformAxis(matches.scale.axis, isVertical) + '(' + transformNumbersBasedOnPlacementAxis('scale', matches.scale.numbers, isVertical, isReverse) + ')');\n\n arrow.style[prefix('transform')] = computedTransform;\n}\n\n/**\n * Returns the distance taking into account the default distance due to\n * the transform: translate setting in CSS\n * @param {Number} distance\n * @return {String}\n */\nfunction getOffsetDistanceInPx(distance) {\n return -(distance - defaults.distance) + 'px';\n}\n\nvar matches = {};\n\nif (isBrowser) {\n var e = Element.prototype;\n matches = e.matches || e.matchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector || e.msMatchesSelector || function (s) {\n var matches = (this.document || this.ownerDocument).querySelectorAll(s);\n var i = matches.length;\n while (--i >= 0 && matches.item(i) !== this) {} // eslint-disable-line no-empty\n return i > -1;\n };\n}\n\nvar matches$1 = matches;\n\n/**\n * Ponyfill to get the closest parent element\n * @param {Element} element - child of parent to be returned\n * @param {String} parentSelector - selector to match the parent if found\n * @return {Element}\n */\nfunction closest(element, parentSelector) {\n var fn = Element.prototype.closest || function (selector) {\n var el = this;\n while (el) {\n if (matches$1.call(el, selector)) {\n return el;\n }\n el = el.parentElement;\n }\n };\n\n return fn.call(element, parentSelector);\n}\n\n/**\n * Returns the value taking into account the value being either a number or array\n * @param {Number|Array} value\n * @param {Number} index\n * @return {Number}\n */\nfunction getValue(value, index) {\n return Array.isArray(value) ? value[index] : value;\n}\n\n/**\n * Sets the visibility state of an element for transition to begin\n * @param {Element[]} els - array of elements\n * @param {String} type - 'visible' or 'hidden'\n */\nfunction setVisibilityState(els, type) {\n els.forEach(function (el) {\n if (!el) return;\n el.setAttribute('data-state', type);\n });\n}\n\n/**\n * Sets the transition property to each element\n * @param {Element[]} els - Array of elements\n * @param {String} value\n */\nfunction applyTransitionDuration(els, value) {\n els.filter(Boolean).forEach(function (el) {\n el.style[prefix('transitionDuration')] = value + 'ms';\n });\n}\n\n/**\n * Focuses an element while preventing a scroll jump if it's not entirely within the viewport\n * @param {Element} el\n */\nfunction focus(el) {\n var x = window.scrollX || window.pageXOffset;\n var y = window.scrollY || window.pageYOffset;\n el.focus();\n scroll(x, y);\n}\n\nvar key = {};\nvar store = function store(data) {\n return function (k) {\n return k === key && data;\n };\n};\n\nvar Tippy = function () {\n function Tippy(config) {\n classCallCheck(this, Tippy);\n\n for (var _key in config) {\n this[_key] = config[_key];\n }\n\n this.state = {\n destroyed: false,\n visible: false,\n enabled: true\n };\n\n this._ = store({\n mutationObservers: []\n });\n }\n\n /**\n * Enables the tooltip to allow it to show or hide\n * @memberof Tippy\n * @public\n */\n\n\n createClass(Tippy, [{\n key: 'enable',\n value: function enable() {\n this.state.enabled = true;\n }\n\n /**\n * Disables the tooltip from showing or hiding, but does not destroy it\n * @memberof Tippy\n * @public\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.state.enabled = false;\n }\n\n /**\n * Shows the tooltip\n * @param {Number} duration in milliseconds\n * @memberof Tippy\n * @public\n */\n\n }, {\n key: 'show',\n value: function show(duration) {\n var _this = this;\n\n if (this.state.destroyed || !this.state.enabled) return;\n\n var popper = this.popper,\n reference = this.reference,\n options = this.options;\n\n var _getInnerElements = getInnerElements(popper),\n tooltip = _getInnerElements.tooltip,\n backdrop = _getInnerElements.backdrop,\n content = _getInnerElements.content;\n\n // If the `dynamicTitle` option is true, the instance is allowed\n // to be created with an empty title. Make sure that the tooltip\n // content is not empty before showing it\n\n\n if (options.dynamicTitle && !reference.getAttribute('data-original-title')) {\n return;\n }\n\n // Do not show tooltip if reference contains 'disabled' attribute. FF fix for #221\n if (reference.hasAttribute('disabled')) return;\n\n // Destroy tooltip if the reference element is no longer on the DOM\n if (!reference.refObj && !document.documentElement.contains(reference)) {\n this.destroy();\n return;\n }\n\n options.onShow.call(popper, this);\n\n duration = getValue(duration !== undefined ? duration : options.duration, 0);\n\n // Prevent a transition when popper changes position\n applyTransitionDuration([popper, tooltip, backdrop], 0);\n\n popper.style.visibility = 'visible';\n this.state.visible = true;\n\n _mount.call(this, function () {\n if (!_this.state.visible) return;\n\n if (!_hasFollowCursorBehavior.call(_this)) {\n // FIX: Arrow will sometimes not be positioned correctly. Force another update.\n _this.popperInstance.scheduleUpdate();\n }\n\n // Set initial position near the cursor\n if (_hasFollowCursorBehavior.call(_this)) {\n _this.popperInstance.disableEventListeners();\n var delay = getValue(options.delay, 0);\n var lastTriggerEvent = _this._(key).lastTriggerEvent;\n if (lastTriggerEvent) {\n _this._(key).followCursorListener(delay && _this._(key).lastMouseMoveEvent ? _this._(key).lastMouseMoveEvent : lastTriggerEvent);\n }\n }\n\n // Re-apply transition durations\n applyTransitionDuration([tooltip, backdrop, backdrop ? content : null], duration);\n\n if (backdrop) {\n getComputedStyle(backdrop)[prefix('transform')];\n }\n\n if (options.interactive) {\n reference.classList.add('tippy-active');\n }\n\n if (options.sticky) {\n _makeSticky.call(_this);\n }\n\n setVisibilityState([tooltip, backdrop], 'visible');\n\n _onTransitionEnd.call(_this, duration, function () {\n if (!options.updateDuration) {\n tooltip.classList.add('tippy-notransition');\n }\n\n if (options.interactive) {\n focus(popper);\n }\n\n reference.setAttribute('aria-describedby', 'tippy-' + _this.id);\n\n options.onShown.call(popper, _this);\n });\n });\n }\n\n /**\n * Hides the tooltip\n * @param {Number} duration in milliseconds\n * @memberof Tippy\n * @public\n */\n\n }, {\n key: 'hide',\n value: function hide(duration) {\n var _this2 = this;\n\n if (this.state.destroyed || !this.state.enabled) return;\n\n var popper = this.popper,\n reference = this.reference,\n options = this.options;\n\n var _getInnerElements2 = getInnerElements(popper),\n tooltip = _getInnerElements2.tooltip,\n backdrop = _getInnerElements2.backdrop,\n content = _getInnerElements2.content;\n\n options.onHide.call(popper, this);\n\n duration = getValue(duration !== undefined ? duration : options.duration, 1);\n\n if (!options.updateDuration) {\n tooltip.classList.remove('tippy-notransition');\n }\n\n if (options.interactive) {\n reference.classList.remove('tippy-active');\n }\n\n popper.style.visibility = 'hidden';\n this.state.visible = false;\n\n applyTransitionDuration([tooltip, backdrop, backdrop ? content : null], duration);\n\n setVisibilityState([tooltip, backdrop], 'hidden');\n\n if (options.interactive && options.trigger.indexOf('click') > -1) {\n focus(reference);\n }\n\n _onTransitionEnd.call(this, duration, function () {\n if (_this2.state.visible || !options.appendTo.contains(popper)) return;\n\n if (!_this2._(key).isPreparingToShow) {\n document.removeEventListener('mousemove', _this2._(key).followCursorListener);\n _this2._(key).lastMouseMoveEvent = null;\n }\n\n if (_this2.popperInstance) {\n _this2.popperInstance.disableEventListeners();\n }\n\n reference.removeAttribute('aria-describedby');\n\n options.appendTo.removeChild(popper);\n\n options.onHidden.call(popper, _this2);\n });\n }\n\n /**\n * Destroys the tooltip instance\n * @param {Boolean} destroyTargetInstances - relevant only when destroying delegates\n * @memberof Tippy\n * @public\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n var destroyTargetInstances = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (this.state.destroyed) return;\n\n // Ensure the popper is hidden\n if (this.state.visible) {\n this.hide(0);\n }\n\n this.listeners.forEach(function (listener) {\n _this3.reference.removeEventListener(listener.event, listener.handler);\n });\n\n // Restore title\n if (this.title) {\n this.reference.setAttribute('title', this.title);\n }\n\n delete this.reference._tippy;\n\n var attributes = ['data-original-title', 'data-tippy', 'data-tippy-delegate'];\n attributes.forEach(function (attr) {\n _this3.reference.removeAttribute(attr);\n });\n\n if (this.options.target && destroyTargetInstances) {\n toArray(this.reference.querySelectorAll(this.options.target)).forEach(function (child) {\n return child._tippy && child._tippy.destroy();\n });\n }\n\n if (this.popperInstance) {\n this.popperInstance.destroy();\n }\n\n this._(key).mutationObservers.forEach(function (observer) {\n observer.disconnect();\n });\n\n this.state.destroyed = true;\n }\n }]);\n return Tippy;\n}();\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n * Standalone functions to be called with the instance's `this` context to make\n * them truly private and not accessible on the prototype\n */\n\n/**\n * Determines if the tooltip instance has followCursor behavior\n * @return {Boolean}\n * @memberof Tippy\n * @private\n */\nfunction _hasFollowCursorBehavior() {\n var lastTriggerEvent = this._(key).lastTriggerEvent;\n return this.options.followCursor && !browser.usingTouch && lastTriggerEvent && lastTriggerEvent.type !== 'focus';\n}\n\n/**\n * Creates the Tippy instance for the child target of the delegate container\n * @param {Event} event\n * @memberof Tippy\n * @private\n */\nfunction _createDelegateChildTippy(event) {\n var targetEl = closest(event.target, this.options.target);\n if (targetEl && !targetEl._tippy) {\n var title = targetEl.getAttribute('title') || this.title;\n if (title) {\n targetEl.setAttribute('title', title);\n tippy(targetEl, _extends({}, this.options, { target: null }));\n _enter.call(targetEl._tippy, event);\n }\n }\n}\n\n/**\n * Method used by event listeners to invoke the show method, taking into account delays and\n * the `wait` option\n * @param {Event} event\n * @memberof Tippy\n * @private\n */\nfunction _enter(event) {\n var _this4 = this;\n\n var options = this.options;\n\n\n _clearDelayTimeouts.call(this);\n\n if (this.state.visible) return;\n\n // Is a delegate, create Tippy instance for the child target\n if (options.target) {\n _createDelegateChildTippy.call(this, event);\n return;\n }\n\n this._(key).isPreparingToShow = true;\n\n if (options.wait) {\n options.wait.call(this.popper, this.show.bind(this), event);\n return;\n }\n\n // If the tooltip has a delay, we need to be listening to the mousemove as soon as the trigger\n // event is fired so that it's in the correct position upon mount.\n if (_hasFollowCursorBehavior.call(this)) {\n if (!this._(key).followCursorListener) {\n _setFollowCursorListener.call(this);\n }\n\n var _getInnerElements3 = getInnerElements(this.popper),\n arrow = _getInnerElements3.arrow;\n\n if (arrow) arrow.style.margin = '0';\n document.addEventListener('mousemove', this._(key).followCursorListener);\n }\n\n var delay = getValue(options.delay, 0);\n\n if (delay) {\n this._(key).showTimeout = setTimeout(function () {\n _this4.show();\n }, delay);\n } else {\n this.show();\n }\n}\n\n/**\n * Method used by event listeners to invoke the hide method, taking into account delays\n * @memberof Tippy\n * @private\n */\nfunction _leave() {\n var _this5 = this;\n\n _clearDelayTimeouts.call(this);\n\n if (!this.state.visible) return;\n\n this._(key).isPreparingToShow = false;\n\n var delay = getValue(this.options.delay, 1);\n\n if (delay) {\n this._(key).hideTimeout = setTimeout(function () {\n if (_this5.state.visible) {\n _this5.hide();\n }\n }, delay);\n } else {\n this.hide();\n }\n}\n\n/**\n * Returns relevant listeners for the instance\n * @return {Object} of listeners\n * @memberof Tippy\n * @private\n */\nfunction _getEventListeners() {\n var _this6 = this;\n\n var onTrigger = function onTrigger(event) {\n if (!_this6.state.enabled) return;\n\n var shouldStopEvent = browser.supportsTouch && browser.usingTouch && ['mouseenter', 'mouseover', 'focus'].indexOf(event.type) > -1;\n\n if (shouldStopEvent && _this6.options.touchHold) return;\n\n _this6._(key).lastTriggerEvent = event;\n\n // Toggle show/hide when clicking click-triggered tooltips\n if (event.type === 'click' && _this6.options.hideOnClick !== 'persistent' && _this6.state.visible) {\n _leave.call(_this6);\n } else {\n _enter.call(_this6, event);\n }\n };\n\n var onMouseLeave = function onMouseLeave(event) {\n if (['mouseleave', 'mouseout'].indexOf(event.type) > -1 && browser.supportsTouch && browser.usingTouch && _this6.options.touchHold) return;\n\n if (_this6.options.interactive) {\n var hide = _leave.bind(_this6);\n\n var onMouseMove = function onMouseMove(event) {\n var referenceCursorIsOver = closest(event.target, selectors.REFERENCE);\n var cursorIsOverPopper = closest(event.target, selectors.POPPER) === _this6.popper;\n var cursorIsOverReference = referenceCursorIsOver === _this6.reference;\n\n if (cursorIsOverPopper || cursorIsOverReference) return;\n\n if (cursorIsOutsideInteractiveBorder(event, _this6.popper, _this6.options)) {\n document.body.removeEventListener('mouseleave', hide);\n document.removeEventListener('mousemove', onMouseMove);\n\n _leave.call(_this6, onMouseMove);\n }\n };\n\n document.body.addEventListener('mouseleave', hide);\n document.addEventListener('mousemove', onMouseMove);\n return;\n }\n\n _leave.call(_this6);\n };\n\n var onBlur = function onBlur(event) {\n if (event.target !== _this6.reference || browser.usingTouch) return;\n\n if (_this6.options.interactive) {\n if (!event.relatedTarget) return;\n if (closest(event.relatedTarget, selectors.POPPER)) return;\n }\n\n _leave.call(_this6);\n };\n\n var onDelegateShow = function onDelegateShow(event) {\n if (closest(event.target, _this6.options.target)) {\n _enter.call(_this6, event);\n }\n };\n\n var onDelegateHide = function onDelegateHide(event) {\n if (closest(event.target, _this6.options.target)) {\n _leave.call(_this6);\n }\n };\n\n return {\n onTrigger: onTrigger,\n onMouseLeave: onMouseLeave,\n onBlur: onBlur,\n onDelegateShow: onDelegateShow,\n onDelegateHide: onDelegateHide\n };\n}\n\n/**\n * Creates and returns a new popper instance\n * @return {Popper}\n * @memberof Tippy\n * @private\n */\nfunction _createPopperInstance() {\n var _this7 = this;\n\n var popper = this.popper,\n reference = this.reference,\n options = this.options;\n\n var _getInnerElements4 = getInnerElements(popper),\n tooltip = _getInnerElements4.tooltip;\n\n var popperOptions = options.popperOptions;\n\n var arrowSelector = options.arrowType === 'round' ? selectors.ROUND_ARROW : selectors.ARROW;\n var arrow = tooltip.querySelector(arrowSelector);\n\n var config = _extends({\n placement: options.placement\n }, popperOptions || {}, {\n modifiers: _extends({}, popperOptions ? popperOptions.modifiers : {}, {\n arrow: _extends({\n element: arrowSelector\n }, popperOptions && popperOptions.modifiers ? popperOptions.modifiers.arrow : {}),\n flip: _extends({\n enabled: options.flip,\n padding: options.distance + 5 /* 5px from viewport boundary */\n , behavior: options.flipBehavior\n }, popperOptions && popperOptions.modifiers ? popperOptions.modifiers.flip : {}),\n offset: _extends({\n offset: options.offset\n }, popperOptions && popperOptions.modifiers ? popperOptions.modifiers.offset : {})\n }),\n onCreate: function onCreate() {\n tooltip.style[getPopperPlacement(popper)] = getOffsetDistanceInPx(options.distance);\n\n if (arrow && options.arrowTransform) {\n computeArrowTransform(popper, arrow, options.arrowTransform);\n }\n },\n onUpdate: function onUpdate() {\n var styles = tooltip.style;\n styles.top = '';\n styles.bottom = '';\n styles.left = '';\n styles.right = '';\n styles[getPopperPlacement(popper)] = getOffsetDistanceInPx(options.distance);\n\n if (arrow && options.arrowTransform) {\n computeArrowTransform(popper, arrow, options.arrowTransform);\n }\n }\n });\n\n _addMutationObserver.call(this, {\n target: popper,\n callback: function callback() {\n _this7.popperInstance.update();\n },\n options: {\n childList: true,\n subtree: true,\n characterData: true\n }\n });\n\n return new Popper(reference, popper, config);\n}\n\n/**\n * Appends the popper element to the DOM, updating or creating the popper instance\n * @param {Function} callback\n * @memberof Tippy\n * @private\n */\nfunction _mount(callback) {\n var options = this.options;\n\n\n if (!this.popperInstance) {\n this.popperInstance = _createPopperInstance.call(this);\n if (!options.livePlacement) {\n this.popperInstance.disableEventListeners();\n }\n } else {\n this.popperInstance.scheduleUpdate();\n if (options.livePlacement && !_hasFollowCursorBehavior.call(this)) {\n this.popperInstance.enableEventListeners();\n }\n }\n\n // If the instance previously had followCursor behavior, it will be positioned incorrectly\n // if triggered by `focus` afterwards - update the reference back to the real DOM element\n if (!_hasFollowCursorBehavior.call(this)) {\n var _getInnerElements5 = getInnerElements(this.popper),\n arrow = _getInnerElements5.arrow;\n\n if (arrow) arrow.style.margin = '';\n this.popperInstance.reference = this.reference;\n }\n\n updatePopperPosition(this.popperInstance, callback, true);\n\n if (!options.appendTo.contains(this.popper)) {\n options.appendTo.appendChild(this.popper);\n }\n}\n\n/**\n * Clears the show and hide delay timeouts\n * @memberof Tippy\n * @private\n */\nfunction _clearDelayTimeouts() {\n var _ref = this._(key),\n showTimeout = _ref.showTimeout,\n hideTimeout = _ref.hideTimeout;\n\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n}\n\n/**\n * Sets the mousemove event listener function for `followCursor` option\n * @memberof Tippy\n * @private\n */\nfunction _setFollowCursorListener() {\n var _this8 = this;\n\n this._(key).followCursorListener = function (event) {\n var _$lastMouseMoveEvent = _this8._(key).lastMouseMoveEvent = event,\n clientX = _$lastMouseMoveEvent.clientX,\n clientY = _$lastMouseMoveEvent.clientY;\n\n if (!_this8.popperInstance) return;\n\n _this8.popperInstance.reference = {\n getBoundingClientRect: function getBoundingClientRect() {\n return {\n width: 0,\n height: 0,\n top: clientY,\n left: clientX,\n right: clientX,\n bottom: clientY\n };\n },\n clientWidth: 0,\n clientHeight: 0\n };\n\n _this8.popperInstance.scheduleUpdate();\n };\n}\n\n/**\n * Updates the popper's position on each animation frame\n * @memberof Tippy\n * @private\n */\nfunction _makeSticky() {\n var _this9 = this;\n\n var applyTransitionDuration$$1 = function applyTransitionDuration$$1() {\n _this9.popper.style[prefix('transitionDuration')] = _this9.options.updateDuration + 'ms';\n };\n\n var removeTransitionDuration = function removeTransitionDuration() {\n _this9.popper.style[prefix('transitionDuration')] = '';\n };\n\n var updatePosition = function updatePosition() {\n if (_this9.popperInstance) {\n _this9.popperInstance.update();\n }\n\n applyTransitionDuration$$1();\n\n if (_this9.state.visible) {\n requestAnimationFrame(updatePosition);\n } else {\n removeTransitionDuration();\n }\n };\n\n updatePosition();\n}\n\n/**\n * Adds a mutation observer to an element and stores it in the instance\n * @param {Object}\n * @memberof Tippy\n * @private\n */\nfunction _addMutationObserver(_ref2) {\n var target = _ref2.target,\n callback = _ref2.callback,\n options = _ref2.options;\n\n if (!window.MutationObserver) return;\n\n var observer = new MutationObserver(callback);\n observer.observe(target, options);\n\n this._(key).mutationObservers.push(observer);\n}\n\n/**\n * Fires the callback functions once the CSS transition ends for `show` and `hide` methods\n * @param {Number} duration\n * @param {Function} callback - callback function to fire once transition completes\n * @memberof Tippy\n * @private\n */\nfunction _onTransitionEnd(duration, callback) {\n // Make callback synchronous if duration is 0\n if (!duration) {\n return callback();\n }\n\n var _getInnerElements6 = getInnerElements(this.popper),\n tooltip = _getInnerElements6.tooltip;\n\n var toggleListeners = function toggleListeners(action, listener) {\n if (!listener) return;\n tooltip[action + 'EventListener']('transition' in document.body.style ? 'transitionend' : 'webkitTransitionEnd', listener);\n };\n\n var listener = function listener(e) {\n if (e.target === tooltip) {\n toggleListeners('remove', listener);\n callback();\n }\n };\n\n toggleListeners('remove', this._(key).transitionendListener);\n toggleListeners('add', listener);\n\n this._(key).transitionendListener = listener;\n}\n\nvar idCounter = 1;\n\n/**\n * Creates tooltips for each reference element\n * @param {Element[]} els\n * @param {Object} config\n * @return {Tippy[]} Array of Tippy instances\n */\nfunction createTooltips(els, config) {\n return els.reduce(function (acc, reference) {\n var id = idCounter;\n\n var options = evaluateOptions(reference, config.performance ? config : getIndividualOptions(reference, config));\n\n var title = reference.getAttribute('title');\n\n // Don't create an instance when:\n // * the `title` attribute is falsy (null or empty string), and\n // * it's not a delegate for tooltips, and\n // * there is no html template specified, and\n // * `dynamicTitle` option is false\n if (!title && !options.target && !options.html && !options.dynamicTitle) {\n return acc;\n }\n\n // Delegates should be highlighted as different\n reference.setAttribute(options.target ? 'data-tippy-delegate' : 'data-tippy', '');\n\n removeTitle(reference);\n\n var popper = createPopperElement(id, title, options);\n\n var tippy = new Tippy({\n id: id,\n reference: reference,\n popper: popper,\n options: options,\n title: title,\n popperInstance: null\n });\n\n if (options.createPopperInstanceOnInit) {\n tippy.popperInstance = _createPopperInstance.call(tippy);\n tippy.popperInstance.disableEventListeners();\n }\n\n var listeners = _getEventListeners.call(tippy);\n tippy.listeners = options.trigger.trim().split(' ').reduce(function (acc, eventType) {\n return acc.concat(createTrigger(eventType, reference, listeners, options));\n }, []);\n\n // Update tooltip content whenever the title attribute on the reference changes\n if (options.dynamicTitle) {\n _addMutationObserver.call(tippy, {\n target: reference,\n callback: function callback() {\n var _getInnerElements = getInnerElements(popper),\n content = _getInnerElements.content;\n\n var title = reference.getAttribute('title');\n if (title) {\n content[options.allowTitleHTML ? 'innerHTML' : 'textContent'] = tippy.title = title;\n removeTitle(reference);\n }\n },\n\n options: {\n attributes: true\n }\n });\n }\n\n // Shortcuts\n reference._tippy = tippy;\n popper._tippy = tippy;\n popper._reference = reference;\n\n acc.push(tippy);\n\n idCounter++;\n\n return acc;\n }, []);\n}\n\n/**\n * Hides all poppers\n * @param {Tippy} excludeTippy - tippy to exclude if needed\n */\nfunction hideAllPoppers(excludeTippy) {\n var poppers = toArray(document.querySelectorAll(selectors.POPPER));\n\n poppers.forEach(function (popper) {\n var tippy = popper._tippy;\n if (!tippy) return;\n\n var options = tippy.options;\n\n\n if ((options.hideOnClick === true || options.trigger.indexOf('focus') > -1) && (!excludeTippy || popper !== excludeTippy.popper)) {\n tippy.hide();\n }\n });\n}\n\n/**\n * Adds the needed event listeners\n */\nfunction bindEventListeners(useCapture) {\n var onDocumentTouch = function onDocumentTouch() {\n if (browser.usingTouch) return;\n\n browser.usingTouch = true;\n\n if (browser.iOS) {\n document.body.classList.add('tippy-touch');\n }\n\n if (browser.dynamicInputDetection && window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n\n browser.onUserInputChange('touch');\n };\n\n var onDocumentMouseMove = function () {\n var time = void 0;\n\n return function () {\n var now = performance.now();\n\n // Chrome 60+ is 1 mousemove per animation frame, use 20ms time difference\n if (now - time < 20) {\n browser.usingTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n if (!browser.iOS) {\n document.body.classList.remove('tippy-touch');\n }\n browser.onUserInputChange('mouse');\n }\n\n time = now;\n };\n }();\n\n var onDocumentClick = function onDocumentClick(event) {\n // Simulated events dispatched on the document\n if (!(event.target instanceof Element)) {\n return hideAllPoppers();\n }\n\n var reference = closest(event.target, selectors.REFERENCE);\n var popper = closest(event.target, selectors.POPPER);\n\n if (popper && popper._tippy && popper._tippy.options.interactive) {\n return;\n }\n\n if (reference && reference._tippy) {\n var options = reference._tippy.options;\n\n var isClickTrigger = options.trigger.indexOf('click') > -1;\n var isMultiple = options.multiple;\n\n // Hide all poppers except the one belonging to the element that was clicked\n if (!isMultiple && browser.usingTouch || !isMultiple && isClickTrigger) {\n return hideAllPoppers(reference._tippy);\n }\n\n if (options.hideOnClick !== true || isClickTrigger) {\n return;\n }\n }\n\n hideAllPoppers();\n };\n\n var onWindowBlur = function onWindowBlur() {\n var _document = document,\n el = _document.activeElement;\n\n if (el && el.blur && matches$1.call(el, selectors.REFERENCE)) {\n el.blur();\n }\n };\n\n var onWindowResize = function onWindowResize() {\n toArray(document.querySelectorAll(selectors.POPPER)).forEach(function (popper) {\n var tippyInstance = popper._tippy;\n if (tippyInstance && !tippyInstance.options.livePlacement) {\n tippyInstance.popperInstance.scheduleUpdate();\n }\n });\n };\n\n document.addEventListener('click', onDocumentClick, useCapture);\n document.addEventListener('touchstart', onDocumentTouch);\n window.addEventListener('blur', onWindowBlur);\n window.addEventListener('resize', onWindowResize);\n\n if (!browser.supportsTouch && (navigator.maxTouchPoints || navigator.msMaxTouchPoints)) {\n document.addEventListener('pointerdown', onDocumentTouch);\n }\n}\n\nvar eventListenersBound = false;\nvar useCapture = false;\n\n/**\n * Exported module\n * @param {String|Element|Element[]|NodeList|Object} selector\n * @param {Object} options\n * @param {Boolean} one - create one tooltip\n * @return {Object}\n */\nfunction tippy(selector, options, one) {\n if (browser.supported && !eventListenersBound) {\n bindEventListeners(useCapture);\n eventListenersBound = true;\n }\n\n if (isObjectLiteral(selector)) {\n polyfillVirtualReferenceProps(selector);\n }\n\n options = _extends({}, defaults, options);\n\n var references = getArrayOfElements(selector);\n var firstReference = references[0];\n\n return {\n selector: selector,\n options: options,\n tooltips: browser.supported ? createTooltips(one && firstReference ? [firstReference] : references, options) : [],\n destroyAll: function destroyAll() {\n this.tooltips.forEach(function (tooltip) {\n return tooltip.destroy();\n });\n this.tooltips = [];\n }\n };\n}\n\ntippy.version = version;\ntippy.browser = browser;\ntippy.defaults = defaults;\ntippy.one = function (selector, options) {\n return tippy(selector, options, true).tooltips[0];\n};\ntippy.disableAnimations = function () {\n defaults.updateDuration = defaults.duration = 0;\n defaults.animateFill = false;\n};\ntippy.useCapture = function () {\n useCapture = true;\n};\n\n/**\n * Injects CSS styles to document head\n * @param {String} css\n */\nfunction injectCSS() {\n var css = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (isBrowser && browser.supported) {\n var head = document.head || document.querySelector('head');\n var style = document.createElement('style');\n style.type = 'text/css';\n head.insertBefore(style, head.firstChild);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n }\n}\n\ninjectCSS(styles);\n\nreturn tippy;\n\n})));\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"lavContainer\",style:(_vm.style)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../vue-loader/lib/index.js??vue-loader-options!./lottie.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../vue-loader/lib/index.js??vue-loader-options!./lottie.vue?vue&type=script&lang=js&\"","\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","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","module.exports = \"Created with Sketch.\"","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"deleteWishlistItem\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"toWho\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"productId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"updateWishItem\"},\"name\":{\"kind\":\"Name\",\"value\":\"delete_wishlist_item\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"to_who\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"toWho\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"product_id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"productId\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":169}};\n doc.loc.source = {\"body\":\"mutation deleteWishlistItem($toWho: String!, $productId: ID!) {\\n updateWishItem: delete_wishlist_item(to_who: $toWho, product_id: $productId) {\\n ok\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"deleteWishlistItem\"] = oneQuery(doc, \"deleteWishlistItem\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"UserWishlistItems\"},\"variableDefinitions\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"wishitems\"},\"name\":{\"kind\":\"Name\",\"value\":\"user_wishlist_items\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"to_who\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"product_id\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":100}};\n doc.loc.source = {\"body\":\"query UserWishlistItems {\\n wishitems: user_wishlist_items {\\n id\\n to_who\\n product_id\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"UserWishlistItems\"] = oneQuery(doc, \"UserWishlistItems\");\n \n","module.exports = \"\"","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport starFillSVG from 'common/icons/StarFill.svg';\nimport starGraySVG from 'common/icons/StarGray.svg';\nimport ratingSVG from 'common/icons/rating.svg';\n\n@Component({\n props: {\n value: {\n required: true,\n },\n maxValue: {\n default: 5,\n type: Number,\n },\n allStars: {\n default: false,\n type: Boolean,\n },\n valueFontSize: {\n default: '16px',\n type: String,\n },\n starSize: {\n default: '--small',\n type: String,\n },\n lineHeight: {\n default: '1.0',\n type: String,\n },\n totalOpinions: {\n type: Number,\n },\n showStart: {\n type: Boolean,\n default: true,\n },\n showTotalOpinions: {\n type: String,\n default: '',\n description:\n '--mobile, --desktop or --always determines when totalOpinions has to be displayed',\n },\n showRatingNumber: {\n type: Boolean,\n default: true,\n },\n allStarsDesktop: {\n default: false,\n type: Boolean,\n },\n isCard: {\n type: Boolean,\n required: false,\n },\n starOnTheRight: {\n type: Boolean,\n default: false,\n },\n numberBold: {\n type: Boolean,\n required: false,\n },\n },\n})\nexport default class RatingComponent extends Vue {\n starFillIcon = starFillSVG;\n starGrayIcon = starGraySVG;\n ratingSVG = ratingSVG;\n\n getDecimal(index) {\n const { value } = this;\n const integer = Math.floor(value);\n if (integer >= index) {\n return 10;\n }\n if (integer + 1 < index) {\n return 0;\n }\n return Math.floor((value % 1) * 10);\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./Rating.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./Rating.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./Rating.vue.html?vue&type=template&id=04e942b5&scoped=true&\"\nimport script from \"./Rating.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./Rating.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./Rating.scoped.scss?vue&type=style&index=0&id=04e942b5&prod&lang=vueScss&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 \"04e942b5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.value)?_c('div',{staticClass:\"Rating\",class:{ 'bb-row-reverse --align' : _vm.starOnTheRight, '--align' : _vm.isCard },attrs:{\"itemscope\":\"\",\"itemtype\":\"https://schema.org/Rating\"}},[_c('div',[_c('meta',{attrs:{\"itemprop\":\"ratingValue\",\"content\":_vm.value}}),_vm._v(\" \"),_c('meta',{attrs:{\"itemprop\":\"bestRating\",\"content\":_vm.maxValue}})]),_vm._v(\" \"),((_vm.allStars || _vm.allStarsDesktop) && _vm.showStart)?_c('div',{staticClass:\"bb-row\",class:{'bb-ml-1': _vm.starOnTheRight},style:({lineHeight: _vm.lineHeight})},[_vm._l((_vm.maxValue),function(star){return _c('span',{staticClass:\"starWrapper\",class:{ '--show': _vm.allStars }},[_c('span',{staticClass:\"star\",class:_vm.starSize,domProps:{\"innerHTML\":_vm._s(_vm.starGrayIcon)}}),_vm._v(\" \"),_c('span',{staticClass:\"star --active\",class:[`--size${_vm.getDecimal(star)}`, _vm.starSize],domProps:{\"innerHTML\":_vm._s(_vm.starFillIcon)}})])}),_vm._v(\" \"),((!_vm.allStars || _vm.allStarsDesktop) && _vm.showStart)?_c('span',{staticClass:\"bb-row bb-align-items-center hidden-lg hidden-md hidden-sm\"},[_c('span',{staticClass:\"star --one --tiny bb-mr-1\",class:{ '--star-right' : _vm.starOnTheRight },domProps:{\"innerHTML\":_vm._s(_vm.ratingSVG)}})]):_vm._e()],2):_vm._e(),_vm._v(\" \"),((!_vm.allStars && !_vm.allStarsDesktop) && _vm.showStart)?_c('div',{staticClass:\"singleStar bb-row bb-align-items-center\",class:{ 'bb-ml-1' : _vm.starOnTheRight }},[_c('span',{staticClass:\"star --single\",class:[_vm.starSize],staticStyle:{\"height\":\"100%\"},domProps:{\"innerHTML\":_vm._s(_vm.starFillIcon)}})]):_vm._e(),_vm._v(\" \"),(!_vm.allStars)?_c('span',{staticClass:\"bb-row bb-align-items-center bb-justify-content-center\",staticStyle:{\"height\":\"100%\"}},[(_vm.showRatingNumber)?_c('span',{staticClass:\"ratingNumber bb-row figtree-font\",class:{starSize: _vm.starSize, 'bb-bold' : _vm.numberBold},style:({fontSize: _vm.valueFontSize, lineHeight: _vm.lineHeight})},[_vm._v(\"\\n \"+_vm._s(_vm.value.toFixed(1))+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showTotalOpinions)?_c('span',{staticClass:\"totalOpinions fontStyle bb-row bb-align-items-center bb-ml-1\"},[_vm._v(\"\\n \"+_vm._s(_vm.plural(this.totalOpinions, ['opinión', 'opiniones'], true))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.allStars)?_c('span',{staticClass:\"starWrapper --mobile\",class:{ '--show': _vm.allStars }},[_c('span',{staticClass:\"star\",domProps:{\"innerHTML\":_vm._s(_vm.ratingSVG)}}),_vm._v(\" \"),_c('span',{staticClass:\"star --active --size10\",domProps:{\"innerHTML\":_vm._s(_vm.ratingSVG)}})]):_vm._e(),_vm._v(\" \"),_c('div',[_c('meta',{attrs:{\"itemprop\":\"ratingValue\",\"content\":_vm.value}}),_vm._v(\" \"),_c('meta',{attrs:{\"itemprop\":\"bestRating\",\"content\":_vm.maxValue}})])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\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) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports=function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"/\",t(t.s=76)}([function(e,t){var n=e.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var i=n(53),r=n(14);e.exports=function(e){return i(r(e))}},function(e,t,n){e.exports=!n(8)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(e,t,n){var i=n(5),r=n(11);e.exports=n(3)?function(e,t,n){return i.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var i=n(7),r=n(30),a=n(23),o=Object.defineProperty;t.f=n(3)?Object.defineProperty:function(e,t,n){if(i(e),t=a(t,!0),i(n),r)try{return o(e,t,n)}catch(e){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(e[t]=n.value),e}},function(e,t,n){var i=n(21)(\"wks\"),r=n(12),a=n(0).Symbol,o=\"function\"==typeof a;(e.exports=function(e){return i[e]||(i[e]=o&&a[e]||(o?a:r)(\"Symbol.\"+e))}).store=i},function(e,t,n){var i=n(9);e.exports=function(e){if(!i(e))throw TypeError(e+\" is not an object!\");return e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports=function(e){return\"object\"==typeof e?null!==e:\"function\"==typeof e}},function(e,t,n){var i=n(35),r=n(15);e.exports=Object.keys||function(e){return i(e,r)}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=0,i=Math.random();e.exports=function(e){return\"Symbol(\".concat(void 0===e?\"\":e,\")_\",(++n+i).toString(36))}},function(e,t){var n=e.exports={version:\"2.4.0\"};\"number\"==typeof __e&&(__e=n)},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError(\"Can't call method on \"+e);return e}},function(e,t){e.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(e,t){e.exports={}},function(e,t){e.exports=!0},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var i=n(5).f,r=n(1),a=n(6)(\"toStringTag\");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,a)&&i(e,a,{configurable:!0,value:t})}},function(e,t,n){var i=n(21)(\"keys\"),r=n(12);e.exports=function(e){return i[e]||(i[e]=r(e))}},function(e,t,n){var i=n(0),r=i[\"__core-js_shared__\"]||(i[\"__core-js_shared__\"]={});e.exports=function(e){return r[e]||(r[e]={})}},function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:n)(e)}},function(e,t,n){var i=n(9);e.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&\"function\"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if(\"function\"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&\"function\"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError(\"Can't convert object to primitive value\")}},function(e,t,n){var i=n(0),r=n(13),a=n(17),o=n(25),s=n(5).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=a?{}:i.Symbol||{});\"_\"==e.charAt(0)||e in t||s(t,e,{value:o.f(e)})}},function(e,t,n){t.f=n(6)},function(e,t,n){\"use strict\";t.a={translations:{af:{language:\"Afrikaans\",months:{original:[\"Januarie\",\"Februarie\",\"Maart\",\"April\",\"Mei\",\"Junie\",\"Julie\",\"Augustus\",\"September\",\"Oktober\",\"November\",\"Desember\"],abbr:[\"Jan\",\"Feb\",\"Mrt\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Des\"]},days:[\"So.\",\"Ma.\",\"Di.\",\"Wo.\",\"Do.\",\"Vr.\",\"Sa.\"]},ar:{language:\"Arabic\",rtl:!0,months:{original:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوڤمبر\",\"ديسمبر\"],abbr:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوڤمبر\",\"ديسمبر\"]},days:[\"أحد\",\"إثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"]},bg:{language:\"Bulgarian\",months:{original:[\"Януари\",\"Февруари\",\"Март\",\"Април\",\"Май\",\"Юни\",\"Юли\",\"Август\",\"Септември\",\"Октомври\",\"Ноември\",\"Декември\"],abbr:[\"Ян\",\"Фев\",\"Мар\",\"Апр\",\"Май\",\"Юни\",\"Юли\",\"Авг\",\"Сеп\",\"Окт\",\"Ное\",\"Дек\"]},days:[\"Нд\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"]},bs:{language:\"Bosnian\",months:{original:[\"Januar\",\"Februar\",\"Mart\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"Avgust\",\"Septembar\",\"Oktobar\",\"Novembar\",\"Decembar\"],abbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Avg\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"]},days:[\"Ned\",\"Pon\",\"Uto\",\"Sri\",\"Čet\",\"Pet\",\"Sub\"]},cs:{language:\"Czech\",months:{original:[\"leden\",\"únor\",\"březen\",\"duben\",\"květen\",\"červen\",\"červenec\",\"srpen\",\"září\",\"říjen\",\"listopad\",\"prosinec\"],abbr:[\"led\",\"úno\",\"bře\",\"dub\",\"kvě\",\"čer\",\"čec\",\"srp\",\"zář\",\"říj\",\"lis\",\"pro\"]},days:[\"ne\",\"po\",\"út\",\"st\",\"čt\",\"pá\",\"so\"]},da:{language:\"Danish\",months:{original:[\"Januar\",\"Februar\",\"Marts\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"December\"],abbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"]},days:[\"Sø\",\"Ma\",\"Ti\",\"On\",\"To\",\"Fr\",\"Lø\"]},de:{language:\"German\",months:{original:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],abbr:[\"Jan\",\"Feb\",\"Mär\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"]},days:[\"So.\",\"Mo.\",\"Di.\",\"Mi.\",\"Do.\",\"Fr.\",\"Sa.\"]},ee:{language:\"Estonian\",months:{original:[\"Jaanuar\",\"Veebruar\",\"Märts\",\"Aprill\",\"Mai\",\"Juuni\",\"Juuli\",\"August\",\"September\",\"Oktoober\",\"November\",\"Detsember\"],abbr:[\"Jaan\",\"Veebr\",\"Märts\",\"Apr\",\"Mai\",\"Juuni\",\"Juuli\",\"Aug\",\"Sept\",\"Okt\",\"Nov\",\"Dets\"]},days:[\"P\",\"E\",\"T\",\"K\",\"N\",\"R\",\"L\"]},el:{language:\"Greek\",months:{original:[\"Ιανουάριος\",\"Φεβρουάριος\",\"Μάρτιος\",\"Απρίλιος\",\"Μάϊος\",\"Ιούνιος\",\"Ιούλιος\",\"Αύγουστος\",\"Σεπτέμβριος\",\"Οκτώβριος\",\"Νοέμβριος\",\"Δεκέμβριος\"],abbr:[\"Ιαν\",\"Φεβ\",\"Μαρ\",\"Απρ\",\"Μαι\",\"Ιουν\",\"Ιουλ\",\"Αυγ\",\"Σεπ\",\"Οκτ\",\"Νοε\",\"Δεκ\"]},days:[\"Κυρ\",\"Δευ\",\"Τρι\",\"Τετ\",\"Πεμ\",\"Παρ\",\"Σατ\"]},en:{language:\"English\",months:{original:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],abbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]},days:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"]},es:{language:\"Spanish\",months:{original:[\"Enero\",\"Febrero\",\"Marzo\",\"Abril\",\"Mayo\",\"Junio\",\"Julio\",\"Agosto\",\"Septiembre\",\"Octubre\",\"Noviembre\",\"Diciembre\"],abbr:[\"Ene\",\"Feb\",\"Mar\",\"Abr\",\"May\",\"Jun\",\"Jul\",\"Ago\",\"Sep\",\"Oct\",\"Nov\",\"Dic\"]},days:[\"Dom\",\"Lun\",\"Mar\",\"Mié\",\"Jue\",\"Vie\",\"Sab\"]},ca:{language:\"Catalan\",months:{original:[\"Gener\",\"Febrer\",\"Març\",\"Abril\",\"Maig\",\"Juny\",\"Juliol\",\"Agost\",\"Setembre\",\"Octubre\",\"Novembre\",\"Desembre\"],abbr:[\"Gen\",\"Feb\",\"Mar\",\"Abr\",\"Mai\",\"Jun\",\"Jul\",\"Ago\",\"Set\",\"Oct\",\"Nov\",\"Des\"]},days:[\"Diu\",\"Dil\",\"Dmr\",\"Dmc\",\"Dij\",\"Div\",\"Dis\"]},fi:{language:\"Finish\",months:{original:[\"tammikuu\",\"helmikuu\",\"maaliskuu\",\"huhtikuu\",\"toukokuu\",\"kesäkuu\",\"heinäkuu\",\"elokuu\",\"syyskuu\",\"lokakuu\",\"marraskuu\",\"joulukuu\"],abbr:[\"tammi\",\"helmi\",\"maalis\",\"huhti\",\"touko\",\"kesä\",\"heinä\",\"elo\",\"syys\",\"loka\",\"marras\",\"joulu\"]},days:[\"su\",\"ma\",\"ti\",\"ke\",\"to\",\"pe\",\"la\"]},fr:{language:\"French\",months:{original:[\"Janvier\",\"Février\",\"Mars\",\"Avril\",\"Mai\",\"Juin\",\"Juillet\",\"Août\",\"Septembre\",\"Octobre\",\"Novembre\",\"Décembre\"],abbr:[\"Jan\",\"Fév\",\"Mar\",\"Avr\",\"Mai\",\"Juin\",\"Juil\",\"Août\",\"Sep\",\"Oct\",\"Nov\",\"Déc\"]},days:[\"Dim\",\"Lun\",\"Mar\",\"Mer\",\"Jeu\",\"Ven\",\"Sam\"]},ge:{language:\"Georgia\",months:{original:[\"იანვარი\",\"თებერვალი\",\"მარტი\",\"აპრილი\",\"მაისი\",\"ივნისი\",\"ივლისი\",\"აგვისტო\",\"სექტემბერი\",\"ოქტომბერი\",\"ნოემბერი\",\"დეკემბერი\"],abbr:[\"იან\",\"თებ\",\"მარ\",\"აპრ\",\"მაი\",\"ივნ\",\"ივლ\",\"აგვ\",\"სექ\",\"ოქტ\",\"ნოე\",\"დეკ\"]},days:[\"კვი\",\"ორშ\",\"სამ\",\"ოთხ\",\"ხუთ\",\"პარ\",\"შაბ\"]},ja:{language:\"Japanese\",ymd:!0,months:{original:[\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\"],abbr:[\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\"]},days:[\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"]},he:{language:\"Hebrew\",rtl:!0,months:{original:[\"ינואר\",\"פברואר\",\"מרץ\",\"אפריל\",\"מאי\",\"יוני\",\"יולי\",\"אוגוסט\",\"ספטמבר\",\"אוקטובר\",\"נובמבר\",\"דצמבר\"],abbr:[\"ינו\",\"פבר\",\"מרץ\",\"אפר\",\"מאי\",\"יונ\",\"יול\",\"אוג\",\"ספט\",\"אוק\",\"נוב\",\"דצמ\"]},days:[\"א\",\"ב\",\"ג\",\"ד\",\"ה\",\"ו\",\"ש\"]},hu:{language:\"Hungarian\",ymd:!0,months:{original:[\"Január\",\"Február\",\"Március\",\"Április\",\"Május\",\"Június\",\"Július\",\"Augusztus\",\"Szeptember\",\"Október\",\"November\",\"December\"],abbr:[\"Jan\",\"Febr\",\"Márc\",\"Ápr\",\"Máj\",\"Jún\",\"Júl\",\"Aug\",\"Szept\",\"Okt\",\"Nov\",\"Dec\"]},days:[\"Vas\",\"Hét\",\"Ke\",\"Sze\",\"Csü\",\"Pén\",\"Szo\"]},hr:{language:\"Croatian\",months:{original:[\"Siječanj\",\"Veljača\",\"Ožujak\",\"Travanj\",\"Svibanj\",\"Lipanj\",\"Srpanj\",\"Kolovoz\",\"Rujan\",\"Listopad\",\"Studeni\",\"Prosinac\"],abbr:[\"Sij\",\"Velj\",\"Ožu\",\"Tra\",\"Svi\",\"Lip\",\"Srp\",\"Kol\",\"Ruj\",\"Lis\",\"Stu\",\"Pro\"]},days:[\"Ned\",\"Pon\",\"Uto\",\"Sri\",\"Čet\",\"Pet\",\"Sub\"]},id:{language:\"Indonesian\",months:{original:[\"Januari\",\"Februari\",\"Maret\",\"April\",\"Mei\",\"Juni\",\"Juli\",\"Agustus\",\"September\",\"Oktober\",\"November\",\"Desember\"],abbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Agu\",\"Sep\",\"Okt\",\"Nov\",\"Des\"]},days:[\"Min\",\"Sen\",\"Sel\",\"Rab\",\"Kam\",\"Jum\",\"Sab\"]},it:{language:\"Italian\",months:{original:[\"Gennaio\",\"Febbraio\",\"Marzo\",\"Aprile\",\"Maggio\",\"Giugno\",\"Luglio\",\"Agosto\",\"Settembre\",\"Ottobre\",\"Novembre\",\"Dicembre\"],abbr:[\"Gen\",\"Feb\",\"Mar\",\"Apr\",\"Mag\",\"Giu\",\"Lug\",\"Ago\",\"Set\",\"Ott\",\"Nov\",\"Dic\"]},days:[\"Dom\",\"Lun\",\"Mar\",\"Mer\",\"Gio\",\"Ven\",\"Sab\"]},is:{language:\"Icelandic\",months:{original:[\"Janúar\",\"Febrúar\",\"Mars\",\"Apríl\",\"Maí\",\"Júní\",\"Júlí\",\"Ágúst\",\"September\",\"Október\",\"Nóvember\",\"Desember\"],abbr:[\"Jan\",\"Feb\",\"Mars\",\"Apr\",\"Maí\",\"Jún\",\"Júl\",\"Ágú\",\"Sep\",\"Okt\",\"Nóv\",\"Des\"]},days:[\"Sun\",\"Mán\",\"Þri\",\"Mið\",\"Fim\",\"Fös\",\"Lau\"]},fa:{language:\"Persian\",months:{original:[\"فروردین\",\"اردیبهشت\",\"خرداد\",\"تیر\",\"مرداد\",\"شهریور\",\"مهر\",\"آبان\",\"آذر\",\"دی\",\"بهمن\",\"اسفند\"],abbr:[\"فرو\",\"ارد\",\"خرد\",\"تیر\",\"مرد\",\"شهر\",\"مهر\",\"آبا\",\"آذر\",\"دی\",\"بهم\",\"اسف\"]},days:[\"یکشنبه\",\"دوشنبه\",\"سه‌شنبه\",\"چهارشنبه\",\"پنجشنبه\",\"جمعه\",\"شنبه\"]},ko:{language:\"Korean\",ymd:!0,months:{original:[\"1월\",\"2월\",\"3월\",\"4월\",\"5월\",\"6월\",\"7월\",\"8월\",\"9월\",\"10월\",\"11월\",\"12월\"],abbr:[\"1월\",\"2월\",\"3월\",\"4월\",\"5월\",\"6월\",\"7월\",\"8월\",\"9월\",\"10월\",\"11월\",\"12월\"]},days:[\"일\",\"월\",\"화\",\"수\",\"목\",\"금\",\"토\"]},lb:{language:\"Luxembourgish\",months:{original:[\"Januar\",\"Februar\",\"Mäerz\",\"Abrëll\",\"Mäi\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],abbr:[\"Jan\",\"Feb\",\"Mäe\",\"Abr\",\"Mäi\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"]},days:[\"So.\",\"Mé.\",\"Dë.\",\"Më.\",\"Do.\",\"Fr.\",\"Sa.\"]},lt:{language:\"Lithuanian\",ymd:!0,months:{original:[\"Sausis\",\"Vasaris\",\"Kovas\",\"Balandis\",\"Gegužė\",\"Birželis\",\"Liepa\",\"Rugpjūtis\",\"Rugsėjis\",\"Spalis\",\"Lapkritis\",\"Gruodis\"],abbr:[\"Sau\",\"Vas\",\"Kov\",\"Bal\",\"Geg\",\"Bir\",\"Lie\",\"Rugp\",\"Rugs\",\"Spa\",\"Lap\",\"Gru\"]},days:[\"Sek\",\"Pir\",\"Ant\",\"Tre\",\"Ket\",\"Pen\",\"Šeš\"]},lv:{language:\"Latvian\",months:{original:[\"Janvāris\",\"Februāris\",\"Marts\",\"Aprīlis\",\"Maijs\",\"Jūnijs\",\"Jūlijs\",\"Augusts\",\"Septembris\",\"Oktobris\",\"Novembris\",\"Decembris\"],abbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Jūn\",\"Jūl\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"]},days:[\"Sv\",\"Pr\",\"Ot\",\"Tr\",\"Ce\",\"Pk\",\"Se\"]},mn:{language:\"Mongolia\",ymd:!0,months:{original:[\"1 дүгээр сар\",\"2 дугаар сар\",\"3 дугаар сар\",\"4 дүгээр сар\",\"5 дугаар сар\",\"6 дугаар сар\",\"7 дугаар сар\",\"8 дугаар сар\",\"9 дүгээр сар\",\"10 дугаар сар\",\"11 дүгээр сар\",\"12 дугаар сар\"],abbr:[\"1-р сар\",\"2-р сар\",\"3-р сар\",\"4-р сар\",\"5-р сар\",\"6-р сар\",\"7-р сар\",\"8-р сар\",\"9-р сар\",\"10-р сар\",\"11-р сар\",\"12-р сар\"]},days:[\"Ня\",\"Да\",\"Мя\",\"Лх\",\"Пү\",\"Ба\",\"Бя\"]},nl:{language:\"Dutch\",months:{original:[\"januari\",\"februari\",\"maart\",\"april\",\"mei\",\"juni\",\"juli\",\"augustus\",\"september\",\"oktober\",\"november\",\"december\"],abbr:[\"jan\",\"feb\",\"maa\",\"apr\",\"mei\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"dec\"]},days:[\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\"]},\"nb-no\":{language:\"Norwegian Bokmål\",months:{original:[\"Januar\",\"Februar\",\"Mars\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Desember\"],abbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Des\"]},days:[\"Sø\",\"Ma\",\"Ti\",\"On\",\"To\",\"Fr\",\"Lø\"]},pl:{language:\"Polish\",months:{original:[\"Styczeń\",\"Luty\",\"Marzec\",\"Kwiecień\",\"Maj\",\"Czerwiec\",\"Lipiec\",\"Sierpień\",\"Wrzesień\",\"Październik\",\"Listopad\",\"Grudzień\"],abbr:[\"Sty\",\"Lut\",\"Mar\",\"Kwi\",\"Maj\",\"Cze\",\"Lip\",\"Sie\",\"Wrz\",\"Paź\",\"Lis\",\"Gru\"]},days:[\"Nd\",\"Pn\",\"Wt\",\"Śr\",\"Czw\",\"Pt\",\"Sob\"]},\"pt-br\":{language:\"Brazilian\",months:{original:[\"Janeiro\",\"Fevereiro\",\"Março\",\"Abril\",\"Maio\",\"Junho\",\"Julho\",\"Agosto\",\"Setembro\",\"Outubro\",\"Novembro\",\"Dezembro\"],abbr:[\"Jan\",\"Fev\",\"Mar\",\"Abr\",\"Mai\",\"Jun\",\"Jul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dez\"]},days:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sab\"]},ro:{language:\"Romanian\",months:{original:[\"Ianuarie\",\"Februarie\",\"Martie\",\"Aprilie\",\"Mai\",\"Iunie\",\"Iulie\",\"August\",\"Septembrie\",\"Octombrie\",\"Noiembrie\",\"Decembrie\"],abbr:[\"Ian\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Iun\",\"Iul\",\"Aug\",\"Sep\",\"Oct\",\"Noi\",\"Dec\"]},days:[\"D\",\"L\",\"Ma\",\"Mi\",\"J\",\"V\",\"S\"]},ru:{language:\"Russian\",months:{original:[\"Январь\",\"Февраль\",\"Март\",\"Апрель\",\"Май\",\"Июнь\",\"Июль\",\"Август\",\"Сентябрь\",\"Октябрь\",\"Ноябрь\",\"Декабрь\"],abbr:[\"Янв\",\"Февр\",\"Март\",\"Апр\",\"Май\",\"Июнь\",\"Июль\",\"Авг\",\"Сент\",\"Окт\",\"Нояб\",\"Дек\"]},days:[\"Вс\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"]},sv:{language:\"Swedish\",months:{original:[\"Januari\",\"Februari\",\"Mars\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"Augusti\",\"September\",\"Oktober\",\"November\",\"December\"],abbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"]},days:[\"Sön\",\"Mån\",\"Tis\",\"Ons\",\"Tor\",\"Fre\",\"Lör\"]},sk:{language:\"Slovakian\",months:{original:[\"január\",\"február\",\"marec\",\"apríl\",\"máj\",\"jún\",\"júl\",\"august\",\"september\",\"október\",\"november\",\"december\"],abbr:[\"jan\",\"feb\",\"mar\",\"apr\",\"máj\",\"jún\",\"júl\",\"aug\",\"sep\",\"okt\",\"nov\",\"dec\"]},days:[\"ne\",\"po\",\"ut\",\"st\",\"št\",\"pi\",\"so\"]},\"sl-si\":{language:\"Sloveian\",months:{original:[\"Januar\",\"Februar\",\"Marec\",\"April\",\"Maj\",\"Junij\",\"Julij\",\"Avgust\",\"September\",\"Oktober\",\"November\",\"December\"],abbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Avg\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"]},days:[\"Ned\",\"Pon\",\"Tor\",\"Sre\",\"Čet\",\"Pet\",\"Sob\"]},sr:{language:\"Serbian\",months:{original:[\"Januar\",\"Februar\",\"Mart\",\"April\",\"Maj\",\"Jun\",\"Jul\",\"Avgust\",\"Septembar\",\"Oktobar\",\"Novembar\",\"Decembar\"],abbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Avg\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"]},days:[\"Ned\",\"Pon\",\"Uto\",\"Sre\",\"Čet\",\"Pet\",\"Sub\"]},\"sr-Cyrl\":{language:\"Serbian in Cyrillic script\",months:{original:[\"Јануар\",\"Фебруар\",\"Март\",\"Април\",\"Мај\",\"Јун\",\"Јул\",\"Август\",\"Септембар\",\"Октобар\",\"Новембар\",\"Децембар\"],abbr:[\"Јан\",\"Феб\",\"Мар\",\"Апр\",\"Мај\",\"Јун\",\"Јул\",\"Авг\",\"Сеп\",\"Окт\",\"Нов\",\"Дец\"]},days:[\"Нед\",\"Пон\",\"Уто\",\"Сре\",\"Чет\",\"Пет\",\"Суб\"]},th:{language:\"Thai\",months:{original:[\"มกราคม\",\"กุมภาพันธ์\",\"มีนาคม\",\"เมษายน\",\"พฤษภาคม\",\"มิถุนายน\",\"กรกฎาคม\",\"สิงหาคม\",\"กันยายน\",\"ตุลาคม\",\"พฤศจิกายน\",\"ธันวาคม\"],abbr:[\"ม.ค.\",\"ก.พ.\",\"มี.ค.\",\"เม.ย.\",\"พ.ค.\",\"มิ.ย.\",\"ก.ค.\",\"ส.ค.\",\"ก.ย.\",\"ต.ค.\",\"พ.ย.\",\"ธ.ค.\"]},days:[\"อา\",\"จ\",\"อ\",\"พ\",\"พฤ\",\"ศ\",\"ส\"]},tr:{language:\"Turkish\",months:{original:[\"Ocak\",\"Şubat\",\"Mart\",\"Nisan\",\"Mayıs\",\"Haziran\",\"Temmuz\",\"Ağustos\",\"Eylül\",\"Ekim\",\"Kasım\",\"Aralık\"],abbr:[\"Oca\",\"Şub\",\"Mar\",\"Nis\",\"May\",\"Haz\",\"Tem\",\"Ağu\",\"Eyl\",\"Eki\",\"Kas\",\"Ara\"]},days:[\"Paz\",\"Pzt\",\"Sal\",\"Çar\",\"Per\",\"Cum\",\"Cmt\"]},uk:{language:\"Ukraine\",months:{original:[\"Січень\",\"Лютий\",\"Березень\",\"Квітень\",\"Травень\",\"Червень\",\"Липень\",\"Серпень\",\"Вересень\",\"Жовтень\",\"Листопад\",\"Грудень\"],abbr:[\"Січ\",\"Лют\",\"Бер\",\"Квіт\",\"Трав\",\"Чер\",\"Лип\",\"Серп\",\"Вер\",\"Жовт\",\"Лист\",\"Груд\"]},days:[\"Нд\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"]},ur:{language:\"Urdu\",rtl:!0,months:{original:[\"جنوری\",\"فروری\",\"مارچ\",\"اپریل\",\"مئی\",\"جون\",\"جولائی\",\"اگست\",\"سپتمبر\",\"اکتوبر\",\"نومبر\",\"دسمبر\"],abbr:[\"جنوری\",\"فروری\",\"مارچ\",\"اپریل\",\"مئی\",\"جون\",\"جولائی\",\"اگست\",\"سپتمبر\",\"اکتوبر\",\"نومبر\",\"دسمبر\"]},days:[\"اتوار\",\"پیر\",\"منگل\",\"بدھ\",\"جمعرات\",\"جمعہ\",\"ہفتہ\"]},vi:{language:\"Vientnamese\",months:{original:[\"Tháng 1\",\"Tháng 2\",\"Tháng 3\",\"Tháng 4\",\"Tháng 5\",\"Tháng 6\",\"Tháng 7\",\"Tháng 8\",\"Tháng 9\",\"Tháng 10\",\"Tháng 11\",\"Tháng 12\"],abbr:[\"T 01\",\"T 02\",\"T 03\",\"T 04\",\"T 05\",\"T 06\",\"T 07\",\"T 08\",\"T 09\",\"T 10\",\"T 11\",\"T 12\"]},days:[\"CN\",\"Thứ 2\",\"Thứ 3\",\"Thứ 4\",\"Thứ 5\",\"Thứ 6\",\"Thứ 7\"]},zh:{language:\"Chinese\",ymd:!0,months:{original:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],abbr:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"]},days:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"]}}}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var i=n(9),r=n(0).document,a=i(r)&&i(r.createElement);e.exports=function(e){return a?r.createElement(e):{}}},function(e,t,n){var i=n(0),r=n(13),a=n(50),o=n(4),s=function(e,t,n){var l,u,c,d=e&s.F,h=e&s.G,p=e&s.S,f=e&s.P,g=e&s.B,b=e&s.W,m=h?r:r[t]||(r[t]={}),v=m.prototype,y=h?i:p?i[t]:(i[t]||{}).prototype;h&&(n=t);for(l in n)(u=!d&&y&&void 0!==y[l])&&l in m||(c=u?y[l]:n[l],m[l]=h&&\"function\"!=typeof y[l]?n[l]:g&&u?a(c,i):b&&y[l]==c?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(c):f&&\"function\"==typeof c?a(Function.call,c):c,f&&((m.virtual||(m.virtual={}))[l]=c,e&s.R&&v&&!v[l]&&o(v,l,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},function(e,t,n){e.exports=!n(3)&&!n(8)(function(){return 7!=Object.defineProperty(n(28)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(e,t,n){\"use strict\";var i=n(17),r=n(29),a=n(36),o=n(4),s=n(1),l=n(16),u=n(55),c=n(19),d=n(62),h=n(6)(\"iterator\"),p=!([].keys&&\"next\"in[].keys()),f=function(){return this};e.exports=function(e,t,n,g,b,m,v){u(n,t,g);var y,D,M,S=function(e){if(!p&&e in x)return x[e];switch(e){case\"keys\":case\"values\":return function(){return new n(this,e)}}return function(){return new n(this,e)}},w=t+\" Iterator\",_=\"values\"==b,k=!1,x=e.prototype,O=x[h]||x[\"@@iterator\"]||b&&x[b],J=O||S(b),F=b?_?S(\"entries\"):J:void 0,A=\"Array\"==t?x.entries||O:O;if(A&&(M=d(A.call(new e)))!==Object.prototype&&(c(M,w,!0),i||s(M,h)||o(M,h,f)),_&&O&&\"values\"!==O.name&&(k=!0,J=function(){return O.call(this)}),i&&!v||!p&&!k&&x[h]||o(x,h,J),l[t]=J,l[w]=f,b)if(y={values:_?J:S(\"values\"),keys:m?J:S(\"keys\"),entries:F},v)for(D in y)D in x||a(x,D,y[D]);else r(r.P+r.F*(p||k),t,y);return y}},function(e,t,n){var i=n(7),r=n(59),a=n(15),o=n(20)(\"IE_PROTO\"),s=function(){},l=function(){var e,t=n(28)(\"iframe\"),i=a.length;for(t.style.display=\"none\",n(52).appendChild(t),t.src=\"javascript:\",e=t.contentWindow.document,e.open(),e.write(\"\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RefundCredits.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RefundCredits.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RefundCredits.vue?vue&type=template&id=55ccf200&scoped=true&\"\nimport script from \"./RefundCredits.vue?vue&type=script&lang=js&\"\nexport * from \"./RefundCredits.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RefundCredits.vue?vue&type=style&index=0&id=55ccf200&prod&scoped=true&lang=css&\"\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 \"55ccf200\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.modalOpened)?_c('bb-modal',{attrs:{\"maxWidth\":\"425px\",\"noPadding\":\"\",\"closeIconLarge\":\"\",\"smallModalBox\":\"\"},on:{\"close\":_vm.handleCloseModal}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"content-wrapper\"},[_c('header',{staticClass:\"header\"},[_c('span',{staticClass:\"text\"},[_vm._v(\"¡Sumaste crédito para tu próxima compra!\")])]),_vm._v(\" \"),_c('router-link',{staticClass:\"credit-redirect-button\",attrs:{\"to\":{ name: 'accountCredit' }}},[_vm._v(\"Ver mi crédito\")])],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HomeView.vue?vue&type=template&id=7779595e&scoped=true&\"\nimport script from \"./HomeView.vue?vue&type=script&lang=js&\"\nexport * from \"./HomeView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HomeView.vue?vue&type=style&index=0&id=7779595e&prod&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 \"7779595e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"home-view\"},[(!_vm.loadingUser)?_c('div',{staticClass:\"login-provider-google\"},[(_vm.googleClientID)?_c(\"script\",{tag:\"component\",attrs:{\"src\":\"https://accounts.google.com/gsi/client\",\"async\":\"\"},on:{\"load\":_vm.initSignIn}}):_vm._e(),_vm._v(\" \"),(_vm.googleClientID && !_vm.auth_user)?_c('div',{attrs:{\"id\":\"gSignInButton\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('RefundCredits',{attrs:{\"creditReferences\":_vm.creditReference}}),_vm._v(\" \"),_c('div',{staticClass:\"home-slider-wrapper\"},[_c('home-slider')],1),_vm._v(\" \"),_c('section',{staticClass:\"best-seller boxes-container bb-new-container\"},[_c('div',{staticClass:\"full-width\"},[_c('div',{staticClass:\"boxes-title\"},[_c('span',{staticClass:\"typography-title-medium\"},[_vm._v(\"Lo más regalado\")]),_vm._v(\" \"),_c('router-link',{staticClass:\"typography-action-small bb-underline bb-ml-1 bb-my-1\",attrs:{\"to\":{\n name: 'products',\n query: {\n card: 0,\n },\n }}},[_vm._v(\"\\n Ver más\\n \")])],1),_vm._v(\" \"),(!_vm.$apollo.queries.featured_boxes.loading)?_c('bb-horizontal-slider',{staticStyle:{\"padding-left\":\"8px !important\",\"padding-right\":\"8px !important\"},attrs:{\"items\":_vm.featuredBoxList,\"itemClass\":\"withPadding col-xs-8 col-sm-4 col-md-3 col-lg-3 bb-mb-1\",\"bigItem\":true,\"arrowClass\":\"boxBlockArrow\"},scopedSlots:_vm._u([{key:\"item\",fn:function(props){return _c('box-card',{attrs:{\"box\":props.item}})}}],null,false,1531185977)}):_c('div',{staticClass:\"bb-row full-width bb-justify-content-between skeleton-row\"},_vm._l((4),function(box){return _c('product-block-skeleton',{staticClass:\"full-width col-xs-8 col-sm-4 col-md-3 col-lg-3 bb-mb-1\",attrs:{\"coverPaddingBottom\":\"86\"}})}),1)],1)]),_vm._v(\" \"),_c('section',{staticClass:\"featured-activities boxes-container bb-new-container\"},[_vm._l((_vm.featuredActivities),function(category){return (_vm.featuredActivities)?_c('div',{staticClass:\"full-width\"},[_c('div',{staticClass:\"boxes-title\"},[_c('span',{staticClass:\"typography-title-medium\"},[_vm._v(_vm._s(category.home_carousel_title\n ? category.home_carousel_title\n : `Destacados de ${category.name}`))]),_vm._v(\" \"),_c('router-link',{staticClass:\"typography-action-small bb-underline bb-ml-1 bb-my-1\",attrs:{\"to\":{\n name: 'products',\n query: {\n card: 0,\n filters: JSON.stringify({ boxCategory: category.name }),\n },\n }}},[_vm._v(\"\\n Ver más\\n \")])],1),_vm._v(\" \"),_c('bb-horizontal-slider',{staticStyle:{\"padding-left\":\"8px !important\",\"padding-right\":\"8px !important\"},attrs:{\"items\":category.activities,\"itemClass\":\"withPadding col-xs-8 col-sm-4 col-md-3 col-lg-3 bb-mb-1\",\"bigItem\":true,\"arrowClass\":\"boxBlockArrow\"},scopedSlots:_vm._u([{key:\"item\",fn:function(props){return _c('box-card',{attrs:{\"box\":props.item,\"category\":category}})}}],null,true)})],1):_vm._e()}),_vm._v(\" \"),(!_vm.categories)?_c('div',[_vm._m(0),_vm._v(\" \"),_vm._l((6),function(i){return _c('div',{staticClass:\"bb-row full-width bb-justify-content-between skeleton-row\"},_vm._l((4),function(box){return _c('product-block-skeleton',{staticClass:\"full-width col-xs-8 col-sm-4 col-md-3 col-lg-3 bb-mb-1\",attrs:{\"coverPaddingBottom\":\"86\"}})}),1)})],2):_vm._e()],2),_vm._v(\" \"),(_vm.onlyOnBigboxContent.length > 0)?_c('section',{staticClass:\"featured-activities boxes-container bb-new-container\"},[_c('div',{staticClass:\"boxes-title\"},[_c('span',{staticClass:\"typography-title-medium\"},[_vm._v(\"Solo en Bigbox\")]),_vm._v(\" \"),_c('router-link',{staticClass:\"typography-action-small bb-underline bb-ml-1 bb-my-1\",attrs:{\"to\":{\n name: 'new-custom-landing',\n params: { landingSlug: `solo-en-bigbox-${_vm.tld}` },\n }}},[_vm._v(\"\\n Ver más\\n \")])],1),_vm._v(\" \"),_c('bb-horizontal-slider',{staticStyle:{\"padding-left\":\"8px !important\",\"padding-right\":\"8px !important\"},attrs:{\"items\":_vm.onlyOnBigboxContent,\"itemClass\":\"withPadding col-xs-8 col-sm-4 col-md-3 col-lg-3 bb-mb-1\",\"bigItem\":true,\"arrowClass\":\"boxBlockArrow\"},scopedSlots:_vm._u([{key:\"item\",fn:function(props){return _c('box-card',{attrs:{\"box\":props.item,\"category\":props.item.category}})}}],null,false,3370905076)})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"full-width bb-fcenter bb-mt-3\"},[_c('router-link',{staticClass:\"see-all-button bb-button --primary bb-bold bb-px-3 full-width bb-fcenter\",attrs:{\"to\":{ name: 'products', query: { card: 0 } }}},[_vm._v(\"\\n Ver todas\\n \")])],1),_vm._v(\" \"),(_vm.categories)?_c('section',{staticClass:\"categories-cards boxes-container bb-new-container\"},[_c('div',{staticClass:\"full-width\"},[_vm._m(1),_vm._v(\" \"),(_vm.categories)?_c('bb-horizontal-slider',{staticStyle:{\"padding-left\":\"8px !important\",\"padding-right\":\"8px !important\"},attrs:{\"items\":_vm.categories,\"itemClass\":\"withPadding categories bb-mb-1\",\"arrowClass\":\"boxBlockArrow\"},scopedSlots:_vm._u([{key:\"item\",fn:function(props){return _c('category-card',{attrs:{\"title\":props.item.name,\"image\":props.item.home_carousel_image},on:{\"blockClicked\":function($event){return _vm.redirectToFilters(props.item.name)}}})}}],null,false,615088983)}):_vm._e()],1)]):_vm._e(),_vm._v(\" \"),_c('section',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showBBPlusBanner),expression:\"showBBPlusBanner\"}],staticClass:\"bb-new-container boxes-container\"},[_c('div',{staticClass:\"bb-plus-banner\"},[_c('div',{staticClass:\"img-container\"},[_c('img',{staticClass:\"img\",attrs:{\"src\":require(\"../../assets/images/BbPlusBanner.png\")}}),_vm._v(\" \"),_c('span',{staticClass:\"bb-plus-logo\",domProps:{\"innerHTML\":_vm._s(require('assets/icons/BbPlusLogo.svg'))}})]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.bbPlusBanner.title))]),_vm._v(\" \"),_c('span',{staticClass:\"subtitle\"},[_vm._v(_vm._s(_vm.bbPlusBanner.subtitle))]),_vm._v(\" \"),_c('span',{staticClass:\"description\"},[_vm._v(_vm._s(_vm.bbPlusBanner.description))]),_vm._v(\" \"),_c('router-link',{staticClass:\"cta bb-button --bb-plus\",attrs:{\"to\":{\n name: 'new-custom-landing',\n params: {\n landingSlug: _vm.bbPlusBanner.ctaLandingSlug,\n },\n },\"tag\":_vm.button}},[_vm._v(\"\\n \"+_vm._s(_vm.bbPlusBanner.cta)+\"\\n \")])],1)])]),_vm._v(\" \"),_c('section',{staticClass:\"cards-container bb-new-container bb-column bb-mt-8\"},[_c('div',{staticClass:\"bb-row-to-column\"},[_vm._l((_vm.homeCards),function(card){return [_c('home-card',{attrs:{\"title\":card.title,\"description\":card.description,\"cta\":card.cta,\"goTo\":card.goTo,\"icon\":card.icon}})]})],2),_vm._v(\" \"),_c('div',{staticClass:\"bb-row corporate-card bb-justify-content-center\",style:({\n backgroundImage:\n 'url(' + require('assets/images/corporate-card-pattern.png') + ')',\n })},[_c('div',{staticClass:\"bb-column bb-justify-content-center corporate-card-column\"},[_c('span',{staticClass:\"hands-icon\",domProps:{\"innerHTML\":_vm._s(require('assets/icons/hands.svg'))}})]),_vm._v(\" \"),_c('div',{staticClass:\"bb-column bb-justify-content-center corporate-card-column\"},[_c('div',{staticClass:\"bb-row-to-column\"},[_c('div',{staticClass:\"corporate-card-description\"},[_c('h1',{staticClass:\"figtree-font bb-semi-bold bb-mb-1 bb-text-white\"},[_vm._v(\"\\n \"+_vm._s(_vm.$translate('Hacé'))+\" un regalo empresarial\\n \")]),_vm._v(\" \"),_c('span',{staticClass:\"bb-sm-max-pr-3 bb-description-3 bb-text-white\"},[_vm._v(\"\\n \"+_vm._s(_vm.$translate('Fidelizá'))+\" clientes y colaboradores con\\n Bigbox, hacer un regalo nunca fue tan fácil.\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"bb-column bb-justify-content-center\"},[_c('a',{staticClass:\"bb-button --white --withBorder bb-bold bb-py-1 bb-px-6 bb-sm-max-p-0 bb-text-primary\",attrs:{\"href\":_vm.corpoUrl}},[_vm._v(\"\\n \"+_vm._s(_vm.$screen.width > 768\n ? _vm.desktopBussinessCardText\n : _vm.mobileBussinessCardText)+\"\\n \")])])])])])]),_vm._v(\" \"),(_vm.isSafari && !_vm.toolTipState)?_c('div',{staticClass:\"tooltip full-width bb-px-2 bb-py-1 bb-show-xs-min\"},[_c('div',{staticClass:\"tip bb-row\"},[_c('div',{staticClass:\"bb-row bb-justify-content-center bb-align-items-center\"},[_c('span',{staticClass:\"more-icon\",domProps:{\"innerHTML\":_vm._s(require('assets/icons/mas.svg'))}}),_vm._v(\" \"),_c('p',{staticClass:\"bb-description-2 bb-ml-1\"},[_vm._v(\"\\n \"+_vm._s(_vm.$translate('Instalá'))+\" esta app en tu iPhone:\\n \"),_c('span',{staticClass:\"tap-icon\",domProps:{\"innerHTML\":_vm._s(require('assets/icons/tap.svg'))}}),_vm._v(\"\\n \"+_vm._s(_vm.$translate('tocá'))+\" y \"+_vm._s(_vm.$translate('añadilo'))+\" a tu pantalla\\n de inicio\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"bb-text-right\"},[_c('span',{staticClass:\"bb-cursor-pointer\",on:{\"click\":function($event){return _vm.closeToolTip()}}},[_vm._v(\"x\")])])])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"news-container bb-fcenter\"},[_c('news-letter-subscription',{attrs:{\"description\":`${this.$translate('Suscribite')} a nuestras novedades!`,\"inputSize\":'--large',\"disclaimer\":\"\"}})],1)],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"boxes-title\"},[_c('p',{staticClass:\"typography-title-medium\"},[_vm._v(\"Destacados\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"boxes-title\"},[_c('span',{staticClass:\"typography-title-medium\"},[_vm._v(\"Categorías\")])])\n}]\n\nexport { render, staticRenderFns }","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"TimeRanges\"},\"variableDefinitions\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time_ranges\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"slug\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"start_time\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"end_time\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":87}};\n doc.loc.source = {\"body\":\"query TimeRanges {\\n time_ranges {\\n name\\n slug\\n start_time\\n end_time\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"TimeRanges\"] = oneQuery(doc, \"TimeRanges\");\n \n","module.exports = \"\"","import { computed } from 'vue';\nimport { storeToRefs } from 'pinia';\nimport { useBoxCatalogViewStore } from 'ecommerce/stores/boxCatalogView.store';\nimport dayjs from 'dayjs';\n\nconst useBoxCatalogView = () => {\n const boxCatalogViewStore = useBoxCatalogViewStore();\n\n const {\n getTimeRange,\n getFilters,\n getPageConfig,\n getSelectedSchedule,\n getLoading,\n getIsModalReservationOpen,\n getCatalogCodeComponent,\n getCatalogModalComponent,\n flags,\n allTimeRanges,\n getOtherActivities,\n } = storeToRefs(boxCatalogViewStore);\n\n /*Query*/\n const onPaginatedBoxes = async box_slug => {\n await boxCatalogViewStore.getPaginatedBoxActivities(box_slug);\n };\n\n /*Date fields*/\n const onSetTimeSlot = timeSlotId => {\n boxCatalogViewStore.onSetTimeSlot(timeSlotId);\n };\n\n const onSetDate = selectedDate => {\n boxCatalogViewStore.onSetDate(selectedDate);\n };\n\n /**\n * @return getTimeRange.date formatted to YYYY-MM-DD\n */\n const getFormattedDate = computed(() => {\n return dayjs(getTimeRange.value.date).format('YYYY-MM-DD');\n });\n const onSetSchedule = schedule => {\n boxCatalogViewStore.onSetSchedule(schedule);\n };\n /*Filters fields*/\n\n const onSetProvince = provinceID => {\n boxCatalogViewStore.onSetProvince(provinceID);\n };\n\n const onSetOrderBy = orderBy => {\n boxCatalogViewStore.onSetOrderBy(orderBy);\n };\n\n const onSetSearchTerm = searchTerm => {\n boxCatalogViewStore.onSetSearchTerm(searchTerm);\n };\n\n const onSetPage = pageNumber => {\n boxCatalogViewStore.onSetPage(pageNumber);\n };\n\n const onSetPerPage = productsQuantity => {\n boxCatalogViewStore.onSetPerPage(productsQuantity);\n };\n\n const onToggleModalReservation = () => {\n boxCatalogViewStore.onToggleModalReservation();\n };\n\n const onActivityBySlug = async slug => {\n await boxCatalogViewStore.onActivityBySlug(slug);\n };\n\n const onCreateReservation = async status => {\n boxCatalogViewStore.onCreateReservation(status);\n };\n\n const resetPageConfig = () => {\n boxCatalogViewStore.resetPageConfig();\n };\n\n const generateTitleDate = () => {\n boxCatalogViewStore.generateTitleDate();\n };\n\n const cleanAvailability = () => {\n boxCatalogViewStore.cleanAvailability();\n };\n\n const setATT = (isATT = false) => {\n boxCatalogViewStore.setATT(isATT)\n }\n\n return {\n onPaginatedBoxes,\n onSetTimeSlot,\n onSetDate,\n onSetSchedule,\n onSetProvince,\n onSetOrderBy,\n onSetSearchTerm,\n onSetPage,\n onSetPerPage,\n onToggleModalReservation,\n onActivityBySlug,\n onCreateReservation,\n resetPageConfig,\n generateTitleDate,\n cleanAvailability,\n setATT,\n flags,\n allTimeRanges,\n getFlags: computed(() => flags.value),\n getOtherActivities,\n getFormattedDate,\n getTimeRange: computed(() => getTimeRange.value),\n getFilters: computed(() => getFilters.value),\n getPageConfig: computed(() => getPageConfig.value),\n getSelectedSchedule: computed(() => getSelectedSchedule.value),\n loading: computed(() => getLoading.value),\n getIsModalReservationOpen: computed({\n get: () => getIsModalReservationOpen.value,\n set: () => onToggleModalReservation(),\n }),\n getCatalogCodeComponent: computed(() => getCatalogCodeComponent.value),\n getCatalogModalComponent: computed(() => getCatalogModalComponent.value),\n };\n};\n\nexport default useBoxCatalogView;\n","module.exports = \"Group 40\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"DiscountLabel\",class:{ '--left': _vm.left, '--right': _vm.right, '--bottom': _vm.bottom, '--top': _vm.top, '--middle': _vm.middle },style:({ backgroundColor: _vm.campaignColor })},[(_vm.icon)?_c('span',{staticClass:\"icon\",domProps:{\"innerHTML\":_vm._s(_vm.icon)}}):_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.discount)+_vm._s(_vm.showDiscountText ? '% OFF' : '')+\"\\n \"),_c('span',{staticClass:\"after\",style:(_vm.gradientStyle())})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\n\n@Component({\n props: {\n top: {\n type: Boolean,\n default: false,\n },\n left: {\n type: Boolean,\n default: false,\n },\n right: {\n type: Boolean,\n default: false,\n },\n middle: {\n type: Boolean,\n default: false,\n },\n bottom: {\n type: Boolean,\n default: false,\n },\n campaignColor: {\n type: String,\n required: false,\n },\n discount: {\n type: [Number, String],\n required: true,\n },\n showDiscountText: {\n type: Boolean,\n default: true,\n },\n icon: {\n type: String,\n required: false,\n },\n },\n})\nexport default class DiscountLabelComponent extends Vue {\n degrees() {\n return this.right ? '135deg' : '225deg';\n }\n\n gradientStyle() {\n return {\n background: `linear-gradient(${this.degrees()}, ${this.campaignColor} 50%, transparent 50%)`,\n };\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./DiscountLabel.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./DiscountLabel.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./DiscountLabel.vue.html?vue&type=template&id=7346f72f&scoped=true&\"\nimport script from \"./DiscountLabel.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./DiscountLabel.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./DiscountLabel.scoped.scss?vue&type=style&index=0&id=7346f72f&prod&lang=vueScss&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 \"7346f72f\",\n null\n \n)\n\nexport default component.exports","module.exports = \"\"","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","module.exports = require('./lib/axios');","module.exports = \"\"","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","module.exports = \"\"","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport HomeCover from 'assets/graphql/queries/HomeCover.graphql';\nimport { useAccountStore } from 'stores/account';\n\n@Component({\n apollo: {\n homeCover: {\n query: HomeCover,\n update(data) {\n this.desktopMedia = data.home_cover.images;\n this.mobileMedia = data.home_cover.mobile_images;\n },\n },\n },\n})\nexport default class HomeSliderComponent extends Vue {\n imgShowing = 0;\n swipePositionStart = {\n x: 0,\n y: 0,\n };\n imageInterval = null;\n desktopMedia = [];\n mobileMedia = [];\n slideTransitionDelay = 5000;\n screenWidth = this.$screen.width;\n\n get media() {\n return this.$screen.width >= 768 ? this.desktopMedia : this.mobileMedia;\n }\n\n created() {\n this.imageInterval = setInterval(this.nextImage, this.slideTransitionDelay);\n }\n\n resetTimer() {\n clearInterval(this.imageInterval);\n this.imageInterval = setInterval(this.nextImage, this.slideTransitionDelay);\n }\n\n hoverSliderItem() {\n clearInterval(this.imageInterval);\n }\n\n get currentImage() {\n return this.media[this.imgShowing];\n }\n\n prevImage() {\n this.resetTimer();\n this.imgShowing =\n this.imgShowing !== 0 ? this.imgShowing - 1 : this.media.length - 1;\n }\n\n nextImage() {\n this.resetTimer();\n this.imgShowing =\n this.imgShowing !== this.media.length - 1 ? this.imgShowing + 1 : 0;\n }\n\n handleStart(e) {\n this.swipePositionStart.x = e.changedTouches[0].screenX;\n this.swipePositionStart.y = e.changedTouches[0].screenY;\n }\n\n handleEnd(e) {\n if (this.mobileMedia.length > 1) {\n const swipeXDiff =\n this.swipePositionStart.x - e.changedTouches[0].screenX;\n const swipeYDiff =\n this.swipePositionStart.y - e.changedTouches[0].screenY;\n\n if (Math.abs(swipeXDiff) > Math.abs(swipeYDiff)) {\n if (swipeXDiff > 0) {\n this.nextImage();\n } else {\n this.prevImage();\n }\n }\n }\n }\n\n get isUserPlus() {\n const account = useAccountStore();\n return !!account.userData?.is_bigbox_plus;\n }\n\n redirectFromCover() {\n const url = this.currentImage.url.startsWith('www.')\n ? `https://${this.currentImage.url}`\n : this.currentImage.url;\n window.location.href = url;\n }\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./HomeSlider.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--12!./HomeSlider.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./HomeSlider.vue.html?vue&type=template&id=01a87d01&\"\nimport script from \"./HomeSlider.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./HomeSlider.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./HomeSlider.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"home-slider\"},[(!this.$apollo.queries.homeCover.loading)?_c('div',{staticClass:\"slider-container bb-row bb-align-items-center\"},[(_vm.media.length > 1)?_c('div',{staticClass:\"controller-container bb-column arrow bb-fcenter bb-cursor-pointer bb-hidden-sm-min --left\",on:{\"click\":_vm.prevImage}},[_c('span',{staticClass:\"controller-icon --left\",domProps:{\"innerHTML\":_vm._s(require('common/icons/sliderController.svg'))}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"image-wrapper\",class:{ 'bb-cursor-pointer': _vm.currentImage ? _vm.currentImage.url : false },on:{\"click\":_vm.redirectFromCover,\"mouseover\":_vm.hoverSliderItem,\"mouseleave\":_vm.resetTimer,\"touchstart\":_vm.handleStart,\"touchend\":_vm.handleEnd}},_vm._l((_vm.media),function(image,index){return _c('div',{staticClass:\"image full-width\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(index === _vm.imgShowing),expression:\"index === imgShowing\"}],staticClass:\"bb-column bb-justify-content-center full-height\"},[_c('div',{staticClass:\"image-text bb-column full-width\"},[_c('span',{staticClass:\"image-title figtree-font\",domProps:{\"innerHTML\":_vm._s(image.title)}}),_vm._v(\" \"),_c('span',{staticClass:\"image-subtitle figtree-font\"},[_vm._v(\"\\n \"+_vm._s(image.subtitle)+\"\\n \")]),_vm._v(\" \"),(image.button_text)?_c('span',{staticClass:\"image-button bb-column bb-justify-content-center bb-align-items-center figtree-font\"},[_vm._v(\"\\n \"+_vm._s(image.button_text)+\"\\n \")]):_vm._e()]),_vm._v(\" \"),_c('picture',{staticClass:\"full-height\"},[_c('source',{attrs:{\"data-srcset\":`https://media.bigbox.com.ar/1/fill/${_vm.screenWidth}/0/ce/1/${image.image}.webp`,\"media\":'(min-width:'+_vm.screenWidth+'px)',\"type\":\"image/webp\"}}),_vm._v(\" \"),_c('source',{attrs:{\"data-srcset\":`https://media.bigbox.com.ar/1/fill/${_vm.screenWidth}/0/ce/1/${image.image}.jpg`,\"media\":'(min-width:'+_vm.screenWidth+'px)',\"type\":\"image/jpg\"}}),_vm._v(\" \"),_c('img',{staticClass:\"full-size lazy-load\",attrs:{\"src\":`https://media.bigbox.com.ar/1/fill/1920/470/ce/1/${image.image}.jpg`,\"alt\":\"Cover\",\"loading\":\"lazy\"}})])])])],1)}),0),_vm._v(\" \"),(_vm.media.length > 1)?_c('div',{staticClass:\"controller-container bb-column arrow bb-fcenter bb-cursor-pointer bb-hidden-sm-min --right\",on:{\"click\":_vm.nextImage}},[_c('span',{staticClass:\"controller-icon --right\",domProps:{\"innerHTML\":_vm._s(require('common/icons/sliderController.svg'))}})]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"steps-controller bb-row bb-justify-content-center\"},[_vm._l((_vm.media.length),function(index){return [_c('span',{staticClass:\"oval-icon\",class:{'--primary' : _vm.imgShowing === index - 1},domProps:{\"innerHTML\":_vm._s(require('common/icons/Oval.svg'))}})]})],2),_vm._v(\" \"),(this.$apollo.queries.homeCover.loading)?_c('div',{staticClass:\"slider-container bb-row bb-align-items-center\"},[_vm._m(0)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"how-it-works-card bb-row bb-align-items-center bb-justify-content-evenly bb-p-1 bb-py-2\",class:{ '--bb-plus-card': _vm.isUserPlus }},[(_vm.isUserPlus)?_c('p',{staticClass:\"hint figtree-font bb-description-6\"},[_vm._v(\"\\n Ahora sos \"),_c('b',[_vm._v(\"Bigbox+\")])]):_c('p',{staticClass:\"hint figtree-font bb-description-6\"},[_vm._v(\"\\n ¿Qué es y cómo funciona Bigbox?\\n \")]),_vm._v(\" \"),(_vm.isUserPlus)?_c('router-link',{staticClass:\"bb-button --bb-plus bb-px-5\",attrs:{\"to\":{ name: 'new-custom-landing', params: { landingSlug: 'bigbox-plus-activos' } }}},[_vm._v(\"\\n Conocer más\\n \")]):_c('router-link',{staticClass:\"bb-button --secondary bb-px-5\",attrs:{\"to\":{ name: 'howItWorks' }}},[_vm._v(\"\\n Descubrir\\n \")])],1)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"image full-width\"},[_c('div',{staticClass:\"lazy-loading\"})])\n}]\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Component from 'vue-class-component';\nimport Lottie from 'vue-lottie';\n\nimport * as check from 'assets/lotties/check_02.json';\n\n@Component({\n props: {\n startStep: {\n type: Object,\n },\n },\n components: {\n Lottie\n }\n})\nexport default class FinalStepComponent extends Vue {\n lotties = {\n animationData: check.default,\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./FinalStep.component.js?vue&type=script&lang=vueJs&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--12!./FinalStep.component.js?vue&type=script&lang=vueJs&\"","import { render, staticRenderFns } from \"./FinalStep.vue.html?vue&type=template&id=2db1d81a&\"\nimport script from \"./FinalStep.component.js?vue&type=script&lang=vueJs&\"\nexport * from \"./FinalStep.component.js?vue&type=script&lang=vueJs&\"\nimport style0 from \"./FinalStep.scss?vue&type=style&index=0&prod&lang=vueScss&\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"final-step\"},[_c('lottie',{attrs:{\"options\":_vm.lotties,\"height\":90,\"width\":90}}),_vm._v(\" \"),_c('div',{staticClass:\"header\"},[_c('h1',[_vm._v(_vm._s(_vm.startStep.title))])]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('p',[_vm._v(_vm._s(_vm.startStep.content))]),_vm._v(\" \"),_c('div',{staticClass:\"description\"},[_c('h2',[_vm._v(_vm._s(_vm.startStep.description))])])]),_vm._v(\" \"),_c('div',{staticClass:\"content__button\"},[_c('button',{staticClass:\"bb-button bb-button-size-large --primary bb-justify-content-center bb-bold bb-py-1 bb-px-5 bb-sm-max-p-0\",on:{\"click\":function($event){return _vm.startStep.goToAskPreference()}}},[_vm._v(\"\\n \"+_vm._s(_vm.startStep.button)+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"bb-button bb-button-size-large bb-button-secondary bb-bold bb-py-1 bb-px-5 bb-sm-max-p-0 bb-justify-content-center\",on:{\"click\":function($event){return _vm.startStep.closeModal()}}},[_vm._v(\"\\n \"+_vm._s(_vm.startStep.buttonSecondary)+\"\\n \")])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","module.exports = \"\"","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = \"\"","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n"],"sourceRoot":""}