{"version":3,"file":"main.js","sources":["main.js"],"sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 17);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./build/scripts/components/general.js\":\n/*!*********************************************!*\\\n !*** ./build/scripts/components/general.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (($, gsap) => {\\n $(function () {\\n // SCROLL LINK\\n $(\\\"a.scroll-link\\\").click(function (e) {\\n e.preventDefault();\\n let target = $(this).attr(\\\"href\\\");\\n if ($('body').hasClass('page-template-soctwo') || $('body').hasClass('page-template-legal')) {\\n return\\n } else {\\n gsap.to(window, { duration: 1, scrollTo: $(target).offset().top - 40 });\\n }\\n });\\n // TODO: relocate to team.js\\n if ($(\\\".team__member\\\")) {\\n gsap.to(\\\".team__member\\\", {\\n opacity: 1,\\n scale: 1,\\n duration: 2,\\n stagger: { each: 0.05, from: \\\"random\\\" },\\n ease: \\\"back.inOut(1.7)\\\",\\n });\\n }\\n // TODO: relocate to customers.js and other areas\\n $(\\\".sign-up-customers\\\").owlCarousel({\\n items: 4,\\n loop: true,\\n margin: 30,\\n dots: false,\\n nav: true,\\n autoplay: true,\\n fluidSpeed: true,\\n smartSpeed: 800,\\n singleItem: true,\\n });\\n // $(\\\".yarpp-related > .testimonials\\\").owlCarousel({\\n // items: 3,\\n // loop: true,\\n // margin: 0,\\n // dots: false,\\n // nav: true,\\n // autoplay: true,\\n // fluidSpeed: true,\\n // smartSpeed: 1200,\\n // singleItem: true,\\n // });\\n // TODO: relocate to resources and other pages.\\n $(\\\".related-resources\\\").owlCarousel({\\n items: 3,\\n loop: true,\\n margin: 30,\\n dots: false,\\n nav: true,\\n autoplay: false,\\n fluidSpeed: true,\\n smartSpeed: 1200,\\n singleItem: true,\\n responsive: {\\n 0: {\\n items: 1,\\n nav: false,\\n dots: true,\\n },\\n 600: {\\n items: 2,\\n nav: false,\\n dots: true,\\n },\\n 1000: {\\n items: 3,\\n nav: true,\\n dots: false,\\n },\\n }\\n });\\n\\n document.addEventListener('scroll', showScrollbar);\\n document.addEventListener('resize', showScrollbar);\\n function showScrollbar() {\\n if(window.outerWidth > 992) {\\n let scrollbar = document.getElementById('scrollbar')\\n if(window.scrollY > (window.outerHeight - 60)) {\\n scrollbar.style.display = 'flex';\\n } else {\\n scrollbar.style.display = 'none';\\n }\\n } else {\\n scrollbar.style.display = 'none';\\n }\\n }\\n // TODO: validate location and relocate accordingly.\\n $('.press-link').click(function(e) {\\n e.preventDefault();\\n $('#press-form').show();\\n let target = $(this).attr(\\\"href\\\");\\n gsap.to(window, { duration: 1, scrollTo: $(target).offset().top - 40 });\\n })\\n });\\n});\\n\\n\\n//# sourceURL=webpack:///./build/scripts/components/general.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/components/marketo.js\":\n/*!*********************************************!*\\\n !*** ./build/scripts/components/marketo.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* global URLSearchParams plausible */\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = ((window, $) => {\\n function getAttributionMap() {\\n let referrer = document.referrer ? document.referrer : \\\"direct\\\";\\n let medium = document.referrer ? \\\"referral\\\" : \\\"\\\";\\n let attributionMap = [\\n {\\n name: \\\"department\\\",\\n parameter: \\\"utm_department\\\",\\n default: \\\"marketing\\\",\\n api: \\\"utm_department\\\",\\n marketo: \\\"Last_Touch_Department__c\\\"\\n },\\n {\\n name: \\\"campaign\\\",\\n parameter: \\\"utm_campaign\\\",\\n default: \\\"\\\",\\n api: \\\"utm_campaign\\\",\\n marketo: \\\"Last_Touch_Campaign__c\\\"\\n },\\n {\\n name: \\\"medium\\\",\\n parameter: \\\"utm_medium\\\",\\n default: medium,\\n api: \\\"utm_medium\\\",\\n marketo: \\\"Last_Touch_Medium__c\\\"\\n },\\n {\\n name: \\\"source\\\",\\n parameter: \\\"utm_source\\\",\\n default: referrer,\\n api: \\\"utm_source\\\",\\n marketo: \\\"Last_Touch_Source__c\\\"\\n },\\n {\\n name: \\\"content\\\",\\n parameter: \\\"utm_content\\\",\\n default: \\\"\\\",\\n api: \\\"utm_content\\\",\\n marketo: \\\"Last_Touch_Content__c\\\"\\n },\\n {\\n name: \\\"term\\\",\\n parameter: \\\"utm_term\\\",\\n default: \\\"\\\",\\n api: \\\"utm_term\\\",\\n marketo: \\\"Last_Touch_Term__c\\\"\\n },\\n ];\\n return attributionMap;\\n }\\n function hasAttributionCookie() {\\n if ($.cookie(\\\"attribution\\\")) {\\n return true;\\n } else {\\n return false;\\n }\\n }\\n function hasAttributionParameters() {\\n let urlParams = new URLSearchParams(window.location.search);\\n let attributionMap = getAttributionMap();\\n let hasParameters = false;\\n attributionMap.forEach(function (element) {\\n if (urlParams.has(element.parameter)) {\\n hasParameters = true;\\n }\\n });\\n return hasParameters;\\n }\\n function getAttributionParameters() {\\n let urlParams = new URLSearchParams(window.location.search);\\n let attributionMap = getAttributionMap();\\n let attribution = {};\\n attributionMap.forEach(function (element) {\\n if (urlParams.has(element.parameter)) {\\n attribution[element.api] = urlParams\\n .get(element.parameter)\\n .toLowerCase();\\n } else {\\n attribution[element.api] = element.default;\\n }\\n });\\n return attribution;\\n }\\n function setAttributionCookie() {\\n let parameters = getAttributionParameters();\\n if (!hasAttributionCookie() || hasAttributionParameters()) {\\n $.cookie(\\\"attribution\\\", JSON.stringify(parameters), {\\n expires: 1,\\n path: \\\"/\\\",\\n domain: window.location.hostname,\\n });\\n return JSON.stringify(parameters);\\n }\\n }\\n function getAttributionValues() {\\n if (hasAttributionCookie() && !hasAttributionParameters()) {\\n return JSON.parse($.cookie(\\\"attribution\\\"));\\n } else {\\n return JSON.parse(setAttributionCookie());\\n }\\n }\\n function setHiddenAttributionFields(form) {\\n let attributionMap = getAttributionMap();\\n let attributionValues = getAttributionValues();\\n let fields = {};\\n attributionMap.forEach(function (element) {\\n if(attributionValues[element.api].length > 0) {\\n fields[element.marketo] = attributionValues[element.api];\\n }\\n });\\n form.addHiddenFields(fields);\\n }\\n function setAttributionDataLayers() {\\n let attributionVals = getAttributionValues();\\n window.dataLayer.push({ campaign: attributionVals });\\n }\\n function getState(){\\n let urlParams = new URLSearchParams(window.location.search);\\n let state = urlParams.get('state')\\n if (state == null){\\n state = false;\\n }\\n return state;\\n }\\n function attributeLinks() {\\n let links = document.querySelectorAll('[href*=\\\"/login/\\\"][href*=\\\"codecov.io\\\"]')\\n links.forEach(function(link) {\\n let url = new URL(link.href);\\n let params = new URLSearchParams(url.search);\\n let attributionMap = getAttributionMap();\\n let attributionValues = getAttributionValues();\\n attributionMap.forEach(function (element) {\\n if(attributionValues[element.api].length > 0) {\\n params.set(element.parameter, attributionValues[element.api]);\\n }\\n });\\n link.href = link.href + \\\"?\\\" + params.toString();\\n if(getState() && $('body').hasClass('page-template-split-lp')){\\n link.href += '&state=' + getState();\\n }\\n if(link.id === 'github-private') {\\n link.href += '&private=true'\\n }\\n });\\n }\\n function Plausible(plausibleEvent) {\\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\\n const PageTitle = document.title;\\n const QueryString = window.location.search;\\n const UrlParams = new URLSearchParams(QueryString);\\n const MediumUTM = UrlParams.get('utm_medium');\\n const SourceUTM = UrlParams.get('utm_source');\\n const CampaignUTM = UrlParams.get('utm_campaign');\\n const TermUTM = UrlParams.get('utm_term');\\n const ContentUTM = UrlParams.get('utm_content');\\n \\n window.plausible = window.plausible || function() { \\n (window.plausible.q = window.plausible.q || []).push(arguments) \\n }\\n if(window.plausible) {\\n plausible(plausibleEvent, {props: \\n {\\n page: PageTitle,\\n medium: MediumUTM ? MediumUTM : '',\\n source: SourceUTM ? SourceUTM : '',\\n campaign: CampaignUTM ? CampaignUTM : '',\\n term: TermUTM ? TermUTM : '',\\n content: ContentUTM ? ContentUTM : ''\\n }\\n });\\n }\\n }\\n }\\n setAttributionDataLayers();\\n attributeLinks();\\n // -----------------------------------------------------------\\n // GENERAL FORMS FUNCTIONALITY\\n // -----------------------------------------------------------\\n const MktoForms2 = window.MktoForms2;\\n if (typeof MktoForms2 !== \\\"undefined\\\") {\\n // DEFAULTS\\n let forms = MktoForms2.allForms();\\n let invalidDomains = [\\\"@lol.com\\\", \\\"@xx.com\\\", \\\"@googlemail.com\\\", \\\"@hotmail.com\\\", \\\"@hotmail.co.uk\\\", \\\"@icloud.com\\\", \\\"@outlook.com\\\", \\\"@163.com\\\", \\\"@126.com\\\", \\\"@yeah.net\\\", \\\"@vip.163.com\\\", \\\"@vip.126.com\\\", \\\"@188.com\\\", \\\"@gmail.ru\\\", \\\"@yahoo.com\\\", \\\"@ymail.com\\\", \\\"@0815.ru\\\", \\\"@0wnd.net\\\", \\\"@0wnd.org\\\", \\\"@10minutemail.co.za\\\", \\\"@10minutemail.com\\\", \\\"@123-m.com\\\", \\\"@1fsdfdsfsdf.tk\\\", \\\"@1pad.de\\\", \\\"@20minutemail.com\\\", \\\"@21cn.com\\\", \\\"@2fdgdfgdfgdf.tk\\\", \\\"@2prong.com\\\", \\\"@30minutemail.com\\\", \\\"@33mail.com\\\", \\\"@3trtretgfrfe.tk\\\", \\\"@4gfdsgfdgfd.tk\\\", \\\"@4warding.com\\\", \\\"@5ghgfhfghfgh.tk\\\", \\\"@6hjgjhgkilkj.tk\\\", \\\"@6paq.com\\\", \\\"@7tags.com\\\", \\\"@9ox.net\\\", \\\"@a-bc.net\\\", \\\"@agedmail.com\\\", \\\"@ama-trade.de\\\", \\\"@amilegit.com\\\", \\\"@amiri.net\\\", \\\"@amiriindustries.com\\\", \\\"@anonmails.de\\\", \\\"@anonymbox.com\\\", \\\"@antichef.com\\\", \\\"@antichef.net\\\", \\\"@antireg.ru\\\", \\\"@antispam.de\\\", \\\"@antispammail.de\\\", \\\"@armyspy.com\\\", \\\"@artman-conception.com\\\", \\\"@azmeil.tk\\\", \\\"@baxomale.ht.cx\\\", \\\"@beefmilk.com\\\", \\\"@bigstring.com\\\", \\\"@binkmail.com\\\", \\\"@bio-muesli.net\\\", \\\"@bobmail.info\\\", \\\"@bodhi.lawlita.com\\\", \\\"@bofthew.com\\\", \\\"@bootybay.de\\\", \\\"@boun.cr\\\", \\\"@bouncr.com\\\", \\\"@breakthru.com\\\", \\\"@brefmail.com\\\", \\\"@bsnow.net\\\", \\\"@bspamfree.org\\\", \\\"@bugmenot.com\\\", \\\"@bund.us\\\", \\\"@burstmail.info\\\", \\\"@buymoreplays.com\\\", \\\"@byom.de\\\", \\\"@c2.hu\\\", \\\"@card.zp.ua\\\", \\\"@casualdx.com\\\", \\\"@cek.pm\\\", \\\"@centermail.com\\\", \\\"@centermail.net\\\", \\\"@chammy.info\\\", \\\"@childsavetrust.org\\\", \\\"@chogmail.com\\\", \\\"@choicemail1.com\\\", \\\"@clixser.com\\\", \\\"@cmail.net\\\", \\\"@cmail.org\\\", \\\"@coldemail.info\\\", \\\"@cool.fr.nf\\\", \\\"@courriel.fr.nf\\\", \\\"@courrieltemporaire.com\\\", \\\"@crapmail.org\\\", \\\"@cust.in\\\", \\\"@cuvox.de\\\", \\\"@d3p.dk\\\", \\\"@dacoolest.com\\\", \\\"@dandikmail.com\\\", \\\"@dayrep.com\\\", \\\"@dcemail.com\\\", \\\"@deadaddress.com\\\", \\\"@deadspam.com\\\", \\\"@delikkt.de\\\", \\\"@despam.it\\\", \\\"@despammed.com\\\", \\\"@devnullmail.com\\\", \\\"@dfgh.net\\\", \\\"@digitalsanctuary.com\\\", \\\"@dingbone.com\\\", \\\"@disposableaddress.com\\\", \\\"@disposableemailaddresses.com\\\", \\\"@disposableinbox.com\\\", \\\"@dispose.it\\\", \\\"@dispostable.com\\\", \\\"@dodgeit.com\\\", \\\"@dodgit.com\\\", \\\"@donemail.ru\\\", \\\"@dontreg.com\\\", \\\"@dontsendmespam.de\\\", \\\"@drdrb.net\\\", \\\"@dump-email.info\\\", \\\"@dumpandjunk.com\\\", \\\"@dumpyemail.com\\\", \\\"@e-mail.com\\\", \\\"@e-mail.org\\\", \\\"@e4ward.com\\\", \\\"@easytrashmail.com\\\", \\\"@einmalmail.de\\\", \\\"@einrot.com\\\", \\\"@eintagsmail.de\\\", \\\"@emailgo.de\\\", \\\"@emailias.com\\\", \\\"@emaillime.com\\\", \\\"@emailsensei.com\\\", \\\"@emailtemporanea.com\\\", \\\"@emailtemporanea.net\\\", \\\"@emailtemporar.ro\\\", \\\"@emailtemporario.com.br\\\", \\\"@emailthe.net\\\", \\\"@emailtmp.com\\\", \\\"@emailwarden.com\\\", \\\"@emailx.at.hm\\\", \\\"@emailxfer.com\\\", \\\"@emeil.in\\\", \\\"@emeil.ir\\\", \\\"@emz.net\\\", \\\"@ero-tube.org\\\", \\\"@evopo.com\\\", \\\"@explodemail.com\\\", \\\"@express.net.ua\\\", \\\"@eyepaste.com\\\", \\\"@fakeinbox.com\\\", \\\"@fakeinformation.com\\\", \\\"@fansworldwide.de\\\", \\\"@fantasymail.de\\\", \\\"@fightallspam.com\\\", \\\"@filzmail.com\\\", \\\"@fivemail.de\\\", \\\"@fleckens.hu\\\", \\\"@frapmail.com\\\", \\\"@friendlymail.co.uk\\\", \\\"@fuckingduh.com\\\", \\\"@fudgerub.com\\\", \\\"@fyii.de\\\", \\\"@garliclife.com\\\", \\\"@gehensiemirnichtaufdensack.de\\\", \\\"@get2mail.fr\\\", \\\"@getairmail.com\\\", \\\"@getmails.eu\\\", \\\"@getonemail.com\\\", \\\"@giantmail.de\\\", \\\"@girlsundertheinfluence.com\\\", \\\"@gishpuppy.com\\\", \\\"@gmail.com\\\", \\\"@goemailgo.com\\\", \\\"@gotmail.net\\\", \\\"@gotmail.org\\\", \\\"@gotti.otherinbox.com\\\", \\\"@great-host.in\\\", \\\"@greensloth.com\\\", \\\"@grr.la\\\", \\\"@gsrv.co.uk\\\", \\\"@guerillamail.biz\\\", \\\"@guerillamail.com\\\", \\\"@guerrillamail.biz\\\", \\\"@guerrillamail.com\\\", \\\"@guerrillamail.de\\\", \\\"@guerrillamail.info\\\", \\\"@guerrillamail.net\\\", \\\"@guerrillamail.org\\\", \\\"@guerrillamailblock.com\\\", \\\"@gustr.com\\\", \\\"@harakirimail.com\\\", \\\"@hat-geld.de\\\", \\\"@hatespam.org\\\", \\\"@herp.in\\\", \\\"@hidemail.de\\\", \\\"@hidzz.com\\\", \\\"@hmamail.com\\\", \\\"@hopemail.biz\\\", \\\"@ieh-mail.de\\\", \\\"@ikbenspamvrij.nl\\\", \\\"@imails.info\\\", \\\"@inbax.tk\\\", \\\"@inbox.si\\\", \\\"@inboxalias.com\\\", \\\"@inboxclean.com\\\", \\\"@inboxclean.org\\\", \\\"@infocom.zp.ua\\\", \\\"@instant-mail.de\\\", \\\"@ip6.li\\\", \\\"@irish2me.com\\\", \\\"@iwi.net\\\", \\\"@jetable.com\\\", \\\"@jetable.fr.nf\\\", \\\"@jetable.net\\\", \\\"@jetable.org\\\", \\\"@jnxjn.com\\\", \\\"@jourrapide.com\\\", \\\"@jsrsolutions.com\\\", \\\"@kasmail.com\\\", \\\"@kaspop.com\\\", \\\"@killmail.com\\\", \\\"@killmail.net\\\", \\\"@klassmaster.com\\\", \\\"@klzlk.com\\\", \\\"@koszmail.pl\\\", \\\"@kurzepost.de\\\", \\\"@lawlita.com\\\", \\\"@letthemeatspam.com\\\", \\\"@lhsdv.com\\\", \\\"@lifebyfood.com\\\", \\\"@link2mail.net\\\", \\\"@litedrop.com\\\", \\\"@lol.ovpn.to\\\", \\\"@lolfreak.net\\\", \\\"@lookugly.com\\\", \\\"@lortemail.dk\\\", \\\"@lr78.com\\\", \\\"@lroid.com\\\", \\\"@lukop.dk\\\", \\\"@m21.cc\\\", \\\"@mail-filter.com\\\", \\\"@mail-temporaire.fr\\\", \\\"@mail.by\\\", \\\"@mail.mezimages.net\\\", \\\"@mail.zp.ua\\\", \\\"@mail1a.de\\\", \\\"@mail21.cc\\\", \\\"@mail2rss.org\\\", \\\"@mail333.com\\\", \\\"@mailbidon.com\\\", \\\"@mailbiz.biz\\\", \\\"@mailblocks.com\\\", \\\"@mailbucket.org\\\", \\\"@mailcat.biz\\\", \\\"@mailcatch.com\\\", \\\"@mailde.de\\\", \\\"@mailde.info\\\", \\\"@maildrop.cc\\\", \\\"@maileimer.de\\\", \\\"@mailexpire.com\\\", \\\"@mailfa.tk\\\", \\\"@mailforspam.com\\\", \\\"@mailfreeonline.com\\\", \\\"@mailguard.me\\\", \\\"@mailin8r.com\\\", \\\"@mailinater.com\\\", \\\"@mailinator.com\\\", \\\"@mailinator.net\\\", \\\"@mailinator.org\\\", \\\"@mailinator2.com\\\", \\\"@mailincubator.com\\\", \\\"@mailismagic.com\\\", \\\"@mailme.lv\\\", \\\"@mailme24.com\\\", \\\"@mailmetrash.com\\\", \\\"@mailmoat.com\\\", \\\"@mailms.com\\\", \\\"@mailnesia.com\\\", \\\"@mailnull.com\\\", \\\"@mailorg.org\\\", \\\"@mailpick.biz\\\", \\\"@mailrock.biz\\\", \\\"@mailscrap.com\\\", \\\"@mailshell.com\\\", \\\"@mailsiphon.com\\\", \\\"@mailtemp.info\\\", \\\"@mailtome.de\\\", \\\"@mailtothis.com\\\", \\\"@mailtrash.net\\\", \\\"@mailtv.net\\\", \\\"@mailtv.tv\\\", \\\"@mailzilla.com\\\", \\\"@makemetheking.com\\\", \\\"@manybrain.com\\\", \\\"@mbx.cc\\\", \\\"@mega.zik.dj\\\", \\\"@meinspamschutz.de\\\", \\\"@meltmail.com\\\", \\\"@messagebeamer.de\\\", \\\"@mezimages.net\\\", \\\"@ministry-of-silly-walks.de\\\", \\\"@mintemail.com\\\", \\\"@misterpinball.de\\\", \\\"@moncourrier.fr.nf\\\", \\\"@monemail.fr.nf\\\", \\\"@monmail.fr.nf\\\", \\\"@monumentmail.com\\\", \\\"@mt2009.com\\\", \\\"@mt2014.com\\\", \\\"@mycard.net.ua\\\", \\\"@mycleaninbox.net\\\", \\\"@mymail-in.net\\\", \\\"@mypacks.net\\\", \\\"@mypartyclip.de\\\", \\\"@myphantomemail.com\\\", \\\"@mysamp.de\\\", \\\"@mytempemail.com\\\", \\\"@mytempmail.com\\\", \\\"@mytrashmail.com\\\", \\\"@nabuma.com\\\", \\\"@neomailbox.com\\\", \\\"@nepwk.com\\\", \\\"@nervmich.net\\\", \\\"@nervtmich.net\\\", \\\"@netmails.com\\\", \\\"@netmails.net\\\", \\\"@neverbox.com\\\", \\\"@nice-4u.com\\\", \\\"@nincsmail.hu\\\", \\\"@nnh.com\\\", \\\"@no-spam.ws\\\", \\\"@noblepioneer.com\\\", \\\"@nomail.pw\\\", \\\"@nomail.xl.cx\\\", \\\"@nomail2me.com\\\", \\\"@nomorespamemails.com\\\", \\\"@nospam.ze.tc\\\", \\\"@nospam4.us\\\", \\\"@nospamfor.us\\\", \\\"@nospammail.net\\\", \\\"@notmailinator.com\\\", \\\"@nowhere.org\\\", \\\"@nowmymail.com\\\", \\\"@nurfuerspam.de\\\", \\\"@nus.edu.sg\\\", \\\"@objectmail.com\\\", \\\"@obobbo.com\\\", \\\"@odnorazovoe.ru\\\", \\\"@oneoffemail.com\\\", \\\"@onewaymail.com\\\", \\\"@onlatedotcom.info\\\", \\\"@online.ms\\\", \\\"@opayq.com\\\", \\\"@ordinaryamerican.net\\\", \\\"@otherinbox.com\\\", \\\"@ovpn.to\\\", \\\"@owlpic.com\\\", \\\"@pancakemail.com\\\", \\\"@pcusers.otherinbox.com\\\", \\\"@pjjkp.com\\\", \\\"@plexolan.de\\\", \\\"@poczta.onet.pl\\\", \\\"@politikerclub.de\\\", \\\"@poofy.org\\\", \\\"@pookmail.com\\\", \\\"@privacy.net\\\", \\\"@privatdemail.net\\\", \\\"@proxymail.eu\\\", \\\"@prtnx.com\\\", \\\"@putthisinyourspamdatabase.com\\\", \\\"@putthisinyourspamdatabase.com\\\", \\\"@qq.com\\\", \\\"@quickinbox.com\\\", \\\"@rcpt.at\\\", \\\"@reallymymail.com\\\", \\\"@realtyalerts.ca\\\", \\\"@recode.me\\\", \\\"@recursor.net\\\", \\\"@reliable-mail.com\\\", \\\"@rhyta.com\\\", \\\"@rmqkr.net\\\", \\\"@royal.net\\\", \\\"@rtrtr.com\\\", \\\"@s0ny.net\\\", \\\"@safe-mail.net\\\", \\\"@safersignup.de\\\", \\\"@safetymail.info\\\", \\\"@safetypost.de\\\", \\\"@saynotospams.com\\\", \\\"@schafmail.de\\\", \\\"@schrott-email.de\\\", \\\"@secretemail.de\\\", \\\"@secure-mail.biz\\\", \\\"@senseless-entertainment.com\\\", \\\"@services391.com\\\", \\\"@sharklasers.com\\\", \\\"@shieldemail.com\\\", \\\"@shiftmail.com\\\", \\\"@shitmail.me\\\", \\\"@shitware.nl\\\", \\\"@shmeriously.com\\\", \\\"@shortmail.net\\\", \\\"@sibmail.com\\\", \\\"@sinnlos-mail.de\\\", \\\"@slapsfromlastnight.com\\\", \\\"@slaskpost.se\\\", \\\"@smashmail.de\\\", \\\"@smellfear.com\\\", \\\"@snakemail.com\\\", \\\"@sneakemail.com\\\", \\\"@sneakmail.de\\\", \\\"@snkmail.com\\\", \\\"@sofimail.com\\\", \\\"@solvemail.info\\\", \\\"@sogetthis.com\\\", \\\"@soodonims.com\\\", \\\"@spam4.me\\\", \\\"@spamail.de\\\", \\\"@spamarrest.com\\\", \\\"@spambob.net\\\", \\\"@spambog.ru\\\", \\\"@spambox.us\\\", \\\"@spamcannon.com\\\", \\\"@spamcannon.net\\\", \\\"@spamcon.org\\\", \\\"@spamcorptastic.com\\\", \\\"@spamcowboy.com\\\", \\\"@spamcowboy.net\\\", \\\"@spamcowboy.org\\\", \\\"@spamday.com\\\", \\\"@spamex.com\\\", \\\"@spamfree.eu\\\", \\\"@spamfree24.com\\\", \\\"@spamfree24.de\\\", \\\"@spamfree24.org\\\", \\\"@spamgoes.in\\\", \\\"@spamgourmet.com\\\", \\\"@spamgourmet.net\\\", \\\"@spamgourmet.org\\\", \\\"@spamherelots.com\\\", \\\"@spamherelots.com\\\", \\\"@spamhereplease.com\\\", \\\"@spamhereplease.com\\\", \\\"@spamhole.com\\\", \\\"@spamify.com\\\", \\\"@spaml.de\\\", \\\"@spammotel.com\\\", \\\"@spamobox.com\\\", \\\"@spamslicer.com\\\", \\\"@spamspot.com\\\", \\\"@spamthis.co.uk\\\", \\\"@spamtroll.net\\\", \\\"@speed.1s.fr\\\", \\\"@spoofmail.de\\\", \\\"@stuffmail.de\\\", \\\"@super-auswahl.de\\\", \\\"@supergreatmail.com\\\", \\\"@supermailer.jp\\\", \\\"@superrito.com\\\", \\\"@superstachel.de\\\", \\\"@suremail.info\\\", \\\"@talkinator.com\\\", \\\"@teewars.org\\\", \\\"@teleworm.com\\\", \\\"@teleworm.us\\\", \\\"@temp-mail.org\\\", \\\"@temp-mail.ru\\\", \\\"@tempe-mail.com\\\", \\\"@tempemail.co.za\\\", \\\"@tempemail.com\\\", \\\"@tempemail.net\\\", \\\"@tempemail.net\\\", \\\"@tempinbox.co.uk\\\", \\\"@tempinbox.com\\\", \\\"@tempmail.eu\\\", \\\"@tempmaildemo.com\\\", \\\"@tempmailer.com\\\", \\\"@tempmailer.de\\\", \\\"@tempomail.fr\\\", \\\"@temporaryemail.net\\\", \\\"@temporaryforwarding.com\\\", \\\"@temporaryinbox.com\\\", \\\"@temporarymailaddress.com\\\", \\\"@tempthe.net\\\", \\\"@thankyou2010.com\\\", \\\"@thc.st\\\", \\\"@thelimestones.com\\\", \\\"@thisisnotmyrealemail.com\\\", \\\"@thismail.net\\\", \\\"@throwawayemailaddress.com\\\", \\\"@tilien.com\\\", \\\"@tittbit.in\\\", \\\"@tizi.com\\\", \\\"@tmailinator.com\\\", \\\"@toomail.biz\\\", \\\"@topranklist.de\\\", \\\"@tradermail.info\\\", \\\"@trash-mail.at\\\", \\\"@trash-mail.com\\\", \\\"@trash-mail.de\\\", \\\"@trash2009.com\\\", \\\"@trashdevil.com\\\", \\\"@trashemail.de\\\", \\\"@trashmail.at\\\", \\\"@trashmail.com\\\", \\\"@trashmail.de\\\", \\\"@trashmail.me\\\", \\\"@trashmail.net\\\", \\\"@trashmail.org\\\", \\\"@trashymail.com\\\", \\\"@trialmail.de\\\", \\\"@trillianpro.com\\\", \\\"@twinmail.de\\\", \\\"@tyldd.com\\\", \\\"@uggsrock.com\\\", \\\"@umail.net\\\", \\\"@uroid.com\\\", \\\"@us.af\\\", \\\"@venompen.com\\\", \\\"@veryrealemail.com\\\", \\\"@viditag.com\\\", \\\"@viralplays.com\\\", \\\"@vpn.st\\\", \\\"@vsimcard.com\\\", \\\"@vubby.com\\\", \\\"@wasteland.rfc822.org\\\", \\\"@webemail.me\\\", \\\"@weg-werf-email.de\\\", \\\"@wegwerf-emails.de\\\", \\\"@wegwerfadresse.de\\\", \\\"@wegwerfemail.com\\\", \\\"@wegwerfemail.de\\\", \\\"@wegwerfmail.de\\\", \\\"@wegwerfmail.info\\\", \\\"@wegwerfmail.net\\\", \\\"@wegwerfmail.org\\\", \\\"@wh4f.org\\\", \\\"@whyspam.me\\\", \\\"@willhackforfood.biz\\\", \\\"@willselfdestruct.com\\\", \\\"@winemaven.info\\\", \\\"@wronghead.com\\\", \\\"@www.e4ward.com\\\", \\\"@www.mailinator.com\\\", \\\"@wwwnew.eu\\\", \\\"@x.ip6.li\\\", \\\"@xagloo.com\\\", \\\"@xemaps.com\\\", \\\"@xents.com\\\", \\\"@xmaily.com\\\", \\\"@xoxy.net\\\", \\\"@yep.it\\\", \\\"@yogamaven.com\\\", \\\"@yopmail.com\\\", \\\"@yopmail.fr\\\", \\\"@yopmail.net\\\", \\\"@yourdomain.com\\\", \\\"@yuurok.com\\\", \\\"@z1p.biz\\\", \\\"@za.com\\\", \\\"@zehnminuten.de\\\", \\\"@zehnminutenmail.de\\\", \\\"@zippymail.info\\\", \\\"@zoemail.net\\\", \\\"@zomg.info\\\"];\\n // RUN FORM PRETTIFYING FUNCTION ON FORM RENDER\\n MktoForms2.onFormRender(function (form) {\\n console.log('test');\\n makeFormsPretty(form);\\n });\\n // RUN FORM PRETTIFYING FUNCTION ON WINDOW RESIZE\\n $(window).resize(function () {\\n for (let i = 0; i < forms.length; i++) {\\n makeFormsPretty(forms[i]);\\n }\\n });\\n // FORM CONVERSION STUFF\\n MktoForms2.whenReady(function (form) {\\n let formElement = form.getFormElem();\\n let response = formElement.data(\\\"response\\\");\\n let redirect = formElement.data(\\\"redirect\\\");\\n // let styled = formElement.data('styled')\\n let formId = form.getId();\\n // ATTRIBUTION OVERRIDE\\n setHiddenAttributionFields(form);\\n // GOOGLE ANALYTICS TRACKING\\n /*if (typeof window.ga !== \\\"undefined\\\") {\\n //let ga = window.ga;\\n ga(function () {\\n let tracker = window.ga.getAll()[0];\\n let clientId = tracker.get(\\\"clientId\\\");\\n let trackerId = tracker.get(\\\"trackingId\\\");\\n form.addHiddenFields({\\n GATRACKID__c: trackerId,\\n GACLIENTID__c: clientId,\\n });\\n });\\n }*/\\n // NPS SCORE AUTOPOPULATE\\n /*if (formId === 1111) {\\n var urlParams = new RegExp('[?&]' + 'score' + '=([^&#]*)').exec(window.location.href)\\n if (urlParams) {\\n var score = parseInt(urlParams[1])\\n if (score) {\\n form.vals({'NPS_Score__c': score})\\n }\\n }\\n }*/\\n // REDIRECT TO SUPPORT\\n formElement.on(\\\"change\\\", function () {\\n let contactReason = document.getElementById('Contact_Reason__c') ? document.getElementById('Contact_Reason__c').value : null\\n if(contactReason === 'Help and Support') {\\n window.location.href = 'https://codecovpro.zendesk.com/';\\n }\\n })\\n // REDIRECT TO LOGIN\\n /*form.onSubmit(function (form) {\\n if(form.getId() === 1099) {\\n switch(form.getValues().Message__C) {\\n case 'github':\\n window.location.href = 'https://codecov.io/login/gh';\\n break;\\n case 'gitlab':\\n window.location.href = 'https://codecov.io/login/gl';\\n break;\\n case 'bitbucket':\\n window.location.href = 'https://codecov.io/login/bb';\\n break;\\n default:\\n form.showErrorMessage('Must select code host.')\\n }\\n }\\n })*/\\n function isEmailGood(email) {\\n for(var i=0; i < invalidDomains.length; i++) {\\n var domain = invalidDomains[i];\\n if (email.indexOf(domain) != -1) {\\n return false;\\n }\\n }\\n return true;\\n }\\n function isNameGood(name) {\\n const nameRegex = /[.,\\\\/#!$%\\\\^&\\\\*;:{}=\\\\_`~()]/g;\\n const numberRegex = /[0-9]/g;\\n var nameResult = nameRegex.test(name);\\n var numberResult = numberRegex.test(name);\\n if (nameResult == true || numberResult == true) {\\n return false;\\n }\\n return true;\\n }\\n function isPhoneGood(phone){\\n const phoneRegex = /^[\\\\+]?[(]?[0-9]{3}[)]?[-\\\\s\\\\.]?[0-9]{3}[-\\\\s\\\\.]?[0-9]{4,6}$/im;\\n var phoneResult = phoneRegex.test(phone);\\n if (phoneResult == false) {\\n return false\\n }\\n return true\\n }\\n // ALL FORMS ON VALIDATE\\n form.onValidate(function () {\\n let email = form.vals().Email\\n let first = form.vals().FirstName\\n let last = form.vals().LastName\\n let phone = form.vals().Phone\\n let formElement = form.getFormElem()\\n let toValidate = Boolean(formElement.data(\\\"validate\\\"))\\n if (toValidate) {\\n if (email && !isEmailGood(email)) {\\n form.submitable(false)\\n let emailElem = form.getFormElem().find('#Email')\\n form.showErrorMessage('Must be valid work email.', emailElem)\\n } else if (first && !isNameGood(first)) {\\n form.submitable(false)\\n let firstElem = form.getFormElem().find('#FirstName')\\n form.showErrorMessage('Must be valid name.', firstElem)\\n } else if (last && !isNameGood(last)) {\\n form.submitable(false)\\n let lastElem = form.getFormElem().find('#LastName')\\n form.showErrorMessage('Must be valid name.', lastElem)\\n } else if (phone && !isPhoneGood(phone)) {\\n form.submitable(false)\\n let phoneElem = form.getFormElem().find('#Phone')\\n form.showErrorMessage('Must be valid phone number.', phoneElem)\\n } else {\\n form.submitable(true)\\n }\\n }\\n\\n })\\n // ALL FORMS ON SUBMIT\\n form.onSubmit(function (form) {\\n // SWAP BUTTON TEXT OUT FOR A SPINNER\\n formElement\\n .find(\\\".mktoButton\\\")\\n .html('')\\n .css({ \\\"font-family\\\": \\\"FontAwesome\\\" });\\n });\\n // ALL FORMS ON SUCCESS\\n form.onSuccess(function (values, followUpUrl) {\\n formElement\\n .find(\\\".mktoButton\\\")\\n .html(formElement.data(\\\"cta\\\"))\\n .css({ \\\"font-family\\\": \\\"\\\" });\\n // IDENTIFY USER\\n let email = form.vals().Email\\n let eventLabel = window.document.title\\n if (form.vals().Last_Touch_Content__c) {\\n eventLabel = form.vals().Last_Touch_Content__c + ' - ' + window.document.title\\n }\\n if (formId === 1488){\\n Plausible('demo');\\n // stub out linkedin \\n if (typeof window !== 'undefined'){\\n window.lintrk('track', { conversion_id: 17395780 });\\n }\\n }\\n if (formId === 1485){\\n Plausible('contact');\\n if (typeof window !== 'undefined'){\\n window.lintrk('track', { conversion_id: 17395780 });\\n }\\n }\\n // Plausible FORM TRACKING\\n Plausible('form submitted');\\n });\\n if (response === \\\"message\\\") {\\n form.onSuccess(function (values, followUpUrl) {\\n formElement.hide();\\n $(\\\"#mktoForm_\\\" + formId + \\\"__response\\\").show();\\n return false;\\n });\\n }\\n if (response === \\\"redirect\\\") {\\n form.onSuccess(function (values, followUpUrl) {\\n window.location.href = redirect;\\n return false;\\n });\\n }\\n });\\n }\\n // -----------------------------------------------------------\\n // THE FORM PRETTIFYING FUNCTION\\n // -----------------------------------------------------------\\n function makeFormsPretty(form) {\\n // DEFAULT STYLES\\n let styles = {\\n styled: \\\"true\\\", // DO YOU WANT THE FORM STYLED -> true|false\\n theme: \\\"light\\\", // WHAT TYPE OF BACKGROUND DOES THE FORM HAVE -> light|dark\\n button_classes: \\\"btn btn-md btn-dark-blue btn-group-justified\\\", // VARIOUS BUTTON CLASSES YOU USE, FOR EXAMPLE -> btn|button|\\n button_alignment: \\\"\\\", // VARIOUS BUTTON CLASSES YOU USE -> left|right|center|full-width|empty\\n };\\n // GET THE JQUERY FORM ELEMENT\\n let formElement = form.getFormElem();\\n let overrides = $(formElement).data(\\\"styles\\\");\\n $.extend(styles, overrides);\\n // TELL IF THE FORM SHOULD BE STYLED BY PARENT DIV \\\"UNSTYLED\\\" CLASS OR JSON OVERRIDe\\n // STRIPPING THE STRUCTURE\\n formElement.css({ width: \\\"100%\\\", \\\"max-width\\\": \\\"100%\\\" }); // MAKE FORM FULL WIDTH\\n formElement\\n .find(\\\".mktoLabel, .mktoField, .mktoButtonRow\\\")\\n .css({ width: \\\"100%\\\", \\\"max-width\\\": \\\"100%\\\" }); // MAKE FORM FIELDSETS FULL WIDTH\\n formElement.find(\\\".mktoOffset, .mktoGutter\\\").hide(); // REMOVE GUTTERS AND OTHER JUNK\\n formElement\\n .find(\\\".mktoFieldWrap\\\")\\n .css({ float: \\\"none\\\", \\\"padding-bottom\\\": \\\"0px\\\" }); // REMOVE FIELD WRAPS\\n // DARK VS LIGHT BACKGROUND STYLING\\n if (styles.theme === \\\"dark\\\") {\\n formElement.find(\\\".mktoLabel\\\").css({ color: \\\"rgba(255,255,255,1)\\\" });\\n formElement\\n .find(\\n \\\"input[type=text], input[type=url], input[type=email], input[type=tel], input[type=number], input[type=date], textarea.mktoField, select.mktoField\\\"\\n )\\n .css({ border: \\\"none\\\" });\\n } else if (styles.theme === \\\"light\\\") {\\n formElement.find(\\\".mktoLabel\\\").css({ color: \\\"rgba(0,0,0,.65)\\\" });\\n formElement\\n .find(\\n \\\"input[type=text], input[type=url], input[type=email], input[type=tel], input[type=number], input[type=date], textarea.mktoField, select.mktoField\\\"\\n )\\n .css({ border: \\\"1px solid rgba(0,0,0,.1)\\\" });\\n }\\n // LABELS\\n formElement.find(\\\".mktoLabel\\\").css({\\n display: \\\"flex\\\",\\n \\\"text-align\\\": \\\"left\\\",\\n \\\"font-size\\\": \\\"1em\\\",\\n \\\"font-weight\\\": \\\"600\\\",\\n \\\"margin-bottom\\\": \\\"5px\\\",\\n color: \\\"#333\\\",\\n \\\"flex-direction\\\": \\\"row-reverse\\\",\\n \\\"justify-content\\\": \\\"flex-end\\\",\\n });\\n // ALL FIELDS\\n formElement.find(\\\".mktoField\\\").css({\\n display: \\\"block\\\",\\n \\\"font-weight\\\": \\\"100\\\",\\n \\\"margin-bottom\\\": \\\"10px\\\",\\n \\\"border-radius\\\": \\\"4px\\\",\\n });\\n formElement\\n .find(\\n \\\"input[type=text], input[type=url], input[type=email], input[type=tel], input[type=number], input[type=date], textarea.mktoField, select.mktoField\\\"\\n )\\n .css({\\n color: \\\"#333\\\",\\n \\\"background-color\\\": \\\"#fff\\\",\\n padding: \\\"4px 12px\\\",\\n outline: \\\"none\\\",\\n height: \\\"40px\\\",\\n \\\"border-radius\\\": \\\"4px\\\",\\n \\\"box-shadow\\\": \\\"none\\\",\\n })\\n .on(\\\"focus\\\", function () {\\n $(this).css({ border: \\\"2px solid #FF0077\\\" });\\n })\\n .on(\\\"blur\\\", function () {\\n $(this).css({ border: \\\"1px solid rgba(0, 0, 0, 0.1)\\\" });\\n });\\n formElement\\n .find(\\\"textarea.mktoField\\\")\\n .css({ height: \\\" 120px\\\", padding: \\\"12px 8px\\\" });\\n formElement.find(\\\"select[multiple]\\\").css({ height: \\\"\\\" });\\n // CHECK BOXES\\n formElement\\n .find(\\\".mktoCheckboxList\\\")\\n .parent()\\n .css({\\n display: \\\"flex\\\",\\n flexDirection: \\\"row-reverse\\\",\\n justifyContent: \\\"start\\\",\\n });\\n // COLUMNS\\n formElement\\n .find(\\\".mktoFormCol\\\")\\n .css({ padding: \\\"4px\\\", float: \\\"left\\\", \\\"margin-bottom\\\": \\\"0px\\\" });\\n formElement\\n .on(\\\"focus\\\", \\\".select2-search__field\\\", function () {\\n $(this)\\n .parents(\\\".select2-selection\\\")\\n .css({ border: \\\"2px solid #3194F7\\\" });\\n })\\n .on(\\\"blur\\\", \\\".select2-search__field\\\", function () {\\n $(this)\\n .parents(\\\".select2-selection\\\")\\n .css({ border: \\\"1px solid rgba(0, 0, 0, 0.1)\\\" });\\n });\\n if (window.innerWidth > 480) {\\n formElement.find(\\\".mktoFormRow\\\").each(function (index, value) {\\n let columns = $(this).children(\\\".mktoFormCol\\\").length;\\n let width = 100 / columns + \\\"%\\\";\\n $(this)\\n .find(\\\".mktoFormCol\\\")\\n .each(function () {\\n $(this).removeClass(\\\"mktoFullWidthCol\\\");\\n $(this).css({ width: width });\\n });\\n });\\n } else {\\n formElement.find(\\\".mktoFormCol\\\").css({ width: \\\"100%\\\" });\\n $(\\\".mktoFormCol\\\").addClass(\\\"mktoFullWidthCol\\\");\\n }\\n formElement.find(\\\".mktoAsterix\\\").css({ color: \\\"#E84C3D\\\" });\\n // BUTTONS\\n formElement.find(\\\".mktoButton\\\").css({ display: \\\"block\\\" });\\n formElement.find(\\\".mktoButtonWrap > .mktoButton\\\").unwrap(); // ONLY UNWRAP THE STUPID BUTTON IF IT HAS WRAPPER PARENT\\n formElement.find(\\\".mktoButton\\\").addClass(styles.button_classes); // ADD YOUR OWN BUTTON CLASSES\\n formElement.find(\\\".mktoButton\\\").text(formElement.data(\\\"cta\\\")); // CHANGE THE BUTTON TEXT\\n if (styles.button_alignment === \\\"left\\\") {\\n formElement.find(\\\".mktoButton\\\").css({ float: \\\"left\\\" });\\n } else if (styles.button_alignment === \\\"right\\\") {\\n formElement.find(\\\".mktoButton\\\").css({ float: \\\"right\\\" });\\n } else if (styles.button_alignment === \\\"center\\\") {\\n formElement.find(\\\".mktoButton\\\").css({ margin: \\\"0px auto\\\" });\\n } else if (styles.button_alignment === \\\"full-width\\\") {\\n formElement.find(\\\".mktoButton\\\").css({ width: \\\"100%\\\" });\\n } else {\\n }\\n // MULTIPLE SELECT WITH SELECT2\\n if (typeof $.fn.select2 !== \\\"undefined\\\") {\\n $(formElement)\\n .find('[multiple=\\\"multiple\\\"]')\\n .select2({ placeholder: \\\"Select...\\\", allowClear: true });\\n }\\n console.log(\\n 'is styled'\\n );\\n }\\n});\\n\\n\\n//# sourceURL=webpack:///./build/scripts/components/marketo.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/main.js\":\n/*!*******************************!*\\\n !*** ./build/scripts/main.js ***!\n \\*******************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootstrap */ \\\"./node_modules/bootstrap/dist/js/bootstrap.js\\\");\\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(bootstrap__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _fancyapps_fancybox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fancyapps/fancybox */ \\\"./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.js\\\");\\n/* harmony import */ var _fancyapps_fancybox__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_fancyapps_fancybox__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var jquery_cookie__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! jquery.cookie */ \\\"./node_modules/jquery.cookie/jquery.cookie.js\\\");\\n/* harmony import */ var jquery_cookie__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(jquery_cookie__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var owl_carousel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! owl.carousel */ \\\"./node_modules/owl.carousel/dist/owl.carousel.js\\\");\\n/* harmony import */ var owl_carousel__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(owl_carousel__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var select2__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! select2 */ \\\"./node_modules/select2/dist/js/select2.js\\\");\\n/* harmony import */ var select2__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(select2__WEBPACK_IMPORTED_MODULE_4__);\\n/* harmony import */ var highlight_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! highlight.js */ \\\"./node_modules/highlight.js/lib/index.js\\\");\\n/* harmony import */ var highlight_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(highlight_js__WEBPACK_IMPORTED_MODULE_5__);\\n/* harmony import */ var _vendor_gsap_src_all__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./vendor/gsap/src/all */ \\\"./build/scripts/vendor/gsap/src/all.js\\\");\\n/* harmony import */ var gsap_EasePack__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gsap/EasePack */ \\\"./node_modules/gsap/EasePack.js\\\");\\n/* harmony import */ var _vendor_gsap_src_CSSRulePlugin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./vendor/gsap/src/CSSRulePlugin */ \\\"./build/scripts/vendor/gsap/src/CSSRulePlugin.js\\\");\\n/* harmony import */ var _vendor_gsap_src_ScrollToPlugin__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./vendor/gsap/src/ScrollToPlugin */ \\\"./build/scripts/vendor/gsap/src/ScrollToPlugin.js\\\");\\n/* harmony import */ var _vendor_gsap_src_ScrollTrigger__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./vendor/gsap/src/ScrollTrigger */ \\\"./build/scripts/vendor/gsap/src/ScrollTrigger.js\\\");\\n/* harmony import */ var _vendor_gsap_src_DrawSVGPlugin__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./vendor/gsap/src/DrawSVGPlugin */ \\\"./build/scripts/vendor/gsap/src/DrawSVGPlugin.js\\\");\\n/* harmony import */ var _vendor_gsap_src_MorphSVGPlugin__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./vendor/gsap/src/MorphSVGPlugin */ \\\"./build/scripts/vendor/gsap/src/MorphSVGPlugin.js\\\");\\n/* harmony import */ var _vendor_fancybox__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./vendor/fancybox */ \\\"./build/scripts/vendor/fancybox.js\\\");\\n/* harmony import */ var _components_general__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/general */ \\\"./build/scripts/components/general.js\\\");\\n/* harmony import */ var _components_marketo__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/marketo */ \\\"./build/scripts/components/marketo.js\\\");\\n/* harmony import */ var _parts_menu__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./parts/menu */ \\\"./build/scripts/parts/menu.js\\\");\\n/* harmony import */ var _templates_customers__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./templates/customers */ \\\"./build/scripts/templates/customers.js\\\");\\n/* harmony import */ var _templates_home__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./templates/home */ \\\"./build/scripts/templates/home.js\\\");\\n\\n\\n\\n\\n\\n\\nhighlight_js__WEBPACK_IMPORTED_MODULE_5___default.a.initHighlightingOnLoad();\\n\\n\\n\\n\\n\\n\\n\\n_vendor_gsap_src_all__WEBPACK_IMPORTED_MODULE_6__[\\\"gsap\\\"].registerPlugin(\\n _vendor_gsap_src_CSSRulePlugin__WEBPACK_IMPORTED_MODULE_8__[\\\"CSSRulePlugin\\\"],\\n _vendor_gsap_src_ScrollToPlugin__WEBPACK_IMPORTED_MODULE_9__[\\\"ScrollToPlugin\\\"],\\n _vendor_gsap_src_ScrollTrigger__WEBPACK_IMPORTED_MODULE_10__[\\\"ScrollTrigger\\\"],\\n _vendor_gsap_src_DrawSVGPlugin__WEBPACK_IMPORTED_MODULE_11__[\\\"DrawSVGPlugin\\\"],\\n _vendor_gsap_src_MorphSVGPlugin__WEBPACK_IMPORTED_MODULE_12__[\\\"MorphSVGPlugin\\\"],\\n gsap_EasePack__WEBPACK_IMPORTED_MODULE_7__[\\\"ExpoScaleEase\\\"],\\n gsap_EasePack__WEBPACK_IMPORTED_MODULE_7__[\\\"RoughEase\\\"],\\n gsap_EasePack__WEBPACK_IMPORTED_MODULE_7__[\\\"SlowMo\\\"]\\n);\\n\\n\\n// import gettingStarted from \\\"./parts/getting-started\\\";\\n\\n\\n\\n\\nwindow.jQuery(($) => {\\n Object(_vendor_fancybox__WEBPACK_IMPORTED_MODULE_13__[\\\"default\\\"])($);\\n Object(_components_general__WEBPACK_IMPORTED_MODULE_14__[\\\"default\\\"])($, _vendor_gsap_src_all__WEBPACK_IMPORTED_MODULE_6__[\\\"gsap\\\"]);\\n // gettingStarted($);\\n Object(_components_marketo__WEBPACK_IMPORTED_MODULE_15__[\\\"default\\\"])(window, $);\\n Object(_parts_menu__WEBPACK_IMPORTED_MODULE_16__[\\\"default\\\"])(window, $);\\n Object(_templates_customers__WEBPACK_IMPORTED_MODULE_17__[\\\"default\\\"])(window, $);\\n Object(_templates_home__WEBPACK_IMPORTED_MODULE_18__[\\\"default\\\"])($, _vendor_gsap_src_all__WEBPACK_IMPORTED_MODULE_6__[\\\"gsap\\\"]);\\n});\\n\\n\\n\\n//# sourceURL=webpack:///./build/scripts/main.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/parts/menu.js\":\n/*!*************************************!*\\\n !*** ./build/scripts/parts/menu.js ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = ((window, $) => {\\n $(function () {\\n $(\\\".js-menu_toggle\\\").click(function (e) {\\n $(\\\"#header\\\").toggleClass(\\\"active\\\");\\n $(this).toggleClass(\\\"active\\\");\\n });\\n $(window).resize(function () {\\n $(\\\"#header\\\").removeClass(\\\"active\\\");\\n $(\\\".js-menu_toggle\\\").removeClass(\\\"active\\\");\\n });\\n $(\\\".header__mobile-navigation > ul > li > a\\\").click(function (e) {\\n if ($(this).hasClass(\\\"has-menu\\\")) {\\n e.preventDefault();\\n }\\n $(this)\\n .parent(\\\"li\\\")\\n .toggleClass(\\\"active\\\")\\n .siblings()\\n .removeClass(\\\"active\\\");\\n });\\n });\\n});\\n\\n\\n//# sourceURL=webpack:///./build/scripts/parts/menu.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/templates/customers.js\":\n/*!**********************************************!*\\\n !*** ./build/scripts/templates/customers.js ***!\n \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = ((window, $) => {\\n $(document).ready(function () {\\n let home = $(\\\".home-customers-carousel\\\");\\n home.owlCarousel({\\n items: 1,\\n loop: true,\\n margin: 30,\\n dots: false,\\n nav: false,\\n autoplay: false,\\n autoHeight: true,\\n fluidSpeed: true,\\n smartSpeed: 800,\\n });\\n $(\\\".home-carousel-tab\\\").click(function (e) {\\n e.preventDefault();\\n let number = $(this).data(\\\"section\\\");\\n console.log(number);\\n home.trigger(\\\"to.owl.carousel\\\", [number, 400]);\\n });\\n $(\\\".customer-carousel\\\").owlCarousel({\\n items: 5,\\n loop: true,\\n margin: 30,\\n dots: false,\\n nav: true,\\n fluidSpeed: true,\\n smartSpeed: 800,\\n responsive: {\\n 0: {\\n items: 3,\\n nav: false,\\n dots: true,\\n },\\n 600: {\\n items: 4,\\n nav: false,\\n dots: true,\\n },\\n 1000: {\\n items: 5,\\n nav: true,\\n dots: false,\\n },\\n },\\n });\\n });\\n});\\n\\n\\n//# sourceURL=webpack:///./build/scripts/templates/customers.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/templates/home.js\":\n/*!*****************************************!*\\\n !*** ./build/scripts/templates/home.js ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (($, gsap) => {\\n $(document).ready(function () {\\n // gsap.fromTo(\\n // \\\".solution-box ul li\\\",\\n // {\\n // opacity: 0,\\n // x: -10,\\n // },\\n // {\\n // opacity: 1,\\n // scale: 1,\\n // x: 0,\\n // duration: 0.6,\\n // stagger: {\\n // each: 0.08,\\n // },\\n // scrollTrigger: {\\n // trigger: \\\".section--solutions\\\",\\n // toggleActions: \\\"start\\\",\\n // end: \\\"top middle\\\",\\n // scrub: true,\\n // },\\n // }\\n // );\\n // gsap.to(\\\".customer\\\", {\\n // scrollTrigger: {\\n // trigger: \\\"#customers\\\",\\n // toggleActions: \\\"start\\\",\\n // start: \\\"-100px bottom\\\",\\n // end: \\\"90% bottom\\\",\\n // scrub: true,\\n // },\\n // opacity: 1,\\n // scale: 1,\\n // duration: 1.2,\\n // stagger: {\\n // each: 0.1,\\n // from: \\\"random\\\",\\n // },\\n // ease: \\\"back.inOut()\\\",\\n // });\\n });\\n});\\n\\n\\n//# sourceURL=webpack:///./build/scripts/templates/home.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/vendor/fancybox.js\":\n/*!******************************************!*\\\n !*** ./build/scripts/vendor/fancybox.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (($) => {\\n $('.fancybox').fancybox({\\n 'helpers': {\\n 'overlay': {\\n 'locked': false\\n }\\n }\\n });\\n\\n $(\\\"a.fancybox-iframe, a.fancybox-iframed\\\").fancybox({\\n 'overlayOpacity': '0.4',\\n 'overlayColor': '#000',\\n 'hideOnContentClick': false,\\n 'autoSize': 'auto',\\n 'transitionIn': 'elastic',\\n 'transitionOut': 'elastic',\\n 'type': 'iframe',\\n 'padding': 10,\\n 'helpers': {\\n 'overlay': {\\n 'locked': false\\n }\\n }\\n });\\n\\n $(\\\"a.fancybox-media\\\").fancybox({\\n 'overlayOpacity': '0.4',\\n 'overlayColor': '#000',\\n 'hideOnContentClick': false,\\n 'autoSize': 'auto',\\n 'transitionIn': 'elastic',\\n 'transitionOut': 'elastic',\\n 'padding': 10,\\n 'helpers': {\\n 'media': {},\\n 'overlay': {\\n 'locked': false\\n }\\n },\\n });\\n});\\n\\n//# sourceURL=webpack:///./build/scripts/vendor/fancybox.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/vendor/gsap/src/CSSPlugin.js\":\n/*!****************************************************!*\\\n !*** ./build/scripts/vendor/gsap/src/CSSPlugin.js ***!\n \\****************************************************/\n/*! exports provided: CSSPlugin, default, _getBBox, _createElement, checkPrefix */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"CSSPlugin\\\", function() { return CSSPlugin; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return CSSPlugin; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"_getBBox\\\", function() { return _getBBox; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"_createElement\\\", function() { return _createElement; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"checkPrefix\\\", function() { return _checkPropPrefix; });\\n/* harmony import */ var _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gsap-core.js */ \\\"./build/scripts/vendor/gsap/src/gsap-core.js\\\");\\n/*!\\n * CSSPlugin 3.6.1\\n * https://greensock.com\\n *\\n * Copyright 2008-2021, GreenSock. All rights reserved.\\n * Subject to the terms at https://greensock.com/standard-license or for\\n * Club GreenSock members, the agreement issued with that membership.\\n * @author: Jack Doyle, jack@greensock.com\\n*/\\n/* eslint-disable */\\n\\n\\n\\nlet _win, _doc, _docElement, _pluginInitted, _tempDiv, _tempDivStyler, _recentSetterPlugin,\\n\\t_windowExists = () => typeof(window) !== \\\"undefined\\\",\\n\\t_transformProps = {},\\n\\t_RAD2DEG = 180 / Math.PI,\\n\\t_DEG2RAD = Math.PI / 180,\\n\\t_atan2 = Math.atan2,\\n\\t_bigNum = 1e8,\\n\\t_capsExp = /([A-Z])/g,\\n\\t_horizontalExp = /(?:left|right|width|margin|padding|x)/i,\\n\\t_complexExp = /[\\\\s,\\\\(]\\\\S/,\\n\\t_propertyAliases = {autoAlpha:\\\"opacity,visibility\\\", scale:\\\"scaleX,scaleY\\\", alpha:\\\"opacity\\\"},\\n\\t_renderCSSProp = (ratio, data) => data.set(data.t, data.p, (Math.round((data.s + data.c * ratio) * 10000) / 10000) + data.u, data),\\n\\t_renderPropWithEnd = (ratio, data) => data.set(data.t, data.p, ratio === 1 ? data.e : (Math.round((data.s + data.c * ratio) * 10000) / 10000) + data.u, data),\\n\\t_renderCSSPropWithBeginning = (ratio, data) => data.set(data.t, data.p, ratio ? (Math.round((data.s + data.c * ratio) * 10000) / 10000) + data.u : data.b, data), //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)\\n\\t_renderRoundedCSSProp = (ratio, data) => {\\n\\t\\tlet value = data.s + data.c * ratio;\\n\\t\\tdata.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\\n\\t},\\n\\t_renderNonTweeningValue = (ratio, data) => data.set(data.t, data.p, ratio ? data.e : data.b, data),\\n\\t_renderNonTweeningValueOnlyAtEnd = (ratio, data) => data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data),\\n\\t_setterCSSStyle = (target, property, value) => target.style[property] = value,\\n\\t_setterCSSProp = (target, property, value) => target.style.setProperty(property, value),\\n\\t_setterTransform = (target, property, value) => target._gsap[property] = value,\\n\\t_setterScale = (target, property, value) => target._gsap.scaleX = target._gsap.scaleY = value,\\n\\t_setterScaleWithRender = (target, property, value, data, ratio) => {\\n\\t\\tlet cache = target._gsap;\\n\\t\\tcache.scaleX = cache.scaleY = value;\\n\\t\\tcache.renderTransform(ratio, cache);\\n\\t},\\n\\t_setterTransformWithRender = (target, property, value, data, ratio) => {\\n\\t\\tlet cache = target._gsap;\\n\\t\\tcache[property] = value;\\n\\t\\tcache.renderTransform(ratio, cache);\\n\\t},\\n\\t_transformProp = \\\"transform\\\",\\n\\t_transformOriginProp = _transformProp + \\\"Origin\\\",\\n\\t_supports3D,\\n\\t_createElement = (type, ns) => {\\n\\t\\tlet e = _doc.createElementNS ? _doc.createElementNS((ns || \\\"http://www.w3.org/1999/xhtml\\\").replace(/^https/, \\\"http\\\"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making \\\"style\\\" inaccessible.\\n\\t\\treturn e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://greensock.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\\n\\t},\\n\\t_getComputedProperty = (target, property, skipPrefixFallback) => {\\n\\t\\tlet cs = getComputedStyle(target);\\n\\t\\treturn cs[property] || cs.getPropertyValue(property.replace(_capsExp, \\\"-$1\\\").toLowerCase()) || cs.getPropertyValue(property) || (!skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1)) || \\\"\\\"; //css variables may not need caps swapped out for dashes and lowercase.\\n\\t},\\n\\t_prefixes = \\\"O,Moz,ms,Ms,Webkit\\\".split(\\\",\\\"),\\n\\t_checkPropPrefix = (property, element, preferPrefix) => {\\n\\t\\tlet e = element || _tempDiv,\\n\\t\\t\\ts = e.style,\\n\\t\\t\\ti = 5;\\n\\t\\tif (property in s && !preferPrefix) {\\n\\t\\t\\treturn property;\\n\\t\\t}\\n\\t\\tproperty = property.charAt(0).toUpperCase() + property.substr(1);\\n\\t\\twhile (i-- && !((_prefixes[i]+property) in s)) { }\\n\\t\\treturn (i < 0) ? null : ((i === 3) ? \\\"ms\\\" : (i >= 0) ? _prefixes[i] : \\\"\\\") + property;\\n\\t},\\n\\t_initCore = () => {\\n\\t\\tif (_windowExists() && window.document) {\\n\\t\\t\\t_win = window;\\n\\t\\t\\t_doc = _win.document;\\n\\t\\t\\t_docElement = _doc.documentElement;\\n\\t\\t\\t_tempDiv = _createElement(\\\"div\\\") || {style:{}};\\n\\t\\t\\t_tempDivStyler = _createElement(\\\"div\\\");\\n\\t\\t\\t_transformProp = _checkPropPrefix(_transformProp);\\n\\t\\t\\t_transformOriginProp = _transformProp + \\\"Origin\\\";\\n\\t\\t\\t_tempDiv.style.cssText = \\\"border-width:0;line-height:0;position:absolute;padding:0\\\"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.\\n\\t\\t\\t_supports3D = !!_checkPropPrefix(\\\"perspective\\\");\\n\\t\\t\\t_pluginInitted = 1;\\n\\t\\t}\\n\\t},\\n\\t_getBBoxHack = function(swapIfPossible) { //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a element and/or . We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).\\n\\t\\tlet svg = _createElement(\\\"svg\\\", (this.ownerSVGElement && this.ownerSVGElement.getAttribute(\\\"xmlns\\\")) || \\\"http://www.w3.org/2000/svg\\\"),\\n\\t\\t\\toldParent = this.parentNode,\\n\\t\\t\\toldSibling = this.nextSibling,\\n\\t\\t\\toldCSS = this.style.cssText,\\n\\t\\t\\tbbox;\\n\\t\\t_docElement.appendChild(svg);\\n\\t\\tsvg.appendChild(this);\\n\\t\\tthis.style.display = \\\"block\\\";\\n\\t\\tif (swapIfPossible) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tbbox = this.getBBox();\\n\\t\\t\\t\\tthis._gsapBBox = this.getBBox; //store the original\\n\\t\\t\\t\\tthis.getBBox = _getBBoxHack;\\n\\t\\t\\t} catch (e) { }\\n\\t\\t} else if (this._gsapBBox) {\\n\\t\\t\\tbbox = this._gsapBBox();\\n\\t\\t}\\n\\t\\tif (oldParent) {\\n\\t\\t\\tif (oldSibling) {\\n\\t\\t\\t\\toldParent.insertBefore(this, oldSibling);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\toldParent.appendChild(this);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t_docElement.removeChild(svg);\\n\\t\\tthis.style.cssText = oldCSS;\\n\\t\\treturn bbox;\\n\\t},\\n\\t_getAttributeFallbacks = (target, attributesArray) => {\\n\\t\\tlet i = attributesArray.length;\\n\\t\\twhile (i--) {\\n\\t\\t\\tif (target.hasAttribute(attributesArray[i])) {\\n\\t\\t\\t\\treturn target.getAttribute(attributesArray[i]);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\t_getBBox = target => {\\n\\t\\tlet bounds;\\n\\t\\ttry {\\n\\t\\t\\tbounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a or ). https://bugzilla.mozilla.org/show_bug.cgi?id=612118\\n\\t\\t} catch (error) {\\n\\t\\t\\tbounds = _getBBoxHack.call(target, true);\\n\\t\\t}\\n\\t\\t(bounds && (bounds.width || bounds.height)) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true));\\n\\t\\t//some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.\\n\\t\\treturn (bounds && !bounds.width && !bounds.x && !bounds.y) ? {x: +_getAttributeFallbacks(target, [\\\"x\\\",\\\"cx\\\",\\\"x1\\\"]) || 0, y:+_getAttributeFallbacks(target, [\\\"y\\\",\\\"cy\\\",\\\"y1\\\"]) || 0, width:0, height:0} : bounds;\\n\\t},\\n\\t_isSVG = e => !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e)), //reports if the element is an SVG on which getBBox() actually works\\n\\t_removeProperty = (target, property) => {\\n\\t\\tif (property) {\\n\\t\\t\\tlet style = target.style;\\n\\t\\t\\tif (property in _transformProps && property !== _transformOriginProp) {\\n\\t\\t\\t\\tproperty = _transformProp;\\n\\t\\t\\t}\\n\\t\\t\\tif (style.removeProperty) {\\n\\t\\t\\t\\tif (property.substr(0,2) === \\\"ms\\\" || property.substr(0,6) === \\\"webkit\\\") { //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be \\\"ms-transform\\\" instead of \\\"-ms-transform\\\" for IE9, for example)\\n\\t\\t\\t\\t\\tproperty = \\\"-\\\" + property;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tstyle.removeProperty(property.replace(_capsExp, \\\"-$1\\\").toLowerCase());\\n\\t\\t\\t} else { //note: old versions of IE use \\\"removeAttribute()\\\" instead of \\\"removeProperty()\\\"\\n\\t\\t\\t\\tstyle.removeAttribute(property);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\t_addNonTweeningPT = (plugin, target, property, beginning, end, onlySetAtEnd) => {\\n\\t\\tlet pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"PropTween\\\"](plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\\n\\t\\tplugin._pt = pt;\\n\\t\\tpt.b = beginning;\\n\\t\\tpt.e = end;\\n\\t\\tplugin._props.push(property);\\n\\t\\treturn pt;\\n\\t},\\n\\t_nonConvertibleUnits = {deg:1, rad:1, turn:1},\\n\\t//takes a single value like 20px and converts it to the unit specified, like \\\"%\\\", returning only the numeric amount.\\n\\t_convertToUnit = (target, property, value, unit) => {\\n\\t\\tlet curValue = parseFloat(value) || 0,\\n\\t\\t\\tcurUnit = (value + \\\"\\\").trim().substr((curValue + \\\"\\\").length) || \\\"px\\\", // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()\\n\\t\\t\\tstyle = _tempDiv.style,\\n\\t\\t\\thorizontal = _horizontalExp.test(property),\\n\\t\\t\\tisRootSVG = target.tagName.toLowerCase() === \\\"svg\\\",\\n\\t\\t\\tmeasureProperty = (isRootSVG ? \\\"client\\\" : \\\"offset\\\") + (horizontal ? \\\"Width\\\" : \\\"Height\\\"),\\n\\t\\t\\tamount = 100,\\n\\t\\t\\ttoPixels = unit === \\\"px\\\",\\n\\t\\t\\ttoPercent = unit === \\\"%\\\",\\n\\t\\t\\tpx, parent, cache, isSVG;\\n\\t\\tif (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\\n\\t\\t\\treturn curValue;\\n\\t\\t}\\n\\t\\t(curUnit !== \\\"px\\\" && !toPixels) && (curValue = _convertToUnit(target, property, value, \\\"px\\\"));\\n\\t\\tisSVG = target.getCTM && _isSVG(target);\\n\\t\\tif ((toPercent || curUnit === \\\"%\\\") && (_transformProps[property] || ~property.indexOf(\\\"adius\\\"))) {\\n\\t\\t\\tpx = isSVG ? target.getBBox()[horizontal ? \\\"width\\\" : \\\"height\\\"] : target[measureProperty];\\n\\t\\t\\treturn Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(toPercent ? curValue / px * amount : curValue / 100 * px);\\n\\t\\t}\\n\\t\\tstyle[horizontal ? \\\"width\\\" : \\\"height\\\"] = amount + (toPixels ? curUnit : unit);\\n\\t\\tparent = (~property.indexOf(\\\"adius\\\") || (unit === \\\"em\\\" && target.appendChild && !isRootSVG)) ? target : target.parentNode;\\n\\t\\tif (isSVG) {\\n\\t\\t\\tparent = (target.ownerSVGElement || {}).parentNode;\\n\\t\\t}\\n\\t\\tif (!parent || parent === _doc || !parent.appendChild) {\\n\\t\\t\\tparent = _doc.body;\\n\\t\\t}\\n\\t\\tcache = parent._gsap;\\n\\t\\tif (cache && toPercent && cache.width && horizontal && cache.time === _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_ticker\\\"].time) {\\n\\t\\t\\treturn Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(curValue / cache.width * amount);\\n\\t\\t} else {\\n\\t\\t\\t(toPercent || curUnit === \\\"%\\\") && (style.position = _getComputedProperty(target, \\\"position\\\"));\\n\\t\\t\\t(parent === target) && (style.position = \\\"static\\\"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.\\n\\t\\t\\tparent.appendChild(_tempDiv);\\n\\t\\t\\tpx = _tempDiv[measureProperty];\\n\\t\\t\\tparent.removeChild(_tempDiv);\\n\\t\\t\\tstyle.position = \\\"absolute\\\";\\n\\t\\t\\tif (horizontal && toPercent) {\\n\\t\\t\\t\\tcache = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_getCache\\\"])(parent);\\n\\t\\t\\t\\tcache.time = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_ticker\\\"].time;\\n\\t\\t\\t\\tcache.width = parent[measureProperty];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\\n\\t},\\n\\t_get = (target, property, unit, uncache) => {\\n\\t\\tlet value;\\n\\t\\t_pluginInitted || _initCore();\\n\\t\\tif ((property in _propertyAliases) && property !== \\\"transform\\\") {\\n\\t\\t\\tproperty = _propertyAliases[property];\\n\\t\\t\\tif (~property.indexOf(\\\",\\\")) {\\n\\t\\t\\t\\tproperty = property.split(\\\",\\\")[0];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (_transformProps[property] && property !== \\\"transform\\\") {\\n\\t\\t\\tvalue = _parseTransform(target, uncache);\\n\\t\\t\\tvalue = (property !== \\\"transformOrigin\\\") ? value[property] : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \\\" \\\" + value.zOrigin + \\\"px\\\";\\n\\t\\t} else {\\n\\t\\t\\tvalue = target.style[property];\\n\\t\\t\\tif (!value || value === \\\"auto\\\" || uncache || ~(value + \\\"\\\").indexOf(\\\"calc(\\\")) {\\n\\t\\t\\t\\tvalue = (_specialProps[property] && _specialProps[property](target, property, unit)) || _getComputedProperty(target, property) || Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_getProperty\\\"])(target, property) || (property === \\\"opacity\\\" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like borderTopLeftRadius\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn unit && !~(value + \\\"\\\").trim().indexOf(\\\" \\\") ? _convertToUnit(target, property, value, unit) + unit : value;\\n\\n\\t},\\n\\t_tweenComplexCSSString = function(target, prop, start, end) { //note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \\\"this\\\" would refer to the plugin.\\n\\t\\tif (!start || start === \\\"none\\\") { // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style (\\\"clipPath\\\" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as \\\"none\\\" whereas WebkitClipPath reports accurately like \\\"ellipse(100% 0% at 50% 0%)\\\", so in this case we must SWITCH to using the prefixed property instead. See https://greensock.com/forums/topic/18310-clippath-doesnt-work-on-ios/\\n\\t\\t\\tlet p = _checkPropPrefix(prop, target, 1),\\n\\t\\t\\t\\ts = p && _getComputedProperty(target, p, 1);\\n\\t\\t\\tif (s && s !== start) {\\n\\t\\t\\t\\tprop = p;\\n\\t\\t\\t\\tstart = s;\\n\\t\\t\\t} else if (prop === \\\"borderColor\\\") {\\n\\t\\t\\t\\tstart = _getComputedProperty(target, \\\"borderTopColor\\\"); // Firefox bug: always reports \\\"borderColor\\\" as \\\"\\\", so we must fall back to borderTopColor. See https://greensock.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tlet pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"PropTween\\\"](this._pt, target.style, prop, 0, 1, _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_renderComplexString\\\"]),\\n\\t\\t\\tindex = 0,\\n\\t\\t\\tmatchIndex = 0,\\n\\t\\t\\ta, result,\\tstartValues, startNum, color, startValue, endValue, endNum, chunk, endUnit, startUnit, relative, endValues;\\n\\t\\tpt.b = start;\\n\\t\\tpt.e = end;\\n\\t\\tstart += \\\"\\\"; //ensure values are strings\\n\\t\\tend += \\\"\\\";\\n\\t\\tif (end === \\\"auto\\\") {\\n\\t\\t\\ttarget.style[prop] = end;\\n\\t\\t\\tend = _getComputedProperty(target, prop) || end;\\n\\t\\t\\ttarget.style[prop] = start;\\n\\t\\t}\\n\\t\\ta = [start, end];\\n\\t\\tObject(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_colorStringFilter\\\"])(a); //pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().\\n\\t\\tstart = a[0];\\n\\t\\tend = a[1];\\n\\t\\tstartValues = start.match(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_numWithUnitExp\\\"]) || [];\\n\\t\\tendValues = end.match(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_numWithUnitExp\\\"]) || [];\\n\\t\\tif (endValues.length) {\\n\\t\\t\\twhile ((result = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_numWithUnitExp\\\"].exec(end))) {\\n\\t\\t\\t\\tendValue = result[0];\\n\\t\\t\\t\\tchunk = end.substring(index, result.index);\\n\\t\\t\\t\\tif (color) {\\n\\t\\t\\t\\t\\tcolor = (color + 1) % 5;\\n\\t\\t\\t\\t} else if (chunk.substr(-5) === \\\"rgba(\\\" || chunk.substr(-5) === \\\"hsla(\\\") {\\n\\t\\t\\t\\t\\tcolor = 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (endValue !== (startValue = startValues[matchIndex++] || \\\"\\\")) {\\n\\t\\t\\t\\t\\tstartNum = parseFloat(startValue) || 0;\\n\\t\\t\\t\\t\\tstartUnit = startValue.substr((startNum + \\\"\\\").length);\\n\\t\\t\\t\\t\\trelative = (endValue.charAt(1) === \\\"=\\\") ? +(endValue.charAt(0) + \\\"1\\\") : 0;\\n\\t\\t\\t\\t\\tif (relative) {\\n\\t\\t\\t\\t\\t\\tendValue = endValue.substr(2);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tendNum = parseFloat(endValue);\\n\\t\\t\\t\\t\\tendUnit = endValue.substr((endNum + \\\"\\\").length);\\n\\t\\t\\t\\t\\tindex = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_numWithUnitExp\\\"].lastIndex - endUnit.length;\\n\\t\\t\\t\\t\\tif (!endUnit) { //if something like \\\"perspective:300\\\" is passed in and we must add a unit to the end\\n\\t\\t\\t\\t\\t\\tendUnit = endUnit || _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_config\\\"].units[prop] || startUnit;\\n\\t\\t\\t\\t\\t\\tif (index === end.length) {\\n\\t\\t\\t\\t\\t\\t\\tend += endUnit;\\n\\t\\t\\t\\t\\t\\t\\tpt.e += endUnit;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (startUnit !== endUnit) {\\n\\t\\t\\t\\t\\t\\tstartNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t//these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\\n\\t\\t\\t\\t\\tpt._pt = {\\n\\t\\t\\t\\t\\t\\t_next:pt._pt,\\n\\t\\t\\t\\t\\t\\tp:(chunk || (matchIndex === 1)) ? chunk : \\\",\\\", //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\\n\\t\\t\\t\\t\\t\\ts:startNum,\\n\\t\\t\\t\\t\\t\\tc:relative ? relative * endNum : endNum - startNum,\\n\\t\\t\\t\\t\\t\\tm:(color && color < 4) || prop === \\\"zIndex\\\" ? Math.round : 0\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tpt.c = (index < end.length) ? end.substring(index, end.length) : \\\"\\\"; //we use the \\\"c\\\" of the PropTween to store the final part of the string (after the last number)\\n\\t\\t} else {\\n\\t\\t\\tpt.r = prop === \\\"display\\\" && end === \\\"none\\\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\\n\\t\\t}\\n\\t\\t_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_relExp\\\"].test(end) && (pt.e = 0); //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\\n\\t\\tthis._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus \\\"this\\\" would refer to the plugin.\\n\\t\\treturn pt;\\n\\t},\\n\\t_keywordToPercent = {top:\\\"0%\\\", bottom:\\\"100%\\\", left:\\\"0%\\\", right:\\\"100%\\\", center:\\\"50%\\\"},\\n\\t_convertKeywordsToPercentages = value => {\\n\\t\\tlet split = value.split(\\\" \\\"),\\n\\t\\t\\tx = split[0],\\n\\t\\t\\ty = split[1] || \\\"50%\\\";\\n\\t\\tif (x === \\\"top\\\" || x === \\\"bottom\\\" || y === \\\"left\\\" || y === \\\"right\\\") { //the user provided them in the wrong order, so flip them\\n\\t\\t\\tvalue = x;\\n\\t\\t\\tx = y;\\n\\t\\t\\ty = value;\\n\\t\\t}\\n\\t\\tsplit[0] = _keywordToPercent[x] || x;\\n\\t\\tsplit[1] = _keywordToPercent[y] || y;\\n\\t\\treturn split.join(\\\" \\\");\\n\\t},\\n\\t_renderClearProps = (ratio, data) => {\\n\\t\\tif (data.tween && data.tween._time === data.tween._dur) {\\n\\t\\t\\tlet target = data.t,\\n\\t\\t\\t\\tstyle = target.style,\\n\\t\\t\\t\\tprops = data.u,\\n\\t\\t\\t\\tcache = target._gsap,\\n\\t\\t\\t\\tprop, clearTransforms, i;\\n\\t\\t\\tif (props === \\\"all\\\" || props === true) {\\n\\t\\t\\t\\tstyle.cssText = \\\"\\\";\\n\\t\\t\\t\\tclearTransforms = 1;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tprops = props.split(\\\",\\\");\\n\\t\\t\\t\\ti = props.length;\\n\\t\\t\\t\\twhile (--i > -1) {\\n\\t\\t\\t\\t\\tprop = props[i];\\n\\t\\t\\t\\t\\tif (_transformProps[prop]) {\\n\\t\\t\\t\\t\\t\\tclearTransforms = 1;\\n\\t\\t\\t\\t\\t\\tprop = (prop === \\\"transformOrigin\\\") ? _transformOriginProp : _transformProp;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t_removeProperty(target, prop);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif (clearTransforms) {\\n\\t\\t\\t\\t_removeProperty(target, _transformProp);\\n\\t\\t\\t\\tif (cache) {\\n\\t\\t\\t\\t\\tcache.svg && target.removeAttribute(\\\"transform\\\");\\n\\t\\t\\t\\t\\t_parseTransform(target, 1); // force all the cached values back to \\\"normal\\\"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.\\n\\t\\t\\t\\t\\tcache.uncache = 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\t// note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.\\n\\t_specialProps = {\\n\\t\\tclearProps(plugin, target, property, endValue, tween) {\\n\\t\\t\\tif (tween.data !== \\\"isFromStart\\\") {\\n\\t\\t\\t\\tlet pt = plugin._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"PropTween\\\"](plugin._pt, target, property, 0, 0, _renderClearProps);\\n\\t\\t\\t\\tpt.u = endValue;\\n\\t\\t\\t\\tpt.pr = -10;\\n\\t\\t\\t\\tpt.tween = tween;\\n\\t\\t\\t\\tplugin._props.push(property);\\n\\t\\t\\t\\treturn 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t/* className feature (about 0.4kb gzipped).\\n\\t\\t, className(plugin, target, property, endValue, tween) {\\n\\t\\t\\tlet _renderClassName = (ratio, data) => {\\n\\t\\t\\t\\t\\tdata.css.render(ratio, data.css);\\n\\t\\t\\t\\t\\tif (!ratio || ratio === 1) {\\n\\t\\t\\t\\t\\t\\tlet inline = data.rmv,\\n\\t\\t\\t\\t\\t\\t\\ttarget = data.t,\\n\\t\\t\\t\\t\\t\\t\\tp;\\n\\t\\t\\t\\t\\t\\ttarget.setAttribute(\\\"class\\\", ratio ? data.e : data.b);\\n\\t\\t\\t\\t\\t\\tfor (p in inline) {\\n\\t\\t\\t\\t\\t\\t\\t_removeProperty(target, p);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\t_getAllStyles = (target) => {\\n\\t\\t\\t\\t\\tlet styles = {},\\n\\t\\t\\t\\t\\t\\tcomputed = getComputedStyle(target),\\n\\t\\t\\t\\t\\t\\tp;\\n\\t\\t\\t\\t\\tfor (p in computed) {\\n\\t\\t\\t\\t\\t\\tif (isNaN(p) && p !== \\\"cssText\\\" && p !== \\\"length\\\") {\\n\\t\\t\\t\\t\\t\\t\\tstyles[p] = computed[p];\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t_setDefaults(styles, _parseTransform(target, 1));\\n\\t\\t\\t\\t\\treturn styles;\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tstartClassList = target.getAttribute(\\\"class\\\"),\\n\\t\\t\\t\\tstyle = target.style,\\n\\t\\t\\t\\tcssText = style.cssText,\\n\\t\\t\\t\\tcache = target._gsap,\\n\\t\\t\\t\\tclassPT = cache.classPT,\\n\\t\\t\\t\\tinlineToRemoveAtEnd = {},\\n\\t\\t\\t\\tdata = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== \\\"=\\\") ? endValue : startClassList.replace(new RegExp(\\\"(?:\\\\\\\\s|^)\\\" + endValue.substr(2) + \\\"(?![\\\\\\\\w-])\\\"), \\\"\\\") + ((endValue.charAt(0) === \\\"+\\\") ? \\\" \\\" + endValue.substr(2) : \\\"\\\")},\\n\\t\\t\\t\\tchangingVars = {},\\n\\t\\t\\t\\tstartVars = _getAllStyles(target),\\n\\t\\t\\t\\ttransformRelated = /(transform|perspective)/i,\\n\\t\\t\\t\\tendVars, p;\\n\\t\\t\\tif (classPT) {\\n\\t\\t\\t\\tclassPT.r(1, classPT.d);\\n\\t\\t\\t\\t_removeLinkedListItem(classPT.d.plugin, classPT, \\\"_pt\\\");\\n\\t\\t\\t}\\n\\t\\t\\ttarget.setAttribute(\\\"class\\\", data.e);\\n\\t\\t\\tendVars = _getAllStyles(target, true);\\n\\t\\t\\ttarget.setAttribute(\\\"class\\\", startClassList);\\n\\t\\t\\tfor (p in endVars) {\\n\\t\\t\\t\\tif (endVars[p] !== startVars[p] && !transformRelated.test(p)) {\\n\\t\\t\\t\\t\\tchangingVars[p] = endVars[p];\\n\\t\\t\\t\\t\\tif (!style[p] && style[p] !== \\\"0\\\") {\\n\\t\\t\\t\\t\\t\\tinlineToRemoveAtEnd[p] = 1;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tcache.classPT = plugin._pt = new PropTween(plugin._pt, target, \\\"className\\\", 0, 0, _renderClassName, data, 0, -11);\\n\\t\\t\\tif (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://greensock.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.\\n\\t\\t\\t\\tstyle.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).\\n\\t\\t\\t}\\n\\t\\t\\t_parseTransform(target, true); //to clear the caching of transforms\\n\\t\\t\\tdata.css = new gsap.plugins.css();\\n\\t\\t\\tdata.css.init(target, changingVars, tween);\\n\\t\\t\\tplugin._props.push(...data.css._props);\\n\\t\\t\\treturn 1;\\n\\t\\t}\\n\\t\\t*/\\n\\t},\\n\\n\\n\\n\\n\\n\\t/*\\n\\t * --------------------------------------------------------------------------------------\\n\\t * TRANSFORMS\\n\\t * --------------------------------------------------------------------------------------\\n\\t */\\n\\t_identity2DMatrix = [1,0,0,1,0,0],\\n\\t_rotationalProperties = {},\\n\\t_isNullTransform = value => (value === \\\"matrix(1, 0, 0, 1, 0, 0)\\\" || value === \\\"none\\\" || !value),\\n\\t_getComputedTransformMatrixAsArray = target => {\\n\\t\\tlet matrixString = _getComputedProperty(target, _transformProp);\\n\\t\\treturn _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_numExp\\\"]).map(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"]);\\n\\t},\\n\\t_getMatrix = (target, force2D) => {\\n\\t\\tlet cache = target._gsap || Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_getCache\\\"])(target),\\n\\t\\t\\tstyle = target.style,\\n\\t\\t\\tmatrix = _getComputedTransformMatrixAsArray(target),\\n\\t\\t\\tparent, nextSibling, temp, addedToDOM;\\n\\t\\tif (cache.svg && target.getAttribute(\\\"transform\\\")) {\\n\\t\\t\\ttemp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like \\\"translate(50,60) rotate(135,0,0)\\\" are parsed because it mashes it into a matrix.\\n\\t\\t\\tmatrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\\n\\t\\t\\treturn (matrix.join(\\\",\\\") === \\\"1,0,0,1,0,0\\\") ? _identity2DMatrix : matrix;\\n\\t\\t} else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) { //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397\\n\\t\\t\\t//browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not \\\"none\\\". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).\\n\\t\\t\\ttemp = style.display;\\n\\t\\t\\tstyle.display = \\\"block\\\";\\n\\t\\t\\tparent = target.parentNode;\\n\\t\\t\\tif (!parent || !target.offsetParent) { // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375\\n\\t\\t\\t\\taddedToDOM = 1; //flag\\n\\t\\t\\t\\tnextSibling = target.nextSibling;\\n\\t\\t\\t\\t_docElement.appendChild(target); //we must add it to the DOM in order to get values properly\\n\\t\\t\\t}\\n\\t\\t\\tmatrix = _getComputedTransformMatrixAsArray(target);\\n\\t\\t\\ttemp ? (style.display = temp) : _removeProperty(target, \\\"display\\\");\\n\\t\\t\\tif (addedToDOM) {\\n\\t\\t\\t\\tnextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn (force2D && matrix.length > 6) ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\\n\\t},\\n\\t_applySVGOrigin = (target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) => {\\n\\t\\tlet cache = target._gsap,\\n\\t\\t\\tmatrix = matrixArray || _getMatrix(target, true),\\n\\t\\t\\txOriginOld = cache.xOrigin || 0,\\n\\t\\t\\tyOriginOld = cache.yOrigin || 0,\\n\\t\\t\\txOffsetOld = cache.xOffset || 0,\\n\\t\\t\\tyOffsetOld = cache.yOffset || 0,\\n\\t\\t\\ta = matrix[0],\\n\\t\\t\\tb = matrix[1],\\n\\t\\t\\tc = matrix[2],\\n\\t\\t\\td = matrix[3],\\n\\t\\t\\ttx = matrix[4],\\n\\t\\t\\tty = matrix[5],\\n\\t\\t\\toriginSplit = origin.split(\\\" \\\"),\\n\\t\\t\\txOrigin = parseFloat(originSplit[0]) || 0,\\n\\t\\t\\tyOrigin = parseFloat(originSplit[1]) || 0,\\n\\t\\t\\tbounds, determinant, x, y;\\n\\t\\tif (!originIsAbsolute) {\\n\\t\\t\\tbounds = _getBBox(target);\\n\\t\\t\\txOrigin = bounds.x + (~originSplit[0].indexOf(\\\"%\\\") ? xOrigin / 100 * bounds.width : xOrigin);\\n\\t\\t\\tyOrigin = bounds.y + (~((originSplit[1] || originSplit[0]).indexOf(\\\"%\\\")) ? yOrigin / 100 * bounds.height : yOrigin);\\n\\t\\t} else if (matrix !== _identity2DMatrix && (determinant = (a * d - b * c))) { //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.\\n\\t\\t\\tx = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + ((c * ty - d * tx) / determinant);\\n\\t\\t\\ty = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - ((a * ty - b * tx) / determinant);\\n\\t\\t\\txOrigin = x;\\n\\t\\t\\tyOrigin = y;\\n\\t\\t}\\n\\t\\tif (smooth || (smooth !== false && cache.smooth)) {\\n\\t\\t\\ttx = xOrigin - xOriginOld;\\n\\t\\t\\tty = yOrigin - yOriginOld;\\n\\t\\t\\tcache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\\n\\t\\t\\tcache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\\n\\t\\t} else {\\n\\t\\t\\tcache.xOffset = cache.yOffset = 0;\\n\\t\\t}\\n\\t\\tcache.xOrigin = xOrigin;\\n\\t\\tcache.yOrigin = yOrigin;\\n\\t\\tcache.smooth = !!smooth;\\n\\t\\tcache.origin = origin;\\n\\t\\tcache.originIsAbsolute = !!originIsAbsolute;\\n\\t\\ttarget.style[_transformOriginProp] = \\\"0px 0px\\\"; //otherwise, if someone sets an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).\\n\\t\\tif (pluginToAddPropTweensTo) {\\n\\t\\t\\t_addNonTweeningPT(pluginToAddPropTweensTo, cache, \\\"xOrigin\\\", xOriginOld, xOrigin);\\n\\t\\t\\t_addNonTweeningPT(pluginToAddPropTweensTo, cache, \\\"yOrigin\\\", yOriginOld, yOrigin);\\n\\t\\t\\t_addNonTweeningPT(pluginToAddPropTweensTo, cache, \\\"xOffset\\\", xOffsetOld, cache.xOffset);\\n\\t\\t\\t_addNonTweeningPT(pluginToAddPropTweensTo, cache, \\\"yOffset\\\", yOffsetOld, cache.yOffset);\\n\\t\\t}\\n\\t\\ttarget.setAttribute(\\\"data-svg-origin\\\", xOrigin + \\\" \\\" + yOrigin);\\n\\t},\\n\\t_parseTransform = (target, uncache) => {\\n\\t\\tlet cache = target._gsap || new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"GSCache\\\"](target);\\n\\t\\tif (\\\"x\\\" in cache && !uncache && !cache.uncache) {\\n\\t\\t\\treturn cache;\\n\\t\\t}\\n\\t\\tlet style = target.style,\\n\\t\\t\\tinvertedScaleX = cache.scaleX < 0,\\n\\t\\t\\tpx = \\\"px\\\",\\n\\t\\t\\tdeg = \\\"deg\\\",\\n\\t\\t\\torigin = _getComputedProperty(target, _transformOriginProp) || \\\"0\\\",\\n\\t\\t\\tx, y, z, scaleX, scaleY, rotation, rotationX, rotationY, skewX, skewY, perspective, xOrigin, yOrigin,\\n\\t\\t\\tmatrix, angle, cos, sin, a, b, c, d, a12, a22, t1, t2, t3, a13, a23, a33, a42, a43, a32;\\n\\t\\tx = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\\n\\t\\tscaleX = scaleY = 1;\\n\\t\\tcache.svg = !!(target.getCTM && _isSVG(target));\\n\\t\\tmatrix = _getMatrix(target, cache.svg);\\n\\t\\tif (cache.svg) {\\n\\t\\t\\tt1 = !cache.uncache && !uncache && target.getAttribute(\\\"data-svg-origin\\\");\\n\\t\\t\\t_applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\\n\\t\\t}\\n\\t\\txOrigin = cache.xOrigin || 0;\\n\\t\\tyOrigin = cache.yOrigin || 0;\\n\\t\\tif (matrix !== _identity2DMatrix) {\\n\\t\\t\\ta = matrix[0]; //a11\\n\\t\\t\\tb = matrix[1]; //a21\\n\\t\\t\\tc = matrix[2]; //a31\\n\\t\\t\\td = matrix[3]; //a41\\n\\t\\t\\tx = a12 = matrix[4];\\n\\t\\t\\ty = a22 = matrix[5];\\n\\n\\t\\t\\t//2D matrix\\n\\t\\t\\tif (matrix.length === 6) {\\n\\t\\t\\t\\tscaleX = Math.sqrt(a * a + b * b);\\n\\t\\t\\t\\tscaleY = Math.sqrt(d * d + c * c);\\n\\t\\t\\t\\trotation = (a || b) ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).\\n\\t\\t\\t\\tskewX = (c || d) ? _atan2(c, d) * _RAD2DEG + rotation : 0;\\n\\t\\t\\t\\tskewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));\\n\\t\\t\\t\\tif (cache.svg) {\\n\\t\\t\\t\\t\\tx -= xOrigin - (xOrigin * a + yOrigin * c);\\n\\t\\t\\t\\t\\ty -= yOrigin - (xOrigin * b + yOrigin * d);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t//3D matrix\\n\\t\\t\\t} else {\\n\\t\\t\\t\\ta32 = matrix[6];\\n\\t\\t\\t\\ta42 = matrix[7];\\n\\t\\t\\t\\ta13 = matrix[8];\\n\\t\\t\\t\\ta23 = matrix[9];\\n\\t\\t\\t\\ta33 = matrix[10];\\n\\t\\t\\t\\ta43 = matrix[11];\\n\\t\\t\\t\\tx = matrix[12];\\n\\t\\t\\t\\ty = matrix[13];\\n\\t\\t\\t\\tz = matrix[14];\\n\\n\\t\\t\\t\\tangle = _atan2(a32, a33);\\n\\t\\t\\t\\trotationX = angle * _RAD2DEG;\\n\\t\\t\\t\\t//rotationX\\n\\t\\t\\t\\tif (angle) {\\n\\t\\t\\t\\t\\tcos = Math.cos(-angle);\\n\\t\\t\\t\\t\\tsin = Math.sin(-angle);\\n\\t\\t\\t\\t\\tt1 = a12*cos+a13*sin;\\n\\t\\t\\t\\t\\tt2 = a22*cos+a23*sin;\\n\\t\\t\\t\\t\\tt3 = a32*cos+a33*sin;\\n\\t\\t\\t\\t\\ta13 = a12*-sin+a13*cos;\\n\\t\\t\\t\\t\\ta23 = a22*-sin+a23*cos;\\n\\t\\t\\t\\t\\ta33 = a32*-sin+a33*cos;\\n\\t\\t\\t\\t\\ta43 = a42*-sin+a43*cos;\\n\\t\\t\\t\\t\\ta12 = t1;\\n\\t\\t\\t\\t\\ta22 = t2;\\n\\t\\t\\t\\t\\ta32 = t3;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t//rotationY\\n\\t\\t\\t\\tangle = _atan2(-c, a33);\\n\\t\\t\\t\\trotationY = angle * _RAD2DEG;\\n\\t\\t\\t\\tif (angle) {\\n\\t\\t\\t\\t\\tcos = Math.cos(-angle);\\n\\t\\t\\t\\t\\tsin = Math.sin(-angle);\\n\\t\\t\\t\\t\\tt1 = a*cos-a13*sin;\\n\\t\\t\\t\\t\\tt2 = b*cos-a23*sin;\\n\\t\\t\\t\\t\\tt3 = c*cos-a33*sin;\\n\\t\\t\\t\\t\\ta43 = d*sin+a43*cos;\\n\\t\\t\\t\\t\\ta = t1;\\n\\t\\t\\t\\t\\tb = t2;\\n\\t\\t\\t\\t\\tc = t3;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t//rotationZ\\n\\t\\t\\t\\tangle = _atan2(b, a);\\n\\t\\t\\t\\trotation = angle * _RAD2DEG;\\n\\t\\t\\t\\tif (angle) {\\n\\t\\t\\t\\t\\tcos = Math.cos(angle);\\n\\t\\t\\t\\t\\tsin = Math.sin(angle);\\n\\t\\t\\t\\t\\tt1 = a*cos+b*sin;\\n\\t\\t\\t\\t\\tt2 = a12*cos+a22*sin;\\n\\t\\t\\t\\t\\tb = b*cos-a*sin;\\n\\t\\t\\t\\t\\ta22 = a22*cos-a12*sin;\\n\\t\\t\\t\\t\\ta = t1;\\n\\t\\t\\t\\t\\ta12 = t2;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) { //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.\\n\\t\\t\\t\\t\\trotationX = rotation = 0;\\n\\t\\t\\t\\t\\trotationY = 180 - rotationY;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tscaleX = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(Math.sqrt(a * a + b * b + c * c));\\n\\t\\t\\t\\tscaleY = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(Math.sqrt(a22 * a22 + a32 * a32));\\n\\t\\t\\t\\tangle = _atan2(a12, a22);\\n\\t\\t\\t\\tskewX = (Math.abs(angle) > 0.0002) ? angle * _RAD2DEG : 0;\\n\\t\\t\\t\\tperspective = a43 ? 1 / ((a43 < 0) ? -a43 : a43) : 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (cache.svg) { //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).\\n\\t\\t\\t\\tt1 = target.getAttribute(\\\"transform\\\");\\n\\t\\t\\t\\tcache.forceCSS = target.setAttribute(\\\"transform\\\", \\\"\\\") || (!_isNullTransform(_getComputedProperty(target, _transformProp)));\\n\\t\\t\\t\\tt1 && target.setAttribute(\\\"transform\\\", t1);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\\n\\t\\t\\tif (invertedScaleX) {\\n\\t\\t\\t\\tscaleX *= -1;\\n\\t\\t\\t\\tskewX += (rotation <= 0) ? 180 : -180;\\n\\t\\t\\t\\trotation += (rotation <= 0) ? 180 : -180;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tscaleY *= -1;\\n\\t\\t\\t\\tskewX += (skewX <= 0) ? 180 : -180;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tcache.x = x - ((cache.xPercent = x && (cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;\\n\\t\\tcache.y = y - ((cache.yPercent = y && (cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;\\n\\t\\tcache.z = z + px;\\n\\t\\tcache.scaleX = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(scaleX);\\n\\t\\tcache.scaleY = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(scaleY);\\n\\t\\tcache.rotation = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(rotation) + deg;\\n\\t\\tcache.rotationX = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(rotationX) + deg;\\n\\t\\tcache.rotationY = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(rotationY) + deg;\\n\\t\\tcache.skewX = skewX + deg;\\n\\t\\tcache.skewY = skewY + deg;\\n\\t\\tcache.transformPerspective = perspective + px;\\n\\t\\tif ((cache.zOrigin = parseFloat(origin.split(\\\" \\\")[2]) || 0)) {\\n\\t\\t\\tstyle[_transformOriginProp] = _firstTwoOnly(origin);\\n\\t\\t}\\n\\t\\tcache.xOffset = cache.yOffset = 0;\\n\\t\\tcache.force3D = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_config\\\"].force3D;\\n\\t\\tcache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\\n\\t\\tcache.uncache = 0;\\n\\t\\treturn cache;\\n\\t},\\n\\t_firstTwoOnly = value => (value = value.split(\\\" \\\"))[0] + \\\" \\\" + value[1], //for handling transformOrigin values, stripping out the 3rd dimension\\n\\t_addPxTranslate = (target, start, value) => {\\n\\t\\tlet unit = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"getUnit\\\"])(start);\\n\\t\\treturn Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(parseFloat(start) + parseFloat(_convertToUnit(target, \\\"x\\\", value + \\\"px\\\", unit))) + unit;\\n\\t},\\n\\t_renderNon3DTransforms = (ratio, cache) => {\\n\\t\\tcache.z = \\\"0px\\\";\\n\\t\\tcache.rotationY = cache.rotationX = \\\"0deg\\\";\\n\\t\\tcache.force3D = 0;\\n\\t\\t_renderCSSTransforms(ratio, cache);\\n\\t},\\n\\t_zeroDeg = \\\"0deg\\\",\\n\\t_zeroPx = \\\"0px\\\",\\n\\t_endParenthesis = \\\") \\\",\\n\\t_renderCSSTransforms = function(ratio, cache) {\\n\\t\\tlet {xPercent, yPercent, x, y, z, rotation, rotationY, rotationX, skewX, skewY, scaleX, scaleY, transformPerspective, force3D, target, zOrigin} = cache || this,\\n\\t\\t\\ttransforms = \\\"\\\",\\n\\t\\t\\tuse3D = (force3D === \\\"auto\\\" && ratio && ratio !== 1) || force3D === true;\\n\\n\\t\\t// Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)\\n\\t\\tif (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\\n\\t\\t\\tlet angle = parseFloat(rotationY) * _DEG2RAD,\\n\\t\\t\\t\\ta13 = Math.sin(angle),\\n\\t\\t\\t\\ta33 = Math.cos(angle),\\n\\t\\t\\t\\tcos;\\n\\t\\t\\tangle = parseFloat(rotationX) * _DEG2RAD;\\n\\t\\t\\tcos = Math.cos(angle);\\n\\t\\t\\tx = _addPxTranslate(target, x, a13 * cos * -zOrigin);\\n\\t\\t\\ty = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\\n\\t\\t\\tz = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\\n\\t\\t}\\n\\n\\t\\tif (transformPerspective !== _zeroPx) {\\n\\t\\t\\ttransforms += \\\"perspective(\\\" + transformPerspective + _endParenthesis;\\n\\t\\t}\\n\\t\\tif (xPercent || yPercent) {\\n\\t\\t\\ttransforms += \\\"translate(\\\" + xPercent + \\\"%, \\\" + yPercent + \\\"%) \\\";\\n\\t\\t}\\n\\t\\tif (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\\n\\t\\t\\ttransforms += (z !== _zeroPx || use3D) ? \\\"translate3d(\\\" + x + \\\", \\\" + y + \\\", \\\" + z + \\\") \\\" : \\\"translate(\\\" + x + \\\", \\\" + y + _endParenthesis;\\n\\t\\t}\\n\\t\\tif (rotation !== _zeroDeg) {\\n\\t\\t\\ttransforms += \\\"rotate(\\\" + rotation + _endParenthesis;\\n\\t\\t}\\n\\t\\tif (rotationY !== _zeroDeg) {\\n\\t\\t\\ttransforms += \\\"rotateY(\\\" + rotationY + _endParenthesis;\\n\\t\\t}\\n\\t\\tif (rotationX !== _zeroDeg) {\\n\\t\\t\\ttransforms += \\\"rotateX(\\\" + rotationX + _endParenthesis;\\n\\t\\t}\\n\\t\\tif (skewX !== _zeroDeg || skewY !== _zeroDeg) {\\n\\t\\t\\ttransforms += \\\"skew(\\\" + skewX + \\\", \\\" + skewY + _endParenthesis;\\n\\t\\t}\\n\\t\\tif (scaleX !== 1 || scaleY !== 1) {\\n\\t\\t\\ttransforms += \\\"scale(\\\" + scaleX + \\\", \\\" + scaleY + _endParenthesis;\\n\\t\\t}\\n\\t\\ttarget.style[_transformProp] = transforms || \\\"translate(0, 0)\\\";\\n\\t},\\n\\t_renderSVGTransforms = function(ratio, cache) {\\n\\t\\tlet {xPercent, yPercent, x, y, rotation, skewX, skewY, scaleX, scaleY, target, xOrigin, yOrigin, xOffset, yOffset, forceCSS} = cache || this,\\n\\t\\t\\ttx = parseFloat(x),\\n\\t\\t\\tty = parseFloat(y),\\n\\t\\t\\ta11, a21, a12, a22, temp;\\n\\t\\trotation = parseFloat(rotation);\\n\\t\\tskewX = parseFloat(skewX);\\n\\t\\tskewY = parseFloat(skewY);\\n\\t\\tif (skewY) { //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.\\n\\t\\t\\tskewY = parseFloat(skewY);\\n\\t\\t\\tskewX += skewY;\\n\\t\\t\\trotation += skewY;\\n\\t\\t}\\n\\t\\tif (rotation || skewX) {\\n\\t\\t\\trotation *= _DEG2RAD;\\n\\t\\t\\tskewX *= _DEG2RAD;\\n\\t\\t\\ta11 = Math.cos(rotation) * scaleX;\\n\\t\\t\\ta21 = Math.sin(rotation) * scaleX;\\n\\t\\t\\ta12 = Math.sin(rotation - skewX) * -scaleY;\\n\\t\\t\\ta22 = Math.cos(rotation - skewX) * scaleY;\\n\\t\\t\\tif (skewX) {\\n\\t\\t\\t\\tskewY *= _DEG2RAD;\\n\\t\\t\\t\\ttemp = Math.tan(skewX - skewY);\\n\\t\\t\\t\\ttemp = Math.sqrt(1 + temp * temp);\\n\\t\\t\\t\\ta12 *= temp;\\n\\t\\t\\t\\ta22 *= temp;\\n\\t\\t\\t\\tif (skewY) {\\n\\t\\t\\t\\t\\ttemp = Math.tan(skewY);\\n\\t\\t\\t\\t\\ttemp = Math.sqrt(1 + temp * temp);\\n\\t\\t\\t\\t\\ta11 *= temp;\\n\\t\\t\\t\\t\\ta21 *= temp;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\ta11 = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(a11);\\n\\t\\t\\ta21 = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(a21);\\n\\t\\t\\ta12 = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(a12);\\n\\t\\t\\ta22 = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(a22);\\n\\t\\t} else {\\n\\t\\t\\ta11 = scaleX;\\n\\t\\t\\ta22 = scaleY;\\n\\t\\t\\ta21 = a12 = 0;\\n\\t\\t}\\n\\t\\tif ((tx && !~(x + \\\"\\\").indexOf(\\\"px\\\")) || (ty && !~(y + \\\"\\\").indexOf(\\\"px\\\"))) {\\n\\t\\t\\ttx = _convertToUnit(target, \\\"x\\\", x, \\\"px\\\");\\n\\t\\t\\tty = _convertToUnit(target, \\\"y\\\", y, \\\"px\\\");\\n\\t\\t}\\n\\t\\tif (xOrigin || yOrigin || xOffset || yOffset) {\\n\\t\\t\\ttx = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\\n\\t\\t\\tty = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\\n\\t\\t}\\n\\t\\tif (xPercent || yPercent) {\\n\\t\\t\\t//The SVG spec doesn't support percentage-based translation in the \\\"transform\\\" attribute, so we merge it into the translation to simulate it.\\n\\t\\t\\ttemp = target.getBBox();\\n\\t\\t\\ttx = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(tx + xPercent / 100 * temp.width);\\n\\t\\t\\tty = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_round\\\"])(ty + yPercent / 100 * temp.height);\\n\\t\\t}\\n\\t\\ttemp = \\\"matrix(\\\" + a11 + \\\",\\\" + a21 + \\\",\\\" + a12 + \\\",\\\" + a22 + \\\",\\\" + tx + \\\",\\\" + ty + \\\")\\\";\\n\\t\\ttarget.setAttribute(\\\"transform\\\", temp);\\n\\t\\tforceCSS && (target.style[_transformProp] = temp); //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)\\n\\t},\\n\\t_addRotationalPropTween = function(plugin, target, property, startNum, endValue, relative) {\\n\\t\\tlet cap = 360,\\n\\t\\t\\tisString = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_isString\\\"])(endValue),\\n\\t\\t\\tendNum = parseFloat(endValue) * ((isString && ~endValue.indexOf(\\\"rad\\\")) ? _RAD2DEG : 1),\\n\\t\\t\\tchange = relative ? endNum * relative : endNum - startNum,\\n\\t\\t\\tfinalValue = (startNum + change) + \\\"deg\\\",\\n\\t\\t\\tdirection, pt;\\n\\t\\tif (isString) {\\n\\t\\t\\tdirection = endValue.split(\\\"_\\\")[1];\\n\\t\\t\\tif (direction === \\\"short\\\") {\\n\\t\\t\\t\\tchange %= cap;\\n\\t\\t\\t\\tif (change !== change % (cap / 2)) {\\n\\t\\t\\t\\t\\tchange += (change < 0) ? cap : -cap;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif (direction === \\\"cw\\\" && change < 0) {\\n\\t\\t\\t\\tchange = ((change + cap * _bigNum) % cap) - ~~(change / cap) * cap;\\n\\t\\t\\t} else if (direction === \\\"ccw\\\" && change > 0) {\\n\\t\\t\\t\\tchange = ((change - cap * _bigNum) % cap) - ~~(change / cap) * cap;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tplugin._pt = pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"PropTween\\\"](plugin._pt, target, property, startNum, change, _renderPropWithEnd);\\n\\t\\tpt.e = finalValue;\\n\\t\\tpt.u = \\\"deg\\\";\\n\\t\\tplugin._props.push(property);\\n\\t\\treturn pt;\\n\\t},\\n\\t_assign = (target, source) => { // Internet Explorer doesn't have Object.assign(), so we recreate it here.\\n\\t\\tfor (let p in source) {\\n\\t\\t\\ttarget[p] = source[p];\\n\\t\\t}\\n\\t\\treturn target;\\n\\t},\\n\\t_addRawTransformPTs = (plugin, transforms, target) => { //for handling cases where someone passes in a whole transform string, like transform: \\\"scale(2, 3) rotate(20deg) translateY(30em)\\\"\\n\\t\\tlet startCache = _assign({}, target._gsap),\\n\\t\\t\\texclude = \\\"perspective,force3D,transformOrigin,svgOrigin\\\",\\n\\t\\t\\tstyle = target.style,\\n\\t\\t\\tendCache, p, startValue, endValue, startNum, endNum, startUnit, endUnit;\\n\\t\\tif (startCache.svg) {\\n\\t\\t\\tstartValue = target.getAttribute(\\\"transform\\\");\\n\\t\\t\\ttarget.setAttribute(\\\"transform\\\", \\\"\\\");\\n\\t\\t\\tstyle[_transformProp] = transforms;\\n\\t\\t\\tendCache = _parseTransform(target, 1);\\n\\t\\t\\t_removeProperty(target, _transformProp);\\n\\t\\t\\ttarget.setAttribute(\\\"transform\\\", startValue);\\n\\t\\t} else {\\n\\t\\t\\tstartValue = getComputedStyle(target)[_transformProp];\\n\\t\\t\\tstyle[_transformProp] = transforms;\\n\\t\\t\\tendCache = _parseTransform(target, 1);\\n\\t\\t\\tstyle[_transformProp] = startValue;\\n\\t\\t}\\n\\t\\tfor (p in _transformProps) {\\n\\t\\t\\tstartValue = startCache[p];\\n\\t\\t\\tendValue = endCache[p];\\n\\t\\t\\tif (startValue !== endValue && exclude.indexOf(p) < 0) { //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.\\n\\t\\t\\t\\tstartUnit = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"getUnit\\\"])(startValue);\\n\\t\\t\\t\\tendUnit = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"getUnit\\\"])(endValue);\\n\\t\\t\\t\\tstartNum = (startUnit !== endUnit) ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\\n\\t\\t\\t\\tendNum = parseFloat(endValue);\\n\\t\\t\\t\\tplugin._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"PropTween\\\"](plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);\\n\\t\\t\\t\\tplugin._pt.u = endUnit || 0;\\n\\t\\t\\t\\tplugin._props.push(p);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t_assign(endCache, startCache);\\n\\t};\\n\\n// handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.\\nObject(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_forEachName\\\"])(\\\"padding,margin,Width,Radius\\\", (name, index) => {\\n\\tlet t = \\\"Top\\\",\\n\\t\\tr = \\\"Right\\\",\\n\\t\\tb = \\\"Bottom\\\",\\n\\t\\tl = \\\"Left\\\",\\n\\t\\tprops = (index < 3 ? [t,r,b,l] : [t+l, t+r, b+r, b+l]).map(side => index < 2 ? name + side : \\\"border\\\" + side + name);\\n\\t_specialProps[(index > 1 ? \\\"border\\\" + name : name)] = function(plugin, target, property, endValue, tween) {\\n\\t\\tlet a, vars;\\n\\t\\tif (arguments.length < 4) { // getter, passed target, property, and unit (from _get())\\n\\t\\t\\ta = props.map(prop => _get(plugin, prop, property));\\n\\t\\t\\tvars = a.join(\\\" \\\");\\n\\t\\t\\treturn vars.split(a[0]).length === 5 ? a[0] : vars;\\n\\t\\t}\\n\\t\\ta = (endValue + \\\"\\\").split(\\\" \\\");\\n\\t\\tvars = {};\\n\\t\\tprops.forEach((prop, i) => vars[prop] = a[i] = a[i] || a[(((i - 1) / 2) | 0)]);\\n\\t\\tplugin.init(target, vars, tween);\\n\\t}\\n});\\n\\n\\nconst CSSPlugin = {\\n\\tname: \\\"css\\\",\\n\\tregister: _initCore,\\n\\ttargetTest(target) {\\n\\t\\treturn target.style && target.nodeType;\\n\\t},\\n\\tinit(target, vars, tween, index, targets) {\\n\\t\\tlet props = this._props,\\n\\t\\t\\tstyle = target.style,\\n\\t\\t\\tstartAt = tween.vars.startAt,\\n\\t\\t\\tstartValue, endValue, endNum, startNum, type, specialProp, p, startUnit, endUnit, relative, isTransformRelated, transformPropTween, cache, smooth, hasPriority;\\n\\t\\t_pluginInitted || _initCore();\\n\\t\\tfor (p in vars) {\\n\\t\\t\\tif (p === \\\"autoRound\\\") {\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\t\\t\\tendValue = vars[p];\\n\\t\\t\\tif (_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_plugins\\\"][p] && Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_checkPlugin\\\"])(p, vars, tween, index, target, targets)) { // plugins\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\t\\t\\ttype = typeof(endValue);\\n\\t\\t\\tspecialProp = _specialProps[p];\\n\\t\\t\\tif (type === \\\"function\\\") {\\n\\t\\t\\t\\tendValue = endValue.call(tween, index, target, targets);\\n\\t\\t\\t\\ttype = typeof(endValue);\\n\\t\\t\\t}\\n\\t\\t\\tif (type === \\\"string\\\" && ~endValue.indexOf(\\\"random(\\\")) {\\n\\t\\t\\t\\tendValue = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_replaceRandom\\\"])(endValue);\\n\\t\\t\\t}\\n\\t\\t\\tif (specialProp) {\\n\\t\\t\\t\\tspecialProp(this, target, p, endValue, tween) && (hasPriority = 1);\\n\\t\\t\\t} else if (p.substr(0,2) === \\\"--\\\") { //CSS variable\\n\\t\\t\\t\\tstartValue = (getComputedStyle(target).getPropertyValue(p) + \\\"\\\").trim();\\n\\t\\t\\t\\tendValue += \\\"\\\";\\n\\t\\t\\t\\t_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_colorExp\\\"].lastIndex = 0;\\n\\t\\t\\t\\tif (!_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_colorExp\\\"].test(startValue)) { // colors don't have units\\n\\t\\t\\t\\t\\tstartUnit = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"getUnit\\\"])(startValue);\\n\\t\\t\\t\\t\\tendUnit = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"getUnit\\\"])(endValue);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tendUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);\\n\\t\\t\\t\\tthis.add(style, \\\"setProperty\\\", startValue, endValue, index, targets, 0, 0, p);\\n\\t\\t\\t} else if (type !== \\\"undefined\\\") {\\n\\t\\t\\t\\tif (startAt && p in startAt) { // in case someone hard-codes a complex value as the start, like top: \\\"calc(2vh / 2)\\\". Without this, it'd use the computed value (always in px)\\n\\t\\t\\t\\t\\tstartValue = typeof(startAt[p]) === \\\"function\\\" ? startAt[p].call(tween, index, target, targets) : startAt[p];\\n\\t\\t\\t\\t\\t(p in _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_config\\\"].units) && !Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"getUnit\\\"])(startValue) && (startValue += _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_config\\\"].units[p]); // for cases when someone passes in a unitless value like {x: 100}; if we try setting translate(100, 0px) it won't work.\\n\\t\\t\\t\\t\\t(startValue + \\\"\\\").charAt(1) === \\\"=\\\" && (startValue = _get(target, p)); // can't work with relative values\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tstartValue = _get(target, p);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tstartNum = parseFloat(startValue);\\n\\t\\t\\t\\trelative = (type === \\\"string\\\" && endValue.charAt(1) === \\\"=\\\") ? +(endValue.charAt(0) + \\\"1\\\") : 0;\\n\\t\\t\\t\\trelative && (endValue = endValue.substr(2));\\n\\t\\t\\t\\tendNum = parseFloat(endValue);\\n\\t\\t\\t\\tif (p in _propertyAliases) {\\n\\t\\t\\t\\t\\tif (p === \\\"autoAlpha\\\") { //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.\\n\\t\\t\\t\\t\\t\\tif (startNum === 1 && _get(target, \\\"visibility\\\") === \\\"hidden\\\" && endNum) { //if visibility is initially set to \\\"hidden\\\", we should interpret that as intent to make opacity 0 (a convenience)\\n\\t\\t\\t\\t\\t\\t\\tstartNum = 0;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t_addNonTweeningPT(this, style, \\\"visibility\\\", startNum ? \\\"inherit\\\" : \\\"hidden\\\", endNum ? \\\"inherit\\\" : \\\"hidden\\\", !endNum);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (p !== \\\"scale\\\" && p !== \\\"transform\\\") {\\n\\t\\t\\t\\t\\t\\tp = _propertyAliases[p];\\n\\t\\t\\t\\t\\t\\t~p.indexOf(\\\",\\\") && (p = p.split(\\\",\\\")[0]);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tisTransformRelated = (p in _transformProps);\\n\\n\\t\\t\\t\\t//--- TRANSFORM-RELATED ---\\n\\t\\t\\t\\tif (isTransformRelated) {\\n\\t\\t\\t\\t\\tif (!transformPropTween) {\\n\\t\\t\\t\\t\\t\\tcache = target._gsap;\\n\\t\\t\\t\\t\\t\\t(cache.renderTransform && !vars.parseTransform) || _parseTransform(target, vars.parseTransform); // if, for example, gsap.set(... {transform:\\\"translateX(50vw)\\\"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.\\n\\t\\t\\t\\t\\t\\tsmooth = (vars.smoothOrigin !== false && cache.smooth);\\n\\t\\t\\t\\t\\t\\ttransformPropTween = this._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"PropTween\\\"](this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)\\n\\t\\t\\t\\t\\t\\ttransformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (p === \\\"scale\\\") {\\n\\t\\t\\t\\t\\t\\tthis._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"PropTween\\\"](this._pt, cache, \\\"scaleY\\\", cache.scaleY, relative ? relative * endNum : endNum - cache.scaleY);\\n\\t\\t\\t\\t\\t\\tprops.push(\\\"scaleY\\\", p);\\n\\t\\t\\t\\t\\t\\tp += \\\"X\\\";\\n\\t\\t\\t\\t\\t} else if (p === \\\"transformOrigin\\\") {\\n\\t\\t\\t\\t\\t\\tendValue = _convertKeywordsToPercentages(endValue); //in case something like \\\"left top\\\" or \\\"bottom right\\\" is passed in. Convert to percentages.\\n\\t\\t\\t\\t\\t\\tif (cache.svg) {\\n\\t\\t\\t\\t\\t\\t\\t_applySVGOrigin(target, endValue, 0, smooth, 0, this);\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\tendUnit = parseFloat(endValue.split(\\\" \\\")[2]) || 0; //handle the zOrigin separately!\\n\\t\\t\\t\\t\\t\\t\\tendUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \\\"zOrigin\\\", cache.zOrigin, endUnit);\\n\\t\\t\\t\\t\\t\\t\\t_addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t\\t} else if (p === \\\"svgOrigin\\\") {\\n\\t\\t\\t\\t\\t\\t_applySVGOrigin(target, endValue, 1, smooth, 0, this);\\n\\t\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t\\t} else if (p in _rotationalProperties) {\\n\\t\\t\\t\\t\\t\\t_addRotationalPropTween(this, cache, p, startNum, endValue, relative);\\n\\t\\t\\t\\t\\t\\tcontinue;\\n\\n\\t\\t\\t\\t\\t} else if (p === \\\"smoothOrigin\\\") {\\n\\t\\t\\t\\t\\t\\t_addNonTweeningPT(this, cache, \\\"smooth\\\", cache.smooth, endValue);\\n\\t\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t\\t} else if (p === \\\"force3D\\\") {\\n\\t\\t\\t\\t\\t\\tcache[p] = endValue;\\n\\t\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t\\t} else if (p === \\\"transform\\\") {\\n\\t\\t\\t\\t\\t\\t_addRawTransformPTs(this, endValue, target);\\n\\t\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} else if (!(p in style)) {\\n\\t\\t\\t\\t\\tp = _checkPropPrefix(p) || p;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif (isTransformRelated || ((endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && (p in style))) {\\n\\t\\t\\t\\t\\tstartUnit = (startValue + \\\"\\\").substr((startNum + \\\"\\\").length);\\n\\t\\t\\t\\t\\tendNum || (endNum = 0); // protect against NaN\\n\\t\\t\\t\\t\\tendUnit = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"getUnit\\\"])(endValue) || ((p in _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_config\\\"].units) ? _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_config\\\"].units[p] : startUnit);\\n\\t\\t\\t\\t\\tstartUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\\n\\t\\t\\t\\t\\tthis._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"PropTween\\\"](this._pt, isTransformRelated ? cache : style, p, startNum, relative ? relative * endNum : endNum - startNum, (!isTransformRelated && (endUnit === \\\"px\\\" || p === \\\"zIndex\\\") && vars.autoRound !== false) ? _renderRoundedCSSProp : _renderCSSProp);\\n\\t\\t\\t\\t\\tthis._pt.u = endUnit || 0;\\n\\t\\t\\t\\t\\tif (startUnit !== endUnit) { //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a \\\"b\\\" (beginning) property and point to a render method that handles that. (performance optimization)\\n\\t\\t\\t\\t\\t\\tthis._pt.b = startValue;\\n\\t\\t\\t\\t\\t\\tthis._pt.r = _renderCSSPropWithBeginning;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} else if (!(p in style)) {\\n\\t\\t\\t\\t\\tif (p in target) { //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.\\n\\t\\t\\t\\t\\t\\tthis.add(target, p, target[p], endValue, index, targets);\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tObject(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_missingPlugin\\\"])(p, endValue);\\n\\t\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t_tweenComplexCSSString.call(this, target, p, startValue, endValue);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tprops.push(p);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\thasPriority && Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_sortPropTweensByPriority\\\"])(this);\\n\\n\\t},\\n\\tget: _get,\\n\\taliases: _propertyAliases,\\n\\tgetSetter(target, property, plugin) { //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like \\\"x\\\" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.\\n\\t\\tlet p = _propertyAliases[property];\\n\\t\\t(p && p.indexOf(\\\",\\\") < 0) && (property = p);\\n\\t\\treturn (property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, \\\"x\\\"))) ? (plugin && _recentSetterPlugin === plugin ? (property === \\\"scale\\\" ? _setterScale : _setterTransform) : (_recentSetterPlugin = plugin || {}) && (property === \\\"scale\\\" ? _setterScaleWithRender : _setterTransformWithRender)) : target.style && !Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_isUndefined\\\"])(target.style[property]) ? _setterCSSStyle : ~property.indexOf(\\\"-\\\") ? _setterCSSProp : Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_getSetter\\\"])(target, property);\\n\\t},\\n\\tcore: { _removeProperty, _getMatrix }\\n\\n};\\n\\n_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"gsap\\\"].utils.checkPrefix = _checkPropPrefix;\\n(function(positionAndScale, rotation, others, aliases) {\\n\\tlet all = Object(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_forEachName\\\"])(positionAndScale + \\\",\\\" + rotation + \\\",\\\" + others, name => {_transformProps[name] = 1});\\n\\tObject(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_forEachName\\\"])(rotation, name => {_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_config\\\"].units[name] = \\\"deg\\\"; _rotationalProperties[name] = 1});\\n\\t_propertyAliases[all[13]] = positionAndScale + \\\",\\\" + rotation;\\n\\tObject(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_forEachName\\\"])(aliases, name => {\\n\\t\\tlet split = name.split(\\\":\\\");\\n\\t\\t_propertyAliases[split[1]] = all[split[0]];\\n\\t});\\n})(\\\"x,y,z,scale,scaleX,scaleY,xPercent,yPercent\\\", \\\"rotation,rotationX,rotationY,skewX,skewY\\\", \\\"transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective\\\", \\\"0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY\\\");\\nObject(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_forEachName\\\"])(\\\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\\\", name => {_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"_config\\\"].units[name] = \\\"px\\\"});\\n\\n_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__[\\\"gsap\\\"].registerPlugin(CSSPlugin);\\n\\n\\n\\n//# sourceURL=webpack:///./build/scripts/vendor/gsap/src/CSSPlugin.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/vendor/gsap/src/CSSRulePlugin.js\":\n/*!********************************************************!*\\\n !*** ./build/scripts/vendor/gsap/src/CSSRulePlugin.js ***!\n \\********************************************************/\n/*! exports provided: CSSRulePlugin, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"CSSRulePlugin\\\", function() { return CSSRulePlugin; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return CSSRulePlugin; });\\n/*!\\n * CSSRulePlugin 3.6.1\\n * https://greensock.com\\n *\\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\\n * Subject to the terms at https://greensock.com/standard-license or for\\n * Club GreenSock members, the agreement issued with that membership.\\n * @author: Jack Doyle, jack@greensock.com\\n*/\\n/* eslint-disable */\\n\\nlet gsap, _coreInitted, _win, _doc, CSSPlugin,\\n\\t_windowExists = () => typeof(window) !== \\\"undefined\\\",\\n\\t_getGSAP = () => gsap || (_windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap),\\n\\t_checkRegister = () => {\\n\\t\\tif (!_coreInitted) {\\n\\t\\t\\t_initCore();\\n\\t\\t\\tif (!CSSPlugin) {\\n\\t\\t\\t\\tconsole.warn(\\\"Please gsap.registerPlugin(CSSPlugin, CSSRulePlugin)\\\");\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn _coreInitted;\\n\\t},\\n\\t_initCore = core => {\\n\\t\\tgsap = core || _getGSAP();\\n\\t\\tif (_windowExists()) {\\n\\t\\t\\t_win = window;\\n\\t\\t\\t_doc = document;\\n\\t\\t}\\n\\t\\tif (gsap) {\\n\\t\\t\\tCSSPlugin = gsap.plugins.css;\\n\\t\\t\\tif (CSSPlugin) {\\n\\t\\t\\t\\t_coreInitted = 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\n\\nconst CSSRulePlugin = {\\n\\tversion: \\\"3.6.1\\\",\\n\\tname: \\\"cssRule\\\",\\n\\tinit(target, value, tween, index, targets) {\\n\\t\\tif (!_checkRegister() || typeof(target.cssText) === \\\"undefined\\\") {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\tlet div = target._gsProxy = target._gsProxy || _doc.createElement(\\\"div\\\");\\n\\t\\tthis.ss = target;\\n\\t\\tthis.style = div.style;\\n\\t\\tdiv.style.cssText = target.cssText;\\n\\t\\tCSSPlugin.prototype.init.call(this, div, value, tween, index, targets); //we just offload all the work to the regular CSSPlugin and then copy the cssText back over to the rule in the render() method. This allows us to have all of the updates to CSSPlugin automatically flow through to CSSRulePlugin instead of having to maintain both\\n\\t},\\n\\trender(ratio, data) {\\n\\t\\tlet pt = data._pt,\\n\\t\\t\\tstyle = data.style,\\n\\t\\t\\tss = data.ss,\\n\\t\\t\\ti;\\n\\t\\twhile (pt) {\\n\\t\\t\\tpt.r(ratio, pt.d);\\n\\t\\t\\tpt = pt._next;\\n\\t\\t}\\n\\t\\ti = style.length;\\n\\t\\twhile (--i > -1) {\\n\\t\\t\\tss[style[i]] = style[style[i]];\\n\\t\\t}\\n\\t},\\n\\tgetRule(selector) {\\n\\t\\t_checkRegister();\\n\\t\\tlet ruleProp = _doc.all ? \\\"rules\\\" : \\\"cssRules\\\",\\n\\t\\t\\tstyleSheets = _doc.styleSheets,\\n\\t\\t\\ti = styleSheets.length,\\n\\t\\t\\tpseudo = (selector.charAt(0) === \\\":\\\"),\\n\\t\\t\\tj, curSS, cs, a;\\n\\t\\tselector = (pseudo ? \\\"\\\" : \\\",\\\") + selector.split(\\\"::\\\").join(\\\":\\\").toLowerCase() + \\\",\\\"; //note: old versions of IE report tag name selectors as upper case, so we just change everything to lowercase.\\n\\t\\tif (pseudo) {\\n\\t\\t\\ta = [];\\n\\t\\t}\\n\\t\\twhile (i--) {\\n\\t\\t\\t//Firefox may throw insecure operation errors when css is loaded from other domains, so try/catch.\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tcurSS = styleSheets[i][ruleProp];\\n\\t\\t\\t\\tif (!curSS) {\\n\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tj = curSS.length;\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tconsole.warn(e);\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\t\\t\\twhile (--j > -1) {\\n\\t\\t\\t\\tcs = curSS[j];\\n\\t\\t\\t\\tif (cs.selectorText && (\\\",\\\" + cs.selectorText.split(\\\"::\\\").join(\\\":\\\").toLowerCase() + \\\",\\\").indexOf(selector) !== -1) { //note: IE adds an extra \\\":\\\" to pseudo selectors, so .myClass:after becomes .myClass::after, so we need to strip the extra one out.\\n\\t\\t\\t\\t\\tif (pseudo) {\\n\\t\\t\\t\\t\\t\\ta.push(cs.style);\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\treturn cs.style;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn a;\\n\\t},\\n\\tregister: _initCore\\n};\\n\\n_getGSAP() && gsap.registerPlugin(CSSRulePlugin);\\n\\n\\n\\n//# sourceURL=webpack:///./build/scripts/vendor/gsap/src/CSSRulePlugin.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/vendor/gsap/src/CustomBounce.js\":\n/*!*******************************************************!*\\\n !*** ./build/scripts/vendor/gsap/src/CustomBounce.js ***!\n \\*******************************************************/\n/*! exports provided: CustomBounce, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"CustomBounce\\\", function() { return CustomBounce; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return CustomBounce; });\\n/*!\\n * CustomBounce 3.6.1\\n * https://greensock.com\\n *\\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\\n * Subject to the terms at https://greensock.com/standard-license or for\\n * Club GreenSock members, the agreement issued with that membership.\\n * @author: Jack Doyle, jack@greensock.com\\n*/\\n/* eslint-disable */\\n\\nlet gsap, _coreInitted, createCustomEase,\\n\\t_getGSAP = () => gsap || (typeof(window) !== \\\"undefined\\\" && (gsap = window.gsap) && gsap.registerPlugin && gsap),\\n\\t_initCore = required => {\\n\\t\\tgsap = _getGSAP();\\n\\t\\tcreateCustomEase = gsap && gsap.parseEase(\\\"_CE\\\");\\n\\t\\tif (createCustomEase) {\\n\\t\\t\\t_coreInitted = 1;\\n\\t\\t\\tgsap.parseEase(\\\"bounce\\\").config = vars => typeof(vars) === \\\"object\\\" ? _create(\\\"\\\", vars) : _create(\\\"bounce(\\\" + vars + \\\")\\\", {strength:+vars});\\n\\t\\t} else {\\n\\t\\t\\trequired && console.warn(\\\"Please gsap.registerPlugin(CustomEase, CustomBounce)\\\");\\n\\t\\t}\\n\\t},\\n\\t_normalizeX = a => { //scales all the x values in an array [x, y, x, y...] AND rounds them to the closest hundredth (decimal)\\n\\t\\tlet l = a.length,\\n\\t\\t\\ts = 1 / a[l - 2],\\n\\t\\t\\trnd = 1000,\\n\\t\\t\\ti;\\n\\t\\tfor (i = 2; i < l; i += 2) {\\n\\t\\t\\ta[i] = ~~(a[i] * s * rnd) / rnd;\\n\\t\\t}\\n\\t\\ta[l - 2] = 1; //in case there are any rounding errors. x should always end at 1.\\n\\t},\\n\\t_bonusValidated = 1, //CustomBounce\\n\\t_create = (id, vars) => {\\n\\t\\tif (!_coreInitted) {\\n\\t\\t\\t_initCore(1);\\n\\t\\t}\\n\\t\\tvars = vars || {};\\n\\t\\tif (_bonusValidated) {\\n\\t\\t\\tlet max = 0.999,\\n\\t\\t\\t\\tdecay = Math.min(max, vars.strength || 0.7), // Math.min(0.999, 1 - 0.3 / (vars.strength || 1)),\\n\\t\\t\\t\\tdecayX = decay,\\n\\t\\t\\t\\tgap = (vars.squash || 0) / 100,\\n\\t\\t\\t\\toriginalGap = gap,\\n\\t\\t\\t\\tslope = 1 / 0.03,\\n\\t\\t\\t\\tw = 0.2,\\n\\t\\t\\t\\th = 1,\\n\\t\\t\\t\\tprevX = 0.1,\\n\\t\\t\\t\\tpath = [0, 0, 0.07, 0, 0.1, 1, 0.1, 1],\\n\\t\\t\\t\\tsquashPath = [0, 0, 0, 0, 0.1, 0, 0.1, 0],\\n\\t\\t\\t\\tcp1, cp2, x, y, i, nextX, squishMagnitude;\\n\\t\\t\\tfor (i = 0; i < 200; i++) {\\n\\t\\t\\t\\tw *= decayX * ((decayX + 1) / 2);\\n\\t\\t\\t\\th *= decay * decay;\\n\\t\\t\\t\\tnextX = prevX + w;\\n\\t\\t\\t\\tx = prevX + w * 0.49;\\n\\t\\t\\t\\ty = 1 - h;\\n\\t\\t\\t\\tcp1 = prevX + h / slope;\\n\\t\\t\\t\\tcp2 = x + (x - cp1) * 0.8;\\n\\n\\t\\t\\t\\tif (gap) {\\n\\t\\t\\t\\t\\tprevX += gap;\\n\\t\\t\\t\\t\\tcp1 += gap;\\n\\t\\t\\t\\t\\tx += gap;\\n\\t\\t\\t\\t\\tcp2 += gap;\\n\\t\\t\\t\\t\\tnextX += gap;\\n\\t\\t\\t\\t\\tsquishMagnitude = gap / originalGap;\\n\\t\\t\\t\\t\\tsquashPath.push(\\n\\t\\t\\t\\t\\t\\tprevX - gap, 0,\\n\\t\\t\\t\\t\\t\\tprevX - gap, squishMagnitude,\\n\\t\\t\\t\\t\\t\\tprevX - gap / 2, squishMagnitude, //center peak anchor\\n\\t\\t\\t\\t\\t\\tprevX, squishMagnitude,\\n\\t\\t\\t\\t\\t\\tprevX, 0,\\n\\t\\t\\t\\t\\t\\tprevX, 0, //base anchor\\n\\t\\t\\t\\t\\t\\tprevX, squishMagnitude * -0.6,\\n\\t\\t\\t\\t\\t\\tprevX + (nextX - prevX) / 6, 0,\\n\\t\\t\\t\\t\\t\\tnextX, 0\\n\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\tpath.push(prevX - gap, 1,\\n\\t\\t\\t\\t\\t\\tprevX, 1,\\n\\t\\t\\t\\t\\t\\tprevX, 1);\\n\\t\\t\\t\\t\\tgap *= decay * decay;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tpath.push(prevX, 1,\\n\\t\\t\\t\\t\\tcp1, y,\\n\\t\\t\\t\\t\\tx, y,\\n\\t\\t\\t\\t\\tcp2, y,\\n\\t\\t\\t\\t\\tnextX, 1,\\n\\t\\t\\t\\t\\tnextX, 1);\\n\\n\\t\\t\\t\\tdecay *= 0.95;\\n\\t\\t\\t\\tslope = h / (nextX - cp2);\\n\\t\\t\\t\\tprevX = nextX;\\n\\t\\t\\t\\tif (y > max) {\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (vars.endAtStart && vars.endAtStart !== \\\"false\\\") {\\n\\t\\t\\t\\tx = -0.1;\\n\\t\\t\\t\\tpath.unshift(x, 1, x, 1, -0.07, 0);\\n\\t\\t\\t\\tif (originalGap) {\\n\\t\\t\\t\\t\\tgap = originalGap * 2.5; //make the initial anticipation squash longer (more realistic)\\n\\t\\t\\t\\t\\tx -= gap;\\n\\t\\t\\t\\t\\tpath.unshift(x, 1, x, 1, x, 1);\\n\\t\\t\\t\\t\\tsquashPath.splice(0, 6);\\n\\t\\t\\t\\t\\tsquashPath.unshift(x, 0, x, 0, x, 1, x + gap / 2, 1, x + gap, 1, x + gap, 0, x + gap, 0, x + gap, -0.6, x + gap + 0.033, 0);\\n\\t\\t\\t\\t\\tfor (i = 0; i < squashPath.length; i+=2) {\\n\\t\\t\\t\\t\\t\\tsquashPath[i] -= x;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tfor (i = 0; i < path.length; i+=2) {\\n\\t\\t\\t\\t\\tpath[i] -= x;\\n\\t\\t\\t\\t\\tpath[i+1] = 1 - path[i+1];\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif (gap) {\\n\\t\\t\\t\\t_normalizeX(squashPath);\\n\\t\\t\\t\\tsquashPath[2] = \\\"C\\\" + squashPath[2];\\n\\t\\t\\t\\tcreateCustomEase(vars.squashID || (id + \\\"-squash\\\"), \\\"M\\\" + squashPath.join(\\\",\\\"));\\n\\t\\t\\t}\\n\\t\\t\\t_normalizeX(path);\\n\\t\\t\\tpath[2] = \\\"C\\\" + path[2];\\n\\t\\t\\treturn createCustomEase(id, \\\"M\\\" + path.join(\\\",\\\"));\\n\\t\\t}\\n\\t};\\n\\nclass CustomBounce {\\n\\n\\tconstructor(id, vars) {\\n\\t\\tthis.ease = _create(id, vars);\\n\\t}\\n\\n\\tstatic create(id, vars) {\\n\\t\\treturn _create(id, vars);\\n\\t}\\n\\n\\tstatic register(core) {\\n\\t\\tgsap = core;\\n\\t\\t_initCore();\\n\\t}\\n\\n}\\n\\n_getGSAP() && gsap.registerPlugin(CustomBounce);\\n\\nCustomBounce.version = \\\"3.6.1\\\";\\n\\n\\n\\n//# sourceURL=webpack:///./build/scripts/vendor/gsap/src/CustomBounce.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/vendor/gsap/src/CustomEase.js\":\n/*!*****************************************************!*\\\n !*** ./build/scripts/vendor/gsap/src/CustomEase.js ***!\n \\*****************************************************/\n/*! exports provided: CustomEase, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"CustomEase\\\", function() { return CustomEase; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return CustomEase; });\\n/* harmony import */ var _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/paths.js */ \\\"./build/scripts/vendor/gsap/src/utils/paths.js\\\");\\n/*!\\n * CustomEase 3.6.1\\n * https://greensock.com\\n *\\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\\n * Subject to the terms at https://greensock.com/standard-license or for\\n * Club GreenSock members, the agreement issued with that membership.\\n * @author: Jack Doyle, jack@greensock.com\\n*/\\n/* eslint-disable */\\n\\n\\n\\nlet gsap, _coreInitted,\\n\\t_getGSAP = () => gsap || (typeof(window) !== \\\"undefined\\\" && (gsap = window.gsap) && gsap.registerPlugin && gsap),\\n\\t_initCore = () => {\\n\\t\\tgsap = _getGSAP();\\n\\t\\tif (gsap) {\\n\\t\\t\\tgsap.registerEase(\\\"_CE\\\", CustomEase.create);\\n\\t\\t\\t_coreInitted = 1;\\n\\t\\t} else {\\n\\t\\t\\tconsole.warn(\\\"Please gsap.registerPlugin(CustomEase)\\\");\\n\\t\\t}\\n\\t},\\n\\t_bigNum = 1e20,\\n\\t_round = value => ~~(value * 1000 + (value < 0 ? -.5 : .5)) / 1000,\\n\\t_bonusValidated = 1, //CustomEase\\n\\t_numExp = /[-+=\\\\.]*\\\\d+[\\\\.e\\\\-\\\\+]*\\\\d*[e\\\\-\\\\+]*\\\\d*/gi, //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\\n\\t_needsParsingExp = /[cLlsSaAhHvVtTqQ]/g,\\n\\t_findMinimum = values => {\\n\\t\\tlet l = values.length,\\n\\t\\t\\tmin = _bigNum,\\n\\t\\t\\ti;\\n\\t\\tfor (i = 1; i < l; i += 6) {\\n\\t\\t\\t+values[i] < min && (min = +values[i]);\\n\\t\\t}\\n\\t\\treturn min;\\n\\t},\\n\\t//takes all the points and translates/scales them so that the x starts at 0 and ends at 1.\\n\\t_normalize = (values, height, originY) => {\\n\\t\\tif (!originY && originY !== 0) {\\n\\t\\t\\toriginY = Math.max(+values[values.length-1], +values[1]);\\n\\t\\t}\\n\\t\\tlet tx = +values[0] * -1,\\n\\t\\t\\tty = -originY,\\n\\t\\t\\tl = values.length,\\n\\t\\t\\tsx = 1 / (+values[l - 2] + tx),\\n\\t\\t\\tsy = -height || ((Math.abs(+values[l - 1] - +values[1]) < 0.01 * (+values[l - 2] - +values[0])) ? _findMinimum(values) + ty : +values[l - 1] + ty),\\n\\t\\t\\ti;\\n\\t\\tif (sy) { //typically y ends at 1 (so that the end values are reached)\\n\\t\\t\\tsy = 1 / sy;\\n\\t\\t} else { //in case the ease returns to its beginning value, scale everything proportionally\\n\\t\\t\\tsy = -sx;\\n\\t\\t}\\n\\t\\tfor (i = 0; i < l; i += 2) {\\n\\t\\t\\tvalues[i] = (+values[i] + tx) * sx;\\n\\t\\t\\tvalues[i + 1] = (+values[i + 1] + ty) * sy;\\n\\t\\t}\\n\\t},\\n\\t//note that this function returns point objects like {x, y} rather than working with segments which are arrays with alternating x, y values as in the similar function in paths.js\\n\\t_bezierToPoints = function (x1, y1, x2, y2, x3, y3, x4, y4, threshold, points, index) {\\n\\t\\tlet x12 = (x1 + x2) / 2,\\n\\t\\t\\ty12 = (y1 + y2) / 2,\\n\\t\\t\\tx23 = (x2 + x3) / 2,\\n\\t\\t\\ty23 = (y2 + y3) / 2,\\n\\t\\t\\tx34 = (x3 + x4) / 2,\\n\\t\\t\\ty34 = (y3 + y4) / 2,\\n\\t\\t\\tx123 = (x12 + x23) / 2,\\n\\t\\t\\ty123 = (y12 + y23) / 2,\\n\\t\\t\\tx234 = (x23 + x34) / 2,\\n\\t\\t\\ty234 = (y23 + y34) / 2,\\n\\t\\t\\tx1234 = (x123 + x234) / 2,\\n\\t\\t\\ty1234 = (y123 + y234) / 2,\\n\\t\\t\\tdx = x4 - x1,\\n\\t\\t\\tdy = y4 - y1,\\n\\t\\t\\td2 = Math.abs((x2 - x4) * dy - (y2 - y4) * dx),\\n\\t\\t\\td3 = Math.abs((x3 - x4) * dy - (y3 - y4) * dx),\\n\\t\\t\\tlength;\\n\\t\\tif (!points) {\\n\\t\\t\\tpoints = [{x: x1, y: y1}, {x: x4, y: y4}];\\n\\t\\t\\tindex = 1;\\n\\t\\t}\\n\\t\\tpoints.splice(index || points.length - 1, 0, {x: x1234, y: y1234});\\n\\t\\tif ((d2 + d3) * (d2 + d3) > threshold * (dx * dx + dy * dy)) {\\n\\t\\t\\tlength = points.length;\\n\\t\\t\\t_bezierToPoints(x1, y1, x12, y12, x123, y123, x1234, y1234, threshold, points, index);\\n\\t\\t\\t_bezierToPoints(x1234, y1234, x234, y234, x34, y34, x4, y4, threshold, points, index + 1 + (points.length - length));\\n\\t\\t}\\n\\t\\treturn points;\\n\\t};\\n\\nclass CustomEase {\\n\\n\\tconstructor(id, data, config) {\\n\\t\\t_coreInitted || _initCore();\\n\\t\\tthis.id = id;\\n\\t\\t_bonusValidated && this.setData(data, config);\\n\\t}\\n\\n\\tsetData(data, config) {\\n\\t\\tconfig = config || {};\\n\\t\\tdata = data || \\\"0,0,1,1\\\";\\n\\t\\tlet values = data.match(_numExp),\\n\\t\\t\\tclosest = 1,\\n\\t\\t\\tpoints = [],\\n\\t\\t\\tlookup = [],\\n\\t\\t\\tprecision = config.precision || 1,\\n\\t\\t\\tfast = (precision <= 1),\\n\\t\\t\\tl, a1, a2, i, inc, j, point, prevPoint, p;\\n\\t\\tthis.data = data;\\n\\t\\tif (_needsParsingExp.test(data) || (~data.indexOf(\\\"M\\\") && data.indexOf(\\\"C\\\") < 0)) {\\n\\t\\t\\tvalues = Object(_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__[\\\"stringToRawPath\\\"])(data)[0];\\n\\t\\t}\\n\\t\\tl = values.length;\\n\\t\\tif (l === 4) {\\n\\t\\t\\tvalues.unshift(0, 0);\\n\\t\\t\\tvalues.push(1, 1);\\n\\t\\t\\tl = 8;\\n\\t\\t} else if ((l - 2) % 6) {\\n\\t\\t\\tthrow \\\"Invalid CustomEase\\\";\\n\\t\\t}\\n\\t\\tif (+values[0] !== 0 || +values[l - 2] !== 1) {\\n\\t\\t\\t_normalize(values, config.height, config.originY);\\n\\t\\t}\\n\\t\\tthis.segment = values;\\n\\t\\tfor (i = 2; i < l; i += 6) {\\n\\t\\t\\ta1 = {x: +values[i - 2], y: +values[i - 1]};\\n\\t\\t\\ta2 = {x: +values[i + 4], y: +values[i + 5]};\\n\\t\\t\\tpoints.push(a1, a2);\\n\\t\\t\\t_bezierToPoints(a1.x, a1.y, +values[i], +values[i + 1], +values[i + 2], +values[i + 3], a2.x, a2.y, 1 / (precision * 200000), points, points.length - 1);\\n\\t\\t}\\n\\t\\tl = points.length;\\n\\t\\tfor (i = 0; i < l; i++) {\\n\\t\\t\\tpoint = points[i];\\n\\t\\t\\tprevPoint = points[i - 1] || point;\\n\\t\\t\\tif ((point.x > prevPoint.x || (prevPoint.y !== point.y && prevPoint.x === point.x) || point === prevPoint) && point.x <= 1) { //if a point goes BACKWARD in time or is a duplicate, just drop it. Also it shouldn't go past 1 on the x axis, as could happen in a string like \\\"M0,0 C0,0 0.12,0.68 0.18,0.788 0.195,0.845 0.308,1 0.32,1 0.403,1.005 0.398,1 0.5,1 0.602,1 0.816,1.005 0.9,1 0.91,1 0.948,0.69 0.962,0.615 1.003,0.376 1,0 1,0\\\".\\n\\t\\t\\t\\tprevPoint.cx = point.x - prevPoint.x; //change in x between this point and the next point (performance optimization)\\n\\t\\t\\t\\tprevPoint.cy = point.y - prevPoint.y;\\n\\t\\t\\t\\tprevPoint.n = point;\\n\\t\\t\\t\\tprevPoint.nx = point.x; //next point's x value (performance optimization, making lookups faster in getRatio()). Remember, the lookup will always land on a spot where it's either this point or the very next one (never beyond that)\\n\\t\\t\\t\\tif (fast && i > 1 && Math.abs(prevPoint.cy / prevPoint.cx - points[i - 2].cy / points[i - 2].cx) > 2) { //if there's a sudden change in direction, prioritize accuracy over speed. Like a bounce ease - you don't want to risk the sampling chunks landing on each side of the bounce anchor and having it clipped off.\\n\\t\\t\\t\\t\\tfast = 0;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (prevPoint.cx < closest) {\\n\\t\\t\\t\\t\\tif (!prevPoint.cx) {\\n\\t\\t\\t\\t\\t\\tprevPoint.cx = 0.001; //avoids math problems in getRatio() (dividing by zero)\\n\\t\\t\\t\\t\\t\\tif (i === l - 1) { //in case the final segment goes vertical RIGHT at the end, make sure we end at the end.\\n\\t\\t\\t\\t\\t\\t\\tprevPoint.x -= 0.001;\\n\\t\\t\\t\\t\\t\\t\\tclosest = Math.min(closest, 0.001);\\n\\t\\t\\t\\t\\t\\t\\tfast = 0;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tclosest = prevPoint.cx;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tpoints.splice(i--, 1);\\n\\t\\t\\t\\tl--;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tl = (1 / closest + 1) | 0;\\n\\t\\tinc = 1 / l;\\n\\t\\tj = 0;\\n\\t\\tpoint = points[0];\\n\\t\\tif (fast) {\\n\\t\\t\\tfor (i = 0; i < l; i++) { //for fastest lookups, we just sample along the path at equal x (time) distance. Uses more memory and is slightly less accurate for anchors that don't land on the sampling points, but for the vast majority of eases it's excellent (and fast).\\n\\t\\t\\t\\tp = i * inc;\\n\\t\\t\\t\\tif (point.nx < p) {\\n\\t\\t\\t\\t\\tpoint = points[++j];\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\ta1 = point.y + ((p - point.x) / point.cx) * point.cy;\\n\\t\\t\\t\\tlookup[i] = {x: p, cx: inc, y: a1, cy: 0, nx: 9};\\n\\t\\t\\t\\tif (i) {\\n\\t\\t\\t\\t\\tlookup[i - 1].cy = a1 - lookup[i - 1].y;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tlookup[l - 1].cy = points[points.length - 1].y - a1;\\n\\t\\t} else { //this option is more accurate, ensuring that EVERY anchor is hit perfectly. Clipping across a bounce, for example, would never happen.\\n\\t\\t\\tfor (i = 0; i < l; i++) { //build a lookup table based on the smallest distance so that we can instantly find the appropriate point (well, it'll either be that point or the very next one). We'll look up based on the linear progress. So it's it's 0.5 and the lookup table has 100 elements, it'd be like lookup[Math.floor(0.5 * 100)]\\n\\t\\t\\t\\tif (point.nx < i * inc) {\\n\\t\\t\\t\\t\\tpoint = points[++j];\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tlookup[i] = point;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (j < points.length - 1) {\\n\\t\\t\\t\\tlookup[i-1] = points[points.length-2];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t//this._calcEnd = (points[points.length-1].y !== 1 || points[0].y !== 0); //ensures that we don't run into floating point errors. As long as we're starting at 0 and ending at 1, tell GSAP to skip the final calculation and use 0/1 as the factor.\\n\\n\\t\\tthis.ease = p => {\\n\\t\\t\\tlet point = lookup[(p * l) | 0] || lookup[l - 1];\\n\\t\\t\\tif (point.nx < p) {\\n\\t\\t\\t\\tpoint = point.n;\\n\\t\\t\\t}\\n\\t\\t\\treturn point.y + ((p - point.x) / point.cx) * point.cy;\\n\\t\\t};\\n\\n\\t\\tthis.ease.custom = this;\\n\\n\\t\\tthis.id && gsap.registerEase(this.id, this.ease);\\n\\n\\t\\treturn this;\\n\\t}\\n\\n\\tgetSVGData(config) {\\n\\t\\treturn CustomEase.getSVGData(this, config);\\n\\t}\\n\\n\\tstatic create(id, data, config) {\\n\\t\\treturn (new CustomEase(id, data, config)).ease;\\n\\t}\\n\\n\\tstatic register(core) {\\n\\t\\tgsap = core;\\n\\t\\t_initCore();\\n\\t}\\n\\n\\tstatic get(id) {\\n\\t\\treturn gsap.parseEase(id);\\n\\t}\\n\\n\\tstatic getSVGData(ease, config) {\\n\\t\\tconfig = config || {};\\n\\t\\tlet width = config.width || 100,\\n\\t\\t\\theight = config.height || 100,\\n\\t\\t\\tx = config.x || 0,\\n\\t\\t\\ty = (config.y || 0) + height,\\n\\t\\t\\te = gsap.utils.toArray(config.path)[0],\\n\\t\\t\\ta, slope, i, inc, tx, ty, precision, threshold, prevX, prevY;\\n\\t\\tif (config.invert) {\\n\\t\\t\\theight = -height;\\n\\t\\t\\ty = 0;\\n\\t\\t}\\n\\t\\tif (typeof(ease) === \\\"string\\\") {\\n\\t\\t\\tease = gsap.parseEase(ease);\\n\\t\\t}\\n\\t\\tif (ease.custom) {\\n\\t\\t\\tease = ease.custom;\\n\\t\\t}\\n\\t\\tif (ease instanceof CustomEase) {\\n\\t\\t\\ta = Object(_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__[\\\"rawPathToString\\\"])(Object(_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__[\\\"transformRawPath\\\"])([ease.segment], width, 0, 0, -height, x, y));\\n\\t\\t} else {\\n\\t\\t\\ta = [x, y];\\n\\t\\t\\tprecision = Math.max(5, (config.precision || 1) * 200);\\n\\t\\t\\tinc = 1 / precision;\\n\\t\\t\\tprecision += 2;\\n\\t\\t\\tthreshold = 5 / precision;\\n\\t\\t\\tprevX = _round(x + inc * width);\\n\\t\\t\\tprevY = _round(y + ease(inc) * -height);\\n\\t\\t\\tslope = (prevY - y) / (prevX - x);\\n\\t\\t\\tfor (i = 2; i < precision; i++) {\\n\\t\\t\\t\\ttx = _round(x + i * inc * width);\\n\\t\\t\\t\\tty = _round(y + ease(i * inc) * -height);\\n\\t\\t\\t\\tif (Math.abs((ty - prevY) / (tx - prevX) - slope) > threshold || i === precision - 1) { //only add points when the slope changes beyond the threshold\\n\\t\\t\\t\\t\\ta.push(prevX, prevY);\\n\\t\\t\\t\\t\\tslope = (ty - prevY) / (tx - prevX);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tprevX = tx;\\n\\t\\t\\t\\tprevY = ty;\\n\\t\\t\\t}\\n\\t\\t\\ta = \\\"M\\\" + a.join(\\\",\\\");\\n\\t\\t}\\n\\t\\te && e.setAttribute(\\\"d\\\", a);\\n\\t\\treturn a;\\n\\t}\\n\\n}\\n\\n_getGSAP() && gsap.registerPlugin(CustomEase);\\n\\nCustomEase.version = \\\"3.6.1\\\";\\n\\n\\n\\n//# sourceURL=webpack:///./build/scripts/vendor/gsap/src/CustomEase.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/vendor/gsap/src/CustomWiggle.js\":\n/*!*******************************************************!*\\\n !*** ./build/scripts/vendor/gsap/src/CustomWiggle.js ***!\n \\*******************************************************/\n/*! exports provided: CustomWiggle, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"CustomWiggle\\\", function() { return CustomWiggle; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return CustomWiggle; });\\n/*!\\n * CustomWiggle 3.6.1\\n * https://greensock.com\\n *\\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\\n * Subject to the terms at https://greensock.com/standard-license or for\\n * Club GreenSock members, the agreement issued with that membership.\\n * @author: Jack Doyle, jack@greensock.com\\n*/\\n/* eslint-disable */\\n\\nlet gsap, _coreInitted, createCustomEase,\\n\\t_getGSAP = () => gsap || (typeof(window) !== \\\"undefined\\\" && (gsap = window.gsap) && gsap.registerPlugin && gsap),\\n\\t_eases = {\\n\\t\\teaseOut: \\\"M0,1,C0.7,1,0.6,0,1,0\\\",\\n\\t\\teaseInOut: \\\"M0,0,C0.1,0,0.24,1,0.444,1,0.644,1,0.6,0,1,0\\\",\\n\\t\\tanticipate: \\\"M0,0,C0,0.222,0.024,0.386,0,0.4,0.18,0.455,0.65,0.646,0.7,0.67,0.9,0.76,1,0.846,1,1\\\",\\n\\t\\tuniform: \\\"M0,0,C0,0.95,0,1,0,1,0,1,1,1,1,1,1,1,1,0,1,0\\\"\\n\\t},\\n\\t_linearEase = p => p,\\n\\t_initCore = required => {\\n\\t\\tif (!_coreInitted) {\\n\\t\\t\\tgsap = _getGSAP();\\n\\t\\t\\tcreateCustomEase = gsap && gsap.parseEase(\\\"_CE\\\");\\n\\t\\t\\tif (createCustomEase) {\\n\\t\\t\\t\\tfor (let p in _eases) {\\n\\t\\t\\t\\t\\t_eases[p] = createCustomEase(\\\"\\\", _eases[p]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t_coreInitted = 1;\\n\\t\\t\\t\\t_create(\\\"wiggle\\\").config = vars => typeof(vars) === \\\"object\\\" ? _create(\\\"\\\", vars) : _create(\\\"wiggle(\\\" + vars + \\\")\\\", {wiggles:+vars});\\n\\t\\t\\t} else {\\n\\t\\t\\t\\trequired && console.warn(\\\"Please gsap.registerPlugin(CustomEase, CustomWiggle)\\\");\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\t_parseEase = (ease, invertNonCustomEases) => {\\n\\t\\tif (typeof(ease) !== \\\"function\\\") {\\n\\t\\t\\tease = gsap.parseEase(ease) || createCustomEase(\\\"\\\", ease);\\n\\t\\t}\\n\\t\\treturn (ease.custom || !invertNonCustomEases) ? ease : p => 1 - ease(p);\\n\\t},\\n\\t_bonusValidated = 1, //CustomWiggle\\n\\t_create = (id, vars) => {\\n\\t\\tif (!_coreInitted) {\\n\\t\\t\\t_initCore(1);\\n\\t\\t}\\n\\t\\tvars = vars || {};\\n\\t\\tlet wiggles = (vars.wiggles || 10) | 0,\\n\\t\\t\\tinc = 1 / wiggles,\\n\\t\\t\\tx = inc / 2,\\n\\t\\t\\tanticipate = (vars.type === \\\"anticipate\\\"),\\n\\t\\t\\tyEase = _eases[vars.type] || _eases.easeOut,\\n\\t\\t\\txEase = _linearEase,\\n\\t\\t\\trnd = 1000,\\n\\t\\t\\tnextX, nextY, angle, handleX, handleY, easedX, y, path, i;\\n\\t\\tif (_bonusValidated) {\\n\\t\\t\\tif (anticipate) { //the anticipate ease is actually applied on the x-axis (timing) and uses easeOut for amplitude.\\n\\t\\t\\t\\txEase = yEase;\\n\\t\\t\\t\\tyEase = _eases.easeOut;\\n\\t\\t\\t}\\n\\t\\t\\tif (vars.timingEase) {\\n\\t\\t\\t\\txEase = _parseEase(vars.timingEase);\\n\\t\\t\\t}\\n\\t\\t\\tif (vars.amplitudeEase) {\\n\\t\\t\\t\\tyEase = _parseEase(vars.amplitudeEase, true);\\n\\t\\t\\t}\\n\\t\\t\\teasedX = xEase(x);\\n\\t\\t\\ty = anticipate ? -yEase(x) : yEase(x);\\n\\t\\t\\tpath = [0, 0, easedX / 4, 0, easedX / 2, y, easedX, y];\\n\\n\\t\\t\\tif (vars.type === \\\"random\\\") { //if we just select random values on the y-axis and plug them into the \\\"normal\\\" algorithm, since the control points are always straight horizontal, it creates a bit of a slowdown at each anchor which just didn't seem as desirable, so we switched to an algorithm that bends the control points to be more in line with their context.\\n\\t\\t\\t\\tpath.length = 4;\\n\\t\\t\\t\\tnextX = xEase(inc);\\n\\t\\t\\t\\tnextY = Math.random() * 2 - 1;\\n\\t\\t\\t\\tfor (i = 2; i < wiggles; i++) {\\n\\t\\t\\t\\t\\tx = nextX;\\n\\t\\t\\t\\t\\ty = nextY;\\n\\t\\t\\t\\t\\tnextX = xEase(inc * i);\\n\\t\\t\\t\\t\\tnextY = Math.random() * 2 - 1;\\n\\t\\t\\t\\t\\tangle = Math.atan2(nextY - path[path.length - 3], nextX - path[path.length - 4]);\\n\\t\\t\\t\\t\\thandleX = Math.cos(angle) * inc;\\n\\t\\t\\t\\t\\thandleY = Math.sin(angle) * inc;\\n\\t\\t\\t\\t\\tpath.push(x - handleX, y - handleY, x, y, x + handleX, y + handleY);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tpath.push(nextX, 0, 1, 0);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tfor (i = 1; i < wiggles; i++) {\\n\\t\\t\\t\\t\\tpath.push(xEase(x + inc / 2), y);\\n\\t\\t\\t\\t\\tx += inc;\\n\\t\\t\\t\\t\\ty = ((y > 0) ? -1 : 1) * (yEase(i * inc));\\n\\t\\t\\t\\t\\teasedX = xEase(x);\\n\\t\\t\\t\\t\\tpath.push(xEase(x - inc / 2), y, easedX, y);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tpath.push(xEase(x + inc / 4), y, xEase(x + inc / 4), 0, 1, 0);\\n\\t\\t\\t}\\n\\t\\t\\ti = path.length;\\n\\t\\t\\twhile (--i > -1) {\\n\\t\\t\\t\\tpath[i] = ~~(path[i] * rnd) / rnd; //round values to avoid odd strings for super tiny values\\n\\t\\t\\t}\\n\\t\\t\\tpath[2] = \\\"C\\\" + path[2];\\n\\t\\t\\treturn createCustomEase(id, \\\"M\\\" + path.join(\\\",\\\"));\\n\\t\\t}\\n\\t};\\n\\nclass CustomWiggle {\\n\\n\\tconstructor(id, vars) {\\n\\t\\tthis.ease = _create(id, vars);\\n\\t}\\n\\n\\tstatic create(id, vars) {\\n\\t\\treturn _create(id, vars);\\n\\t}\\n\\n\\tstatic register(core) {\\n\\t\\tgsap = core;\\n\\t\\t_initCore();\\n\\t}\\n\\n}\\n\\n_getGSAP() && gsap.registerPlugin(CustomWiggle);\\n\\nCustomWiggle.version = \\\"3.6.1\\\";\\n\\n\\n\\n//# sourceURL=webpack:///./build/scripts/vendor/gsap/src/CustomWiggle.js?\");\n\n/***/ }),\n\n/***/ \"./build/scripts/vendor/gsap/src/Draggable.js\":\n/*!****************************************************!*\\\n !*** ./build/scripts/vendor/gsap/src/Draggable.js ***!\n \\****************************************************/\n/*! exports provided: Draggable, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"Draggable\\\", function() { return Draggable; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Draggable; });\\n/* harmony import */ var _utils_matrix_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/matrix.js */ \\\"./build/scripts/vendor/gsap/src/utils/matrix.js\\\");\\n/*!\\n * Draggable 3.6.1\\n * https://greensock.com\\n *\\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\\n * Subject to the terms at https://greensock.com/standard-license or for\\n * Club GreenSock members, the agreement issued with that membership.\\n * @author: Jack Doyle, jack@greensock.com\\n */\\n/* eslint-disable */\\n\\n\\n\\nlet gsap, _win, _doc, _docElement, _body, _tempDiv, _placeholderDiv, _coreInitted, _checkPrefix, _toArray, _supportsPassive, _isTouchDevice, _touchEventLookup, _dragCount, _isMultiTouching, _isAndroid, InertiaPlugin, _defaultCursor, _supportsPointer,\\n\\t_windowExists = () => typeof(window) !== \\\"undefined\\\",\\n\\t_getGSAP = () => gsap || (_windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap),\\n\\t_isFunction = value => typeof(value) === \\\"function\\\",\\n\\t_isObject = value => typeof(value) === \\\"object\\\",\\n\\t_isUndefined = value => typeof(value) === \\\"undefined\\\",\\n\\t_emptyFunc = () => false,\\n\\t_transformProp = \\\"transform\\\",\\n\\t_transformOriginProp = \\\"transformOrigin\\\",\\n\\t_round = value => Math.round(value * 10000) / 10000,\\n\\t_isArray = Array.isArray,\\n\\t_createElement = (type, ns) => {\\n\\t\\tlet e = _doc.createElementNS ? _doc.createElementNS((ns || \\\"http://www.w3.org/1999/xhtml\\\").replace(/^https/, \\\"http\\\"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making \\\"style\\\" inaccessible.\\n\\t\\treturn e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://greensock.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\\n\\t},\\n\\t_RAD2DEG = 180 / Math.PI,\\n\\t_bigNum = 1e20,\\n\\t_identityMatrix = new _utils_matrix_js__WEBPACK_IMPORTED_MODULE_0__[\\\"Matrix2D\\\"](),\\n\\t_getTime = Date.now || (() => new Date().getTime()),\\n\\t_renderQueue = [],\\n\\t_lookup = {}, //when a Draggable is created, the target gets a unique _gsDragID property that allows gets associated with the Draggable instance for quick lookups in Draggable.get(). This avoids circular references that could cause gc problems.\\n\\t_lookupCount = 0,\\n\\t_clickableTagExp = /^(?:a|input|textarea|button|select)$/i,\\n\\t_lastDragTime = 0,\\n\\t_temp1 = {}, // a simple object we reuse and populate (usually x/y properties) to conserve memory and improve performance.\\n\\t_windowProxy = {}, //memory/performance optimization - we reuse this object during autoScroll to store window-related bounds/offsets.\\n\\t_copy = (obj, factor) => {\\n\\t\\tlet copy = {}, p;\\n\\t\\tfor (p in obj) {\\n\\t\\t\\tcopy[p] = factor ? obj[p] * factor : obj[p];\\n\\t\\t}\\n\\t\\treturn copy;\\n\\t},\\n\\t_extend = (obj, defaults) => {\\n\\t\\tfor (let p in defaults) {\\n\\t\\t\\tif (!(p in obj)) {\\n\\t\\t\\t\\tobj[p] = defaults[p];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn obj;\\n\\t},\\n\\t_setTouchActionForAllDescendants = (elements, value) => {\\n\\t\\tlet i = elements.length,\\n\\t\\t\\tchildren;\\n\\t\\twhile (i--) {\\n\\t\\t\\tvalue ? (elements[i].style.touchAction = value) : elements[i].style.removeProperty(\\\"touch-action\\\");\\n\\t\\t\\tchildren = elements[i].children;\\n\\t\\t\\tchildren && children.length && _setTouchActionForAllDescendants(children, value);\\n\\t\\t}\\n\\t},\\n\\t_renderQueueTick = () => _renderQueue.forEach(func => func()),\\n\\t_addToRenderQueue = func => {\\n\\t\\t_renderQueue.push(func);\\n\\t\\tif (_renderQueue.length === 1) {\\n\\t\\t\\tgsap.ticker.add(_renderQueueTick);\\n\\t\\t}\\n\\t},\\n\\t_renderQueueTimeout = () => !_renderQueue.length && gsap.ticker.remove(_renderQueueTick),\\n\\t_removeFromRenderQueue = func => {\\n\\t\\tlet i = _renderQueue.length;\\n\\t\\twhile (i--) {\\n\\t\\t\\tif (_renderQueue[i] === func) {\\n\\t\\t\\t\\t_renderQueue.splice(i, 1);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tgsap.to(_renderQueueTimeout, {overwrite:true, delay:15, duration:0, onComplete:_renderQueueTimeout, data:\\\"_draggable\\\"}); //remove the \\\"tick\\\" listener only after the render queue is empty for 15 seconds (to improve performance). Adding/removing it constantly for every click/touch wouldn't deliver optimal speed, and we also don't want the ticker to keep calling the render method when things are idle for long periods of time (we want to improve battery life on mobile devices).\\n\\t},\\n\\t_setDefaults = (obj, defaults) => {\\n\\t\\tfor (let p in defaults) {\\n\\t\\t\\tif (!(p in obj)) {\\n\\t\\t\\t\\tobj[p] = defaults[p];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn obj;\\n\\t},\\n\\t_addListener = (element, type, func, capture) => {\\n\\t\\tif (element.addEventListener) {\\n\\t\\t\\tlet touchType = _touchEventLookup[type];\\n\\t\\t\\tcapture = capture || (_supportsPassive ? {passive: false} : null);\\n\\t\\t\\telement.addEventListener(touchType || type, func, capture);\\n\\t\\t\\t(touchType && type !== touchType) && element.addEventListener(type, func, capture);//some browsers actually support both, so must we. But pointer events cover all.\\n\\t\\t}\\n\\t},\\n\\t_removeListener = (element, type, func) => {\\n\\t\\tif (element.removeEventListener) {\\n\\t\\t\\tlet touchType = _touchEventLookup[type];\\n\\t\\t\\telement.removeEventListener(touchType || type, func);\\n\\t\\t\\t(touchType && type !== touchType) && element.removeEventListener(type, func);\\n\\t\\t}\\n\\t},\\n\\t_preventDefault = event => {\\n\\t\\tevent.preventDefault && event.preventDefault();\\n\\t\\tevent.preventManipulation && event.preventManipulation(); //for some Microsoft browsers\\n\\t},\\n\\t_hasTouchID = (list, ID) => {\\n\\t\\tlet i = list.length;\\n\\t\\twhile (i--) {\\n\\t\\t\\tif (list[i].identifier === ID) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\t_onMultiTouchDocumentEnd = event => {\\n\\t\\t_isMultiTouching = (event.touches && _dragCount < event.touches.length);\\n\\t\\t_removeListener(event.target, \\\"touchend\\\", _onMultiTouchDocumentEnd);\\n\\t},\\n\\n\\t_onMultiTouchDocument = event => {\\n\\t\\t_isMultiTouching = (event.touches && _dragCount < event.touches.length);\\n\\t\\t_addListener(event.target, \\\"touchend\\\", _onMultiTouchDocumentEnd);\\n\\t},\\n\\t_getDocScrollTop = doc => _win.pageYOffset || doc.scrollTop || doc.documentElement.scrollTop || doc.body.scrollTop || 0,\\n\\t_getDocScrollLeft = doc => _win.pageXOffset || doc.scrollLeft || doc.documentElement.scrollLeft || doc.body.scrollLeft || 0,\\n\\t_addScrollListener = (e, callback) => {\\n\\t\\t_addListener(e, \\\"scroll\\\", callback);\\n\\t\\tif (!_isRoot(e.parentNode)) {\\n\\t\\t\\t_addScrollListener(e.parentNode, callback);\\n\\t\\t}\\n\\t},\\n\\t_removeScrollListener = (e, callback) => {\\n\\t\\t_removeListener(e, \\\"scroll\\\", callback);\\n\\t\\tif (!_isRoot(e.parentNode)) {\\n\\t\\t\\t_removeScrollListener(e.parentNode, callback);\\n\\t\\t}\\n\\t},\\n\\t_isRoot = e => !!(!e || e === _docElement || e.nodeType === 9 || e === _doc.body || e === _win || !e.nodeType || !e.parentNode),\\n\\t_getMaxScroll = (element, axis) => {\\n\\t\\tlet dim = (axis === \\\"x\\\") ? \\\"Width\\\" : \\\"Height\\\",\\n\\t\\t\\tscroll = \\\"scroll\\\" + dim,\\n\\t\\t\\tclient = \\\"client\\\" + dim;\\n\\t\\treturn Math.max(0, _isRoot(element) ? Math.max(_docElement[scroll], _body[scroll]) - (_win[\\\"inner\\\" + dim] || _docElement[client] || _body[client]) : element[scroll] - element[client]);\\n\\t},\\n\\t_recordMaxScrolls = (e, skipCurrent) => { //records _gsMaxScrollX and _gsMaxScrollY properties for the element and all ancestors up the chain so that we can cap it, otherwise dragging beyond the edges with autoScroll on can endlessly scroll.\\n\\t\\tlet x = _getMaxScroll(e, \\\"x\\\"),\\n\\t\\t\\ty = _getMaxScroll(e, \\\"y\\\");\\n\\t\\tif (_isRoot(e)) {\\n\\t\\t\\te = _windowProxy;\\n\\t\\t} else {\\n\\t\\t\\t_recordMaxScrolls(e.parentNode, skipCurrent);\\n\\t\\t}\\n\\t\\te._gsMaxScrollX = x;\\n\\t\\te._gsMaxScrollY = y;\\n\\t\\tif (!skipCurrent) {\\n\\t\\t\\te._gsScrollX = e.scrollLeft || 0;\\n\\t\\t\\te._gsScrollY = e.scrollTop || 0;\\n\\t\\t}\\n\\t},\\n\\t_setStyle = (element, property, value) => {\\n\\t\\tlet style = element.style;\\n\\t\\tif (!style) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\tif (_isUndefined(style[property])) {\\n\\t\\t\\tproperty = _checkPrefix(property, element) || property;\\n\\t\\t}\\n\\t\\tif (value == null) {\\n\\t\\t\\tstyle.removeProperty && style.removeProperty(property.replace(/([A-Z])/g, \\\"-$1\\\").toLowerCase());\\n\\t\\t} else {\\n\\t\\t\\tstyle[property] = value;\\n\\t\\t}\\n\\t},\\n\\t_getComputedStyle = element => _win.getComputedStyle((element instanceof Element) ? element : element.host || (element.parentNode || {}).host || element), //the \\\"host\\\" stuff helps to accommodate ShadowDom objects.\\n\\n\\t_tempRect = {}, //reuse to reduce garbage collection tasks\\n\\t_parseRect = e => { //accepts a DOM element, a mouse event, or a rectangle object and returns the corresponding rectangle with left, right, width, height, top, and bottom properties\\n\\t\\tif (e === _win) {\\n\\t\\t\\t_tempRect.left = _tempRect.top = 0;\\n\\t\\t\\t_tempRect.width = _tempRect.right = _docElement.clientWidth || e.innerWidth || _body.clientWidth || 0;\\n\\t\\t\\t_tempRect.height = _tempRect.bottom = ((e.innerHeight || 0) - 20 < _docElement.clientHeight) ? _docElement.clientHeight : e.innerHeight || _body.clientHeight || 0;\\n\\t\\t\\treturn _tempRect;\\n\\t\\t}\\n\\t\\tlet doc = e.ownerDocument || _doc,\\n\\t\\t\\tr = !_isUndefined(e.pageX) ? {left: e.pageX - _getDocScrollLeft(doc), top: e.pageY - _getDocScrollTop(doc), right: e.pageX - _getDocScrollLeft(doc) + 1, bottom: e.pageY - _getDocScrollTop(doc) + 1} : (!e.nodeType && !_isUndefined(e.left) && !_isUndefined(e.top)) ? e : _toArray(e)[0].getBoundingClientRect();\\n\\t\\tif (_isUndefined(r.right) && !_isUndefined(r.width)) {\\n\\t\\t\\tr.right = r.left + r.width;\\n\\t\\t\\tr.bottom = r.top + r.height;\\n\\t\\t} else if (_isUndefined(r.width)) { //some browsers don't include width and height properties. We can't just set them directly on r because some browsers throw errors, so create a new generic object.\\n\\t\\t\\tr = {width: r.right - r.left, height: r.bottom - r.top, right: r.right, left: r.left, bottom: r.bottom, top: r.top};\\n\\t\\t}\\n\\t\\treturn r;\\n\\t},\\n\\n\\t_dispatchEvent = (target, type, callbackName) => {\\n\\t\\tlet vars = target.vars,\\n\\t\\t\\tcallback = vars[callbackName],\\n\\t\\t\\tlisteners = target._listeners[type],\\n\\t\\t\\tresult;\\n\\t\\tif (_isFunction(callback)) {\\n\\t\\t\\tresult = callback.apply(vars.callbackScope || target, vars[callbackName + \\\"Params\\\"] || [target.pointerEvent]);\\n\\t\\t}\\n\\t\\tif (listeners && target.dispatchEvent(type) === false) {\\n\\t\\t\\tresult = false;\\n\\t\\t}\\n\\t\\treturn result;\\n\\t},\\n\\t_getBounds = (target, context) => { //accepts any of the following: a DOM element, jQuery object, selector text, or an object defining bounds as {top, left, width, height} or {minX, maxX, minY, maxY}. Returns an object with left, top, width, and height properties.\\n\\t\\tlet e = _toArray(target)[0],\\n\\t\\t\\ttop, left, offset;\\n\\t\\tif (!e.nodeType && e !== _win) {\\n\\t\\t\\tif (!_isUndefined(target.left)) {\\n\\t\\t\\t\\toffset = {x:0, y:0}; //_getOffsetTransformOrigin(context); //the bounds should be relative to the origin\\n\\t\\t\\t\\treturn {left: target.left - offset.x, top: target.top - offset.y, width: target.width, height: target.height};\\n\\t\\t\\t}\\n\\t\\t\\tleft = target.min || target.minX || target.minRotation || 0;\\n\\t\\t\\ttop = target.min || target.minY || 0;\\n\\t\\t\\treturn {left:left, top:top, width:(target.max || target.maxX || target.maxRotation || 0) - left, height:(target.max || target.maxY || 0) - top};\\n\\t\\t}\\n\\t\\treturn _getElementBounds(e, context);\\n\\t},\\n\\t_point1 = {}, //we reuse to minimize garbage collection tasks.\\n\\t_getElementBounds = (element, context) => {\\n\\t\\tcontext = _toArray(context)[0];\\n\\t\\tlet isSVG = (element.getBBox && element.ownerSVGElement),\\n\\t\\t\\tdoc = element.ownerDocument || _doc,\\n\\t\\t\\tleft, right, top, bottom, matrix, p1, p2, p3, p4, bbox, width, height, cs, contextParent;\\n\\t\\tif (element === _win) {\\n\\t\\t\\ttop = _getDocScrollTop(doc);\\n\\t\\t\\tleft = _getDocScrollLeft(doc);\\n\\t\\t\\tright = left + (doc.documentElement.clientWidth || element.innerWidth || doc.body.clientWidth || 0);\\n\\t\\t\\tbottom = top + (((element.innerHeight || 0) - 20 < doc.documentElement.clientHeight) ? doc.documentElement.clientHeight : element.innerHeight || doc.body.clientHeight || 0); //some browsers (like Firefox) ignore absolutely positioned elements, and collapse the height of the documentElement, so it could be 8px, for example, if you have just an absolutely positioned div. In that case, we use the innerHeight to resolve this.\\n\\t\\t} else if (context === _win || _isUndefined(context)) {\\n\\t\\t\\treturn element.getBoundingClientRect();\\n\\t\\t} else {\\n\\t\\t\\tleft = top = 0;\\n\\t\\t\\tif (isSVG) {\\n\\t\\t\\t\\tbbox = element.getBBox();\\n\\t\\t\\t\\twidth = bbox.width;\\n\\t\\t\\t\\theight = bbox.height;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif (element.viewBox && (bbox = element.viewBox.baseVal)) {\\n\\t\\t\\t\\t\\tleft = bbox.x || 0;\\n\\t\\t\\t\\t\\ttop = bbox.y || 0;\\n\\t\\t\\t\\t\\twidth = bbox.width;\\n\\t\\t\\t\\t\\theight = bbox.height;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (!width) {\\n\\t\\t\\t\\t\\tcs = _getComputedStyle(element);\\n\\t\\t\\t\\t\\tbbox = cs.boxSizing === \\\"border-box\\\";\\n\\t\\t\\t\\t\\twidth = (parseFloat(cs.width) || element.clientWidth || 0) + (bbox ? 0 : parseFloat(cs.borderLeftWidth) + parseFloat(cs.borderRightWidth));\\n\\t\\t\\t\\t\\theight = (parseFloat(cs.height) || element.clientHeight || 0) + (bbox ? 0 : parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth));\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tright = width;\\n\\t\\t\\tbottom = height;\\n\\t\\t}\\n\\t\\tif (element === context) {\\n\\t\\t\\treturn {left:left, top:top, width: right - left, height: bottom - top};\\n\\t\\t}\\n\\t\\tmatrix = Object(_utils_matrix_js__WEBPACK_IMPORTED_MODULE_0__[\\\"getGlobalMatrix\\\"])(context, true).multiply(Object(_utils_matrix_js__WEBPACK_IMPORTED_MODULE_0__[\\\"getGlobalMatrix\\\"])(element));\\n\\t\\tp1 = matrix.apply({x:left, y:top});\\n\\t\\tp2 = matrix.apply({x:right, y:top});\\n\\t\\tp3 = matrix.apply({x:right, y:bottom});\\n\\t\\tp4 = matrix.apply({x:left, y:bottom});\\n\\t\\tleft = Math.min(p1.x, p2.x, p3.x, p4.x);\\n\\t\\ttop = Math.min(p1.y, p2.y, p3.y, p4.y);\\n\\t\\tcontextParent = context.parentNode || {};\\n\\t\\treturn {left: left + (contextParent.scrollLeft || 0), top: top + (contextParent.scrollTop || 0), width: Math.max(p1.x, p2.x, p3.x, p4.x) - left, height: Math.max(p1.y, p2.y, p3.y, p4.y) - top};\\n\\t},\\n\\t_parseInertia = (draggable, snap, max, min, factor, forceZeroVelocity) => {\\n\\t\\tlet vars = {},\\n\\t\\t\\ta, i, l;\\n\\t\\tif (snap) {\\n\\t\\t\\tif (factor !== 1 && snap instanceof Array) { //some data must be altered to make sense, like if the user passes in an array of rotational values in degrees, we must convert it to radians. Or for scrollLeft and scrollTop, we invert the values.\\n\\t\\t\\t\\tvars.end = a = [];\\n\\t\\t\\t\\tl = snap.length;\\n\\t\\t\\t\\tif (_isObject(snap[0])) { //if the array is populated with objects, like points ({x:100, y:200}), make copies before multiplying by the factor, otherwise we'll mess up the originals and the user may reuse it elsewhere.\\n\\t\\t\\t\\t\\tfor (i = 0; i < l; i++) {\\n\\t\\t\\t\\t\\t\\ta[i] = _copy(snap[i], factor);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tfor (i = 0; i < l; i++) {\\n\\t\\t\\t\\t\\t\\ta[i] = snap[i] * factor;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tmax += 1.1; //allow 1.1 pixels of wiggle room when snapping in order to work around some browser inconsistencies in the way bounds are reported which can make them roughly a pixel off. For example, if \\\"snap:[-$('#menu').width(), 0]\\\" was defined and #menu had a wrapper that was used as the bounds, some browsers would be one pixel off, making the minimum -752 for example when snap was [-753,0], thus instead of snapping to -753, it would snap to 0 since -753 was below the minimum.\\n\\t\\t\\t\\tmin -= 1.1;\\n\\t\\t\\t} else if (_isFunction(snap)) {\\n\\t\\t\\t\\tvars.end = value => {\\n\\t\\t\\t\\t\\tlet result = snap.call(draggable, value),\\n\\t\\t\\t\\t\\t\\tcopy, p;\\n\\t\\t\\t\\t\\tif (factor !== 1) {\\n\\t\\t\\t\\t\\t\\tif (_isObject(result)) {\\n\\t\\t\\t\\t\\t\\t\\tcopy = {};\\n\\t\\t\\t\\t\\t\\t\\tfor (p in result) {\\n\\t\\t\\t\\t\\t\\t\\t\\tcopy[p] = result[p] * factor;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\tresult = copy;\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\tresult *= factor;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn result; //we need to ensure that we can scope the function call to the Draggable instance itself so that users can access important values like maxX, minX, maxY, minY, x, and y from within that function.\\n\\t\\t\\t\\t};\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvars.end = snap;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (max || max === 0) {\\n\\t\\t\\tvars.max = max;\\n\\t\\t}\\n\\t\\tif (min || min === 0) {\\n\\t\\t\\tvars.min = min;\\n\\t\\t}\\n\\t\\tif (forceZeroVelocity) {\\n\\t\\t\\tvars.velocity = 0;\\n\\t\\t}\\n\\t\\treturn vars;\\n\\t},\\n\\t_isClickable = element => { //sometimes it's convenient to mark an element as clickable by adding a data-clickable=\\\"true\\\" attribute (in which case we won't preventDefault() the mouse/touch event). This method checks if the element is an , , or